ResolvedCallReferenceNode Class Referenceabstract

base class for resolved call references More...

`#include <CallReferenceNode.h>`

Inheritance diagram for ResolvedCallReferenceNode:
[legend]
Collaboration diagram for ResolvedCallReferenceNode:
[legend]

## Public Member Functions

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 void | parseInit (QoreValue &val, LocalVar *oflag, int pflag, int &lvids, const QoreTypeInfo *&returnTypeInfo)
| 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 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 Functions 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 Functions 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...
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...
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 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...
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
DLLEXPORT void | ref () const
| increments the reference count
DLLEXPORT AbstractQoreNode * | refSelf () const
| returns "this" with an incremented reference count More...
Public Member Functions 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

Protected Member Functions 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
Protected Member Functions inherited from AbstractQoreNode
virtual DLLEXPORT | ~AbstractQoreNode ()
| default destructor does nothing More...
Protected 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

## Detailed Description

base class for resolved call references

## Member Function Documentation

## evalImpl()

virtual DLLEXPORT QoreValue ResolvedCallReferenceNode::evalImpl | ( | bool & | needs_deref,
|  | ExceptionSink * | xsink
| ) |  | const

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.

## execValue()

virtual DLLLOCAL QoreValue ResolvedCallReferenceNode::execValue | ( | const QoreListNode * | args,
|  | ExceptionSink * | xsink
| ) |  | const

pure virtual

pure virtual function for executing the function reference

executes the function reference and returns the value returned

Parameters

  args | the arguments to the function
  xsink | any Qore-language exception thrown (and not handled) will be added here

Returns
  a pointer to an AbstractQoreNode, the caller owns the reference count returned (can also be nullptr)

## getProgram()

virtual DLLEXPORT QoreProgram* ResolvedCallReferenceNode::getProgram | ( |  | ) | const

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

Returns
  a pointer to the QoreProgram object associated with this reference (can be nullptr)

## parseInit()

virtual DLLEXPORT void ResolvedCallReferenceNode::parseInit | ( | QoreValue & | val,
|  | LocalVar * | oflag,
|  | int | pflag,
|  | int & | lvids,
|  | const QoreTypeInfo *& | typeInfo
| ) |  |

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)

Parameters

  val | the containing QoreValue
  oflag | non-zero if initialized within class code
  pflag | bitfield parse flag
  lvids | the number of new local variables declared in this node
  typeInfo | any available type constraints on the initialized value or expression

Reimplemented from AbstractQoreNode.

The documentation for this class was generated from the following file:

- include/qore/CallReferenceNode.h