Qore Programming Language  0.9.3.1
QoreValue hashdecl Reference

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

#include <QoreValue.h>

Inherits QoreSimpleValue.

Public Member Methods

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 AbstractQoreNodeassign (AbstractQoreNode *n)
 the QoreValue object takes the reference of the argument More...
 
DLLEXPORT AbstractQoreNodeassign (int64 n)
 sets the value of the object and returns any node value held previously More...
 
DLLEXPORT AbstractQoreNodeassign (double n)
 sets the value of the object and returns any node value held previously More...
 
DLLEXPORT AbstractQoreNodeassign (bool n)
 sets the value of the object and returns any node value held previously More...
 
DLLEXPORT AbstractQoreNodeassignAndSanitize (const QoreValue n)
 sets the value of the object and returns any node value held previously More...
 
DLLEXPORT AbstractQoreNodeassignNothing ()
 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 QoreStringgetAsString (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); differs from the return value of getTypeName() for complex types (ex: "hash<string, int>")
 
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 QoreValueoperator= (const QoreValue &n)
 assigns a new value
 
DLLEXPORT QoreValueoperator= (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 AbstractQoreNodetakeIfNode ()
 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/4]

DLLEXPORT AbstractQoreNode* QoreValue::assign ( AbstractQoreNode n)

the QoreValue object takes the reference of the argument

Parameters
nthe 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() [2/4]

DLLEXPORT AbstractQoreNode* QoreValue::assign ( int64  n)

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

Parameters
nthe 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() [3/4]

DLLEXPORT AbstractQoreNode* QoreValue::assign ( double  n)

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

Parameters
nthe 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() [4/4]

DLLEXPORT AbstractQoreNode* QoreValue::assign ( bool  n)

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

Parameters
nthe 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

◆ assignAndSanitize()

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

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

Parameters
nthe new value of the object
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

◆ 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 hashdecl was generated from the following file: