00001 /* 00002 * asnxer.h 00003 * 00004 * Abstract Syntax Notation Encoding Rules classes 00005 * 00006 * Portable Windows Library 00007 * 00008 */ 00009 00010 #ifdef P_INCLUDE_XER 00011 00014 class PXER_Stream : public PASN_Stream 00015 { 00016 PCLASSINFO(PXER_Stream, PASN_Stream); 00017 public: 00018 PXER_Stream(PXMLElement * elem); 00019 PXER_Stream(PXMLElement * elem, const PBYTEArray & bytes); 00020 PXER_Stream(PXMLElement * elem, const BYTE * buf, PINDEX size); 00021 00022 virtual PBoolean Read(PChannel & chan); 00023 virtual PBoolean Write(PChannel & chan); 00024 00025 virtual PBoolean NullDecode(PASN_Null &); 00026 virtual void NullEncode(const PASN_Null &); 00027 virtual PBoolean BooleanDecode(PASN_Boolean &); 00028 virtual void BooleanEncode(const PASN_Boolean &); 00029 virtual PBoolean IntegerDecode(PASN_Integer &); 00030 virtual void IntegerEncode(const PASN_Integer &); 00031 virtual PBoolean EnumerationDecode(PASN_Enumeration &); 00032 virtual void EnumerationEncode(const PASN_Enumeration &); 00033 virtual PBoolean RealDecode(PASN_Real &); 00034 virtual void RealEncode(const PASN_Real &); 00035 virtual PBoolean ObjectIdDecode(PASN_ObjectId &); 00036 virtual void ObjectIdEncode(const PASN_ObjectId &); 00037 virtual PBoolean BitStringDecode(PASN_BitString &); 00038 virtual void BitStringEncode(const PASN_BitString &); 00039 virtual PBoolean OctetStringDecode(PASN_OctetString &); 00040 virtual void OctetStringEncode(const PASN_OctetString &); 00041 virtual PBoolean ConstrainedStringDecode(PASN_ConstrainedString &); 00042 virtual void ConstrainedStringEncode(const PASN_ConstrainedString &); 00043 virtual PBoolean BMPStringDecode(PASN_BMPString &); 00044 virtual void BMPStringEncode(const PASN_BMPString &); 00045 virtual PBoolean ChoiceDecode(PASN_Choice &); 00046 virtual void ChoiceEncode(const PASN_Choice &); 00047 virtual PBoolean ArrayDecode(PASN_Array &); 00048 virtual void ArrayEncode(const PASN_Array &); 00049 virtual PBoolean SequencePreambleDecode(PASN_Sequence &); 00050 virtual void SequencePreambleEncode(const PASN_Sequence &); 00051 virtual PBoolean SequenceKnownDecode(PASN_Sequence &, PINDEX, PASN_Object &); 00052 virtual void SequenceKnownEncode(const PASN_Sequence &, PINDEX, const PASN_Object &); 00053 virtual PBoolean SequenceUnknownDecode(PASN_Sequence &); 00054 virtual void SequenceUnknownEncode(const PASN_Sequence &); 00055 00056 PXMLElement * GetCurrentElement() { return position; } 00057 PXMLElement * SetCurrentElement(PXMLElement * elem) { return position = elem; } 00058 00059 protected: 00060 PXMLElement * position; 00061 }; 00062 00063 #endif