PTLib
Version 2.12.9
|
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 |
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().
bool PVarType::AsBoolean | ( | ) | const |
double PVarType::AsFloat | ( | ) | const |
PGloballyUniqueID PVarType::AsGUID | ( | ) | const |
int PVarType::AsInteger | ( | ) | const |
int64_t PVarType::AsInteger64 | ( | ) | const |
PString PVarType::AsString | ( | ) | const |
PTime PVarType::AsTime | ( | ) | const |
unsigned PVarType::AsUnsigned | ( | ) | const |
uint64_t PVarType::AsUnsigned64 | ( | ) | const |
|
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 PODBC::Field.
|
protectedvirtual |
Called after SetValue() has (possibly) changed the value.
Reimplemented in PODBC::Field.
|
inline |
Assign a boolean type object.
References PVarType::Variant::boolean, m_, SetType(), and VarBoolean.
Referenced by PODBC::Field::operator=().
|
inline |
Assign a 8 bit integer type object.
References PVarType::Variant::character, m_, SetType(), and VarChar.
|
inline |
Assign a 16 bit integer type object.
References PVarType::Variant::int16, m_, SetType(), and VarInt16.
|
inline |
Assign a 32 bit integer type object.
References PVarType::Variant::int32, m_, SetType(), and VarInt32.
|
inline |
Assign a 64 bit integertype object.
References PVarType::Variant::int64, m_, SetType(), and VarInt64.
|
inline |
Assign a 8 bit unsigned integer type object.
References m_, SetType(), PVarType::Variant::uint8, and VarUInt8.
|
inline |
Assign a 16 bit unsigned integer type object.
References m_, SetType(), PVarType::Variant::uint16, and VarUInt16.
|
inline |
Assign a 32 bit unsigned integer type object.
References m_, SetType(), PVarType::Variant::uint32, and VarUInt32.
|
inline |
Assign a 64 bit unsigned integer type object.
References m_, SetType(), PVarType::Variant::uint64, and VarUInt64.
|
inline |
Assign a single precision floating point type object.
References PVarType::Variant::floatSingle, m_, SetType(), and VarFloatSingle.
|
inline |
Assign a double precision floating point type object.
References PVarType::Variant::floatDouble, m_, SetType(), and VarFloatDouble.
|
inline |
Assign a extended (long double) precision floating point type object.
References PVarType::Variant::floatExtended, m_, SetType(), and VarFloatExtended.
|
inline |
Assign a time of day type object.
References PContainer::GetSize(), PVarType::Variant::guid, m_, SetType(), and VarGUID.
Assign a time of day type object.
References PTime::GetTimeInSeconds(), m_, PVarType::Variant::seconds, SetType(), PVarType::Variant::time, and VarTime.
|
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().
|
inline |
References SetBinary().
|
inline |
References SetString().
|
virtual |
Referenced by 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.
Referenced by operator=().
Set the instances value without changing it's type.
|
protected |
Referenced by operator=(), and PVarType().