1.1 --- a/epoc32/include/versit.h Tue Mar 16 16:12:26 2010 +0000
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,485 +0,0 @@
1.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
1.5 -// All rights reserved.
1.6 -// This component and the accompanying materials are made available
1.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
1.8 -// which accompanies this distribution, and is available
1.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
1.10 -//
1.11 -// Initial Contributors:
1.12 -// Nokia Corporation - initial contribution.
1.13 -//
1.14 -// Contributors:
1.15 -//
1.16 -// Description:
1.17 -//
1.18 -
1.19 -#ifndef __VERSIT_H__
1.20 -#define __VERSIT_H__
1.21 -
1.22 -// System includes
1.23 -#include <e32base.h>
1.24 -#include <badesca.h>
1.25 -#include <s32file.h>
1.26 -
1.27 -// User includes
1.28 -#include <vuid.h>
1.29 -#include <vtoken.h>
1.30 -#include <vprop.h>
1.31 -#include <versittls.h>
1.32 -
1.33 -// Classes referenced
1.34 -class RFile;
1.35 -class TVersitDateTime;
1.36 -class MVersitObserver;
1.37 -class MVersitPlugIn;
1.38 -
1.39 -// Panic enumeration
1.40 -/** Versit panic numbers. The Versit panic numbers have a category of "Versit-Parser".
1.41 -@internalComponent
1.42 -@released
1.43 -*/
1.44 -enum TVersitParserPanic
1.45 - {
1.46 - ECurrentTokenNotFound, //Unused
1.47 - EUnicodeUtilsNotFound, //Unused
1.48 - ENoPropertyValue, //Unused
1.49 - /** A CWeekDayArray contains an invalid value (not between EMonday
1.50 - and ESunday inclusive). */
1.51 - ENoWeekdayFound,
1.52 - /** The number of a week within a month is invalid. */
1.53 - EWeekNoOverTen,
1.54 - /** The repeat type for a recurrence rule property value is not one of the values
1.55 - specified in CVersitRecurrence::TType. */
1.56 - ENoRecognizedRepeatType,
1.57 - EVersitPanicEscapedTextAlreadyExists, //Unused
1.58 - /** 8-bit encoding is proposed as the default for a parser but may not be appropriate. */
1.59 - EVersitPanicCannotSetEightBitEncoding,
1.60 - /** 8-bit encoding is encountered or proposed where it is not expected. */
1.61 - EVersitPanicUnexpectedEightBitEncoding,
1.62 - /** A parser was not specified when externalising a property. */
1.63 - EVersitPanicNeedToSpecifyParser,
1.64 - /** The additional storage slot for the given property has already been used */
1.65 - EVersitPanicAdditionalStorageSlotAlreadyInUse,
1.66 - /** Attempting to assign a NULL value to an additional storage slot */
1.67 - EVersitPanicNullValueAssignedToAdditionalStorageSlot,
1.68 - //
1.69 - EVersitPanicLast
1.70 - };
1.71 -
1.72 -/**
1.73 -Used as key into additional storage within tls object, for CVersitTLSContainer
1.74 -Value should not conflict with genuine compiler generated pointer values
1.75 -*/
1.76 -const static TInt* const KTLSVars = reinterpret_cast<TInt*>(1);
1.77 -
1.78 -GLREF_C void DestroyHBufC(TAny* aHBufC);
1.79 -IMPORT_C void Panic(TVersitParserPanic aPanic);
1.80 -
1.81 -
1.82 -/** Extension mechanism for CLineReader
1.83 -This is an internal class and is only for use by CLineReader
1.84 -@internalComponent
1.85 -@released
1.86 -*/
1.87 -class CLineReaderExtension : public CBase
1.88 - {
1.89 - friend class CLineReader;
1.90 -private:
1.91 - CLineReaderExtension();
1.92 - static CLineReaderExtension* NewL();
1.93 -private:
1.94 - TUint8 iBuf[1024];
1.95 - TInt iOffset;
1.96 - TInt iSize;
1.97 - };
1.98 -
1.99 -class CLineReader : public CBase
1.100 -/** Line reader for a vCalendar or vCard parser.
1.101 -
1.102 -Reads in a line at a time for the parser.
1.103 -
1.104 -Also allows the first character of the next line to be checked to see if it
1.105 -is a space, which can indicate that the line is wrapped. This enables the
1.106 -reading of multi-line property values.
1.107 -
1.108 -Used by CVersitParser to internalise streams.
1.109 -@publishedAll
1.110 -@released
1.111 -*/
1.112 - {
1.113 -public:
1.114 - /** Defines the initial line size of, and the size of expansions to, the buffer
1.115 - which stores the line being read. */
1.116 - enum
1.117 - {
1.118 - /** The initial size of the buffer (pointed to by iBuf). */
1.119 - EInitialLineSize=96,
1.120 - /** The size by which the buffer (pointed to by iBuf)
1.121 - is expanded when it has run out of room. */
1.122 - EExpandSize=16,
1.123 - };
1.124 - /** Defines values which describe the content of a line that has been read.
1.125 -
1.126 - This is the return value from the function ReadLine(). */
1.127 - enum
1.128 - {
1.129 - /** The line has content (not white space). */
1.130 - ELineHasContent=0,
1.131 - /** The line has white space only. */
1.132 - ELineIsWhiteSpace=1, //Doesn't include next case
1.133 - /** The line has no content, and so is just a carriage return and line
1.134 - feed ("/r/n"). */
1.135 - ELineIsCRLFOnly=2,
1.136 - };
1.137 -public:
1.138 - IMPORT_C static CLineReader* NewL(RReadStream& aStream);
1.139 - IMPORT_C ~CLineReader();
1.140 - IMPORT_C virtual TBool ReadLineL(TInt aPos,TInt& aErr);
1.141 - IMPORT_C TBool AppendLineIfSpaceNextL();
1.142 - IMPORT_C TBool IsSpaceNextL();
1.143 - IMPORT_C TInt AppendSpaceL();
1.144 - inline void SetPlugIn(MVersitPlugIn* aPlugIn);
1.145 - inline void SetSkipWhiteSpaceAtStart(TBool aDoSkip);
1.146 -protected:
1.147 - inline CLineReader(RReadStream& aStream) :iReadStream(&aStream), iBufPtr(NULL,0), iFirstCharNextLine(-1) {}
1.148 - IMPORT_C void ConstructL();
1.149 - IMPORT_C void ExpandBufferL(TInt aCurrentSize);
1.150 - IMPORT_C TUint8 ReadChar(TInt& aErr);
1.151 -private:
1.152 - IMPORT_C virtual void Reserved();
1.153 -public:
1.154 - /** A pointer to an RReadStream object, the ReadUint8L() function of which is used
1.155 - to read single characters from the stream.
1.156 -
1.157 - This is passed into the NewL() function upon construction. */
1.158 - RReadStream* iReadStream;
1.159 - /** A pointer to a buffer which stores data read from the stream.
1.160 -
1.161 - Its size on construction is EInitialLineSize, and it is expanded by EExpandSize
1.162 - when necessary.
1.163 -
1.164 - A copy of this value should not be stored, since the buffer location may change
1.165 - if the buffer is expanded.
1.166 -
1.167 - Data in the buffer is not lost when the buffer is expanded, but is copied
1.168 - to the new location. */
1.169 - TPtr8 iBufPtr;
1.170 -protected:
1.171 - HBufC8* iLineBuf;
1.172 - TInt iFirstCharNextLine;
1.173 -private:
1.174 - MVersitPlugIn* iPlugIn;
1.175 - TBool iSkipWhiteSpaceAtStart;
1.176 - CLineReaderExtension* iExtension;
1.177 - };
1.178 -
1.179 -class CVersitParser : public CBase
1.180 -/** A generic Versit parser.
1.181 -
1.182 -Provides generic functions which implement behaviour common to both vCalendar
1.183 -and vCard parsers. For instance:
1.184 -
1.185 -- InternalizeL() and ExternalizeL() functions, for writing and reading
1.186 -data from a stream or file.
1.187 -
1.188 -- adding/retrieving properties and sub-entities to/from an existing entity.
1.189 -
1.190 -- encoding and character set conversion capabilities.
1.191 -
1.192 -Although this is not an abstract class, in practice you would create and use
1.193 -objects of a derived class instead (CParserVCal or CParserVCard), as these
1.194 -provide additional functionality needed for parsing vCalendars and vCards.
1.195 -
1.196 -Note: a flag used in the class constructor indicates whether the entity needs
1.197 -a version property. The version property will be inserted at the start of
1.198 -the array of properties for the entity, and specifies the version of the vCard/vCalendar
1.199 -specification used by the data of this particular vCard/vCalendar. The versions
1.200 -that are currently supported are vCard v2.1 and vCalendar v1.0.
1.201 -
1.202 -A typical vCard looks like this:
1.203 -
1.204 -BEGIN VCARD
1.205 -
1.206 -VERSION 2.1 ...
1.207 -
1.208 -END VCARD
1.209 -
1.210 -Note: if you are sequentially creating and destroying multiple
1.211 -parsers, a major performance improvement may be achieved
1.212 -by using thread local storage to store an instance of CVersitUnicodeUtils
1.213 -which persists and can be used by all of the parsers.
1.214 -
1.215 -See CVersitTlsData for more details.
1.216 -@publishedAll
1.217 -@released
1.218 -*/
1.219 - {
1.220 - friend class CParserProperty;
1.221 -public:
1.222 - IMPORT_C CVersitParser(TUint aFlags);
1.223 - IMPORT_C void ConstructL();
1.224 - IMPORT_C ~CVersitParser();
1.225 - IMPORT_C void InternalizeL(RFile& aInputFile,TInt& aBytesThroughFile);
1.226 - IMPORT_C virtual void InternalizeL(RReadStream& aStream);
1.227 - IMPORT_C virtual void InternalizeL(HBufC* aEntityName,CLineReader* aLineReader);
1.228 - IMPORT_C void ExternalizeL(RFile& aOutputFile);
1.229 - IMPORT_C virtual void ExternalizeL(RWriteStream& aStream);
1.230 - IMPORT_C void AddEntityL(CVersitParser* aEntity);
1.231 - IMPORT_C void AddPropertyL(CParserProperty* aProperty,TBool aInternalizing=EFalse);
1.232 - IMPORT_C CArrayPtr<CVersitParser>* EntityL(const TDesC& aEntityName,TBool aTakeOwnership=ETrue);
1.233 - IMPORT_C CArrayPtr<CVersitParser>* ArrayOfEntities(TBool aTakeOwnership=ETrue);
1.234 - IMPORT_C CArrayPtr<CParserProperty>* PropertyL(const TDesC8& aPropertyName,const TUid& aPropertyUid,TBool aTakeOwnership=ETrue) const;
1.235 - IMPORT_C CArrayPtr<CParserProperty>* ArrayOfProperties(TBool aTakeOwnership=ETrue);
1.236 - IMPORT_C virtual void ConvertAllPropertyDateTimesToMachineLocalL(const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight);
1.237 - IMPORT_C void AdjustAllPropertyDateTimesToMachineLocalL();
1.238 - IMPORT_C static TBool IsValidParameterValue(TInt& aPos,const TDesC& aParamValue);
1.239 - IMPORT_C void SetEntityNameL(const TDesC& aEntityName);
1.240 - IMPORT_C TPtrC EntityName() const;
1.241 - IMPORT_C static TBool IsValidLabel(const TDesC& aLabel, TInt& aPos);
1.242 - IMPORT_C static TInt Val(const TDesC& aString, TInt& aNumber);
1.243 - IMPORT_C void SetCharacterConverter(Versit::TEncodingAndCharset& encodingAndCharset);
1.244 -
1.245 - //
1.246 - // Set/Get the default settings for the [en|de]coding process
1.247 - //
1.248 - IMPORT_C Versit::TVersitEncoding DefaultEncoding() const;
1.249 - IMPORT_C void SetDefaultEncoding(const Versit::TVersitEncoding aEncoding);
1.250 - IMPORT_C Versit::TVersitCharSet DefaultCharSet() const;
1.251 - IMPORT_C TUint DefaultCharSetId() const;
1.252 - IMPORT_C void SetDefaultCharSet(const Versit::TVersitCharSet aCharSet);
1.253 - IMPORT_C void SetDefaultCharSetId(TUint aCharSetId);
1.254 - IMPORT_C void SetAutoDetect(TBool aOn,const CArrayFix<CCnvCharacterSetConverter::SCharacterSet>* aAutoDetectCharSets=NULL);
1.255 -
1.256 - //
1.257 - // Set/Get Observers and PlugIn's
1.258 - //
1.259 - inline void SetObserver(MVersitObserver* aObserver);
1.260 - inline MVersitObserver* Observer();
1.261 - inline void SetPlugIn(MVersitPlugIn* aPlugIn);
1.262 - inline MVersitPlugIn* PlugIn();
1.263 -
1.264 -public:
1.265 -
1.266 - IMPORT_C TInt LoadBinaryValuesFromFilesL();
1.267 - IMPORT_C TInt LoadBinaryValuesFromFilesL(RFs& aFileSession);
1.268 - IMPORT_C TInt SaveBinaryValuesToFilesL(TInt aSizeThreshold,const TDesC& aPath);
1.269 - IMPORT_C TInt SaveBinaryValuesToFilesL(TInt aSizeThreshold,const TDesC& aPath,RFs& aFileSession);
1.270 -public:
1.271 - /** White space character codes: used while analysing the syntax of the received
1.272 - data and while externalising data.
1.273 - @publishedAll
1.274 - @released
1.275 - */
1.276 - enum TCharCodes
1.277 - {
1.278 - /** ' ' */
1.279 - ESpace = ' ',
1.280 - /** 9 */
1.281 - EHTab = 9,
1.282 - /** 10 */
1.283 - ELineFeed = 10,
1.284 - /** 13 */
1.285 - ECarriageReturn = 13
1.286 - };
1.287 - /** Flags that can be specified on construction.
1.288 - @publishedAll
1.289 - @released
1.290 - */
1.291 - enum TVersitParserFlags
1.292 - {
1.293 - /** This entity does not need a version property. */
1.294 - ENoVersionProperty = 0,
1.295 - /** This entity should have a version property. */
1.296 - ESupportsVersion = 0x01,
1.297 - //Gaps since other flags have been used in past
1.298 - EImportSyncML = 0x1000, //Importing from a SyncML server
1.299 - /** Indicates whether the parser should use auto-detection of character sets when
1.300 - one has not been explicitly specified. */
1.301 - EUseAutoDetection = 0x4000,
1.302 - //versit Internal use only
1.303 - /** The current property has specified a character set. */
1.304 - ECharSetIdentified = 0x8000,
1.305 - /** If the charset is not explicitly specified, the default charset will be used instead of US-ASCII as required
1.306 - by the Versit specification . */
1.307 - EUseDefaultCharSetForAllProperties = 0x2000
1.308 - };
1.309 -
1.310 - //
1.311 - // Unicode support conversion functions
1.312 - //
1.313 - IMPORT_C static TInt ConvertFromUnicodeToISOL(TDes8& aIso, const TDesC16& aUnicode, CCnvCharacterSetConverter* aConverter);
1.314 - IMPORT_C TVersitDateTime* DecodeDateTimeL(TDes& aToken) const;
1.315 -
1.316 -protected:
1.317 - IMPORT_C TInt ConvertToUnicodeFromISOL(TDes16& aUnicode, const TDesC8& aIso, TUint aCharacterSet);
1.318 -
1.319 - //
1.320 - // Parsing high level functions
1.321 - //
1.322 - IMPORT_C void ParsePropertiesL();
1.323 - IMPORT_C void ParseBeginL();
1.324 - IMPORT_C void ParseEndL();
1.325 - void ParseEndL(HBufC16& aEntityName);
1.326 - IMPORT_C TBool ParseEntityL();
1.327 - IMPORT_C virtual void ParsePropertyL();
1.328 - IMPORT_C CArrayPtr<CParserParam>* ReadLineAndDecodeParamsLC(TInt& aValueStart,TInt& aNameLen);
1.329 - IMPORT_C void MakePropertyL(TPtr8& aPropName,TInt aValueStart);
1.330 - IMPORT_C CArrayPtr<CParserParam>* GetPropertyParamsLC(TPtr8 aParams);
1.331 - IMPORT_C void ParseParamL(CArrayPtr<CParserParam>* aArray,TPtr8 aParam);
1.332 - IMPORT_C void AnalysesEncodingCharset(CArrayPtr<CParserParam>* aArrayOfParams);
1.333 - IMPORT_C void ReadMultiLineValueL(TPtr8& aValue,TInt aValueStart,TBool aBinaryData);
1.334 - inline TPtr8& BufPtr();
1.335 -
1.336 - //
1.337 - // Append standard versit tokens to streams
1.338 - //
1.339 - IMPORT_C void AppendBeginL();
1.340 - IMPORT_C void AppendEndL();
1.341 - void AppendEntityNameL();
1.342 - IMPORT_C void DoAddPropertyL(CParserProperty* aProperty);
1.343 -
1.344 - //
1.345 - // Dispatcher functions to create entities/properties based upon a Versit identifying Uid
1.346 - //
1.347 - IMPORT_C virtual CVersitParser* MakeEntityL(TInt aEntityUid,HBufC* aEntityName);
1.348 - CParserPropertyValueHBufC* MakeDefaultPropertyValueL(HBufC16*& aValue);
1.349 - IMPORT_C virtual CParserPropertyValue* MakePropertyValueL(const TUid& aPropertyUid,HBufC16*& aValue);
1.350 - IMPORT_C HBufC* DecodePropertyValueL(const TDesC8& aValue);
1.351 - IMPORT_C void DecodePropertyValueL(const TDesC8& aValue,const TUid& aEncodingUid);
1.352 - HBufC* ConvertToUnicodeL(const TDesC8& aValue);
1.353 - IMPORT_C CDesCArray* MakePropertyValueCDesCArrayL(TPtr16 aStringValue);
1.354 - IMPORT_C CArrayPtr<TVersitDateTime>* MakePropertyValueMultiDateTimeL(TPtr16 aDateTimeGroup);
1.355 - IMPORT_C CVersitDaylight* MakePropertyValueDaylightL(TPtr16 aDaylightValue);
1.356 - IMPORT_C TBool FindFirstField(TPtr16& aField,TPtr16& aRemaining, TBool aTrimSpace=ETrue);
1.357 - IMPORT_C void FindRemainingField(TPtr16& aField,TPtr16& aRemaining);
1.358 -
1.359 - //
1.360 - // Helper methods to decode versit dates, times, and time periods
1.361 - //
1.362 - IMPORT_C TTimeIntervalSeconds DecodeTimeZoneL(const TDesC& aToken) const;
1.363 - IMPORT_C TTime* DecodeTimePeriodL(const TDesC& aToken) const;
1.364 - IMPORT_C TInt GetNumberL(const TDesC& aToken,TInt& aNumChars) const;
1.365 -
1.366 -public:
1.367 - IMPORT_C virtual TUid RecognizeToken(const TDesC8& aToken) const;
1.368 - IMPORT_C virtual TInt RecognizeEntityName() const;
1.369 - //
1.370 - // Cleanup support methods
1.371 - //
1.372 - IMPORT_C static void ResetAndDestroyArrayOfParams(TAny* aObject);
1.373 - IMPORT_C static void ResetAndDestroyArrayOfProperties(TAny* aObject);
1.374 - IMPORT_C static void ResetAndDestroyArrayOfEntities(TAny* aObject);
1.375 - IMPORT_C static void ResetAndDestroyArrayOfDateTimes(TAny* aObject);
1.376 -
1.377 - inline void SetFlags(TUint aFlags);
1.378 -
1.379 -
1.380 -
1.381 -protected:
1.382 - //
1.383 - // Enquiry functions
1.384 - //
1.385 - static TBool IsPunctuationToken(TUint aChar);
1.386 - inline TBool SupportsVersion() const;
1.387 - inline void SetSupportsVersion();
1.388 - inline void ClearSupportsVersion();
1.389 -
1.390 - //
1.391 - // Set the settings for the [en|de]coding of the current property
1.392 - //
1.393 - IMPORT_C void RestoreLineCodingDetailsToDefault();
1.394 - IMPORT_C void SetLineEncoding(Versit::TVersitEncoding aLineEncoding);
1.395 - IMPORT_C void SetLineEncoding(TUint aVersitEncodingUid);
1.396 - IMPORT_C void SetLineCharacterSet(Versit::TVersitCharSet aLineCharSet);
1.397 - IMPORT_C void SetLineCharacterSetId(TUint aLineCharSetId);
1.398 - IMPORT_C void SetLineCoding(Versit::TVersitCharSet aLineCharSet, Versit::TVersitEncoding aLineEncoding);
1.399 -
1.400 - //
1.401 - // Return the settings for the current property
1.402 - //
1.403 - IMPORT_C Versit::TVersitEncoding LineEncoding() const;
1.404 - IMPORT_C Versit::TVersitCharSet LineCharSet() const;
1.405 - IMPORT_C TUint LineEncodingId() const;
1.406 - IMPORT_C TUint LineCharSetId() const;
1.407 -
1.408 - inline CVersitUnicodeUtils& UnicodeUtils();
1.409 -
1.410 -public:
1.411 - //
1.412 - // Static utility functions to aid with the Unicode conversion process
1.413 - //
1.414 - static TUint MapVersitCharsetToCharConvCharset(Versit::TVersitCharSet aVersitSet);
1.415 - static TUint MapVersitEncodingToConArcUid(Versit::TVersitEncoding aVersitEncoding);
1.416 -
1.417 -private:
1.418 - void SetLineCharsetDetailsToDefault();
1.419 - void SetLineEncodingDetailsToDefault();
1.420 -
1.421 -private: //To fix TimeZone SyncML bug
1.422 - void ConvertAllUTCDateTimesToMachineLocalL(const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight);
1.423 - void ConvertUTCDateTimeToMachineLocal(TVersitDateTime* aDateTime,const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight);
1.424 - //void AddTimeZonePropertyL();
1.425 -
1.426 -protected:
1.427 - struct TParserCodingDetails
1.428 - {
1.429 - Versit::TVersitEncoding iEncoding;
1.430 - TUint iEncodingUid;
1.431 - Versit::TVersitCharSet iCharSet;
1.432 - TUint iCharSetUid;
1.433 - };
1.434 -
1.435 -protected:
1.436 - // Default settings & internal flags
1.437 - TInt iFlags;
1.438 - TParserCodingDetails iDefaultCodingDetails;
1.439 - TParserCodingDetails iCurrentPropertyCodingDetails;
1.440 - TBuf<KVersitMaxVersionLength> iDefaultVersion;
1.441 - const CArrayFix<CCnvCharacterSetConverter::SCharacterSet>* iAutoDetectCharSets;
1.442 -
1.443 - // Member data relating to the current item being parsed
1.444 - HBufC* iEntityName;
1.445 - CArrayPtr<CVersitParser>* iArrayOfEntities;
1.446 - CArrayPtr<CParserProperty>* iArrayOfProperties;
1.447 - CParserProperty* iCurrentProperty;
1.448 - CLineReader* iOwnedLineReader;
1.449 - CLineReader* iLineReader;
1.450 - HBufC8* iDecodedValue;
1.451 - CBufSeg* iLargeDataBuf;
1.452 -
1.453 - // In memory buffers
1.454 - RWriteStream* iWriteStream;
1.455 -
1.456 - // General utility class
1.457 - CVersitTlsData* iStaticUtils;
1.458 -
1.459 - // Plug-in classes
1.460 - MVersitObserver* iObserver;
1.461 - MVersitPlugIn* iPlugIn;
1.462 -
1.463 -private:
1.464 - void DoInternalizeL();
1.465 - IMPORT_C virtual void Reserved1();
1.466 - IMPORT_C virtual void Reserved2();
1.467 -private:
1.468 - TInt iParseBegin;
1.469 - TInt iReserved2;
1.470 - };
1.471 -
1.472 -NONSHARABLE_CLASS( CVersitTLSContainer ): public CBase
1.473 -/**
1.474 -Wrapper class for static variables to be stored in TLS
1.475 -@internalComponent
1.476 -@released
1.477 -*/
1.478 - {
1.479 -public:
1.480 - static CVersitTLSContainer *NewLC(const TInt aSize);
1.481 - ~CVersitTLSContainer();
1.482 -public:
1.483 - HBufC * iShiftJisEscape;//Store shift-jis escape charcter, as generated by relevant charconv plugin
1.484 - };
1.485 -
1.486 -#include <versit.inl>
1.487 -
1.488 -#endif