QoreValue Struct Reference

The main value class in Qore, designed to be passed by value. More...

`#include <QoreValue.h>`

Inherits QoreSimpleValue.

## Public Member Functions

DLLEXPORT | QoreValue ()
| creates with no value (i.e. QoreNothingNode)
DLLEXPORT | QoreValue (bool b)
| creates as a bool
DLLEXPORT | QoreValue (int i)
| creates as an int
DLLEXPORT | QoreValue (unsigned int i)
| creates as an int
DLLEXPORT | QoreValue (long i)
| creates as an int
DLLEXPORT | QoreValue (unsigned long i)
| creates as an int
DLLEXPORT | QoreValue (unsigned long long i)
| creates as an int
DLLEXPORT | QoreValue (int64 i)
| creates as an int
DLLEXPORT | QoreValue (double f)
| creates as a double
DLLEXPORT | QoreValue (AbstractQoreNode *n)
| the QoreValue object takes the reference of the argument passed
DLLEXPORT | QoreValue (const AbstractQoreNode *n)
| creates as the given object; does not reference n for the assignment to this object More...
DLLEXPORT | QoreValue (const QoreSimpleValue &v)
| creates the value from the argument
DLLEXPORT | QoreValue (const QoreValue &old)
| copies the value, in case type == QV_Node, no additional references are made in this function
DLLEXPORT AbstractQoreNode * | assign (const QoreValue n)
| sets the value of the object and returns any node value held previously More...
DLLEXPORT AbstractQoreNode * | assign (AbstractQoreNode *n)
| the QoreValue object takes the reference of the argument More...
DLLEXPORT AbstractQoreNode * | assign (int64 n)
| sets the value of the object and returns any node value held previously More...
DLLEXPORT AbstractQoreNode * | assign (double n)
| sets the value of the object and returns any node value held previously More...
DLLEXPORT AbstractQoreNode * | assign (bool n)
| sets the value of the object and returns any node value held previously More...
DLLEXPORT AbstractQoreNode * | assignNothing ()
| sets the value of the object to QoreNothingNode and returns any node value held previously More...
DLLEXPORT bool | derefCanThrowException () const
| returns true if a dereference could theoretically throw an exception (an object is reachable from this value)
DLLEXPORT void | discard (ExceptionSink *xsink)
| dereferences any contained AbstractQoreNode pointer and sets to 0; does not modify other values
DLLEXPORT QoreValue | eval (ExceptionSink *xsink) const
| evaluates the node and returns the result
DLLEXPORT QoreValue | eval (bool &needs_deref, ExceptionSink *xsink) const
| evaluates the node and returns the result
DLLEXPORT int | getAsString (QoreString &str, int format_offset, ExceptionSink *xsink) const
| appends the string value of the contained node to the string argument with optional formatting
DLLEXPORT QoreString * | getAsString (bool &del, int foff, ExceptionSink *xsink) const
| returns the string value with optional formatting of the contained node
DLLEXPORT const QoreTypeInfo * | getFullTypeInfo () const
| returns the exact type of the value; i.e. the class type for classes, hashdecl type for hashdecls More...
DLLEXPORT const char * | getFullTypeName () const
| returns a string type description of the full type of the value contained (ex: `"nothing"` for a null AbstractQoreNode pointer) More...
DLLEXPORT const char * | getFullTypeName (bool with_namespaces) const
| returns a string type description of the full type of the value contained (ex: `"nothing"` for a null AbstractQoreNode pointer) More...
DLLEXPORT const QoreTypeInfo * | getTypeInfo () const
| returns the type of the value More...
DLLEXPORT bool | hasNode () const
| returns true if the object contains a non-null AbstractQoreNode pointer (ie type == QV_Node && v.n is not 0)
DLLEXPORT bool | isEqualHard (const QoreValue v) const
| returns trus if the argument value is equal to the current value without any type conversions
DLLEXPORT bool | isEqualSoft (const QoreValue v, ExceptionSink *xsink) const
| returns trus if the argument value is equal to the current value with type conversions
DLLEXPORT bool | isEqualValue (const QoreValue v)
| returns true of the argument is exactly the same value as the current value, meaning also that if both contain pointers, that the pointers contained are the same pointer
DLLEXPORT bool | isReferenceCounted () const
| returns true if the value holds a referenced-counted node
DLLEXPORT QoreValue & | operator= (const QoreValue &n)
| assigns a new value
DLLEXPORT QoreValue & | operator= (const QoreSimpleValue &n)
| assigns a new value
DLLEXPORT void | ref () const
| references the contained value if type == QV_Node
DLLEXPORT QoreValue | refSelf () const
| references the contained value if type == QV_Node, returns itself
DLLEXPORT void | sanitize ()
| converts any node pointers to efficient representations if possible and dereferences the node value contained
DLLEXPORT void | swap (QoreValue &val)
| exchanges the values
DLLEXPORT AbstractQoreNode * | takeIfNode ()
| returns a referenced value; leaving the "this" untouched; the caller owns the reference returned More...

