#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(SizeT mlast, const DPos& last) const { return (*this)(mlast, last); } template SizeT VXpr::vexec(SizeT mlast) const { return (*this)(mlast); } template DPos VXpr::vrootSteps(PtrId ptrId) const { return DPos(this->rootSteps(ptrId)); } /************ * DXpr * ************/ template explicit DXpr::DXpr(const Xpr& a) : ObjHandle(VXpr(a)) {} template inline SizeT DXpr::operator()(SizeT mlast, const PosT& last) const { DPosRef dlast(&last); return mC->vexec(mlast, dlast); } inline SizeT DXpr::operator()(SizeT mlast) const { return mC->vexec(mlast); } inline DPos DXpr::rootSteps(PtrId ptrId) const { return mC->rootSteps(ptrId); } template inline DPos DXpr::staticRootSteps(PtrId ptrId) const { return this->rootSteps(ptrId); } } #endif