#ifndef __cxz_xpr_base_cc_h__ #define __cxz_xpr_base_cc_h__ #include "xpr_base.h" namespace CNORXZ { /************ * VXpr * ************/ template VXpr::VXpr(const XprInterface& a) : Xpr(a.THIS()) {} template Uptr VXpr::copy() const { return std::make_unique>(*this); } template SizeT VXpr::vexec(const UPos& mlast, const DPos& last) const { return (*this)(mlast, last); } template SizeT VXpr::vexec() const { return (*this)(); } template DPos VXpr::vrootSteps(const IndexId<0>& id) const { return DPos(this->rootSteps(ptrId)); } /************ * DXpr * ************/ template explicit DXpr::DXpr(const Xpr& a) : ObjHandle(VXpr(a)) {} template inline SizeT DXpr::operator()(const UPos& mlast, const PosT& last) const { DPosRef dlast(&last); return mC->vexec(mlast, dlast); } inline SizeT DXpr::operator()() const { return mC->vexec(); } template inline DPos DXpr::rootSteps(const IndexId& id) const { return mC->rootSteps(IndexId<0>(id.id())); } } #endif