## Friends

template<typename >
struct | detail::QoreValueCastHelper
class | ValueHolder
class | ValueOptionalRefHolder

## Detailed Description

The main value class in Qore, designed to be passed by value.

## Constructor & Destructor Documentation

## QoreValue()

DLLEXPORT QoreValue::QoreValue | ( | const AbstractQoreNode * | n | ) |

creates as the given object; does not reference n for the assignment to this object

sanitizes n (increases the reference of n if necessary), meaning that if possible, the value is converted to an immediate value in place (int, float, or bool)

if getType() == QV_Node after this assignment, then the node must be referenced for the assignment

## Member Function Documentation

## assign() [1/5]

DLLEXPORT AbstractQoreNode* QoreValue::assign | ( | const QoreValue | n | ) |

sets the value of the object and returns any node value held previously

Parameters

  n | the new value of the object

Returns
  any node value held before; if type != QV_Node before the assignment, returns NULL

## assign() [2/5]

DLLEXPORT AbstractQoreNode* QoreValue::assign | ( | AbstractQoreNode * | n | ) |

the QoreValue object takes the reference of the argument

Parameters

  n | the new node value of the object, sets type to QV_Node

Returns
  any node value held before; if type != QV_Node before the assignment, returns NULL

## assign() [3/5]

DLLEXPORT AbstractQoreNode* QoreValue::assign | ( | int64 | n | ) |

sets the value of the object and returns any node value held previously

Parameters

  n | the new value of the object; sets type to QV_Int

Returns
  any node value held before; if type != QV_Node before the assignment, returns NULL

## assign() [4/5]

DLLEXPORT AbstractQoreNode* QoreValue::assign | ( | double | n | ) |

sets the value of the object and returns any node value held previously

Parameters

  n | the new value of the object; sets type to QV_Float

Returns
  any node value held before; if type != QV_Node before the assignment, returns NULL

## assign() [5/5]

DLLEXPORT AbstractQoreNode* QoreValue::assign | ( | bool | n | ) |

sets the value of the object and returns any node value held previously

Parameters

  n | the new value of the object; sets type to QV_Bool

Returns
  any node value held before; if type != QV_Node before the assignment, returns NULL

## assignNothing()

DLLEXPORT AbstractQoreNode* QoreValue::assignNothing | ( |  | ) |

sets the value of the object to QoreNothingNode and returns any node value held previously

sets type to QV_Node

Returns
  any node value held before; if type != QV_Node before the assignment, returns NULL

## getFullTypeInfo()

DLLEXPORT const QoreTypeInfo* QoreValue::getFullTypeInfo | ( |  | ) | const

returns the exact type of the value; i.e. the class type for classes, hashdecl type for hashdecls

Since
  Qore 0.9

## getFullTypeName() [1/2]

DLLEXPORT const char* QoreValue::getFullTypeName | ( |  | ) | const

returns a string type description of the full type of the value contained (ex: `"nothing"` for a null AbstractQoreNode pointer)

differs from the return value of getTypeName() for complex types (ex: `"hash<string, int>"`)

## getFullTypeName() [2/2]

DLLEXPORT const char* QoreValue::getFullTypeName | ( | bool | with_namespaces | ) | const

returns a string type description of the full type of the value contained (ex: `"nothing"` for a null AbstractQoreNode pointer)

differs from the return value of getTypeName() for complex types (ex: `"hash<string, int>"`)

Parameters

  with_namespaces | if true then class and hashdecl names are given with full namespace paths

Since
  Qore 1.0

## getTypeInfo()

DLLEXPORT const QoreTypeInfo* QoreValue::getTypeInfo | ( |  | ) | const

returns the type of the value

Since
  Qore 0.8.13

## takeIfNode()

DLLEXPORT AbstractQoreNode* QoreValue::takeIfNode | ( |  | ) |

returns a referenced value; leaving the "this" untouched; the caller owns the reference returned

returns a referenced AbstractQoreNode pointer only if the contained value is an AbstractQoreNode pointer, in which case "this" is left empty (the value is taken from "this"); returns 0 if the object does not contain an AbstractQoreNode pointer (type != QV_Node)

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

- include/qore/QoreValue.h