00001 /* 00002 * ============================================================================= 00003 * Name : sipheaderbase.h 00004 * Part of : SIP Codec 00005 * Interface : SDK API, SIP Codec API 00006 * Description : 00007 * Version : SIP/4.0 00008 * 00009 * Copyright (c) 2004 Nokia Corporation. 00010 * This material, including documentation and any related 00011 * computer programs, is protected by copyright controlled by 00012 * Nokia Corporation. All rights are reserved. Copying, 00013 * including reproducing, storing, adapting or translating, any 00014 * or all of this material requires the prior written consent of 00015 * Nokia Corporation. This material also contains confidential 00016 * information which may not be disclosed to others without the 00017 * prior written consent of Nokia Corporation. 00018 * ============================================================================= 00019 */ 00020 00021 00022 #ifndef CSIPHEADERBASE_H 00023 #define CSIPHEADERBASE_H 00024 00025 // INCLUDES 00026 #include <e32base.h> 00027 #include <s32mem.h> 00028 #include <stringpool.h> 00029 #include "_sipcodecdefs.h" 00030 00031 // CLASS DECLARATION 00040 class CSIPHeaderBase : public CBase 00041 { 00042 public: // Constructors and destructors 00043 00047 IMPORT_C virtual ~CSIPHeaderBase(); 00048 00049 00050 public: // New functions 00051 00057 IMPORT_C virtual CSIPHeaderBase* CloneL() const = 0; 00058 00064 IMPORT_C virtual RStringF Name() const = 0; 00065 00071 IMPORT_C HBufC8* ToTextL() const; 00072 00079 IMPORT_C HBufC8* ToTextLC() const; 00080 00086 IMPORT_C virtual HBufC8* ToTextValueL() const = 0; 00087 00094 IMPORT_C HBufC8* ToTextValueLC() const; 00095 00102 IMPORT_C void ExternalizeL(RWriteStream& aWriteStream, 00103 TBool aAddName=ETrue) const; 00104 00111 IMPORT_C virtual TBool ExternalizeSupported() const; 00112 00119 IMPORT_C static void PushLC(RPointerArray<CSIPHeaderBase>* aArray); 00120 00121 00122 public: // For internal use 00123 00124 enum TPreferredPlace 00125 { 00126 ETop, 00127 EMiddleTop, 00128 EMiddle, 00129 EMiddleBottom, 00130 EBottom 00131 }; 00132 00133 TSglQueLink iLink; 00134 00135 virtual TBool EncodeMultipleToOneLine() const; 00136 virtual TBool MoreThanOneAllowed() const; 00137 virtual TBool IsExtensionHeader() const; 00138 virtual TBool HasCompactName() const; 00139 virtual RStringF CompactName() const; 00140 virtual TPreferredPlace PreferredPlaceInMessage() const = 0; 00141 00142 protected: // Constructors 00143 00144 CSIPHeaderBase(); 00145 00146 protected: // New functions 00147 00148 void ExternalizeNameL(RWriteStream& aWriteStream) const; 00149 virtual void ExternalizeValueL(RWriteStream& aWriteStream) const; 00150 // Needed for cleanup of a RPointerArray<CSIPHeaderBase>: 00151 static void ResetAndDestroy(TAny* anArray); 00152 }; 00153 00154 // CSIPHEADERBASE_H 00155 #endif 00156 00157 // End of File