diff -r 000000000000 -r b16258d2340f applayerprotocols/wappushsupport/inc/WbConverter.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/applayerprotocols/wappushsupport/inc/WbConverter.h Tue Feb 02 01:09:52 2010 +0200 @@ -0,0 +1,471 @@ +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#ifndef __WBCONVERTER_H +#define __WBCONVERTER_H + +#include +#include +#include + +// forward declarations +// +class CWbxmlToken; +class MWbxmlConverterObserver; +class CByteList; +class CCnvCharacterSetConverter; + +// consts, defines, enums +// +/** +@publishedAll +@deprecated +*/ +_LIT8(KWbXmlVersion10,""); + +/** +@publishedAll +@deprecated +*/ +_LIT8(KWbPublicIdStartWml,""); +/** +@publishedAll +@deprecated +*/ +_LIT8(KWbPublicIdEnd12,"\" \"http://www.wapforum.org/DTD/wml_1.2.xml\">"); +/** +@publishedAll +@deprecated +*/ +_LIT8(KWbPublicIdEndSI10,"\" \"http://www.wapforum.org/DTD/si.dtd\">"); +/** +@publishedAll +@deprecated +*/ +_LIT8(KWbPublicIdEndSL10,"\" \"http://www.wapforum.org/DTD/sl.dtd\">"); + +/** +@publishedAll +@deprecated +*/ +_LIT8(KWbTagStart,"<"); +/** +@publishedAll +@deprecated +*/ +_LIT8(KWbTagStartClose,""); +/** +@publishedAll +@deprecated +*/ +_LIT8(KWbTagEndWithoutContent,"/>"); +/** +@publishedAll +@deprecated +*/ +_LIT8(KWbVariableStart,"$("); +/** +@publishedAll +@deprecated +*/ +_LIT8(KWbVariableEscaped,":E)"); +/** +@publishedAll +@deprecated +*/ +_LIT8(KWbVariableUnescaped,":U)"); +/** +@publishedAll +@deprecated +*/ +_LIT8(KWbVariableNoescape,":N)"); +/** +@publishedAll +@deprecated +*/ +_LIT8(KWbVariableNormal,")"); +/** +@publishedAll +@deprecated +*/ +_LIT8(KWbQuote,"\""); +/** +@publishedAll +@deprecated +*/ +_LIT8(KWbSpace," "); +/** +@publishedAll +@deprecated +*/ +_LIT8(KWbTab,"\t"); +/** +@publishedAll +@deprecated +*/ +_LIT8(KWbLineBreak,"\n"); + +/** +@publishedAll +@deprecated +*/ +const TInt8 KWbxmlIdIndex = 0; +/** +@publishedAll +@deprecated +*/ +const TInt8 KWbxmlIdUnknown = 1; +/** +@publishedAll +@deprecated +*/ +const TInt8 KWbxmlIdWml10 = 2; +/** +@publishedAll +@deprecated +*/ +const TInt8 KWbxmlIdWta10 = 3; +/** +@publishedAll +@deprecated +*/ +const TInt8 KWbxmlIdWml11 = 4; +/** +@publishedAll +@deprecated +*/ +const TInt8 KWbxmlIdSI = 5; +/** +@publishedAll +@deprecated +*/ +const TInt8 KWbxmlIdSL = 6; +/** +@publishedAll +@deprecated +*/ +const TInt8 KWbxmlIdWml12 = 9; + +// Entity translation literals +/** +@publishedAll +@deprecated +*/ +_LIT8(KEntityDollar,"$$"); +/** +@publishedAll +@deprecated +*/ +_LIT8(KEntityAmp,"&"); +/** +@publishedAll +@deprecated +*/ +_LIT8(KEntityLt,"<"); +/** +@publishedAll +@deprecated +*/ +_LIT8(KEntityGt,">"); +/** +@publishedAll +@deprecated +*/ +_LIT8(KEntityQuot,"""); +/** +@publishedAll +@deprecated +*/ +_LIT8(KEntityApos,"'"); +/** +@publishedAll +@deprecated +*/ +_LIT8(KEntityNbsp," "); +/** +@publishedAll +@deprecated +*/ +_LIT8(KEntityShy,"­"); + +/** +@publishedAll +@deprecated +*/ +const TUint16 KWbxmlSkipLiteralEndTagMagicToken = 0xac1d; + + +// +// CWbxmlConverter +// +class RFileReadStream; +//##ModelId=3B6678E20007 +class CWbxmlConverter : public CBase +/** +@publishedAll +@deprecated +*/ +{ +public: // Methods + //##ModelId=3B6678E30199 + ~CWbxmlConverter(); + + // NOTE: input data really is 8bit bytecode + //##ModelId=3B6678E300F9 + IMPORT_C static CWbxmlConverter* NewL(RFs& aFs, MWbxmlConverterObserver* aObserver); + //##ModelId=3B6678E300BD + IMPORT_C static CWbxmlConverter* NewLC(RFs& aFs, MWbxmlConverterObserver* aObserver); + //##ModelId=3B6678E30135 + IMPORT_C static CWbxmlConverter* NewL(RFs& aFs, MWbxmlConverterObserver* aObserver, const TDesC* aCharacterEncoding); + //##ModelId=3B6678E3009F + IMPORT_C void ProcessDataL(HBufC8& aBuffer); + //##ModelId=3B6678E3009E + IMPORT_C void CommitL(); + +private: // Emumerations + + enum TGotoState + { + EGotoStreaming = 1, + EGotoString, + EGotoOpaque + }; + enum TConvertState + { + EConvertError = 1, + EConvertVersion, + EConvertPublicIdValue, + EConvertCharset, + EConvertStringTable, + EConvertPublicIdName, + EConvertData, + EConvertFinished + }; + +private: // Methods + + //##ModelId=3B6678E30080 + CWbxmlConverter(RFs& aFs); + //##ModelId=3B6678E30045 + void ConstructL(MWbxmlConverterObserver* aObserver, const TDesC* aCharacterEncoding); + + //##ModelId=3B6678E30044 + void HandleDataL(); + //##ModelId=3B6678E30009 + void SetNextStateL(const TInt aResult, const TConvertState aState); + //##ModelId=3B6678E30008 + TInt ConvertWbxmlVersionL(); + //##ModelId=3B6678E203E8 + TInt ConvertPublicIdValueL(); // Extract PublicId + //##ModelId=3B6678E203E7 + TInt ConvertPublicIdNameL(); // Report PublicId + //##ModelId=3B6678E203E6 + TInt ConvertCharsetL(); + //##ModelId=3B6678E203DE + TInt ConvertStringTableL(); + //##ModelId=3B6678E203DD + TInt ConvertDataL(); + //##ModelId=3B6678E203DC + TInt ConvertDataStreamingL(); + //##ModelId=3B6678E203D3 + TInt ConvertDataStringL(); + //##ModelId=3B6678E203D2 + TInt ConvertOpaqueDataL(); + //##ModelId=3B6678E203B4 + HBufC16* FormatDateStringL(TDesC8& aData); + + //##ModelId=3B6678E20396 + TInt OpenTokenFileL(HBufC& aFileName); + //##ModelId=3B6678E2035A + void ReadTokenFileL(RFileReadStream& aStream, HBufC8& aBuffer); + //##ModelId=3B6678E2033C + TInt LoadTokensL(HBufC* aBuffer); + + //##ModelId=3B6678E2030A + TInt ExtractMultiByte(TUint32* aMultiByte, TInt aSkipHeader); + //##ModelId=3B6678E202E3 + void Indent(const TInt aCount) const; + //##ModelId=3B6678E202E2 + void FinishStringL(); + //##ModelId=3B6678E202C4 + HBufC16* CharsetConvertDataL(TDesC8& aData); + + // Gets the full path to wmlc token table. Input aTokenFilePath is the path, without the drive. + // + // In: + // aTokenFilePath - the path to the token table file. + // + // Rtn: the full path to the token table file. Ownership is transfered to caller. + // + //##ModelId=3B6678E202A6 + HBufC* FindTokenFileL(const TDesC& aTokenFilePath) const; + + // Replaces characters originating from chracter entity references with the reference string + // For example chracter '&' will be "decoded" back to "&" + // + // In: + // aString - The original string containing the undedcoded characters. + // This string can get ReAllocated during the process - DO NOT USE THIS POINTER + // AFTER THE CALL to this method. (use the returned one instead...) + // Return: + // HBufC* - Pointer to the string with replaced stuff + // + //##ModelId=3B6678E20288 + HBufC* ReplaceCharacterEntitiesL(HBufC* aString); + + // MWbxmlConverterObserver interface overloads + //##ModelId=3B6678E2024C + void OutputL(const TUint32 aSource) const; + + //##ModelId=3B6678E2022E + TBool OutputCheckQuoteL(HBufC8& aSource) const; + + // Helper method to optimise the OutputL oveloads + //##ModelId=3B6678E20211 + void BufferAndOutputL(const TDesC8& aSource) const; + + // Must exist for Binary Compatibility + //##ModelId=3B6678E20210 + IMPORT_C virtual void CWbxmlConverter_Reserved1(); + +private: // Attributes + + // For binary compatibility + //##ModelId=3B6678E20206 + TAny* CWbxmlConverter_Reserved; + + // Attributes + // Note: conversion table from disk ie. you can change it at runtime + //##ModelId=3B6678E201F2 + CArrayPtrFlat* iTagArray; + //##ModelId=3B6678E201D3 + CArrayPtrFlat* iAttArray; + + //##ModelId=3B6678E2018D + MWbxmlConverterObserver* iObserver; + + //##ModelId=3B6678E20179 + TUint8 iWbxmlVersion; + //##ModelId=3B6678E20165 + TUint32 iWbxmlCharset; + //##ModelId=3B6678E20151 + TUint32 iPublicId; + //##ModelId=3B6678E2013D + TUint32 iPublicIdIndex; + + // Note: must handle source as 8bit data even in Unicode compile! + //##ModelId=3B6678E2012B + CByteList* iByteList; + //##ModelId=3B6678E2011F + HBufC8* iStringTable; + //##ModelId=3B6678E2010D + HBufC8* iPublicIdStr; + //##ModelId=3B6678E20101 + RFs& iFs; + + //##ModelId=3B6678E200ED + TInt iState; + //##ModelId=3B6678E200E3 + TUint32 iContinue; + + //##ModelId=3B6678E200D1 + TUint8 iVariable; + //##ModelId=3B6678E200C5 + TUint8 hasAttrs; + //##ModelId=3B6678E200B3 + TUint8 hasContent; + + + //##ModelId=3B6678E200A7 + TInt iTagIndex; + //##ModelId=3B6678E20095 + CArrayFixFlat* iTagStack; + //##ModelId=3B6678E2006B + TBool iRestrictedOutput; + + enum TParsing + { + EParseNot = 0, + EParseTag, + EParseAttrs + }; + //##ModelId=3B6678E20059 + TParsing iParsing; + //##ModelId=3B6678E2004F + TBool iOpenQuote; + + //##ModelId=3B6678E20045 + mutable HBufC8* iOutputBuffer; // Buffered output buffer : Optimisation + + //##ModelId=3B6678E2003B + CCnvCharacterSetConverter* iCharsetConverter; + +#ifdef __OUTPUT_WMLC + //##ModelId=3B6678E20031 + RFile iWmlcFile; // Debug stuff + //##ModelId=3B6678E20025 + RFs iWmlcFs; // Debug stuff +#endif + +}; + +#endif // __WBCONVERTER_H + +// +// End of file +//