📄 asner.h
字号:
{ PCLASSINFO(PASN_Integer, PASN_ConstrainedObject); public: PASN_Integer(unsigned val = 0); PASN_Integer(unsigned tag, TagClass tagClass, unsigned val = 0); PASN_Integer & operator=(unsigned value); operator unsigned() const { return value; } unsigned GetValue() const { return value; } void SetValue(unsigned v) { operator=(v); } virtual Comparison Compare(const PObject & obj) const; virtual PObject * Clone() const; virtual void PrintOn(ostream & strm) const; virtual void SetConstraintBounds(ConstraintType type, int lower, unsigned upper); virtual PString GetTypeAsString() const; virtual PINDEX GetDataLength() const; virtual BOOL Decode(PASN_Stream &); virtual void Encode(PASN_Stream &) const;#ifdef P_INCLUDE_PER BOOL DecodePER(PPER_Stream & strm); void EncodePER(PPER_Stream & strm) const;#endif BOOL IsUnsigned() const; protected: unsigned value;};struct PASN_Names{ char * name; PINDEX value; };/** Class for ASN Enumerated type.*/class PASN_Enumeration : public PASN_Object{ PCLASSINFO(PASN_Enumeration, PASN_Object); public: PASN_Enumeration(unsigned val = 0); PASN_Enumeration(unsigned tag, TagClass tagClass, unsigned nEnums = P_MAX_INDEX, BOOL extendable = FALSE, unsigned val = 0); PASN_Enumeration(unsigned tag, TagClass tagClass, unsigned nEnums, BOOL extendable, const PASN_Names * nameSpec, unsigned namesCnt, unsigned val = 0); PASN_Enumeration & operator=(unsigned v) { value = v; return *this; } operator unsigned() const { return value; } unsigned GetValue() const { return value; } void SetValue(unsigned v) { value = v; } unsigned GetMaximum() const { return maxEnumValue; } virtual Comparison Compare(const PObject & obj) const; virtual PObject * Clone() const; virtual void PrintOn(ostream & strm) const; virtual PString GetTypeAsString() const; virtual PINDEX GetDataLength() const; virtual BOOL Decode(PASN_Stream &); virtual void Encode(PASN_Stream &) const;#ifdef P_INCLUDE_PER BOOL DecodePER(PPER_Stream & strm); void EncodePER(PPER_Stream & strm) const;#endif#ifdef P_INCLUDE_XER virtual BOOL DecodeXER(PXER_Stream & strm); virtual void EncodeXER(PXER_Stream & strm) const;#endif protected: unsigned maxEnumValue; unsigned value; const PASN_Names *names; unsigned namesCount; };/** Class for ASN floating point type.*/class PASN_Real : public PASN_Object{ PCLASSINFO(PASN_Real, PASN_Object); public: PASN_Real(double val = 0); PASN_Real(unsigned tag, TagClass tagClass, double val = 0); PASN_Real & operator=(double val) { value = val; return *this; } operator double() const { return value; } double GetValue() const { return value; } void SetValue(double v) { value = v; } virtual Comparison Compare(const PObject & obj) const; virtual PObject * Clone() const; virtual void PrintOn(ostream & strm) const; virtual PString GetTypeAsString() const; virtual PINDEX GetDataLength() const; virtual BOOL Decode(PASN_Stream &); virtual void Encode(PASN_Stream &) const; protected: double value;};/** Class for ASN Object Identifier type.*/class PASN_ObjectId : public PASN_Object{ PCLASSINFO(PASN_ObjectId, PASN_Object); public: PASN_ObjectId(const char * dotstr = NULL); PASN_ObjectId(unsigned tag, TagClass tagClass); PASN_ObjectId(const PASN_ObjectId & other); PASN_ObjectId & operator=(const PASN_ObjectId & other); PASN_ObjectId & operator=(const char * dotstr); PASN_ObjectId & operator=(const PString & dotstr); PASN_ObjectId & operator=(const PUnsignedArray & numbers); void SetValue(const PString & dotstr); void SetValue(const PUnsignedArray & numbers) { value = numbers; } void SetValue(const unsigned * numbers, PINDEX size); bool operator==(const char * dotstr) const; bool operator!=(const char * dotstr) const { return !operator==(dotstr); } bool operator==(const PString & dotstr) const { return operator==((const char *)dotstr); } bool operator!=(const PString & dotstr) const { return !operator==((const char *)dotstr); } bool operator==(const PASN_ObjectId & id) const { return value == id.value; } PINDEX GetSize() const { return value.GetSize(); } unsigned operator[](PINDEX idx) const { return value[idx]; } const PUnsignedArray & GetValue() const { return value; } PString AsString() const; virtual Comparison Compare(const PObject & obj) const; virtual PObject * Clone() const; virtual void PrintOn(ostream & strm) const; virtual PString GetTypeAsString() const; virtual PINDEX GetDataLength() const; virtual BOOL Decode(PASN_Stream &); virtual void Encode(PASN_Stream &) const; BOOL CommonDecode(PASN_Stream & strm, unsigned dataLen); void CommonEncode(PBYTEArray & eObjId) const; protected: PUnsignedArray value;};/** Class for ASN Bit String type.*/class PASN_BitString : public PASN_ConstrainedObject{ PCLASSINFO(PASN_BitString, PASN_ConstrainedObject); public: PASN_BitString(unsigned nBits = 0, const BYTE * buf = NULL); PASN_BitString(unsigned tag, TagClass tagClass, unsigned nBits = 0); PASN_BitString(const PASN_BitString & other); PASN_BitString & operator=(const PASN_BitString & other); void SetData(unsigned nBits, const PBYTEArray & bytes); void SetData(unsigned nBits, const BYTE * buf, PINDEX size = 0); const BYTE * GetDataPointer() const { return bitData; } unsigned GetSize() const { return totalBits; } BOOL SetSize(unsigned nBits); bool operator[](PINDEX bit) const; void Set(unsigned bit); void Clear(unsigned bit); void Invert(unsigned bit); virtual Comparison Compare(const PObject & obj) const; virtual PObject * Clone() const; virtual void PrintOn(ostream & strm) const; virtual void SetConstraintBounds(ConstraintType type, int lower, unsigned upper); virtual PString GetTypeAsString() const; virtual PINDEX GetDataLength() const; virtual BOOL Decode(PASN_Stream &); virtual void Encode(PASN_Stream &) const;#ifdef P_INCLUDE_BER BOOL DecodeBER(PBER_Stream & strm, unsigned len); void EncodeBER(PBER_Stream & strm) const;#endif#ifdef P_INCLUDE_PER BOOL DecodePER(PPER_Stream & strm); void EncodePER(PPER_Stream & strm) const;#endif BOOL DecodeSequenceExtensionBitmap(PPER_Stream & strm); void EncodeSequenceExtensionBitmap(PPER_Stream & strm) const; protected: unsigned totalBits; PBYTEArray bitData;};/** Class for ASN Octet String type.*/class PASN_OctetString : public PASN_ConstrainedObject{ PCLASSINFO(PASN_OctetString, PASN_ConstrainedObject); public: PASN_OctetString(const char * str = NULL, PINDEX size = 0); PASN_OctetString(unsigned tag, TagClass tagClass); PASN_OctetString(const PASN_OctetString & other); PASN_OctetString & operator=(const PASN_OctetString & other); PASN_OctetString & operator=(const char * str); PASN_OctetString & operator=(const PString & str); PASN_OctetString & operator=(const PBYTEArray & arr); void SetValue(const char * str) { operator=(str); } void SetValue(const PString & str) { operator=(str); } void SetValue(const PBYTEArray & arr) { operator=(arr); } void SetValue(const BYTE * data, PINDEX len); const PBYTEArray & GetValue() const { return value; } operator const PBYTEArray &() const { return value; } operator const BYTE *() const { return value; } PString AsString() const; BYTE operator[](PINDEX i) const { return value[i]; } BYTE & operator[](PINDEX i) { return value[i]; } BYTE * GetPointer(PINDEX sz = 0) { return value.GetPointer(sz); } PINDEX GetSize() const { return value.GetSize(); } BOOL SetSize(PINDEX newSize); virtual Comparison Compare(const PObject & obj) const; virtual PObject * Clone() const; virtual void PrintOn(ostream & strm) const; virtual void SetConstraintBounds(ConstraintType type, int lower, unsigned upper); virtual PString GetTypeAsString() const; virtual PINDEX GetDataLength() const; virtual BOOL Decode(PASN_Stream &); virtual void Encode(PASN_Stream &) const;#ifdef P_INCLUDE_PER BOOL DecodePER(PPER_Stream & strm); void EncodePER(PPER_Stream & strm) const;#endif BOOL DecodeSubType(PASN_Object &) const; void EncodeSubType(const PASN_Object &); protected: PBYTEArray value;};/** Base class for ASN String types.*/class PASN_ConstrainedString : public PASN_ConstrainedObject{ PCLASSINFO(PASN_ConstrainedString, PASN_ConstrainedObject); public: PASN_ConstrainedString & operator=(const char * str); PASN_ConstrainedString & operator=(const PString & str) { return operator=((const char *)str); } operator const PString &() const { return value; } const PString & GetValue() const { return value; } void SetValue(const char * v) { operator=(v); } void SetValue(const PString & v) { operator=(v); } char operator[](PINDEX idx) const { return value[idx]; } void SetCharacterSet(ConstraintType ctype, const char * charSet); void SetCharacterSet(ConstraintType ctype, unsigned firstChar = 0, unsigned lastChar = 255); void SetCharacterSet(const char * charSet, PINDEX size, ConstraintType ctype); virtual Comparison Compare(const PObject & obj) const; virtual void PrintOn(ostream & strm) const; virtual void SetConstraintBounds(ConstraintType type, int lower, unsigned upper); virtual PINDEX GetDataLength() const; virtual BOOL Decode(PASN_Stream &); virtual void Encode(PASN_Stream &) const;#ifdef P_INCLUDE_BER BOOL DecodeBER(PBER_Stream & strm, unsigned len); void EncodeBER(PBER_Stream & strm) const;#endif#ifdef P_INCLUDE_PER BOOL DecodePER(PPER_Stream & strm); void EncodePER(PPER_Stream & strm) const;#endif protected: PASN_ConstrainedString(const char * canonicalSet, PINDEX setSize, unsigned tag, TagClass tagClass); PString value; PCharArray characterSet; const char * canonicalSet; PINDEX canonicalSetSize; unsigned canonicalSetBits; unsigned charSetUnalignedBits; unsigned charSetAlignedBits;};#define DECLARE_STRING_CLASS(name) \ class PASN_##name##String : public PASN_ConstrainedString { \ PCLASSINFO(PASN_##name##String, PASN_ConstrainedString); \ public: \ PASN_##name##String(const char * str = NULL); \ PASN_##name##String(unsigned tag, TagClass tagClass); \ PASN_##name##String & operator=(const char * str); \ PASN_##name##String & operator=(const PString & str); \ virtual PObject * Clone() const; \ virtual PString GetTypeAsString() const; \ }DECLARE_STRING_CLASS(Numeric);DECLARE_STRING_CLASS(Printable);DECLARE_STRING_CLASS(Visible);DECLARE_STRING_CLASS(IA5);DECLARE_STRING_CLASS(General);/** Class for ASN BMP (16 bit) String type.*/class PASN_BMPString : public PASN_ConstrainedObject{ PCLASSINFO(PASN_BMPString, PASN_ConstrainedObject); public: PASN_BMPString(const char * str = NULL); PASN_BMPString(const PWORDArray & wstr); PASN_BMPString(unsigned tag, TagClass tagClass); PASN_BMPString(const PASN_BMPString & other); PASN_BMPString & operator=(const PASN_BMPString & other); PASN_BMPString & operator=(const char * v) { return operator=(PString(v).AsUCS2()); } PASN_BMPString & operator=(const PString & v) { return operator=(v.AsUCS2()); } PASN_BMPString & operator=(const PWORDArray & v); operator PString() const { return GetValue(); } operator PWORDArray() const { return value; } PString GetValue() const { return value; } void GetValue(PWORDArray & v) const { v = value; } void SetValue(const char * v) { operator=(PString(v).AsUCS2()); } void SetValue(const PString & v) { operator=(v.AsUCS2()); } void SetValue(const PWORDArray & v) { operator=(v); } void SetValue(const PASN_BMPString & v) { operator=(v.value); } void SetCharacterSet(ConstraintType ctype, const char * charSet); void SetCharacterSet(ConstraintType ctype, const PWORDArray & charSet); void SetCharacterSet(ConstraintType ctype, unsigned firstChar, unsigned lastChar); virtual Comparison Compare(const PObject & obj) const; virtual PObject * Clone() const; virtual void PrintOn(ostream & strm) const; virtual PString GetTypeAsString() const; virtual PINDEX GetDataLength() const; virtual BOOL Decode(PASN_Stream &); virtual void Encode(PASN_Stream &) const;#ifdef P_INCLUDE_BER BOOL DecodeBER(PBER_Stream & strm, unsigned len);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -