32 #ifndef _QORE_QORENUMBERNODE_H
34 #define _QORE_QORENUMBERNODE_H
42 #define QORE_NF_DEFAULT 0
44 #define QORE_NF_SCIENTIFIC (1 << 0)
46 #define QORE_NF_RAW (1 << 1)
52 friend struct qore_number_private;
55 DLLLOCAL
virtual bool getAsBoolImpl()
const;
58 DLLLOCAL
virtual int getAsIntImpl()
const;
61 DLLLOCAL
virtual int64 getAsBigIntImpl()
const;
64 DLLLOCAL
virtual double getAsFloatImpl()
const;
68 struct qore_number_private*
priv;
215 DLLEXPORT
bool zero()
const;
218 DLLEXPORT
int sign()
const;
224 DLLEXPORT
bool lessThan(
double n)
const;
260 DLLEXPORT
bool equals(
double n)
const;
275 DLLEXPORT
unsigned getPrec()
const;
278 DLLEXPORT
bool nan()
const;
281 DLLEXPORT
bool inf()
const;
318 DLLLOCAL QoreNumberNodeHelper& operator=(
const QoreNumberNodeHelper&);
319 DLLLOCAL
void*
operator new(size_t);
323 DLLLOCAL QoreNumberNodeHelper(
const QoreValue n);
virtual DLLEXPORT class DateTime * getDateTimeRepresentation(bool &del) const
returns the DateTime representation of this value and sets del to true
Qore's arbitrary-precision number value type, dynamically-allocated only, reference counted...
Definition: QoreNumberNode.h:51
DLLEXPORT bool nan() const
returns true if the number is NaN
DLLEXPORT bool inf() const
returns true if the number is +/-inf
DLLEXPORT void toString(QoreString &str, int fmt=QORE_NF_DEFAULT) const
concatenates the string value corresponding to the number to the string given
DLLLOCAL bool is_temp() const
returns true if the referenced being managed is temporary
Definition: QoreNumberNode.h:348
virtual DLLEXPORT QoreString * getStringRepresentation(bool &del) const
returns the number value converted to a string and sets del to true
static DLLEXPORT QoreNumberNode * toNumber(const AbstractQoreNode *v)
returns the representation of the value as a number if possible (otherwise returns 0)...
Holds absolute and relative date/time values in Qore with precision to the microsecond.
Definition: DateTime.h:93
DLLEXPORT unsigned getPrec() const
returns the precision of the number
DLLEXPORT QoreNumberNode * negate() const
returns the negative of the current object (this)
DLLEXPORT bool equals(const QoreNumberNode &n) const
returns true if the current object is equal to the argument
The base class for all value and parse types in Qore expression trees.
Definition: AbstractQoreNode.h:54
DLLEXPORT bool ordinary() const
returns true if the number is an ordinary number (neither NaN nor an infinity)
manages conversions of a QoreValue to a QoreNumberNode
Definition: QoreNumberNode.h:312
DLLLOCAL ~QoreNumberNodeHelper()
destroys the object and dereferences the pointer being managed if it was a temporary object ...
static DLLLOCAL const char * getStaticTypeName()
returns the type name (useful in templates)
Definition: QoreNumberNode.h:299
DLLEXPORT QoreNumberNode * doPlus(const QoreNumberNode &n) const
add the argument to this value and return the result
DLLEXPORT bool greaterThan(const QoreNumberNode &n) const
returns true if the current object is greater than the argument
Qore's string type supported by the QoreEncoding class.
Definition: QoreString.h:82
DLLEXPORT QoreNumberNode * doDivideBy(const QoreNumberNode &n, ExceptionSink *xsink) const
divide this value by the argument return the result (can throw a division-by-zero exception) ...
struct qore_number_private * priv
the private implementation of the type
Definition: QoreNumberNode.h:68
DLLEXPORT QoreNumberNode()
creates a new numbering-point value and assigns it to 0
DLLEXPORT bool greaterThanOrEqual(const QoreNumberNode &n) const
returns true if the current object is greater than or equal to the argument
virtual DLLLOCAL AbstractQoreNode * parseInit(LocalVar *oflag, int pflag, int &lvids, const QoreTypeInfo *&typeInfo)
returns the type information
DLLEXPORT bool lessThan(const QoreNumberNode &n) const
returns true if the current object is less than the argument
static DLLLOCAL qore_type_t getStaticTypeCode()
returns the type code (useful in templates)
Definition: QoreNumberNode.h:304
The main value class in Qore, designed to be passed by value.
Definition: QoreValue.h:112
container for holding Qore-language exception information and also for registering a "thread_exit" ca...
Definition: ExceptionSink.h:47
DLLEXPORT bool lessThanOrEqual(const QoreNumberNode &n) const
returns true if the current object is less than or equal to the argument
virtual DLLEXPORT int getAsString(QoreString &str, int foff, class ExceptionSink *xsink) const
concatenate the string representation of the number value to an existing QoreString ...
long long int64
64bit integer type, cannot use int64_t here since it breaks the API on some 64-bit systems due to equ...
Definition: common.h:241
DLLEXPORT QoreNumberNode * numberRefSelf() const
returns a pointer to this with the reference count incremented
DLLEXPORT QoreNumberNode * doMinus(const QoreNumberNode &n) const
subtract the argument from this value and return the result
virtual DLLEXPORT AbstractQoreNode * realCopy() const
returns a copy of the object; the caller owns the reference count
virtual DLLEXPORT const char * getTypeName() const
returns the type name as a c string
DLLLOCAL const QoreNumberNode * operator->()
returns the object being managed
Definition: QoreNumberNode.h:332
int16_t qore_type_t
used to identify unique Qore data and parse types (descendents of AbstractQoreNode) ...
Definition: common.h:71
virtual DLLEXPORT ~QoreNumberNode()
the destructor is protected because it should not be called directly
base class for simple value types
Definition: AbstractQoreNode.h:434
const qore_type_t NT_NUMBER
type value for QoreNumberNode
Definition: node_types.h:53
DLLEXPORT QoreNumberNode * doMultiply(const QoreNumberNode &n) const
multiply the argument to this value and return the result
DLLEXPORT int sign() const
returns -1 if the number is negative, 0 if zero, or 1 if the number is positive
DLLEXPORT QoreNumberNode * getReferencedValue()
returns a referenced value and leaves the current object empty; the caller will own the reference ...
virtual DLLEXPORT bool is_equal_hard(const AbstractQoreNode *v, ExceptionSink *xsink) const
tests for equality without type conversions (hard compare)
DLLLOCAL const QoreNumberNode * operator*()
returns the object being managed
Definition: QoreNumberNode.h:338
DLLEXPORT bool zero() const
returns true if the number is zero
virtual DLLEXPORT bool is_equal_soft(const AbstractQoreNode *v, ExceptionSink *xsink) const
tests for equality with possible type conversion (soft compare)