PTLib
Version 2.14.3
|
A wrapper around a Variable Type class. More...
#include <vartype.h>
Classes | |
union | Variant |
Public Types | |
enum | BasicType { VarNULL, VarBoolean, VarChar, VarInt8, VarInt16, VarInt32, VarInt64, VarUInt8, VarUInt16, VarUInt32, VarUInt64, VarFloatSingle, VarFloatDouble, VarFloatExtended, VarGUID, VarTime, VarStaticString, VarFixedString, VarDynamicString, VarStaticBinary, VarDynamicBinary } |
Type of the parameter in Paramater structure. More... | |
![]() | |
enum | Comparison { LessThan = -1, EqualTo = 0, GreaterThan = 1 } |
Result of the comparison operation performed by the Compare() function. More... | |
Public Member Functions | |
Construction | |
PVarType () | |
Create a NULL type object. More... | |
PVarType (bool value) | |
Create a boolean type object. More... | |
PVarType (char value) | |
Create a 8 bit integer type object. More... | |
PVarType (int16_t value) | |
Create a 16 bit integer type object. More... | |
PVarType (int32_t value) | |
Create a 32 bit integer type object. More... | |
PVarType (int64_t value) | |
Create a 64 bit integertype object. More... | |
PVarType (uint8_t value) | |
Create a 8 bit unsigned integer type object. More... | |
PVarType (uint16_t value) | |
Create a 16 bit unsigned integer type object. More... | |
PVarType (uint32_t value) | |
Create a 32 bit unsigned integer type object. More... | |
PVarType (uint64_t value) | |
Create a 64 bit unsigned integer type object. More... | |
PVarType (float value) | |
Create a single precision floating point type object. More... | |
PVarType (double value) | |
Create a double precision floating point type object. More... | |
PVarType (long double value) | |
Create a extended (long double) precision floating point type object. More... | |
PVarType (const PGloballyUniqueID &value) | |
Create a time of day type object. More... | |
PVarType (const PTime &value) | |
Create a time of day type object. More... | |
PVarType (const char *value, bool dynamic=false) | |
Create a string type object. More... | |
PVarType (const PString &value, bool dynamic=true) | |
Create a string type object. More... | |
PVarType (const void *value, PINDEX len, bool dynamic=false) | |
Create a data (memory block) type object. More... | |
PVarType (const PBYTEArray &value, bool dynamic=true) | |
Create a data (memory block) type object. More... | |
PVarType (const PVarType &other) | |
Copy constructor. More... | |
PVarType & | operator= (bool value) |
Assign a boolean type object. More... | |
PVarType & | operator= (char value) |
Assign a 8 bit integer type object. More... | |
PVarType & | operator= (int16_t value) |
Assign a 16 bit integer type object. More... | |
PVarType & | operator= (int32_t value) |
Assign a 32 bit integer type object. More... | |
PVarType & | operator= (int64_t value) |
Assign a 64 bit integertype object. More... | |
PVarType & | operator= (uint8_t value) |
Assign a 8 bit unsigned integer type object. More... | |
PVarType & | operator= (uint16_t value) |
Assign a 16 bit unsigned integer type object. More... | |
PVarType & | operator= (uint32_t value) |
Assign a 32 bit unsigned integer type object. More... | |
PVarType & | operator= (uint64_t value) |
Assign a 64 bit unsigned integer type object. More... | |
PVarType & | operator= (float value) |
Assign a single precision floating point type object. More... | |
PVarType & | operator= (double value) |
Assign a double precision floating point type object. More... | |
PVarType & | operator= (long double value) |
Assign a extended (long double) precision floating point type object. More... | |
PVarType & | operator= (const PGloballyUniqueID &value) |
Assign a time of day type object. More... | |
PVarType & | operator= (const PTime &value) |
Assign a time of day type object. More... | |
PVarType & | operator= (const char *str) |
Assignment operator for strings. More... | |
PVarType & | operator= (const PString &str) |
Assignment operator for strings. More... | |
PVarType & | operator= (const PVarType &other) |
Assignment operator. More... | |
~PVarType () | |
Destroy the variable type object. More... | |
Overrides from PObject | |
virtual void | PrintOn (ostream &strm) const |
virtual void | ReadFrom (istream &strm) |
virtual PObject * | Clone () const |
Create a copy of the class on the heap. More... | |
member variable access | |
BasicType | GetType () const |
Get the basic type of this instance. More... | |
virtual bool | SetType (BasicType type, PINDEX option=0) |
Set the basic type. More... | |
bool | AsBoolean () const |
int | AsInteger () const |
unsigned | AsUnsigned () const |
int64_t | AsInteger64 () const |
uint64_t | AsUnsigned64 () const |
double | AsFloat () const |
PGloballyUniqueID | AsGUID () const |
PTime | AsTime () const |
PString | AsString () const |
template<typename TYPE > | |
TYPE | As () const |
template<> | |
bool | As () const |
template<> | |
int | As () const |
template<> | |
unsigned | As () const |
template<> | |
int64_t | As () const |
template<> | |
uint64_t | As () const |
template<> | |
double | As () const |
template<> | |
PGloballyUniqueID | As () const |
template<> | |
PTime | As () const |
template<> | |
PString | As () const |
const void * | GetPointer () const |
PINDEX | GetSize () const |
virtual PVarType & | SetValue (const PString &value) |
Set the instances value without changing it's type. More... | |
virtual PVarType & | SetString (const char *value, bool dynamic) |
PVarType & | SetStaticString (const char *value) |
PVarType & | SetDynamicString (const char *value) |
virtual PVarType & | SetBinary (const void *data, PINDEX len, bool dynamic) |
PVarType & | SetBinary (const PBYTEArray &value, bool dynamic) |
PVarType & | SetStaticBinary (const void *data, PINDEX len) |
PVarType & | SetStaticBinary (const PBYTEArray &value) |
PVarType & | SetDynamicBinary (const void *data, PINDEX len) |
PVarType & | SetDynamicBinary (const PBYTEArray &value) |
![]() | |
unsigned | GetTraceContextIdentifier () const |
Get PTRACE context identifier. More... | |
void | SetTraceContextIdentifier (unsigned id) |
void | GetTraceContextIdentifier (PObject &obj) |
void | GetTraceContextIdentifier (PObject *obj) |
void | SetTraceContextIdentifier (const PObject &obj) |
void | SetTraceContextIdentifier (const PObject *obj) |
virtual | ~PObject () |
template<class CLS > | |
CLS * | CloneAs () const |
As for Clone() but converts to specified type. More... | |
virtual PINDEX | HashFunction () const |
This function yields a hash value required by the PDictionary class. More... | |
virtual const char * | GetClass (unsigned ancestor=0) const |
Get the current dynamic type of the object instance. More... | |
PBoolean | IsClass (const char *cls) const |
virtual PBoolean | InternalIsDescendant (const char *clsName) const |
Determine if the dynamic type of the current instance is a descendent of the specified class. More... | |
__inline const PObject * | PTraceObjectInstance () const |
virtual Comparison | Compare (const PObject &obj) const |
Compare the two objects and return their relative rank. More... | |
virtual Comparison | CompareObjectMemoryDirect (const PObject &obj) const |
Determine the byte wise comparison of two objects. More... | |
bool | operator== (const PObject &obj) const |
Compare the two objects. More... | |
bool | operator!= (const PObject &obj) const |
Compare the two objects. More... | |
bool | operator< (const PObject &obj) const |
Compare the two objects. More... | |
bool | operator> (const PObject &obj) const |
Compare the two objects. More... | |
bool | operator<= (const PObject &obj) const |
Compare the two objects. More... | |
bool | operator>= (const PObject &obj) const |
Compare the two objects. More... | |
virtual void | PrintOn (ostream &strm) const |
Output the contents of the object to the stream. More... | |
virtual void | ReadFrom (istream &strm) |
Input the contents of the object from the stream. More... | |
Protected Member Functions | |
virtual void | OnGetValue () |
Called before all the AsXXX() functions execute. More... | |
virtual void | OnValueChanged () |
Called after SetValue() has (possibly) changed the value. More... | |
virtual void | InternalCopy (const PVarType &other) |
void | InternalDestroy () |
![]() | |
PObject () | |
Constructor for PObject, made protected so cannot ever create one on its own. More... | |
Protected Attributes | |
BasicType | m_type |
Type of parameter. More... | |
union PVarType::Variant | m_ |
![]() | |
unsigned | m_traceContextIdentifier |
Additional Inherited Members | |
![]() | |
static const char * | Class () |
Get the name of the class as a C string. More... | |
static __inline const PObject * | PTraceObjectInstance (const char *) |
static __inline const PObject * | PTraceObjectInstance (const PObject *obj) |
static Comparison | InternalCompareObjectMemoryDirect (const PObject *obj1, const PObject *obj2, PINDEX size) |
Internal function caled from CompareObjectMemoryDirect() More... | |
![]() |
A wrapper around a Variable Type class.
This allows run time variable type objects to be passed to various sub-systems.
enum PVarType::BasicType |
Type of the parameter in Paramater structure.
|
inline |
Create a NULL type object.
|
inline |
Create a boolean type object.
References PVarType::Variant::boolean, and m_.
|
inline |
Create a 8 bit integer type object.
References PVarType::Variant::character, and m_.
|
inline |
Create a 16 bit integer type object.
References PVarType::Variant::int16, and m_.
|
inline |
Create a 32 bit integer type object.
References PVarType::Variant::int32, and m_.
|
inline |
Create a 64 bit integertype object.
References PVarType::Variant::int64, and m_.
|
inline |
Create a 8 bit unsigned integer type object.
References m_, and PVarType::Variant::uint8.
|
inline |
Create a 16 bit unsigned integer type object.
References m_, and PVarType::Variant::uint16.
|
inline |
Create a 32 bit unsigned integer type object.
References m_, and PVarType::Variant::uint32.
|
inline |
Create a 64 bit unsigned integer type object.
References m_, and PVarType::Variant::uint64.
|
inline |
Create a single precision floating point type object.
References PVarType::Variant::floatSingle, and m_.
|
inline |
Create a double precision floating point type object.
References PVarType::Variant::floatDouble, and m_.
|
inline |
Create a extended (long double) precision floating point type object.
References PVarType::Variant::floatExtended, and m_.
|
inline |
Create a time of day type object.
References PContainer::GetSize(), PVarType::Variant::guid, and m_.
|
inline |
Create a time of day type object.
References PTime::GetTimeInSeconds(), m_, PVarType::Variant::seconds, and PVarType::Variant::time.
|
inline |
Create a string type object.
References SetString().
|
inline |
Create a string type object.
References SetString().
|
inline |
Create a data (memory block) type object.
References SetBinary().
|
inline |
Create a data (memory block) type object.
References SetBinary().
|
inline |
Copy constructor.
Not for "dynamic" types this is not very efficient as it will make a duplicate of the memory used.
References InternalCopy().
|
inline |
Destroy the variable type object.
References InternalDestroy().
|
inline |
References AsString().
|
inline |
References AsBoolean().
|
inline |
References AsInteger().
|
inline |
References AsUnsigned().
|
inline |
References AsInteger64().
|
inline |
References AsUnsigned64().
|
inline |
References AsFloat().
|
inline |
References AsGUID().
|
inline |
References AsString().
bool PVarType::AsBoolean | ( | ) | const |
Referenced by As().
double PVarType::AsFloat | ( | ) | const |
Referenced by As().
PGloballyUniqueID PVarType::AsGUID | ( | ) | const |
Referenced by As().
int PVarType::AsInteger | ( | ) | const |
Referenced by As().
int64_t PVarType::AsInteger64 | ( | ) | const |
Referenced by As().
unsigned PVarType::AsUnsigned | ( | ) | const |
Referenced by As().
uint64_t PVarType::AsUnsigned64 | ( | ) | const |
Referenced by As().
|
virtual |
Create a copy of the class on the heap.
The exact semantics of the descendent class determine what is required to make a duplicate of the instance. Not all classes can even do a clone operation.
The main user of the clone function is the PDictionary
class as it requires copies of the dictionary keys.
The default behaviour is for this function to assert.
Reimplemented from PObject.
const void* PVarType::GetPointer | ( | ) | const |
PINDEX PVarType::GetSize | ( | ) | const |
Referenced by PODBC::Row::ColumnSize().
|
inline |
Get the basic type of this instance.
References m_type.
|
protectedvirtual |
Reimplemented in PODBC::Field.
Referenced by operator=(), and PVarType().
|
protected |
Referenced by ~PVarType().
|
protectedvirtual |
Called before all the AsXXX() functions execute.
Reimplemented in PRefVar< PBYTEArray >, PRefVar< PString >, PRefVar< PTime >, PRefVar< PGloballyUniqueID >, PRefVar< TYPE >, and PODBC::Field.
|
protectedvirtual |
Called after SetValue() has (possibly) changed the value.
Reimplemented in PRefVar< PBYTEArray >, PRefVar< PString >, PRefVar< PTime >, PRefVar< PGloballyUniqueID >, PRefVar< TYPE >, and PODBC::Field.
PVarType& PVarType::operator= | ( | bool | value | ) |
Assign a boolean type object.
Referenced by PODBC::Field::operator=(), PRefVar< TYPE >::operator=(), PRefVar< PGloballyUniqueID >::operator=(), PRefVar< PTime >::operator=(), PRefVar< PString >::operator=(), and PRefVar< PBYTEArray >::operator=().
PVarType& PVarType::operator= | ( | char | value | ) |
Assign a 8 bit integer type object.
PVarType& PVarType::operator= | ( | int16_t | value | ) |
Assign a 16 bit integer type object.
PVarType& PVarType::operator= | ( | int32_t | value | ) |
Assign a 32 bit integer type object.
PVarType& PVarType::operator= | ( | int64_t | value | ) |
Assign a 64 bit integertype object.
PVarType& PVarType::operator= | ( | uint8_t | value | ) |
Assign a 8 bit unsigned integer type object.
PVarType& PVarType::operator= | ( | uint16_t | value | ) |
Assign a 16 bit unsigned integer type object.
PVarType& PVarType::operator= | ( | uint32_t | value | ) |
Assign a 32 bit unsigned integer type object.
PVarType& PVarType::operator= | ( | uint64_t | value | ) |
Assign a 64 bit unsigned integer type object.
PVarType& PVarType::operator= | ( | float | value | ) |
Assign a single precision floating point type object.
PVarType& PVarType::operator= | ( | double | value | ) |
Assign a double precision floating point type object.
PVarType& PVarType::operator= | ( | long double | value | ) |
Assign a extended (long double) precision floating point type object.
PVarType& PVarType::operator= | ( | const PGloballyUniqueID & | value | ) |
Assign a time of day type object.
|
inline |
Assignment operator for strings.
Default to dynamic, not static as is this is much safer.
References SetDynamicString().
Assignment operator for strings.
Default to dynamic, not static as is this is much safer.
References SetDynamicString().
Assignment operator.
Not for "dynamic" types this is not very efficient as it will make a duplicate of the memory used.
References InternalCopy().
|
virtual |
|
virtual |
|
virtual |
Referenced by PVarType(), SetDynamicBinary(), and SetStaticBinary().
|
inline |
References PContainer::GetSize(), and SetBinary().
Referenced by SetBinary().
|
inline |
References SetBinary().
|
inline |
References SetBinary().
|
inline |
References SetString().
Referenced by operator=().
|
inline |
References SetBinary().
Referenced by PRefVar< PBYTEArray >::OnGetValue(), and PRefVar< PBYTEArray >::operator=().
|
inline |
References SetBinary().
|
inline |
References SetString().
|
virtual |
Referenced by PRefVar< PString >::OnGetValue(), PRefVar< PString >::operator=(), PVarType(), SetDynamicString(), and SetStaticString().
|
virtual |
Set the basic type.
The option
argument means different things depending on the type. If VarDynamicString or VarDynamicBinary then this indicates the size of the storage to allocate. If VarTime, then thius is the format to use for AsString().
Reimplemented in PODBC::Field.
Set the instances value without changing it's type.
|
protected |
Referenced by PRefVar< TYPE >::OnGetValue(), PRefVar< PGloballyUniqueID >::OnGetValue(), PRefVar< PTime >::OnGetValue(), PRefVar< TYPE >::OnValueChanged(), PRefVar< PGloballyUniqueID >::OnValueChanged(), PRefVar< PTime >::OnValueChanged(), PRefVar< PString >::OnValueChanged(), PRefVar< PBYTEArray >::OnValueChanged(), and PVarType().