| Qore Programming Language - C/C++ Library 1.0.8

Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
QoreNothingNode Class Reference

Qore's "NOTHING" parse tree/value type, not-referenced counted, not dynamically allocated. More...

`#include <QoreNothingNode.h>`

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

## Public Member Functions
virtual DLLEXPORT int | getAsString (QoreString &str, int foff, class ExceptionSink *xsink) const
| concatenate "<NOTHING>" to an existing QoreString More...
virtual DLLEXPORT QoreString * | getAsString (bool &del, int foff, class ExceptionSink *xsink) const
| returns a QoreString with the text: "<NOTHING>" More...
virtual DLLEXPORT const char * | getTypeName () const
| returns the type name as a c string
virtual DLLEXPORT bool | is_equal_hard (const AbstractQoreNode *v, ExceptionSink *xsink) const
| tests for equality without type conversions (hard compare) More...
virtual DLLEXPORT bool | is_equal_soft (const AbstractQoreNode *v, ExceptionSink *xsink) const
| tests for equality with possible type conversion (soft compare) More...
virtual DLLLOCAL int | parseInit (QoreValue &val, QoreParseContext &parse_context)
| returns the type information
Public Member Functions inherited from UniqueValueQoreNode
DLLLOCAL | UniqueValueQoreNode (qore_type_t t)
| constructor takes the type argument
DLLLOCAL | UniqueValueQoreNode (const UniqueValueQoreNode &)
| copy constructor
DLLLOCAL void * | operator new (size_t)=delete
| this function is not implemented; it is here as a private function in order to prohibit it from being used
DLLLOCAL UniqueValueQoreNode & | operator= (const UniqueValueQoreNode &)=delete
| this function is not implemented
virtual DLLEXPORT AbstractQoreNode * | realCopy () const
| returns itself; objects of this type are not reference-counted and only deleted manually (by static destruction)
Public Member Functions inherited from SimpleValueQoreNode
DLLLOCAL | SimpleValueQoreNode (qore_type_t t, bool n_there_can_be_only_one=false)
| creates the object by assigning the type code and setting the "value" flag, unsetting the "needs_eval" flag, and setting "there_can_be_only_one"
Public Member Functions inherited from SimpleQoreNode
DLLLOCAL | SimpleQoreNode (qore_type_t t, bool n_value, bool n_needs_eval, bool n_there_can_be_only_one=false)
| constructor takes the type and value arguments
DLLLOCAL | SimpleQoreNode (const SimpleQoreNode &v)
| copy constructor
DLLEXPORT void | deref (ExceptionSink *xsink)
| decrements the reference count and deletes the object when references = 0 More...
SimpleQoreNode & | operator= (const SimpleQoreNode &)=delete
| this function is not implemented
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 More...
DLLEXPORT | AbstractQoreNode (const AbstractQoreNode &v)
| copy constructor
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 (ExceptionSink *xsink) const
| evaluates the object and returns a value (or 0) More...
DLLEXPORT QoreValue | eval (bool &needs_deref, ExceptionSink *xsink) const
| optionally evaluates the argument 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...
virtual DLLLOCAL bool | getAsBoolImpl () const
| default implementation, returns false 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

## Static Public Member Functions
static DLLLOCAL qore_type_t | getStaticTypeCode ()
| returns the type code (useful in templates)
static DLLLOCAL const char * | getStaticTypeName ()
| returns the type name (useful in templates)

## Protected Member Functions
virtual DLLEXPORT QoreValue | evalImpl (bool &needs_deref, ExceptionSink *xsink) const
| this function is never called for this type More...
DLLLOCAL QoreValue | evalImpl (bool &needs_deref, ExceptionSink *xsink) const
| should never be called for value types More...
Protected Member Functions inherited from AbstractQoreNode
virtual DLLEXPORT | ~AbstractQoreNode ()
| default destructor does nothing More...

## Additional Inherited Members
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

Qore's "NOTHING" parse tree/value type, not-referenced counted, not dynamically allocated.

This class cannot be instantiated; there will only be one single QoreNothingNode object instantiated and used everywhere in the Qore library. Use the nothing() function or simply &Nothing to acquire a pointer to an object of this class. This value can be represented in Qore code as the keyword "NOTHING"

Note
  Qore's "NULL" is not equal to "NOTHING"
  in C++ code, use the is_nothing() function to test an AbstractQoreNode* to see if it's "NOTHING" (because also a null pointer is equivalent to NOTHING)

See also
  QoreNullNode

## Member Function Documentation

## ◆ evalImpl() [1/2]

virtual DLLEXPORT QoreValue SimpleValueQoreNode::evalImpl
| protected

this function is never called for this type

See also
  AbstractQoreNode::evalImpl()

## ◆ evalImpl() [2/2]

DLLLOCAL QoreValue QoreNothingNode::evalImpl | ( | bool & | needs_deref,
|  | ExceptionSink * | xsink
| ) |  | const
| protected virtual

should never be called for value types

in debugging builds of the library, calls to this function will abort

Reimplemented from SimpleValueQoreNode.

## ◆ getAsString() [1/2]

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

concatenate "<NOTHING>" 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
  xsink | if an error occurs, the Qore-language exception information will be added here

Returns
  -1 for exception raised, 0 = OK

Implements AbstractQoreNode.

## ◆ getAsString() [2/2]

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

returns a QoreString with the text: "<NOTHING>"

used for n and N printf formatting

Parameters

  del | is always set to true for this implementation of the function, meaning that the returned QoreString pointer should be deleted
  foff | for multi-line formatting offset, -1 = no line breaks (ignored by this version of the function)
  xsink | ignored by this version of the function NOTE: Use the QoreNodeAsStringHelper class (defined in QoreStringNode.h) instead of using this function directly

See also
  QoreNodeAsStringHelper

Implements AbstractQoreNode.

## ◆ is_equal_hard()

virtual DLLEXPORT bool QoreNothingNode::is_equal_hard | ( | const AbstractQoreNode * | v,
|  | ExceptionSink * | xsink
| ) |  | const
| virtual

tests for equality without type conversions (hard compare)

Parameters

  v | the value to compare
  xsink | ignored for this version of the function

Implements AbstractQoreNode.

## ◆ is_equal_soft()

virtual DLLEXPORT bool QoreNothingNode::is_equal_soft | ( | const AbstractQoreNode * | v,
|  | ExceptionSink * | xsink
| ) |  | const
| virtual

tests for equality with possible type conversion (soft compare)

since no type can be implicitly converted to NOTHING, this comparison is the same as is_equal_hard() for QoreNothingNode

Parameters

  v | the value to compare
  xsink | ignored for this version of the function

Implements AbstractQoreNode.

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

- include/qore/QoreNothingNode.h