11#include <initializer_list>
24 std::vector<cytnx_int64> idx_list;
26 std::vector<std::vector<cytnx_int64> > qns_list;
73 explicit Accessor(
const std::initializer_list<T> &list){
74 std::vector<T> tmp = list;
75 this->_type = this->list;
76 this->idx_list = std::vector<cytnx_int64>(tmp.begin(),tmp.end());
82 this->_type = this->list;
83 this->idx_list = std::vector<cytnx_int64>(list.begin(),list.end());
92 explicit Accessor(
const std::string &str);
159 out._type = Accessor::Tilend;
168 out._type = Accessor::Step;
178 out._type = Accessor::Qns;
194 std::ostream&
operator<<(std::ostream& os,
const Accessor &in);
198 void _resolve_elems(std::vector<cytnx::Accessor> &cool,
const T& a){
202 template<
class T,
class ... Ts>
203 void _resolve_elems(std::vector<cytnx::Accessor> &cool,
const T&a,
const Ts&... args){
205 _resolve_elems(cool,args...);
208 template<
class T,
class ... Ts>
209 std::vector<cytnx::Accessor> Indices_resolver(
const T&a,
const Ts&... args){
211 std::vector<cytnx::Accessor> idxs;
212 _resolve_elems(idxs,a,args...);
object that mimic the python slice to access elements in C++ [this is for c++ API only].
Definition Accessor.hpp:16
static Accessor tilend(const cytnx_int64 &min, const cytnx_int64 &step=1)
Definition Accessor.hpp:156
static Accessor step(const cytnx_int64 &step)
Definition Accessor.hpp:165
static Accessor all()
access the whole rank, this is similar to [:] in python
Definition Accessor.hpp:128
Accessor(const std::initializer_list< T > &list)
Definition Accessor.hpp:73
static Accessor range(const cytnx_int64 &min, const cytnx_int64 &max, const cytnx_int64 &step=1)
access the range at assigned rank, this is similar to min:max:step in python
Definition Accessor.hpp:150
static Accessor qns(const std::vector< std::vector< cytnx_int64 > > &qns)
Definition Accessor.hpp:174
int type() const
Definition Accessor.hpp:107
Accessor(const std::vector< T > &list)
Definition Accessor.hpp:81
#define cytnx_error_msg(is_true, format,...)
Definition cytnx_error.hpp:18
Definition Accessor.hpp:12
std::ostream & operator<<(std::ostream &os, const Scalar &in)
Definition Scalar.cpp:14
uint64_t cytnx_uint64
Definition Type.hpp:22
int64_t cytnx_int64
Definition Type.hpp:25