19namespace formula {
class DoubleVectorRefToken; }
20namespace formula {
class FormulaToken; }
44 OpenCLError(
const std::string& function, cl_int error,
const std::string& file,
int line );
56 Unhandled(
const std::string& fn,
int ln );
74#define CHECK_PARAMETER_COUNT(min, max) \
76 const int count = vSubArguments.size(); \
77 if( count < ( min ) || count > ( max )) \
78 throw InvalidParameterCount( count, __FILE__, __LINE__ ); \
114 virtual void GenDecl( std::stringstream& ss )
const = 0;
123 virtual size_t Marshal( cl_kernel,
int,
int, cl_program ) = 0;
134 virtual void GenDeclRef( std::stringstream& ss )
const;
139 virtual void DumpInlineFun( std::set<std::string>&, std::set<std::string>& )
const;
140 const std::string&
GetName()
const;
143 virtual bool IsEmpty()
const {
return false; }
165 virtual void GenDecl( std::stringstream& ss )
const override;
173 virtual size_t Marshal( cl_kernel,
int,
int, cl_program )
override;
177 virtual std::string
DumpOpName()
const override;
178 virtual void DumpInlineFun( std::set<std::string>&, std::set<std::string>& )
const override;
179 const std::string&
GetName()
const;
195 virtual std::string
Gen2(
const std::string&,
196 const std::string& )
const {
return "";}
197 static std::string
Gen( std::vector<std::string>& ) {
return "";};
200 std::set<std::string>& ) { }
223 const std::string& sSymName,
SubArguments& vSubArguments )
override;
238 SubArguments& vSubArguments,
int argumentNum,
const std::string&
p );
241 int nCurWindowSize );
static void CheckAllSubArgumentIsNan(std::stringstream &ss, SubArguments &vSubArguments)
static void GenTmpVariables(std::stringstream &ss, const SubArguments &vSubArguments)
static void CheckSubArgumentIsNan(std::stringstream &ss, SubArguments &vSubArguments, int argumentNum)
static void CheckSubArgumentIsNan2(std::stringstream &ss, SubArguments &vSubArguments, int argumentNum, const std::string &p)
static void UnrollDoubleVector(std::stringstream &ss, const std::stringstream &unrollstr, const formula::DoubleVectorRefToken *pCurDVR, int nCurWindowSize)
(Partially) abstract base class for an operand
virtual bool IsEmpty() const
If there's actually no argument, i.e. it expands to no code.
virtual size_t Marshal(cl_kernel, int, int, cl_program)=0
Create buffer and pass the buffer to a given kernel.
virtual std::string GenStringSlidingWindowDeclRef(bool=false) const
When Mix, it will be called.
virtual void GenDeclRef(std::stringstream &ss) const
Generate use/references to the argument.
virtual void DumpInlineFun(std::set< std::string > &, std::set< std::string > &) const
virtual void GenDecl(std::stringstream &ss) const =0
Generate declaration.
virtual std::string DumpOpName() const
formula::FormulaToken * GetFormulaToken() const
virtual bool NeedParallelReduction() const
const DynamicKernelArgument & operator=(const DynamicKernelArgument &)=delete
delete copy-assignment operator
const std::string & GetName() const
virtual void GenSlidingWindowFunction(std::stringstream &)
virtual std::string GenSlidingWindowDeclRef(bool=false) const =0
When referenced in a sliding window function.
virtual ~DynamicKernelArgument()
DynamicKernelArgument(const DynamicKernelArgument &)=delete
delete copy constructor
FormulaTreeNodeRef mFormulaTree
virtual size_t GetWindowSize() const =0
virtual void GenSlidingWindowDecl(std::stringstream &ss) const =0
When declared as input to a sliding window function.
const ScCalcConfig & mCalcConfig
virtual std::string GenDoubleSlidingWindowDeclRef(bool=false) const
When Mix, it will be called.
InvalidParameterCount(int parameterCount, const std::string &file, int ln)
virtual bool takeString() const override
virtual void GenSlidingWindowFunction(std::stringstream &ss, const std::string &sSymName, SubArguments &vSubArguments) override
virtual bool takeNumeric() const override
Abstract class for code generation.
virtual std::string GetBottom()
virtual bool ZeroReturnZero()
virtual bool canHandleMultiVector() const
virtual std::string Gen2(const std::string &, const std::string &) const
static std::string Gen(std::vector< std::string > &)
virtual bool takeString() const =0
virtual void BinInlineFun(std::set< std::string > &, std::set< std::string > &)
virtual bool takeNumeric() const =0
virtual std::string BinFuncName() const
OpenCLError(const std::string &function, cl_int error, const std::string &file, int line)
virtual void GenSlidingWindowFunction(std::stringstream &, const std::string &, SubArguments &)=0
std::vector< DynamicKernelArgumentRef > SubArguments
UnhandledToken(const char *m, const std::string &fn, int ln)
Unhandled(const std::string &fn, int ln)
Holds an input (read-only) argument reference to a SingleVectorRef.
VectorRef(const ScCalcConfig &config, const std::string &s, const FormulaTreeNodeRef &ft, int index=0)
virtual bool NeedParallelReduction() const override
virtual std::string GenSlidingWindowDeclRef(bool=false) const override
When referenced in a sliding window function.
const std::string & GetName() const
virtual void GenDecl(std::stringstream &ss) const override
Generate declaration.
virtual void DumpInlineFun(std::set< std::string > &, std::set< std::string > &) const override
cl_mem GetCLBuffer() const
virtual std::string DumpOpName() const override
virtual size_t GetWindowSize() const override
virtual ~VectorRef() override
virtual void GenSlidingWindowDecl(std::stringstream &ss) const override
When declared as input to a sliding window function.
virtual size_t Marshal(cl_kernel, int, int, cl_program) override
Create buffer and pass the buffer to a given kernel.
virtual void GenSlidingWindowFunction(std::stringstream &) override
Arguments that are actually compile-time constant string Currently, only the hash is passed.
std::shared_ptr< FormulaTreeNode > FormulaTreeNodeRef
std::shared_ptr< DynamicKernelArgument > DynamicKernelArgumentRef
Configuration options for formula interpreter.