00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifdef P_INCLUDE_PER
00011
00012
00015 class PPER_Stream : public PASN_Stream
00016 {
00017 PCLASSINFO(PPER_Stream, PASN_Stream);
00018 public:
00019 PPER_Stream(int aligned = PTrue);
00020 PPER_Stream(const BYTE * buf, PINDEX size, PBoolean aligned = PTrue);
00021 PPER_Stream(const PBYTEArray & bytes, PBoolean aligned = PTrue);
00022
00023 PPER_Stream & operator=(const PBYTEArray & bytes);
00024
00025 unsigned GetBitsLeft() const;
00026
00027 virtual PBoolean Read(PChannel & chan);
00028 virtual PBoolean Write(PChannel & chan);
00029
00030 virtual PBoolean NullDecode(PASN_Null &);
00031 virtual void NullEncode(const PASN_Null &);
00032 virtual PBoolean BooleanDecode(PASN_Boolean &);
00033 virtual void BooleanEncode(const PASN_Boolean &);
00034 virtual PBoolean IntegerDecode(PASN_Integer &);
00035 virtual void IntegerEncode(const PASN_Integer &);
00036 virtual PBoolean EnumerationDecode(PASN_Enumeration &);
00037 virtual void EnumerationEncode(const PASN_Enumeration &);
00038 virtual PBoolean RealDecode(PASN_Real &);
00039 virtual void RealEncode(const PASN_Real &);
00040 virtual PBoolean ObjectIdDecode(PASN_ObjectId &);
00041 virtual void ObjectIdEncode(const PASN_ObjectId &);
00042 virtual PBoolean BitStringDecode(PASN_BitString &);
00043 virtual void BitStringEncode(const PASN_BitString &);
00044 virtual PBoolean OctetStringDecode(PASN_OctetString &);
00045 virtual void OctetStringEncode(const PASN_OctetString &);
00046 virtual PBoolean ConstrainedStringDecode(PASN_ConstrainedString &);
00047 virtual void ConstrainedStringEncode(const PASN_ConstrainedString &);
00048 virtual PBoolean BMPStringDecode(PASN_BMPString &);
00049 virtual void BMPStringEncode(const PASN_BMPString &);
00050 virtual PBoolean ChoiceDecode(PASN_Choice &);
00051 virtual void ChoiceEncode(const PASN_Choice &);
00052 virtual PBoolean ArrayDecode(PASN_Array &);
00053 virtual void ArrayEncode(const PASN_Array &);
00054 virtual PBoolean SequencePreambleDecode(PASN_Sequence &);
00055 virtual void SequencePreambleEncode(const PASN_Sequence &);
00056 virtual PBoolean SequenceKnownDecode(PASN_Sequence &, PINDEX, PASN_Object &);
00057 virtual void SequenceKnownEncode(const PASN_Sequence &, PINDEX, const PASN_Object &);
00058 virtual PBoolean SequenceUnknownDecode(PASN_Sequence &);
00059 virtual void SequenceUnknownEncode(const PASN_Sequence &);
00060
00061 PBoolean IsAligned() const { return aligned; }
00062
00063 PBoolean SingleBitDecode();
00064 void SingleBitEncode(PBoolean value);
00065
00066 PBoolean MultiBitDecode(unsigned nBits, unsigned & value);
00067 void MultiBitEncode(unsigned value, unsigned nBits);
00068
00069 PBoolean SmallUnsignedDecode(unsigned & value);
00070 void SmallUnsignedEncode(unsigned value);
00071
00072 PBoolean LengthDecode(unsigned lower, unsigned upper, unsigned & len);
00073 void LengthEncode(unsigned len, unsigned lower, unsigned upper);
00074
00075 PBoolean UnsignedDecode(unsigned lower, unsigned upper, unsigned & value);
00076 void UnsignedEncode(int value, unsigned lower, unsigned upper);
00077
00078 void AnyTypeEncode(const PASN_Object * value);
00079
00080 protected:
00081 PBoolean aligned;
00082 };
00083
00084 #endif
00085
00086
00087