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