#ifndef __cxz_xindex_cc_h__ #define __cxz_xindex_cc_h__ #include "xindex.h" namespace CNORXZ { /************** * XIndex * **************/ template XIndex::XIndex(const IndexPtr& i) : mI(i) {} template XIndex::XIndex(const IndexInterface& i) : mI(std::make_shared(i.THIS())) {} template XIndex& XIndex::operator=(SizeT pos) { *mI = pos; return *this; } template XIndex& XIndex::operator++() { ++(*mI); return *this; } template XIndex& XIndex::operator--() { --(*mI); return *this; } template Int XIndex::pp(PtrId idxPtrNum) { return mI->pp(idxPtrNum); } template Int XIndex::mm(PtrId idxPtrNum) { return mI->mm(idxPtrNum); } template SizeT XIndex::dim() const { return mI->dim(); } template SizeT XIndex::getStepSize(SizeT n) const { return mI->getStepSize(n); } template String XIndex::stringMeta() const { return mI->stringMeta(); } template DType XIndex::meta() const { return DType(mI->meta()); } template XIndexBase& XIndex::at(const DType& meta) { // check!!! mI->at(std::any_cast(meta.get())); return *this; } /* template DExpr XIndex::ifor(SizeT step, DExpr ex) const { return mI->ifor(step, ex); } template DExpr XIndex::iforh(SizeT step, DExpr ex) const { return mI->iforh(step, ex); } */ } #endif