All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
ReferenceNode Class Reference

parse type: reference to a lvalue expression More...

`#include <ReferenceNode.h>`

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

## Public Member Functions

DLLLOCAL | ReferenceNode (AbstractQoreNode *exp, QoreObject *self)
| creates the ReferenceNode object - internal function, not exported, not part of the Qore API
virtual DLLEXPORT int | getAsString (QoreString &str, int foff, ExceptionSink *xsink) const
| concatenate the verbose string representation of the value to an existing QoreString
virtual DLLEXPORT QoreString * | getAsString (bool &del, int foff, ExceptionSink *xsink) const
| returns a QoreString giving the verbose string representation of the value
virtual DLLEXPORT AbstractQoreNode * | realCopy () const
| returns a copy of the object
virtual DLLEXPORT bool | is_equal_soft (const AbstractQoreNode *v, ExceptionSink *xsink) const
| compares the values
virtual DLLEXPORT bool | is_equal_hard (const AbstractQoreNode *v, ExceptionSink *xsink) const
| compares the values
virtual DLLEXPORT const char * | getTypeName () const
| returns the type name as a c string
virtual DLLEXPORT bool | derefImpl (ExceptionSink *xsink)
| decrements the reference count
Public Member Functions inherited from AbstractQoreNode
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
DLLEXPORT | AbstractQoreNode (const AbstractQoreNode &v)
| copy constructor
DLLEXPORT bool | getAsBool () const
| returns the boolean value of the object
DLLEXPORT int | getAsInt () const
| returns the integer value of the object
DLLEXPORT int64 | getAsBigInt () const
| returns the 64-bit integer value of the object
DLLEXPORT double | getAsFloat () const
| returns the float value of the object
virtual DLLEXPORT QoreString * | getStringRepresentation (bool &del) const
| returns the value of the type converted to a string, default implementation: returns the empty string
virtual DLLEXPORT void | getStringRepresentation (QoreString &str) const
| concatentates the value of the type to an existing QoreString reference, default implementation does nothing
virtual DLLEXPORT class DateTime * | getDateTimeRepresentation (bool &del) const
| returns the DateTime representation of this type (default implementation: returns ZeroDate, del = false)
virtual DLLEXPORT void | getDateTimeRepresentation (DateTime &dt) const
| assigns the date representation of a value to the DateTime reference passed, default implementation does nothing
DLLLOCAL bool | needs_eval () const
| returns true if the object needs evaluation to return a value, false if not
DLLLOCAL qore_type_t | getType () const
| returns the data type
DLLEXPORT AbstractQoreNode * | eval (ExceptionSink *xsink) const
| evaluates the object and returns a value (or 0)
DLLEXPORT AbstractQoreNode * | eval (bool &needs_deref, ExceptionSink *xsink) const
| optionally evaluates the argument
DLLEXPORT int64 | bigIntEval (ExceptionSink *xsink) const
| evaluates the object and returns a 64-bit integer value
DLLEXPORT int | integerEval (ExceptionSink *xsink) const
| evaluates the object and returns an integer value
DLLEXPORT bool | boolEval (ExceptionSink *xsink) const
| evaluates the object and returns a boolean value
DLLEXPORT double | floatEval (ExceptionSink *xsink) const
| evaluates the object and returns a floating-point value
DLLLOCAL bool | is_value () const
| returns true if the node represents a value
DLLEXPORT void | deref (ExceptionSink *xsink)
| decrements the reference count and calls derefImpl() if there_can_be_only_one is false, otherwise does nothing
DLLEXPORT AbstractQoreNode * | refSelf () const
| returns "this" with an incremented reference count
DLLEXPORT void | ref () const
| increments the reference count
DLLLOCAL bool | isReferenceCounted () const
| returns true if the object is reference-counted
virtual DLLEXPORT AbstractQoreNode * | parseInit (LocalVar *oflag, int pflag, int &lvids, const QoreTypeInfo *&typeInfo)
| for use by parse types to initialize them for execution during stage 1 parsing
Public Member Functions inherited from QoreReferenceCounter
DLLEXPORT | QoreReferenceCounter ()
| creates the reference counter object
DLLEXPORT | ~QoreReferenceCounter ()
| destroys the reference counter object
DLLLOCAL int | reference_count () const
| gets the reference count
DLLLOCAL bool | is_unique () const
| returns true if the reference count is 1
DLLEXPORT void | ROreference () const
| atomically increments the reference count
DLLEXPORT bool | ROdereference () const
| atomically decrements the reference count

