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

📄 asner.h

📁 mgcp协议源代码。支持多种编码:g711
💻 H
📖 第 1 页 / 共 3 页
字号:
    virtual BOOL DecodePER(PPER_Stream &);    virtual void EncodePER(PPER_Stream &) const;  protected:    PASN_Choice(unsigned nChoices = UINT_MAX, BOOL extend = FALSE);    PASN_Choice(unsigned tag, TagClass tagClass, unsigned nChoices, BOOL extend);    PASN_Choice(unsigned tag, TagClass tagClass, unsigned nChoices, BOOL extend, const PString & nameSpec);    PASN_Choice(const PASN_Choice & other);    PASN_Choice & operator=(const PASN_Choice & other);    unsigned numChoices;    PASN_Object * choice;    POrdinalToString names;};PARRAY(PASN_ObjectArray, PASN_Object);/** Class for ASN Sequence type.*/class PASN_Sequence : public PASN_Object{    PCLASSINFO(PASN_Sequence, PASN_Object);  public:    PASN_Sequence(unsigned tag = UniversalSequence,                  TagClass tagClass = UniversalTagClass,                  unsigned nOpts = 0, BOOL extend = FALSE, unsigned nExtend = 0);    PASN_Sequence(const PASN_Sequence & other);    PASN_Sequence & operator=(const PASN_Sequence & other);    PINDEX GetSize() const { return fields.GetSize(); }    void SetSize(PINDEX newSize);    PASN_Object & operator[](PINDEX i) const { return fields[i]; }    BOOL HasOptionalField(PINDEX opt) const;    void IncludeOptionalField(PINDEX opt);    void RemoveOptionalField(PINDEX opt);    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 IsPrimitive() const;    virtual BOOL Decode(PASN_Stream &);    virtual void Encode(PASN_Stream &) const;    BOOL PreambleDecode(PASN_Stream & strm);    void PreambleEncode(PASN_Stream & strm) const;    BOOL KnownExtensionDecode(PASN_Stream & strm, PINDEX fld, PASN_Object & field);    void KnownExtensionEncode(PASN_Stream & strm, PINDEX fld, const PASN_Object & field) const;    BOOL UnknownExtensionsDecode(PASN_Stream & strm);    void UnknownExtensionsEncode(PASN_Stream & strm) const;    BOOL PreambleDecodeBER(PBER_Stream & strm);    void PreambleEncodeBER(PBER_Stream & strm) const;    BOOL KnownExtensionDecodeBER(PBER_Stream & strm, PINDEX fld, PASN_Object & field);    void KnownExtensionEncodeBER(PBER_Stream & strm, PINDEX fld, const PASN_Object & field) const;    BOOL UnknownExtensionsDecodeBER(PBER_Stream & strm);    void UnknownExtensionsEncodeBER(PBER_Stream & strm) const;    BOOL PreambleDecodePER(PPER_Stream & strm);    void PreambleEncodePER(PPER_Stream & strm) const;    BOOL KnownExtensionDecodePER(PPER_Stream & strm, PINDEX fld, PASN_Object & field);    void KnownExtensionEncodePER(PPER_Stream & strm, PINDEX fld, const PASN_Object & field) const;    BOOL UnknownExtensionsDecodePER(PPER_Stream & strm);    void UnknownExtensionsEncodePER(PPER_Stream & strm) const;  protected:    BOOL NoExtensionsToDecode(PPER_Stream & strm);    BOOL NoExtensionsToEncode(PPER_Stream & strm);    PASN_ObjectArray fields;    PASN_BitString optionMap;    int knownExtensions;    int totalExtensions;    PASN_BitString extensionMap;    PINDEX endBasicEncoding;};/** Class for ASN Set type.*/class PASN_Set : public PASN_Sequence{    PCLASSINFO(PASN_Set, PASN_Sequence);  public:    PASN_Set(unsigned tag = UniversalSet,             TagClass tagClass = UniversalTagClass,             unsigned nOpts = 0, BOOL extend = FALSE, unsigned nExtend = 0);    virtual PObject * Clone() const;    virtual PString GetTypeAsString() const;};/** Class for ASN Array type.*/class PASN_Array : public PASN_ConstrainedObject{    PCLASSINFO(PASN_Array, PASN_ConstrainedObject);  public:    PINDEX GetSize() const { return array.GetSize(); }    void SetSize(PINDEX newSize);    PASN_Object & operator[](PINDEX i) const { return array[i]; }    void RemoveAt(PINDEX i) { array.RemoveAt(i); }    void RemoveAll() { array.RemoveAll(); }    virtual Comparison Compare(const PObject & obj) const;    virtual void PrintOn(ostream & strm) const;    virtual PString GetTypeAsString() const;    virtual PINDEX GetDataLength() const;    virtual BOOL IsPrimitive() const;    virtual BOOL Decode(PASN_Stream &);    virtual void Encode(PASN_Stream &) const;    virtual PASN_Object * CreateObject() const = 0;  protected:    PASN_Array(unsigned tag = UniversalSequence,               TagClass tagClass = UniversalTagClass);    PASN_Array(const PASN_Array & other);    PASN_Array & operator=(const PASN_Array & other);    PASN_ObjectArray array;};//////////////////////////////////////////////////////////////////////////////** Base class for ASN decoder/encoder stream.*/class PASN_Stream : public PBYTEArray{    PCLASSINFO(PASN_Stream, PBYTEArray);  public:    PASN_Stream();    PASN_Stream(const PBYTEArray & bytes);    PASN_Stream(const BYTE * buf, PINDEX size);    void PrintOn(ostream & strm) const;    PINDEX GetPosition() const { return byteOffset; }    void SetPosition(PINDEX newPos);    BOOL IsAtEnd() { return byteOffset >= GetSize(); }    void ResetDecoder();    void BeginEncoding();    void CompleteEncoding();    virtual BOOL Read(PChannel & chan) = 0;    virtual BOOL Write(PChannel & chan) = 0;    virtual BOOL NullDecode(PASN_Null &) = 0;    virtual void NullEncode(const PASN_Null &) = 0;    virtual BOOL BooleanDecode(PASN_Boolean &) = 0;    virtual void BooleanEncode(const PASN_Boolean &) = 0;    virtual BOOL IntegerDecode(PASN_Integer &) = 0;    virtual void IntegerEncode(const PASN_Integer &) = 0;    virtual BOOL EnumerationDecode(PASN_Enumeration &) = 0;    virtual void EnumerationEncode(const PASN_Enumeration &) = 0;    virtual BOOL RealDecode(PASN_Real &) = 0;    virtual void RealEncode(const PASN_Real &) = 0;    virtual BOOL ObjectIdDecode(PASN_ObjectId &) = 0;    virtual void ObjectIdEncode(const PASN_ObjectId &) = 0;    virtual BOOL BitStringDecode(PASN_BitString &) = 0;    virtual void BitStringEncode(const PASN_BitString &) = 0;    virtual BOOL OctetStringDecode(PASN_OctetString &) = 0;    virtual void OctetStringEncode(const PASN_OctetString &) = 0;    virtual BOOL ConstrainedStringDecode(PASN_ConstrainedString &) = 0;    virtual void ConstrainedStringEncode(const PASN_ConstrainedString &) = 0;    virtual BOOL BMPStringDecode(PASN_BMPString &) = 0;    virtual void BMPStringEncode(const PASN_BMPString &) = 0;    virtual BOOL ChoiceDecode(PASN_Choice &) = 0;    virtual void ChoiceEncode(const PASN_Choice &) = 0;    virtual BOOL ArrayDecode(PASN_Array &) = 0;    virtual void ArrayEncode(const PASN_Array &) = 0;    virtual BOOL SequencePreambleDecode(PASN_Sequence &) = 0;    virtual void SequencePreambleEncode(const PASN_Sequence &) = 0;    virtual BOOL SequenceKnownDecode(PASN_Sequence &, PINDEX, PASN_Object &) = 0;    virtual void SequenceKnownEncode(const PASN_Sequence &, PINDEX, const PASN_Object &) = 0;    virtual BOOL SequenceUnknownDecode(PASN_Sequence &) = 0;    virtual void SequenceUnknownEncode(const PASN_Sequence &) = 0;    BYTE ByteDecode();    void ByteEncode(unsigned value);    unsigned BlockDecode(BYTE * bufptr, unsigned nBytes);    void BlockEncode(const BYTE * bufptr, PINDEX nBytes);    void ByteAlign();  protected:    PINDEX byteOffset;    unsigned bitOffset;  private:    void Construct();};/** Class for ASN basic Encoding Rules stream.*/class PBER_Stream : public PASN_Stream{    PCLASSINFO(PBER_Stream, PASN_Stream);  public:    PBER_Stream();    PBER_Stream(const PBYTEArray & bytes);    PBER_Stream(const BYTE * buf, PINDEX size);    PBER_Stream & operator=(const PBYTEArray & bytes);    virtual BOOL Read(PChannel & chan);    virtual BOOL Write(PChannel & chan);    virtual BOOL NullDecode(PASN_Null &);    virtual void NullEncode(const PASN_Null &);    virtual BOOL BooleanDecode(PASN_Boolean &);    virtual void BooleanEncode(const PASN_Boolean &);    virtual BOOL IntegerDecode(PASN_Integer &);    virtual void IntegerEncode(const PASN_Integer &);    virtual BOOL EnumerationDecode(PASN_Enumeration &);    virtual void EnumerationEncode(const PASN_Enumeration &);    virtual BOOL RealDecode(PASN_Real &);    virtual void RealEncode(const PASN_Real &);    virtual BOOL ObjectIdDecode(PASN_ObjectId &);    virtual void ObjectIdEncode(const PASN_ObjectId &);    virtual BOOL BitStringDecode(PASN_BitString &);    virtual void BitStringEncode(const PASN_BitString &);    virtual BOOL OctetStringDecode(PASN_OctetString &);    virtual void OctetStringEncode(const PASN_OctetString &);    virtual BOOL ConstrainedStringDecode(PASN_ConstrainedString &);    virtual void ConstrainedStringEncode(const PASN_ConstrainedString &);    virtual BOOL BMPStringDecode(PASN_BMPString &);    virtual void BMPStringEncode(const PASN_BMPString &);    virtual BOOL ChoiceDecode(PASN_Choice &);    virtual void ChoiceEncode(const PASN_Choice &);    virtual BOOL ArrayDecode(PASN_Array &);    virtual void ArrayEncode(const PASN_Array &);    virtual BOOL SequencePreambleDecode(PASN_Sequence &);    virtual void SequencePreambleEncode(const PASN_Sequence &);    virtual BOOL SequenceKnownDecode(PASN_Sequence &, PINDEX, PASN_Object &);    virtual void SequenceKnownEncode(const PASN_Sequence &, PINDEX, const PASN_Object &);    virtual BOOL SequenceUnknownDecode(PASN_Sequence &);    virtual void SequenceUnknownEncode(const PASN_Sequence &);    virtual PASN_Object * CreateObject(unsigned tag,                                       PASN_Object::TagClass tagClass,                                       BOOL primitive) const;    BOOL HeaderDecode(unsigned & tagVal,                      PASN_Object::TagClass & tagClass,                      BOOL & primitive,                      unsigned & len);    BOOL HeaderDecode(PASN_Object & obj, unsigned & len);    void HeaderEncode(const PASN_Object & obj);};/** Class for ASN Packed Encoding Rules stream.*/class PPER_Stream : public PASN_Stream{    PCLASSINFO(PPER_Stream, PASN_Stream);  public:    PPER_Stream(BOOL aligned = TRUE);    PPER_Stream(const PBYTEArray & bytes, BOOL aligned = TRUE);    PPER_Stream(const BYTE * buf, PINDEX size, BOOL aligned = TRUE);    PPER_Stream & operator=(const PBYTEArray & bytes);    unsigned GetBitsLeft() const;    virtual BOOL Read(PChannel & chan);    virtual BOOL Write(PChannel & chan);    virtual BOOL NullDecode(PASN_Null &);    virtual void NullEncode(const PASN_Null &);    virtual BOOL BooleanDecode(PASN_Boolean &);    virtual void BooleanEncode(const PASN_Boolean &);    virtual BOOL IntegerDecode(PASN_Integer &);    virtual void IntegerEncode(const PASN_Integer &);    virtual BOOL EnumerationDecode(PASN_Enumeration &);    virtual void EnumerationEncode(const PASN_Enumeration &);    virtual BOOL RealDecode(PASN_Real &);    virtual void RealEncode(const PASN_Real &);    virtual BOOL ObjectIdDecode(PASN_ObjectId &);    virtual void ObjectIdEncode(const PASN_ObjectId &);    virtual BOOL BitStringDecode(PASN_BitString &);    virtual void BitStringEncode(const PASN_BitString &);    virtual BOOL OctetStringDecode(PASN_OctetString &);    virtual void OctetStringEncode(const PASN_OctetString &);    virtual BOOL ConstrainedStringDecode(PASN_ConstrainedString &);    virtual void ConstrainedStringEncode(const PASN_ConstrainedString &);    virtual BOOL BMPStringDecode(PASN_BMPString &);    virtual void BMPStringEncode(const PASN_BMPString &);    virtual BOOL ChoiceDecode(PASN_Choice &);    virtual void ChoiceEncode(const PASN_Choice &);    virtual BOOL ArrayDecode(PASN_Array &);    virtual void ArrayEncode(const PASN_Array &);    virtual BOOL SequencePreambleDecode(PASN_Sequence &);    virtual void SequencePreambleEncode(const PASN_Sequence &);    virtual BOOL SequenceKnownDecode(PASN_Sequence &, PINDEX, PASN_Object &);    virtual void SequenceKnownEncode(const PASN_Sequence &, PINDEX, const PASN_Object &);    virtual BOOL SequenceUnknownDecode(PASN_Sequence &);    virtual void SequenceUnknownEncode(const PASN_Sequence &);    BOOL IsAligned() const { return aligned; }    BOOL SingleBitDecode();    void SingleBitEncode(BOOL value);    int MultiBitDecode(unsigned nBits);    void MultiBitEncode(int value, unsigned nBits);    unsigned SmallUnsignedDecode();    void SmallUnsignedEncode(unsigned val);    int LengthDecode(unsigned lower, unsigned upper, unsigned & len);    void LengthEncode(unsigned len, unsigned lower, unsigned upper);    int UnsignedDecode(unsigned lower, unsigned upper, unsigned & value);    void UnsignedEncode(int value, unsigned lower, unsigned upper);    void AnyTypeEncode(const PASN_Object * value);  protected:    BOOL aligned;};#endif // _ASNER_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -