SeExpr
|
Node that contains local function. More...
#include <ExprNode.h>
Public Member Functions | |
ExprLocalFunctionNode (const Expression *expr, ExprPrototypeNode *prototype, ExprNode *block) | |
virtual ExprType | prep (bool wantScalar, ExprVarEnvBuilder &envBuilder) |
Preps the definition of this site. More... | |
virtual ExprType | prep (ExprFuncNode *callerNode, bool scalarWanted, ExprVarEnvBuilder &envBuilder) const |
Preps a caller (i.e. we use callerNode to check arguments) More... | |
const ExprPrototypeNode * | prototype () const |
TODO: Accessor for prototype (probably not needed when we use prep right) More... | |
int | buildInterpreter (Interpreter *interpreter) const |
Build the interpreter. More... | |
int | buildInterpreterForCall (const ExprFuncNode *callerNode, Interpreter *interpreter) const |
Build interpreter if we are called. More... | |
virtual LLVM_VALUE | codegen (LLVM_BUILDER) LLVM_BODY |
Public Member Functions inherited from SeExpr2::ExprNode | |
ExprNode (const Expression *expr) | |
ExprNode (const Expression *expr, const ExprType &type) | |
virtual | ~ExprNode () |
bool | isVec () const |
True if node has a vector result. More... | |
const Expression * | expr () const |
Access expression. More... | |
std::string | toString () const |
Access to original string representation of current expression. More... | |
const ExprType & | type () const |
The type of the node. More... | |
void | addError (const std::string &error) const |
Register error. This will allow users and sophisticated editors to highlight where in code problem was. More... | |
ExprNode (const Expression *expr, ExprNode *a) | |
ExprNode (const Expression *expr, ExprNode *a, const ExprType &type) | |
ExprNode (const Expression *expr, ExprNode *a, ExprNode *b) | |
ExprNode (const Expression *expr, ExprNode *a, ExprNode *b, const ExprType &type) | |
ExprNode (const Expression *expr, ExprNode *a, ExprNode *b, ExprNode *c) | |
ExprNode (const Expression *expr, ExprNode *a, ExprNode *b, ExprNode *c, const ExprType &type) | |
const ExprNode * | parent () const |
Access parent node - root node has no parent. More... | |
int | numChildren () const |
Number of children. More... | |
const ExprNode * | child (size_t i) const |
Get 0 indexed child. More... | |
ExprNode * | child (size_t i) |
Get 0 indexed child. More... | |
void | swapChildren (size_t i, size_t j) |
Swap children, do not use unless you know what you are doing. More... | |
void | removeLastChild () |
Remove last child and delete the entry. More... | |
void | addChild (ExprNode *child) |
Add a child to the child list (for parser use only) More... | |
void | addChildren (ExprNode *surrogate) |
Transfer children from surrogate parent (for parser use only) More... | |
void | setPosition (const short int startPos, const short int endPos) |
Remember the line and column position in the input string. More... | |
short int | startPos () const |
Access start position in input string. More... | |
short int | endPos () const |
Access end position in input string. More... | |
short int | length () const |
Access length of input string. More... | |
bool | checkCondition (bool check, const std::string &message, bool &error) |
Checks the boolean value and records an error string with node if it is false. More... | |
bool | checkIsValue (const ExprType &type, bool &error) |
Checks if the type is a value (i.e. string or float[d]) More... | |
bool | checkIsFP (const ExprType &type, bool &error) |
Checks if the type is a float[d] for any d. More... | |
bool | checkIsFP (int d, const ExprType &type, bool &error) |
Checks if the type is a float[d] for a specific d. More... | |
bool | checkTypesCompatible (const ExprType &first, const ExprType &second, bool &error) |
types match (true if they do) More... | |
Private Attributes | |
int | _procedurePC |
int | _returnedDataOp |
Additional Inherited Members | |
Protected Member Functions inherited from SeExpr2::ExprNode | |
void | setType (const ExprType &t) |
Set type of parameter. More... | |
void | setTypeWithChildLife (const ExprType &t) |
Set's the type to the argument but uses the children to determine lifetime. More... | |
Protected Attributes inherited from SeExpr2::ExprNode | |
const Expression * | _expr |
Owning expression (node can't modify) More... | |
ExprNode * | _parent |
Parent node (null if this the the root) More... | |
std::vector< ExprNode * > | _children |
List of children. More... | |
bool | _isVec |
True if node has a vector result. More... | |
ExprType | _type |
int | _maxChildDim |
unsigned short int | _startPos |
Position line and collumn. More... | |
unsigned short int | _endPos |
Node that contains local function.
Definition at line 307 of file ExprNode.h.
|
inline |
Definition at line 309 of file ExprNode.h.
|
virtual |
Build the interpreter.
Reimplemented from SeExpr2::ExprNode.
Definition at line 411 of file Interpreter.cpp.
References _procedurePC, _returnedDataOp, SeExpr2::Interpreter::addOp(), SeExpr2::Interpreter::addOperand(), SeExpr2::ExprNode::buildInterpreter(), SeExpr2::ExprNode::child(), SeExpr2::Interpreter::endOp(), SeExpr2::Interpreter::nextPC(), and SeExpr2::ExprNode::numChildren().
int SeExpr2::ExprLocalFunctionNode::buildInterpreterForCall | ( | const ExprFuncNode * | callerNode, |
Interpreter * | interpreter | ||
) | const |
Build interpreter if we are called.
Definition at line 426 of file Interpreter.cpp.
References _procedurePC, _returnedDataOp, SeExpr2::Interpreter::addOp(), SeExpr2::Interpreter::addOperand(), SeExpr2::Interpreter::allocFP(), SeExpr2::Interpreter::allocPtr(), SeExpr2::ExprNode::buildInterpreter(), SeExpr2::ExprNode::child(), SeExpr2::ExprType::dim(), SeExpr2::Interpreter::endOp(), SeExpr2::ExprType::isFP(), SeExpr2::ExprType::isString(), SeExpr2::Interpreter::nextPC(), SeExpr2::ExprNode::numChildren(), SeExpr2::Interpreter::opData, SeExpr2::ExprFuncNode::promote(), prototype(), and SeExpr2::ExprNode::type().
Referenced by SeExpr2::ExprFuncNode::buildInterpreter().
|
virtual |
Reimplemented from SeExpr2::ExprNode.
|
virtual |
Preps the definition of this site.
Reimplemented from SeExpr2::ExprNode.
Definition at line 190 of file ExprNode.cpp.
References SeExpr2::ExprNode::_type, SeExpr2::ExprNode::checkCondition(), SeExpr2::ExprNode::child(), SeExpr2::ExprType::Error(), SeExpr2::ExprType::isFP(), SeExpr2::ExprPrototypeNode::isReturnTypeSet(), SeExpr2::ExprType::isValid(), SeExpr2::ExprPrototypeNode::name(), SeExpr2::ExprType::None(), SeExpr2::ExprNode::prep(), SeExpr2::ExprPrototypeNode::prep(), prototype(), SeExpr2::ExprVarEnv::resetAndSetParent(), SeExpr2::ExprPrototypeNode::returnType(), SeExpr2::ExprPrototypeNode::setReturnType(), SeExpr2::ExprType::toString(), and SeExpr2::ExprType::Varying().
|
virtual |
Preps a caller (i.e. we use callerNode to check arguments)
Definition at line 235 of file ExprNode.cpp.
References SeExpr2::ExprFuncNode::checkArg(), SeExpr2::ExprNode::checkCondition(), SeExpr2::ExprType::Error(), SeExpr2::ExprNode::numChildren(), prototype(), and SeExpr2::ExprPrototypeNode::returnType().
|
inline |
TODO: Accessor for prototype (probably not needed when we use prep right)
Definition at line 317 of file ExprNode.h.
References SeExpr2::ExprNode::child().
Referenced by buildInterpreterForCall(), and prep().
|
mutableprivate |
Definition at line 326 of file ExprNode.h.
Referenced by buildInterpreter(), and buildInterpreterForCall().
|
mutableprivate |
Definition at line 327 of file ExprNode.h.
Referenced by buildInterpreter(), and buildInterpreterForCall().