Qore Programming Language 1.17.0
Loading...
Searching...
No Matches
QoreValue hashdecl Reference

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

#include <QoreValue.h>

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

Public Member Methods

DLLEXPORT QoreValue ()
 creates with no value (i.e. QoreNothingNode)
 
DLLEXPORT QoreValue (AbstractQoreNode *n)
 the QoreValue object takes the reference of the argument passed
 
DLLEXPORT QoreValue (bool b)
 creates as a bool
 
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 QoreValue (double f)
 creates as a double
 
DLLEXPORT QoreValue (int i)
 creates as an int
 
DLLEXPORT QoreValue (int64 i)
 creates as an int
 
DLLEXPORT QoreValue (long i)
 creates as an int
 
DLLEXPORT QoreValue (unsigned int 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 AbstractQoreNodeassign (AbstractQoreNode *n)
 the QoreValue object takes the reference of the argument More...
 
DLLEXPORT AbstractQoreNodeassign (bool n)
 sets the value of the object and returns any node value held previously More...
 
DLLEXPORT AbstractQoreNodeassign (const QoreValue 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 (int64 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 (bool &needs_deref, ExceptionSink *xsink) const
 evaluates the node and returns the result
 
DLLEXPORT QoreValue eval (ExceptionSink *xsink) const
 evaluates the node and returns the result
 
DLLEXPORT QoreStringgetAsString (bool &del, int foff, ExceptionSink *xsink) const
 returns the string value with optional formatting of the contained node
 
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 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 QoreValueoperator= (const QoreSimpleValue &n)
 assigns a new value
 
DLLEXPORT QoreValueoperator= (const QoreValue &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...
 
- Public Member Methods inherited from QoreSimpleValue
DLLLOCAL QoreSimpleValueassign (AbstractQoreNode *n)
 assigns a new value to the object and returns a reference to the object; any current value is overwritten
 
DLLLOCAL QoreSimpleValueassign (bool b)
 assigns a new value to the object and returns a reference to the object; any current value is overwritten
 
DLLLOCAL QoreSimpleValueassign (double f)
 assigns a new value to the object and returns a reference to the object; any current value is overwritten
 
DLLLOCAL QoreSimpleValueassign (int64 i)
 assigns a new value to the object and returns a reference to the object; any current value is overwritten
 
DLLLOCAL QoreSimpleValueassign (QoreSimpleValue &val)
 assigns a new value to the object and returns a reference to the object; any current value is overwritten
 
DLLEXPORT void clear ()
 unconditionally set the QoreValue to QoreNothingNode (does not dereference any possible contained AbstractQoreNode ptr)
 
DLLEXPORT void discard (ExceptionSink *xsink)
 dereferences any contained AbstractQoreNode pointer and sets to 0; does not modify other values
 
template<typename T >
DLLLOCAL detail::QoreValueCastHelper< T >::Result get ()
 returns the value as the given type More...
 
template<typename T >
DLLLOCAL detail::QoreValueCastHelper< constT >::Result get () const
 returns the value as the given type More...
 
DLLEXPORT int64 getAsBigInt () const
 returns the value as an int
 
DLLEXPORT bool getAsBool () const
 returns the value as a bool
 
DLLEXPORT double getAsFloat () const
 returns the value as a float
 
DLLEXPORT AbstractQoreNodegetInternalNode ()
 returns any AbstractQoreNode value held; if type != QV_Node, returns nullptr
 
DLLEXPORT const AbstractQoreNodegetInternalNode () const
 returns any AbstractQoreNode value held; if type != QV_Node, returns nullptr
 
DLLEXPORT qore_type_t getType () const
 returns the type of value contained
 
DLLEXPORT const char * getTypeName () const
 returns a string type description of the value contained (ex: "nothing" for a null AbstractQoreNode pointer)
 
DLLEXPORT bool hasEffect () const
 return true if the value needs evaluation and has a side effect
 
DLLEXPORT bool isConstant () const
 returns true if the value is a constant value (does not require evaluation) More...
 
DLLEXPORT bool isNothing () const
 returns true if the object contains NOTHING
 
DLLEXPORT bool isNull () const
 returns true if the object contains NULL
 
DLLEXPORT bool isNullOrNothing () const
 returns true if the object contains NOTHING or NULL
 
DLLEXPORT bool isScalar () const
 returns true if the value is a scalar (int, bool, float, number, string) More...
 
DLLEXPORT bool isValue () const
 returns true if the object holds a value, false if it holds an expression
 
DLLEXPORT bool needsEval () const
 return true if the value needs evaluation
 
DLLEXPORT operator bool () const
 returns true if the value is not NOTHING
 
DLLEXPORT void set (AbstractQoreNode *n)
 assigns a new value to the object; any current value is overwritten
 
DLLLOCAL void set (bool b)
 assigns a boolean value to the object; any current value is overwritten
 
DLLLOCAL void set (double f)
 assigns a floating-point value to the object; any current value is overwritten
 
DLLLOCAL void set (int64 i)
 assigns an integer value to the object; any current value is overwritten
 
DLLEXPORT void set (QoreSimpleValue val)
 assigns a new value to the object; any current value is overwritten
 
template<typename T >
DLLLOCAL T * take ()
 returns a pointer to an object of the given class; takes the pointer from the object; the caller owns the reference returned More...
 
DLLEXPORT AbstractQoreNodetakeNode ()
 returns a referenced AbstractQoreNode pointer leaving "this" empty (value is taken from "this"); the caller owns the reference returned; do not call with a simple value (int, float or bool) More...
 

Friends

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

Additional Inherited Members

- Public Attributes inherited from QoreSimpleValue
valtype_t type
 indicates the value that the union is holding
 
qore_value_u v
 the actual value is stored here
 
- Private Member Methods inherited from QoreSimpleValue
DLLEXPORT AbstractQoreNodetakeNodeIntern ()
 returns the internal AbstractQoreNode pointer, does not check that type == QV_Node, leaves the object empty
 

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 ( 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/5]

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

◆ assign() [3/5]

DLLEXPORT AbstractQoreNode * QoreValue::assign ( 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

◆ assign() [4/5]

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() [5/5]

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

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