## Protected Member Functions

virtual DLLEXPORT AbstractQoreNode * | evalImpl (ExceptionSink *xsink) const
| returns the value of the reference; caller owns any reference count returned for non-NULL return values
virtual DLLEXPORT AbstractQoreNode * | evalImpl (bool &needs_deref, ExceptionSink *xsink) const
| returns the value of the reference
virtual DLLEXPORT int64 | bigIntEvalImpl (ExceptionSink *xsink) const
| returns the value of the reference as an int64
virtual DLLEXPORT int | integerEvalImpl (ExceptionSink *xsink) const
| returns the value of the reference as an int
virtual DLLEXPORT bool | boolEvalImpl (ExceptionSink *xsink) const
| returns the value of the reference as a bool
virtual DLLEXPORT double | floatEvalImpl (ExceptionSink *xsink) const
| returns the value of the reference as a double
virtual DLLEXPORT | ~ReferenceNode ()
| frees all memory and destroys the object
Protected Member Functions inherited from AbstractQoreNode
virtual DLLEXPORT | ~AbstractQoreNode ()
| default destructor does nothing

## Additional Inherited Members

Protected Attributes inherited from AbstractQoreNode
qore_type_t | type: 11
| the type of the object
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
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
bool | custom_reference_handlers: 1
| set to one for objects that need custom reference handlers

## Detailed Description

parse type: reference to a lvalue expression

This type could be passed to a builtin function. To get and set the value of the reference, use the TypeSafeReferenceHelper class. To create a reference argument to pass to a user or builtin function, use the ReferenceArgumentHelper class.

See Also
  TypeSafeReferenceHelper
  ReferenceArgumentHelper

## Member Function Documentation

virtual DLLEXPORT bool ReferenceNode::derefImpl | ( | ExceptionSink * | xsink | ) |

virtual

decrements the reference count

deletes the object when the reference count = 0. The ExceptionSink argument is needed for those types that could throw an exception when they are deleted (ex: QoreObject)

Parameters

  xsink | if an error occurs, the Qore-language exception information will be added here

Returns
  true if the object can be deleted, false if not (externally-managed)

Reimplemented from AbstractQoreNode.

virtual DLLEXPORT int ReferenceNode::getAsString | ( | QoreString & | str,
|  | int | foff,
|  | ExceptionSink * | xsink
| ) |  | const

virtual

concatenate the verbose string representation of the value to an existing QoreString

used for n and N printf formatting

Parameters

  str | the string representation of the type will be concatenated to this QoreString reference
  foff | for multi-line formatting offset, -1 = no line breaks (ignored in this version of the function)
  xsink | ignored in this version of the function

Returns
  this implementation of the function always returns 0 for no error raised

Implements AbstractQoreNode.

virtual DLLEXPORT QoreString* ReferenceNode::getAsString | ( | bool & | del,
|  | int | foff,
|  | ExceptionSink * | xsink
| ) |  | const

virtual

returns a QoreString giving the verbose string representation of the value

Used for n and N printf formatting. Do not call this function directly; use the QoreNodeAsStringHelper class (defined in QoreStringNode.h) instead

Parameters

  del | if this is true when the function returns, then the returned QoreString pointer should be deleted, if false, then it must not be
  foff | for multi-line formatting offset, -1 = no line breaks (ignored in this version of the function)
  xsink | ignored in this version of the function

See Also
  QoreNodeAsStringHelper

Implements AbstractQoreNode.

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

- include/qore/ReferenceNode.h (5431)