Qore Programming Language 1.14.0
|
base class for resolved call references More...
#include <CallReferenceNode.h>
Public Member Methods | |
DLLEXPORT | ResolvedCallReferenceNode () |
public exported constructor function | |
DLLLOCAL | ResolvedCallReferenceNode (bool n_needs_eval, qore_type_t n_type=NT_FUNCREF) |
constructor is not exported outside the library | |
virtual DLLEXPORT | ~ResolvedCallReferenceNode () |
public destructor function | |
virtual DLLEXPORT QoreValue | evalImpl (bool &needs_deref, ExceptionSink *xsink) const |
this function should never be called for function references; this function should never be called directly More... | |
virtual DLLLOCAL QoreValue | execValue (const QoreListNode *args, ExceptionSink *xsink) const =0 |
pure virtual function for executing the function reference More... | |
virtual DLLLOCAL QoreFunction * | getFunction ()=0 |
Returns the internal function object, if any; can return nullptr. | |
virtual DLLEXPORT QoreProgram * | getProgram () const |
returns a pointer to the QoreProgram object associated with this reference (can be nullptr) More... | |
virtual DLLEXPORT bool | is_equal_hard (const AbstractQoreNode *v, ExceptionSink *xsink) const |
returns true if the other node is the same value | |
virtual DLLEXPORT bool | is_equal_soft (const AbstractQoreNode *v, ExceptionSink *xsink) const |
returns true if the other node is the same value | |
virtual DLLEXPORT int | parseInit (QoreValue &val, QoreParseContext &parse_context) |
for use by parse types to initialize them for execution during stage 1 parsing More... | |
virtual DLLEXPORT AbstractQoreNode * | realCopy () const |
returns this with the ref count inmcremented; not a real copy | |
DLLLOCAL ResolvedCallReferenceNode * | refRefSelf () const |
references itself and returns this | |
Public Member Methods inherited from AbstractCallReferenceNode | |
virtual DLLEXPORT bool | getAsBoolImpl () const |
returns false unless perl-boolean-evaluation is enabled, in which case it returns true More... | |
virtual DLLLOCAL QoreString * | getAsString (bool &del, int foff, ExceptionSink *xsink) const |
returns a QoreString giving the verbose string representation of the value More... | |
virtual DLLLOCAL int | getAsString (QoreString &str, int foff, ExceptionSink *xsink) const |
concatenate the verbose string representation of the value to an existing QoreString More... | |
virtual DLLLOCAL const char * | getTypeName () const |
returns the type name as a c string | |
Public Member Methods inherited from AbstractQoreNode | |
DLLEXPORT | AbstractQoreNode (const AbstractQoreNode &v) |
copy constructor | |
DLLEXPORT | AbstractQoreNode (qore_type_t t, bool n_value, bool n_needs_eval, bool n_there_can_be_only_one=false, bool n_custom_reference_handlers=false) |
constructor takes the type More... | |
virtual DLLEXPORT void | customDeref (ExceptionSink *xsink) |
virtual DLLEXPORT void | customRef () const |
special processing when the object's reference count transitions from 0-1 More... | |
DLLEXPORT void | deref (ExceptionSink *xsink) |
decrements the reference count and calls derefImpl() if there_can_be_only_one is false, otherwise does nothing More... | |
virtual DLLEXPORT bool | derefImpl (ExceptionSink *xsink) |
decrements the reference count More... | |
DLLEXPORT QoreValue | eval (bool &needs_deref, ExceptionSink *xsink) const |
optionally evaluates the argument More... | |
DLLEXPORT QoreValue | eval (ExceptionSink *xsink) const |
evaluates the object and returns a value (or 0) More... | |
virtual DLLEXPORT QoreValue | evalImpl (bool &needs_deref, ExceptionSink *xsink) const =0 |
optionally evaluates the argument More... | |
DLLEXPORT int64 | getAsBigInt () const |
returns the 64-bit integer value of the object More... | |
virtual DLLLOCAL int64 | getAsBigIntImpl () const |
default implementation, returns 0 More... | |
DLLEXPORT bool | getAsBool () const |
returns the boolean value of the object More... | |
virtual DLLLOCAL bool | getAsBoolImpl () const |
default implementation, returns false More... | |
DLLEXPORT double | getAsFloat () const |
returns the float value of the object More... | |
virtual DLLLOCAL double | getAsFloatImpl () const |
default implementation, returns 0.0 More... | |
DLLEXPORT int | getAsInt () const |
returns the integer value of the object More... | |
virtual DLLLOCAL int | getAsIntImpl () const |
default implementation, returns 0 More... | |
virtual DLLEXPORT QoreString * | getAsString (bool &del, int foff, ExceptionSink *xsink) const =0 |
returns a QoreString giving the verbose string representation of the value (including all contained values for container types) More... | |
virtual DLLEXPORT int | getAsString (QoreString &str, int foff, ExceptionSink *xsink) const =0 |
concatenate the verbose string representation of the value (including all contained values for container types) to an existing QoreString More... | |
virtual DLLEXPORT class DateTime * | getDateTimeRepresentation (bool &del) const |
returns the DateTime representation of this type (default implementation: returns ZeroDate, del = false) More... | |
virtual DLLEXPORT void | getDateTimeRepresentation (DateTime &dt) const |
assigns the date representation of a value to the DateTime reference passed, default implementation does nothing More... | |
virtual DLLEXPORT QoreString * | getStringRepresentation (bool &del) const |
returns the value of the type converted to a string, default implementation: returns the empty string More... | |
virtual DLLEXPORT void | getStringRepresentation (QoreString &str) const |
concatentates the value of the type to an existing QoreString reference, default implementation does nothing More... | |
DLLLOCAL qore_type_t | getType () const |
returns the data type More... | |
virtual DLLEXPORT const char * | getTypeName () const =0 |
returns the type name as a c string More... | |
virtual DLLEXPORT bool | is_equal_hard (const AbstractQoreNode *v, ExceptionSink *xsink) const =0 |
tests for equality ("deep compare" including all contained values for container types) without type conversions (hard compare) More... | |
virtual DLLEXPORT bool | is_equal_soft (const AbstractQoreNode *v, ExceptionSink *xsink) const =0 |
tests for equality ("deep compare" including all contained values for container types) with possible type conversion (soft compare) More... | |
DLLLOCAL bool | is_value () const |
returns true if the node represents a value More... | |
DLLLOCAL bool | isReferenceCounted () const |
returns true if the object is reference-counted | |
DLLLOCAL bool | needs_eval () const |
returns true if the object needs evaluation to return a value, false if not More... | |
DLLLOCAL AbstractQoreNode & | operator= (const AbstractQoreNode &) |
this function is not implemented; it is here as a private function in order to prohibit it from being used | |
virtual DLLLOCAL int | parseInit (QoreValue &val, QoreParseContext &parse_context) |
for use by parse types to initialize them for execution during stage 1 parsing More... | |
virtual DLLEXPORT AbstractQoreNode * | realCopy () const =0 |
returns a copy of the object; the caller owns the reference count More... | |
DLLEXPORT void | ref () const |
increments the reference count | |
DLLEXPORT AbstractQoreNode * | refSelf () const |
returns "this" with an incremented reference count More... | |
Public Member Methods inherited from QoreReferenceCounter | |
DLLEXPORT | QoreReferenceCounter () |
creates the reference counter object | |
DLLEXPORT | QoreReferenceCounter (const QoreReferenceCounter &old) |
creates a new object with a reference count of 1 More... | |
DLLEXPORT | ~QoreReferenceCounter () |
destroys the reference counter object | |
DLLEXPORT bool | is_unique () const |
returns true if the reference count is 1 More... | |
DLLEXPORT int | reference_count () const |
gets the reference count More... | |
DLLEXPORT bool | ROdereference () const |
atomically decrements the reference count More... | |
DLLEXPORT void | ROreference () const |
atomically increments the reference count | |
Additional Inherited Members | |
Private Member Methods inherited from AbstractCallReferenceNode | |
DLLLOCAL | AbstractCallReferenceNode (bool n_needs_eval, bool n_there_can_be_only_one, qore_type_t n_type=NT_FUNCREF) |
protected constructor for subclasses that are not reference-counted | |
virtual DLLLOCAL QoreValue | evalImpl (bool &needs_deref, ExceptionSink *xsink) const |
this function should never be called for function references; this function should never be called directly More... | |
Private Member Methods inherited from AbstractQoreNode | |
virtual DLLEXPORT | ~AbstractQoreNode () |
default destructor does nothing More... | |
Private Attributes inherited from AbstractQoreNode | |
bool | custom_reference_handlers: 1 |
set to one for objects that need custom reference handlers | |
bool | needs_eval_flag: 1 |
if this is true then the type can be evaluated | |
bool | there_can_be_only_one: 1 |
if this is set to true, then reference counting is turned off for objects of this class | |
qore_type_t | type: 11 |
the type of the object More... | |
bool | value: 1 |
this is true for values, if false then either the type needs evaluation to produce a value or is a parse expression | |
base class for resolved call references
|
virtual |
this function should never be called for function references; this function should never be called directly
in debug mode this function calls assert(false)
Reimplemented from AbstractCallReferenceNode.
Reimplemented in LocalStaticMethodCallReferenceNode, LocalMethodCallReferenceNode, and LocalFunctionCallReferenceNode.
|
pure virtual |
pure virtual function for executing the function reference
executes the function reference and returns the value returned
args | the arguments to the function |
xsink | any Qore-language exception thrown (and not handled) will be added here |
Implemented in LocalStaticMethodCallReferenceNode, LocalMethodCallReferenceNode, LocalFunctionCallReferenceNode, FunctionCallReferenceNode, RunTimeObjectMethodReferenceNode, and RunTimeResolvedMethodReferenceNode.
|
virtual |
returns a pointer to the QoreProgram object associated with this reference (can be nullptr)
this function is not exported in the library's public interface
Reimplemented in RunTimeObjectMethodReferenceNode, and RunTimeResolvedMethodReferenceNode.
|
virtual |
for use by parse types to initialize them for execution during stage 1 parsing
Not exported in the library; this method's API/ABI subject to change at any time.
This function should only be overridden by types that can appear in the parse tree (i.e. are recognized by the parser)
val | the containing QoreValue |
parse_context | the parse context |
Reimplemented from AbstractQoreNode.