169 PBoolean ConstrainedLengthDecode(PPER_Stream & strm,
unsigned & length);
170 void ConstrainedLengthEncode(PPER_Stream & strm,
unsigned length)
const;
172 PBoolean ConstraintEncode(PPER_Stream & strm,
unsigned value)
const;
195 virtual void PrintOn(ostream & strm)
const;
220 virtual void PrintOn(ostream & strm)
const;
242 operator unsigned()
const {
return value; }
248 virtual void PrintOn(ostream & strm)
const;
257 PBoolean DecodePER(PPER_Stream & strm);
258 void EncodePER(PPER_Stream & strm)
const;
281 unsigned nEnums = P_MAX_INDEX,
293 operator unsigned()
const {
return value; }
301 virtual void PrintOn(ostream & strm)
const;
309 PBoolean DecodePER(PPER_Stream & strm);
310 void EncodePER(PPER_Stream & strm)
const;
314 virtual PBoolean DecodeXER(PXER_Stream & strm);
315 virtual void EncodeXER(PXER_Stream & strm)
const;
318 PINDEX GetValueByName(
PString name)
const;
337 operator double()
const {
return value; }
343 virtual void PrintOn(ostream & strm)
const;
370 void SetValue(
const PString & dotstr);
372 void SetValue(
const unsigned * numbers, PINDEX size);
380 PINDEX
GetSize()
const {
return value.GetSize(); }
387 virtual void PrintOn(ostream & strm)
const;
414 void SetData(
unsigned nBits,
const PBYTEArray & bytes);
415 void SetData(
unsigned nBits,
const BYTE * buf, PINDEX size = 0);
419 unsigned GetSize()
const {
return totalBits; }
422 bool operator[](PINDEX bit)
const;
423 void Set(
unsigned bit);
424 void Clear(
unsigned bit);
425 void Invert(
unsigned bit);
429 virtual void PrintOn(ostream & strm)
const;
438 PBoolean DecodeBER(PBER_Stream & strm,
unsigned len);
439 void EncodeBER(PBER_Stream & strm)
const;
443 PBoolean DecodePER(PPER_Stream & strm);
444 void EncodePER(PPER_Stream & strm)
const;
447 PBoolean DecodeSequenceExtensionBitmap(PPER_Stream & strm);
448 void EncodeSequenceExtensionBitmap(PPER_Stream & strm)
const;
471 void SetValue(
const char * str) { operator=(str); }
474 void SetValue(
const BYTE * data, PINDEX len);
477 operator const BYTE *()
const {
return value; }
481 BYTE *
GetPointer(PINDEX sz = 0) {
return value.GetPointer(sz); }
482 PINDEX
GetSize()
const {
return value.GetSize(); }
487 virtual void PrintOn(ostream & strm)
const;
496 PBoolean DecodePER(PPER_Stream & strm);
497 void EncodePER(PPER_Stream & strm)
const;
516 operator const PString &()
const {
return value; }
527 virtual void PrintOn(ostream & strm)
const;
535 PBoolean DecodeBER(PBER_Stream & strm,
unsigned len);
536 void EncodeBER(PBER_Stream & strm)
const;
540 PBoolean DecodePER(PPER_Stream & strm);
541 void EncodePER(PPER_Stream & strm)
const;
558 #define DECLARE_STRING_CLASS(name) \ 559 class PASN_##name##String : public PASN_ConstrainedString { \ 560 PCLASSINFO(PASN_##name##String, PASN_ConstrainedString); \ 562 PASN_##name##String(const char * str = NULL); \ 563 PASN_##name##String(unsigned tag, TagClass tagClass); \ 564 PASN_##name##String & operator=(const char * str); \ 565 PASN_##name##String & operator=(const PString & str); \ 566 virtual PObject * Clone() const; \ 567 virtual PString GetTypeAsString() const; \ 593 operator PString()
const {
return GetValue(); }
594 operator PWCharArray()
const {
return value; }
596 void GetValue(PWCharArray & v)
const { v = value; }
599 void SetValue(
const PWCharArray & v) { operator=(v); }
602 void SetValueRaw(
const wchar_t * val, PINDEX len);
610 virtual void PrintOn(ostream & strm)
const;
618 PBoolean DecodeBER(PBER_Stream & strm,
unsigned len);
619 void EncodeBER(PBER_Stream & strm)
const;
623 PBoolean DecodePER(PPER_Stream & strm);
624 void EncodePER(PPER_Stream & strm)
const;
648 : PASN_VisibleString(theTag, theTagClass) { }
652 PTime GetValue()
const;
665 : PASN_VisibleString(theTag, theTagClass) { }
669 PTime GetValue()
const;
688 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9 698 operator PASN_NumericString &()
const;
699 operator PASN_PrintableString &()
const;
700 operator PASN_VisibleString &()
const;
701 operator PASN_IA5String &()
const;
702 operator PASN_GeneralString &()
const;
716 operator PASN_NumericString &();
717 operator PASN_PrintableString &();
718 operator PASN_VisibleString &();
719 operator PASN_IA5String &();
720 operator PASN_GeneralString &();
732 operator const PASN_NumericString &()
const;
733 operator const PASN_PrintableString &()
const;
734 operator const PASN_VisibleString &()
const;
735 operator const PASN_IA5String &()
const;
736 operator const PASN_GeneralString &()
const;
742 virtual PBoolean CreateObject() = 0;
745 virtual void PrintOn(ostream & strm)
const;
754 virtual PBoolean DecodePER(PPER_Stream &);
755 virtual void EncodePER(PPER_Stream &)
const;
760 void EncodeXER(PXER_Stream &)
const;
765 PINDEX GetValueByName(
PString name)
const;
793 unsigned nOpts = 0,
PBoolean extend =
false,
unsigned nExtend = 0);
798 PINDEX
GetSize()
const {
return fields.GetSize(); }
802 PBoolean HasOptionalField(PINDEX opt)
const;
803 void IncludeOptionalField(PINDEX opt);
804 void RemoveOptionalField(PINDEX opt);
808 virtual void PrintOn(ostream & strm)
const;
821 void UnknownExtensionsEncode(
PASN_Stream & strm)
const;
824 PBoolean PreambleDecodeBER(PBER_Stream & strm);
825 void PreambleEncodeBER(PBER_Stream & strm)
const;
827 void KnownExtensionEncodeBER(PBER_Stream & strm, PINDEX fld,
const PASN_Object & field)
const;
828 PBoolean UnknownExtensionsDecodeBER(PBER_Stream & strm);
829 void UnknownExtensionsEncodeBER(PBER_Stream & strm)
const;
833 PBoolean PreambleDecodePER(PPER_Stream & strm);
834 void PreambleEncodePER(PPER_Stream & strm)
const;
836 void KnownExtensionEncodePER(PPER_Stream & strm, PINDEX fld,
const PASN_Object & field)
const;
837 PBoolean UnknownExtensionsDecodePER(PPER_Stream & strm);
838 void UnknownExtensionsEncodePER(PPER_Stream & strm)
const;
842 virtual PBoolean PreambleDecodeXER(PXER_Stream & strm);
843 virtual void PreambleEncodeXER(PXER_Stream & strm)
const;
844 virtual PBoolean KnownExtensionDecodeXER(PXER_Stream & strm, PINDEX fld,
PASN_Object & field);
845 virtual void KnownExtensionEncodeXER(PXER_Stream & strm, PINDEX fld,
const PASN_Object & field)
const;
846 virtual PBoolean UnknownExtensionsDecodeXER(PXER_Stream & strm);
847 virtual void UnknownExtensionsEncodeXER(PXER_Stream & strm)
const;
851 PBoolean NoExtensionsToDecode(PPER_Stream & strm);
852 PBoolean NoExtensionsToEncode(PPER_Stream & strm);
871 unsigned nOpts = 0,
PBoolean extend =
false,
unsigned nExtend = 0);
884 PINDEX
GetSize()
const {
return array.GetSize(); }
892 virtual void PrintOn(ostream & strm)
const;
927 void PrintOn(ostream & strm)
const;
930 void SetPosition(PINDEX newPos);
933 void BeginEncoding();
934 void CompleteEncoding();
940 virtual void NullEncode(
const PASN_Null &) = 0;
948 virtual void RealEncode(
const PASN_Real &) = 0;
960 virtual void ChoiceEncode(
const PASN_Choice &) = 0;
962 virtual void ArrayEncode(
const PASN_Array &) = 0;
964 virtual void SequencePreambleEncode(
const PASN_Sequence &) = 0;
968 virtual void SequenceUnknownEncode(
const PASN_Sequence &) = 0;
971 void ByteEncode(
unsigned value);
973 unsigned BlockDecode(BYTE * bufptr,
unsigned nBytes);
974 void BlockEncode(
const BYTE * bufptr, PINDEX nBytes);
998 #endif // PTLIB_ASNER_H
PASN_ObjectArray array
Definition: asner.h:911
void SetValue(const char *v)
Definition: asner.h:597
TagClass
Definition: asner.h:76
PINDEX value
Definition: asner.h:269
static void SetMaximumStringSize(PINDEX sz)
unsigned maxEnumValue
Definition: asner.h:320
unsigned upperLimit
Definition: asner.h:180
void SetConstraints(ConstraintType, int lower, MaximumValueTag)
Definition: asner.h:129
Class for ASN Boolean type.
Definition: asner.h:206
const PASN_Names * names
Definition: asner.h:322
PASN_Real & operator=(double val)
Definition: asner.h:336
PINDEX GetObjectLength() const
PASN_Object & operator[](PINDEX i) const
Definition: asner.h:800
PASN_Object & operator[](PINDEX i) const
Definition: asner.h:886
PASN_Boolean & operator=(PBoolean v)
Definition: asner.h:213
void SetValue(const PUnsignedArray &numbers)
Definition: asner.h:371
Array of characters.
Definition: array.h:551
void SetValue(const PString &v)
Definition: asner.h:598
UniversalTags
Definition: asner.h:85
PBoolean IsConstrained() const
Definition: asner.h:165
#define PCLASSINFO(cls, par)
Declare all the standard PTLib class information.
Definition: object.h:1049
unsigned value
Definition: asner.h:321
unsigned namesCount
Definition: asner.h:323
PBoolean GetValue() const
Definition: asner.h:215
PINDEX GetSize() const
Definition: asner.h:884
PBoolean IsExtendable() const
Definition: asner.h:73
int totalExtensions
Definition: asner.h:857
This class defines an absolute time and date.
Definition: ptime.h:53
unsigned numChoices
Definition: asner.h:775
PINDEX endBasicEncoding
Definition: asner.h:859
bool operator==(const PASN_ObjectId &id) const
Definition: asner.h:378
bool operator!=(const PString &dotstr) const
Definition: asner.h:377
PWCharArray characterSet
Definition: asner.h:632
const BYTE * GetDataPointer() const
Definition: asner.h:417
PASN_BitString extensionMap
Definition: asner.h:858
virtual void SetCharacterSet(ConstraintType ctype, const char *charSet)
void SetValue(const PString &v)
Definition: asner.h:519
PBYTEArray bitData
Definition: asner.h:452
Comparison
Result of the comparison operation performed by the Compare() function.
Definition: object.h:1184
Base class for ASN decoder/encoder stream.
Definition: asner.h:919
PASN_BMPString & operator=(const char *v)
Definition: asner.h:590
unsigned GetValue() const
Definition: asner.h:243
wchar_t lastChar
Definition: asner.h:633
void SetExtendable(PBoolean ext=true)
Definition: asner.h:74
Base class for constrained ASN encoding/decoding.
Definition: asner.h:161
void SetValue(const PASN_BMPString &v)
Definition: asner.h:600
void GetValue(PWCharArray &v) const
Definition: asner.h:596
PINDEX byteOffset
Definition: asner.h:979
virtual PString GetTypeAsString() const =0
Return a string giving the type of the object.
void SetConstraints(ConstraintType type, int value)
Definition: asner.h:127
PASN_UniversalTime(const PTime &time)
Definition: asner.h:662
int GetLowerLimit() const
Definition: asner.h:166
virtual void SetTag(unsigned newTag, TagClass tagClass=DefaultTagClass)
void RemoveAt(PINDEX i)
Definition: asner.h:888
void SetConstraints(ConstraintType, MinimumValueTag lower, MaximumValueTag upper)
Definition: asner.h:133
PASN_BitString optionMap
Definition: asner.h:855
PBoolean value
Definition: asner.h:228
PASN_GeneralisedTime(unsigned theTag, TagClass theTagClass)
Definition: asner.h:647
int knownExtensions
Definition: asner.h:856
bool operator!=(const char *dotstr) const
Definition: asner.h:375
Base class for ASN String types.
Definition: asner.h:510
unsigned GetMaximum() const
Definition: asner.h:297
void SetValue(PBoolean v)
Definition: asner.h:216
static PINDEX GetMaximumArraySize()
BYTE * GetPointer(PINDEX sz=0)
Definition: asner.h:481
BOOL PBoolean
Definition: object.h:102
PWCharArray AsUCS2() const
Convert UTF-8 string to UCS-2.
const PASN_Names * names
Definition: asner.h:777
PASN_Enumeration & operator=(unsigned v)
Definition: asner.h:292
Class for ASN BMP (16 bit) String type.
Definition: asner.h:579
void SetValue(unsigned v)
Definition: asner.h:295
unsigned charSetUnalignedBits
Definition: asner.h:634
unsigned totalBits
Definition: asner.h:451
Array of unsigned characters.
Definition: array.h:670
Class for ASN Sequence type.
Definition: asner.h:787
virtual PBoolean Decode(PASN_Stream &)=0
void SetConstraints(ConstraintType type, int lower, unsigned upper)
Definition: asner.h:135
unsigned GetUpperLimit() const
Definition: asner.h:167
unsigned canonicalSetBits
Definition: asner.h:552
const PBYTEArray & GetValue() const
Definition: asner.h:475
bool operator==(const PString &dotstr) const
Definition: asner.h:376
PINDEX GetSize() const
Definition: asner.h:380
Abstract class defining I/O channel semantics.
Definition: channel.h:107
void SetValue(unsigned v)
Definition: asner.h:244
unsigned GetValue() const
Definition: asner.h:294
void SetConstraints(ConstraintType, MinimumValueTag lower, unsigned upper)
Definition: asner.h:131
const PString & GetValue() const
Definition: asner.h:517
unsigned namesCount
Definition: asner.h:778
PASN_ObjectArray fields
Definition: asner.h:854
ConstraintType constraint
Definition: asner.h:178
int lowerLimit
Definition: asner.h:179
bool operator==(const PObject &obj) const
Compare the two objects.
Definition: object.h:1232
virtual void SetConstraintBounds(ConstraintType type, int lower, unsigned upper)
PBoolean IsValid() const
Definition: asner.h:686
PASN_UniversalTime()
Definition: asner.h:660
PCharArray characterSet
Definition: asner.h:549
PWCharArray value
Definition: asner.h:631
PASN_BMPString & operator=(const PString &v)
Definition: asner.h:591
PUnsignedArray value
Definition: asner.h:398
The character string class.
Definition: pstring.h:108
void SetValue(const char *str)
Definition: asner.h:471
const PUnsignedArray & GetValue() const
Definition: asner.h:382
Array of unsigned integers.
Definition: array.h:737
virtual Comparison Compare(const PObject &obj) const
Compare the two objects and return their relative rank.
unsigned tag
ASN object tag.
Definition: asner.h:155
static PINDEX GetMaximumStringSize()
PINDEX GetSize() const
Definition: asner.h:798
unsigned bitOffset
Definition: asner.h:980
PString GetValue() const
Definition: asner.h:595
Class for ASN Set type.
Definition: asner.h:865
Class for ASN Enumerated type.
Definition: asner.h:274
char operator[](PINDEX idx) const
Definition: asner.h:520
void SetValue(const PTime &time)
Definition: asner.h:651
void SetValue(const PWCharArray &v)
Definition: asner.h:599
Class for ASN Choice type.
Definition: asner.h:677
PINDEX GetPosition() const
Definition: asner.h:929
virtual PINDEX GetDataLength() const =0
unsigned charSetAlignedBits
Definition: asner.h:635
#define DECLARE_STRING_CLASS(name)
Definition: asner.h:558
void SetValue(const PTime &time)
Definition: asner.h:668
void RemoveAll()
Definition: asner.h:889
TagClass tagClass
BER tag class.
Definition: asner.h:153
ConstraintType
Definition: asner.h:118
void SetValue(const char *v)
Definition: asner.h:518
PBoolean extendable
PER extension capability.
Definition: asner.h:151
PASN_Object(unsigned tag, TagClass tagClass, PBoolean extend=false)
const char * name
Definition: asner.h:268
MinimumValueTag
Definition: asner.h:125
Class for ASN Null type.
Definition: asner.h:186
PINDEX GetSize() const
Definition: asner.h:482
unsigned GetSize() const
Definition: asner.h:419
Class for ASN floating point type.
Definition: asner.h:329
Class for ASN Octet String type.
Definition: asner.h:458
void SetValue(double v)
Definition: asner.h:339
void Append(PASN_Object *obj)
Definition: asner.h:887
virtual void Encode(PASN_Stream &) const =0
virtual PObject * Clone() const
Create a copy of the class on the heap.
BYTE & operator[](PINDEX i)
Definition: asner.h:480
unsigned operator[](PINDEX idx) const
Definition: asner.h:381
MaximumValueTag
Definition: asner.h:126
Class for ASN Integer type.
Definition: asner.h:234
PASN_GeneralisedTime(const PTime &time)
Definition: asner.h:645
void SetValueRaw(const PWCharArray &v)
Definition: asner.h:601
virtual PBoolean IsPrimitive() const
Definition: asner.h:68
unsigned charSetAlignedBits
Definition: asner.h:554
PASN_UniversalTime(unsigned theTag, TagClass theTagClass)
Definition: asner.h:664
PASN_Object * choice
Definition: asner.h:776
TagClass GetTagClass() const
Definition: asner.h:83
PASN_GeneralisedTime()
Definition: asner.h:643
double GetValue() const
Definition: asner.h:338
PASN_ConstrainedString & operator=(const PString &str)
Definition: asner.h:515
double value
Definition: asner.h:351
Class for ASN Object Identifier type.
Definition: asner.h:357
PBoolean IsAtEnd()
Definition: asner.h:931
Class for ASN Array type.
Definition: asner.h:880
unsigned GetTag() const
Definition: asner.h:115
Ultimate parent class for all objects in the class library.
Definition: object.h:1118
PARRAY(PASN_ObjectArray, PASN_Object)
const char * canonicalSet
Definition: asner.h:550
BYTE operator[](PINDEX i) const
Definition: asner.h:479
Class for ASN Bit String type.
Definition: asner.h:404
virtual void PrintOn(ostream &strm) const
Output the contents of the object to the stream.
unsigned charSetUnalignedBits
Definition: asner.h:553
PString value
Definition: asner.h:548
PINDEX canonicalSetSize
Definition: asner.h:551
unsigned value
Definition: asner.h:264
Base class for ASN encoding/decoding.
Definition: asner.h:59
PBYTEArray value
Definition: asner.h:504
void SetValue(const PString &str)
Definition: asner.h:472
static void SetMaximumArraySize(PINDEX sz)
void SetValue(const PBYTEArray &arr)
Definition: asner.h:473