⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asner.h

📁 pwlib源码库
💻 H
📖 第 1 页 / 共 3 页
字号:
{    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 + -