32 #ifndef _QORE_QORENODEEVALOPTIONALREFHOLDER_H
34 #define _QORE_QORENODEEVALOPTIONALREFHOLDER_H
51 DLLLOCAL
void discard_intern() {
52 if (needs_deref && val)
60 DLLLOCAL QoreNodeEvalOptionalRefHolder& operator=(
const QoreNodeEvalOptionalRefHolder&);
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 const AbstractQoreNode * operator*() const
returns the object being managed
Definition: QoreNodeEvalOptionalRefHolder.h:114
DLLEXPORT AbstractQoreNode * eval(ExceptionSink *xsink) const
evaluates the object and returns a value (or 0)
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:55
DLLLOCAL QoreNodeEvalOptionalRefHolder(ExceptionSink *n_xsink)
constructor used to create a holder object
Definition: QoreNodeEvalOptionalRefHolder.h:69
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:43
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
DLLLOCAL QoreNodeEvalOptionalRefHolder(const AbstractQoreNode *exp, ExceptionSink *n_xsink)
constructor with a value that will call the class' eval(needs_deref) method
Definition: QoreNodeEvalOptionalRefHolder.h:73
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
DLLLOCAL bool isTemp() const
returns true if the value is temporary (needs dereferencing)
Definition: QoreNodeEvalOptionalRefHolder.h:120