PTLib
Version 2.18.8
|
This class defines the common behviour of all ASN objects. More...
#include <pasn.h>
Public Types | |
enum | ASNType { Integer, String, ObjectID, Sequence, Choice, IPAddress, Counter, Gauge, TimeTicks, Opaque, NsapAddress, Counter64, UInteger32, Null, Unknown, ASNTypeMax } |
Value returned by the GetType() function to indicate the type of an ASN object. More... | |
![]() | |
enum | Comparison { LessThan = -1, EqualTo = 0, GreaterThan = 1 } |
Result of the comparison operation performed by the Compare() function. More... | |
Public Member Functions | |
virtual ASNType | GetType () const |
Return a value of type enum ASNType which indicates the type of the object. More... | |
int | GetChoice () const |
Return the descriminator for Choice sequences. More... | |
virtual PString | GetTypeAsString () const |
Return a string giving the type of the object. More... | |
virtual PASNInt | GetInteger () const |
Return the value of the ASN object as a PASNInt. More... | |
virtual PASNUnsigned | GetUnsigned () const |
Return the value of the object as a PASNUnsigned. More... | |
virtual PString | GetString () const |
Return the value of the object as a PString. More... | |
virtual const PASNSequence & | GetSequence () const |
Return the value of the object as a PString. More... | |
virtual PIPSocket::Address | GetIPAddress () const |
Return the value of the object as an IPAddress. More... | |
virtual void | PrintOn (ostream &strm) const |
Virtual functions used by the PObject::operator<< function to print the value of the object. More... | |
virtual void | Encode (PBYTEArray &buffer) |
Virtual function used to encode the object into ASN format. More... | |
virtual WORD | GetEncodedLength () |
Virtual function used to get the length of object when encoded into ASN format. More... | |
virtual PObject * | Clone () const |
Virtual function used to duplicate objects. More... | |
![]() | |
__inline unsigned | GetTraceContextIdentifier () const |
Get PTRACE context identifier. More... | |
__inline void | SetTraceContextIdentifier (unsigned id) |
__inline void | SetTraceContextIdentifier (const PObject &obj) |
__inline void | SetTraceContextIdentifier (const PObject *obj) |
__inline void | CopyTraceContextIdentifier (PObject &obj) const |
__inline void | CopyTraceContextIdentifier (PObject *obj) const |
virtual | ~PObject () |
__inline const char * | GetClass () const |
__inline bool | IsClass (const char *name) const |
__inline const PObject * | PTraceObjectInstance () const |
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 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 | ReadFrom (istream &strm) |
Input the contents of the object from the stream. More... | |
Static Public Member Functions | |
static void | EncodeASNLength (PBYTEArray &buffer, WORD length) |
Encode an ASN length value. More... | |
static WORD | GetASNLengthLength (WORD length) |
Return the length of an encoded ASN length value. More... | |
static PBoolean | DecodeASNLength (const PBYTEArray &buffer, PINDEX &ptr, WORD &len) |
Decode an ASN length in the buffer at the given ptr. More... | |
static void | EncodeASNSequenceStart (PBYTEArray &buffer, BYTE type, WORD length) |
Encode a sequence header into the buffer at the specified offset. More... | |
static WORD | GetASNSequenceStartLength (WORD length) |
Return the encoded length of a sequence if it has the specified length. More... | |
static void | EncodeASNHeader (PBYTEArray &buffer, PASNObject::ASNType type, WORD length) |
Encode an ASN object header into the buffer. More... | |
static WORD | GetASNHeaderLength (WORD length) |
Return the length of an ASN object header if the object is the specified length. More... | |
static void | EncodeASNInteger (PBYTEArray &buffer, PASNInt data, PASNObject::ASNType type) |
static void | EncodeASNUnsigned (PBYTEArray &buffer, PASNUnsigned data, PASNObject::ASNType type) |
static WORD | GetASNIntegerLength (PASNInt data) |
static WORD | GetASNUnsignedLength (PASNUnsigned data) |
static PBoolean | DecodeASNInteger (const PBYTEArray &buffer, PINDEX &ptr, PASNInt &value, ASNType type=Integer) |
static PBoolean | DecodeASNUnsigned (const PBYTEArray &buffer, PINDEX &ptr, PASNUnsigned &value, ASNType type=TimeTicks) |
![]() | |
static __inline void | CopyTraceContextIdentifier (PObject &to, const PObject &from) |
static __inline void | CopyTraceContextIdentifier (PObject &to, const PObject *from) |
static __inline void | CopyTraceContextIdentifier (PObject *to, const PObject &from) |
static __inline void | CopyTraceContextIdentifier (PObject *to, const PObject *from) |
static __inline const char * | Class () |
static __inline const PObject * | PTraceObjectInstance (const char *) |
static __inline const PObject * | PTraceObjectInstance (const PObject *obj) |
template<typename T > | |
static Comparison | Compare2 (T v1, T v2) |
Compare two types, returning Comparison type. More... | |
static Comparison | InternalCompareObjectMemoryDirect (const PObject *obj1, const PObject *obj2, PINDEX size) |
Internal function caled from CompareObjectMemoryDirect() More... | |
Protected Member Functions | |
PASNObject () | |
Create an empty ASN object. More... | |
![]() | |
PObject () | |
Constructor for PObject, made protected so cannot ever create one on its own. More... | |
Static Protected Attributes | |
static BYTE | ASNTypeToType [ASNTypeMax] |
Table to map enum ASNType values to ASN identifiers. More... | |
Additional Inherited Members | |
![]() | |
unsigned | m_traceContextIdentifier |
This class defines the common behviour of all ASN objects.
It also contains several functions which are used for encoding common ASN primitives.
This class will never be instantiated directly. See the PASNInteger, PASNSequence, PASNString and PASNObjectID classes for examples of ASN objects that can be created.
Only descendants of this class can be put into the ASNSequence class.
enum PASNObject::ASNType |
Value returned by the GetType() function to indicate the type of an ASN object.
|
protected |
Create an empty ASN object.
Used only by descendant constructors
|
virtual |
Virtual function used to duplicate objects.
Reimplemented from PObject.
Reimplemented in PASNNull, PASNObjectID, PASNGauge, PASNCounter, PASNTimeTicks, PASNIPAddress, PASNString, and PASNInteger.
|
static |
buffer | buffer to decode from |
ptr | ptr to data in buffer |
value | returned value |
type | actual integer type |
|
static |
Decode an ASN length in the buffer at the given ptr.
The ptr is moved to the byte after the end of the encoded length.
buffer | buffer to decode data from |
ptr | ptr to decode from |
len | returned length |
|
static |
buffer | buffer to decode from |
ptr | ptr to data in buffer |
value | returned value |
type | actual integer type |
|
virtual |
Virtual function used to encode the object into ASN format.
buffer | buffer to encode into |
Reimplemented in PASNSequence, PASNNull, PASNObjectID, PASNGauge, PASNCounter, PASNTimeTicks, PASNIPAddress, PASNString, and PASNInteger.
|
static |
Encode an ASN object header into the buffer.
buffer | buffer to encode into |
type | ASN type of the object |
length | length of the object |
|
static |
buffer | buffer to encode into |
data | value to encode |
type | actual integer type |
|
static |
Encode an ASN length value.
buffer | buffer to encode into |
length | ASN length to encode |
|
static |
Encode a sequence header into the buffer at the specified offset.
buffer | buffer to encode data into |
type | sequence type |
length | length of sequence data |
|
static |
buffer | buffer to encode into |
data | value to encode |
type | actual integer type |
|
static |
Return the length of an ASN object header if the object is the specified length.
length | length of object |
|
static |
data | value to get length of |
|
static |
Return the length of an encoded ASN length value.
length | length to find length of |
|
static |
Return the encoded length of a sequence if it has the specified length.
length | length of sequence data |
|
static |
data | value to get length of |
int PASNObject::GetChoice | ( | ) | const |
Return the descriminator for Choice sequences.
|
virtual |
Virtual function used to get the length of object when encoded into ASN format.
Reimplemented in PASNSequence, PASNNull, PASNObjectID, PASNUnsignedInteger, PASNString, and PASNInteger.
|
virtual |
Return the value of the ASN object as a PASNInt.
This function will assert if the object is not a descendant of PASNInteger.
Reimplemented in PASNInteger.
|
virtual |
Return the value of the object as an IPAddress.
This function will assert if the object is not a descendant of PASNIPAddress.
Reimplemented in PASNIPAddress.
|
virtual |
Return the value of the object as a PString.
This function will assert if the object is not a descendant of PASNSequence.
Reimplemented in PASNSequence.
|
virtual |
Return the value of the object as a PString.
This function can be use for all ASN object types
Reimplemented in PASNNull, PASNObjectID, PASNUnsignedInteger, PASNIPAddress, PASNString, and PASNInteger.
|
virtual |
Return a value of type enum ASNType which indicates the type of the object.
Reimplemented in PASNSequence, PASNNull, PASNObjectID, PASNGauge, PASNCounter, PASNTimeTicks, PASNIPAddress, PASNString, and PASNInteger.
|
virtual |
Return a string giving the type of the object.
Reimplemented in PASNSequence, PASNNull, PASNObjectID, PASNGauge, PASNCounter, PASNTimeTicks, PASNIPAddress, PASNString, and PASNInteger.
|
virtual |
Return the value of the object as a PASNUnsigned.
This function will assert if the object is not a descendant of PASNTimeTicks or
Reimplemented in PASNUnsignedInteger.
|
virtual |
Virtual functions used by the PObject::operator<< function to print the value of the object.
strm | stream to print on |
Reimplemented from PObject.
Reimplemented in PASNSequence, PASNNull, PASNObjectID, PASNUnsignedInteger, PASNString, and PASNInteger.
|
staticprotected |
Table to map enum ASNType values to ASN identifiers.