32#ifndef _QORE_FUNCTIONREFERENCENODE_H 
   34#define _QORE_FUNCTIONREFERENCENODE_H 
   81    DLLLOCAL 
static const char* getStaticTypeName() {
 
   82        return "call reference";
 
 
  193class OptionalCallReferenceAccessHelper {
 
  197    DLLLOCAL ~OptionalCallReferenceAccessHelper() {
 
  203    DLLLOCAL 
operator bool()
 const {
 
  204        return ref ? true : 
false;
 
base class for call references, reference-counted, dynamically allocated only
Definition CallReferenceNode.h:39
 
virtual DLLEXPORT int getAsString(QoreString &str, int foff, ExceptionSink *xsink) const
concatenate the verbose string representation of the value to an existing QoreString
 
DLLLOCAL AbstractCallReferenceNode * refSelf() const
Returns a non-const ptr to the same object after increasing the reference count.
Definition CallReferenceNode.h:76
 
virtual DLLEXPORT bool getAsBoolImpl() const
returns false unless perl-boolean-evaluation is enabled, in which case it returns true
 
virtual DLLEXPORT QoreString * getAsString(bool &del, int foff, ExceptionSink *xsink) const
returns a QoreString giving the verbose string representation of the value
 
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 di...
 
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 DLLEXPORT const char * getTypeName() const
returns the type name as a c string
 
The base class for all value and parse types in Qore expression trees.
Definition AbstractQoreNode.h:57
 
DLLEXPORT void ref() const
increments the reference count
 
container for holding Qore-language exception information and also for registering a "thread_exit" ca...
Definition ExceptionSink.h:50
 
This is the list container type in Qore, dynamically allocated only, reference counted.
Definition QoreListNode.h:52
 
supports parsing and executing Qore-language code, reference counted, dynamically-allocated only
Definition QoreProgram.h:128
 
Provides atomic reference counting to Qore objects.
Definition QoreReferenceCounter.h:44
 
DLLEXPORT void ROreference() const
Atomically increments the reference count.
 
DLLEXPORT bool ROdereference() const
Atomically decrements the reference count.
 
Qore's string type supported by the QoreEncoding class.
Definition QoreString.h:93
 
base class for resolved call references
Definition CallReferenceNode.h:115
 
virtual DLLEXPORT bool is_equal_hard(const AbstractQoreNode *v, ExceptionSink *xsink) const
returns true if the other node is the same value
 
DLLLOCAL ResolvedCallReferenceNode * refRefSelf() const
references itself and returns this
Definition CallReferenceNode.h:146
 
DLLLOCAL void weakRef()
Increments the weak reference count.
Definition CallReferenceNode.h:167
 
virtual DLLEXPORT bool is_equal_soft(const AbstractQoreNode *v, ExceptionSink *xsink) const
returns true if the other node is the same value
 
virtual DLLEXPORT QoreProgram * getProgram() const
returns a pointer to the QoreProgram object associated with this reference (can be nullptr)
 
QoreReferenceCounter weak_refs
weak references
Definition CallReferenceNode.h:180
 
virtual DLLEXPORT bool derefImpl(ExceptionSink *xsink)
Called when the strong reference count reaches zero.
 
virtual DLLEXPORT ~ResolvedCallReferenceNode()
public destructor function
 
DLLLOCAL void weakDeref()
Decrements the weak reference count.
Definition CallReferenceNode.h:172
 
virtual DLLLOCAL QoreValue execValue(const QoreListNode *args, ExceptionSink *xsink) const =0
pure virtual function for executing the function reference
 
virtual DLLEXPORT AbstractQoreNode * realCopy() const
returns this with the ref count inmcremented; not a real copy
 
DLLLOCAL ResolvedCallReferenceNode(bool n_needs_eval, qore_type_t n_type=NT_FUNCREF)
constructor is not exported outside the library
 
virtual DLLLOCAL QoreFunction * getFunction()=0
Returns the internal function object, if any; can return nullptr.
 
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 di...
 
DLLEXPORT ResolvedCallReferenceNode()
public exported constructor function
 
virtual DLLEXPORT int parseInit(QoreValue &val, QoreParseContext &parse_context)
for use by parse types to initialize them for execution during stage 1 parsing
 
int16_t qore_type_t
used to identify unique Qore data and parse types (descendents of AbstractQoreNode)
Definition common.h:76
 
const qore_type_t NT_FUNCREF
type value for ResolvedCallReferenceNode
Definition node_types.h:68
 
The main value class in Qore, designed to be passed by value.
Definition QoreValue.h:279