32 #ifndef _QORE_QORENODEEVALOPTIONALREFHOLDER_H 34 #define _QORE_QORENODEEVALOPTIONALREFHOLDER_H 51 DLLLOCAL
void discard_intern() {
52 if (needs_deref && val)
65 DLLLOCAL
void*
operator new(size_t);
75 val = exp->
eval(needs_deref, xsink);
97 needs_deref = n_needs_deref;
117 DLLLOCAL
operator bool()
const {
return val != 0; }
120 DLLLOCAL
bool isTemp()
const {
return needs_deref; }
DLLLOCAL void assign(bool n_needs_deref, AbstractQoreNode *n_val)
assigns a new value to this holder object
Definition: QoreNodeEvalOptionalRefHolder.h:95
DLLLOCAL void discard()
discards any temporary value evaluated by the constructor or assigned by "assign()" ...
Definition: QoreNodeEvalOptionalRefHolder.h:88
The base class for all value and parse types in Qore expression trees.
Definition: AbstractQoreNode.h:54
DLLLOCAL const AbstractQoreNode * operator*() const
returns the object being managed
Definition: QoreNodeEvalOptionalRefHolder.h:114
container for holding Qore-language exception information and also for registering a "thread_exit" ca...
Definition: ExceptionSink.h:47
DLLEXPORT void deref(ExceptionSink *xsink)
decrements the reference count and calls derefImpl() if there_can_be_only_one is false, otherwise does nothing
DLLLOCAL const AbstractQoreNode * operator->() const
returns the object being managed
Definition: QoreNodeEvalOptionalRefHolder.h:111
DLLEXPORT void ref() const
increments the reference count
DLLLOCAL bool isTemp() const
returns true if the value is temporary (needs dereferencing)
Definition: QoreNodeEvalOptionalRefHolder.h:120
DLLLOCAL AbstractQoreNode * getReferencedValue()
returns a referenced value - the caller will own the reference
Definition: QoreNodeEvalOptionalRefHolder.h:102
DLLLOCAL ~QoreNodeEvalOptionalRefHolder()
discards any temporary value evaluated by the constructor or assigned by "assign()" ...
Definition: QoreNodeEvalOptionalRefHolder.h:83
this class manages reference counts for the optional evaluation of AbstractQoreNode objects ...
Definition: QoreNodeEvalOptionalRefHolder.h:45
DLLEXPORT AbstractQoreNode * eval(ExceptionSink *xsink) const
evaluates the object and returns a value (or 0)