GEGELATI
|
Template instruction for simplifying the creation of an Instruction from a c++ lambda function. More...
#include <lambdaInstruction.h>
Public Member Functions | |
LambdaInstruction (std::function< double(First, Rest...)> function, const std::string &printTemplate="") | |
Constructor of the class LambdaInstruction to create a printable Instruction. More... | |
LambdaInstruction ()=delete | |
delete the default constructor. | |
virtual bool | checkOperandTypes (const std::vector< Data::UntypedSharedPtr > &arguments) const override |
Inherited from Instruction. More... | |
virtual double | execute (const std::vector< Data::UntypedSharedPtr > &args) const override |
Inherited from Instruction. More... | |
![]() | |
virtual bool | isPrintable () const |
function saying if an Instruction can be printed in a C file during the code gen. More... | |
virtual const std::string & | getPrintTemplate () const |
This function return the printTemplate of the line of code used to represent the instruction. More... | |
virtual std::string | getPrintablePrimitiveOperandType (const uint64_t &opIdx) const |
Retrieve the primitive data type of the operand. More... | |
virtual | ~Instruction ()=default |
Default virtual destructor for polyphormism. | |
const std::vector< std::reference_wrapper< const std::type_info > > & | getOperandTypes () const |
Get the list of operand types needed by the Instruction. More... | |
unsigned int | getNbOperands () const |
Get the number of operands required to execute the Instruction. More... | |
virtual bool | checkOperandTypes (const std::vector< Data::UntypedSharedPtr > &arguments) const |
Check if a given vector contains elements whose types corresponds to the types of the Instruction operands. More... | |
virtual double | execute (const std::vector< Data::UntypedSharedPtr > &args) const =0 |
Execute the Instruction for the given arguments. More... | |
Protected Attributes | |
const std::function< double(const First, const Rest...)> | func |
Function executed for this Instruction. | |
![]() | |
std::string | printTemplate |
std::vector< std::reference_wrapper< const std::type_info > > | operandTypes |
List of the types of the operands needed to execute the instruction. | |
Additional Inherited Members | |
![]() | |
Instruction (std::string printTemplate) | |
Protected constructor to force the class abstract nature. More... | |
Template instruction for simplifying the creation of an Instruction from a c++ lambda function.
Template parameters First and Rest can be any primitive type, class or const c-style 1D and 2D array.
Each template parameter corresponds to an argument of the function given to the LambdaInstruction constructor, specifying its type.
|
inline |
Constructor of the class LambdaInstruction to create a printable Instruction.
[in] | printTemplate | std::string use at the generation. Check Instructions::Instruction for more details. |
[in] | function | the c++ std::function that will be executed for this Instruction. Check the constructor with only the function as parameter for more details. |
|
inlineoverridevirtual |
Inherited from Instruction.
Reimplemented from Instructions::Instruction.
|
inlineoverridevirtual |
Inherited from Instruction.
Implements Instructions::Instruction.