epoc32/include/mw/wbconverter.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
parent 3 e1b950c65cb4
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
williamr@2
     1
// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
williamr@2
     2
// All rights reserved.
williamr@2
     3
// This component and the accompanying materials are made available
williamr@4
     4
// under the terms of "Eclipse Public License v1.0"
williamr@2
     5
// which accompanies this distribution, and is available
williamr@4
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
williamr@2
     7
//
williamr@2
     8
// Initial Contributors:
williamr@2
     9
// Nokia Corporation - initial contribution.
williamr@2
    10
//
williamr@2
    11
// Contributors:
williamr@2
    12
//
williamr@2
    13
// Description:
williamr@2
    14
//
williamr@2
    15
williamr@2
    16
#ifndef __WBCONVERTER_H
williamr@2
    17
#define __WBCONVERTER_H
williamr@2
    18
williamr@2
    19
#include <e32std.h>
williamr@2
    20
#include <s32stor.h>
williamr@2
    21
#include <f32file.h>
williamr@2
    22
williamr@2
    23
// forward declarations
williamr@2
    24
//
williamr@2
    25
class CWbxmlToken;
williamr@2
    26
class MWbxmlConverterObserver;
williamr@2
    27
class CByteList;
williamr@2
    28
class CCnvCharacterSetConverter;
williamr@2
    29
williamr@2
    30
// consts, defines, enums
williamr@2
    31
//
williamr@2
    32
/**
williamr@2
    33
@publishedAll
williamr@2
    34
@deprecated
williamr@2
    35
*/
williamr@2
    36
_LIT8(KWbXmlVersion10,"<?xml version=\"1.0\"?>");
williamr@2
    37
williamr@2
    38
/**
williamr@2
    39
@publishedAll
williamr@2
    40
@deprecated
williamr@2
    41
*/
williamr@2
    42
_LIT8(KWbPublicIdStartWml,"<!DOCTYPE wml PUBLIC \"");
williamr@2
    43
/**
williamr@2
    44
@publishedAll
williamr@2
    45
@deprecated
williamr@2
    46
*/
williamr@2
    47
_LIT8(KWbPublicIdStartSi,"<!DOCTYPE si PUBLIC \"");
williamr@2
    48
/**
williamr@2
    49
@publishedAll
williamr@2
    50
@deprecated
williamr@2
    51
*/
williamr@2
    52
_LIT8(KWbPublicIdStartSl,"<!DOCTYPE sl PUBLIC \"");
williamr@2
    53
williamr@2
    54
williamr@2
    55
/**
williamr@2
    56
@publishedAll
williamr@2
    57
@deprecated
williamr@2
    58
*/
williamr@2
    59
_LIT(KWbTokenDatabaseWml11,"\\RESOURCE\\WAPPUSH\\WMLC11.TOK");
williamr@2
    60
/**
williamr@2
    61
@publishedAll
williamr@2
    62
@deprecated
williamr@2
    63
*/
williamr@2
    64
_LIT(KWbTokenDatabaseWml12,"\\RESOURCE\\WAPPUSH\\WMLC12.TOK");
williamr@2
    65
/**
williamr@2
    66
@publishedAll
williamr@2
    67
@deprecated
williamr@2
    68
*/
williamr@2
    69
_LIT(KWbTokenDatabaseSI10,"\\RESOURCE\\WAPPUSH\\SI10.TOK");
williamr@2
    70
/**
williamr@2
    71
@publishedAll
williamr@2
    72
@deprecated
williamr@2
    73
*/
williamr@2
    74
_LIT(KWbTokenDatabaseSL10,"\\RESOURCE\\WAPPUSH\\SL10.TOK");
williamr@2
    75
williamr@2
    76
/**
williamr@2
    77
@publishedAll
williamr@2
    78
@deprecated
williamr@2
    79
*/
williamr@2
    80
_LIT8(KWbPublicIdEnd11,"\" \"http://www.wapforum.org/DTD/wml_1.1.xml\">");
williamr@2
    81
/**
williamr@2
    82
@publishedAll
williamr@2
    83
@deprecated
williamr@2
    84
*/
williamr@2
    85
_LIT8(KWbPublicIdEnd12,"\" \"http://www.wapforum.org/DTD/wml_1.2.xml\">");
williamr@2
    86
/**
williamr@2
    87
@publishedAll
williamr@2
    88
@deprecated
williamr@2
    89
*/
williamr@2
    90
_LIT8(KWbPublicIdEndSI10,"\" \"http://www.wapforum.org/DTD/si.dtd\">");
williamr@2
    91
/**
williamr@2
    92
@publishedAll
williamr@2
    93
@deprecated
williamr@2
    94
*/
williamr@2
    95
_LIT8(KWbPublicIdEndSL10,"\" \"http://www.wapforum.org/DTD/sl.dtd\">");
williamr@2
    96
williamr@2
    97
/**
williamr@2
    98
@publishedAll
williamr@2
    99
@deprecated
williamr@2
   100
*/
williamr@2
   101
_LIT8(KWbTagStart,"<");
williamr@2
   102
/**
williamr@2
   103
@publishedAll
williamr@2
   104
@deprecated
williamr@2
   105
*/
williamr@2
   106
_LIT8(KWbTagStartClose,"</");
williamr@2
   107
/**
williamr@2
   108
@publishedAll
williamr@2
   109
@deprecated
williamr@2
   110
*/
williamr@2
   111
_LIT8(KWbTagEndWithContent,">");
williamr@2
   112
/**
williamr@2
   113
@publishedAll
williamr@2
   114
@deprecated
williamr@2
   115
*/
williamr@2
   116
_LIT8(KWbTagEndWithoutContent,"/>");
williamr@2
   117
/**
williamr@2
   118
@publishedAll
williamr@2
   119
@deprecated
williamr@2
   120
*/
williamr@2
   121
_LIT8(KWbVariableStart,"$(");
williamr@2
   122
/**
williamr@2
   123
@publishedAll
williamr@2
   124
@deprecated
williamr@2
   125
*/
williamr@2
   126
_LIT8(KWbVariableEscaped,":E)");
williamr@2
   127
/**
williamr@2
   128
@publishedAll
williamr@2
   129
@deprecated
williamr@2
   130
*/
williamr@2
   131
_LIT8(KWbVariableUnescaped,":U)");
williamr@2
   132
/**
williamr@2
   133
@publishedAll
williamr@2
   134
@deprecated
williamr@2
   135
*/
williamr@2
   136
_LIT8(KWbVariableNoescape,":N)");
williamr@2
   137
/**
williamr@2
   138
@publishedAll
williamr@2
   139
@deprecated
williamr@2
   140
*/
williamr@2
   141
_LIT8(KWbVariableNormal,")");
williamr@2
   142
/**
williamr@2
   143
@publishedAll
williamr@2
   144
@deprecated
williamr@2
   145
*/
williamr@2
   146
_LIT8(KWbQuote,"\"");
williamr@2
   147
/**
williamr@2
   148
@publishedAll
williamr@2
   149
@deprecated
williamr@2
   150
*/
williamr@2
   151
_LIT8(KWbSpace," ");
williamr@2
   152
/**
williamr@2
   153
@publishedAll
williamr@2
   154
@deprecated
williamr@2
   155
*/
williamr@2
   156
_LIT8(KWbTab,"\t");
williamr@2
   157
/**
williamr@2
   158
@publishedAll
williamr@2
   159
@deprecated
williamr@2
   160
*/
williamr@2
   161
_LIT8(KWbLineBreak,"\n");
williamr@2
   162
williamr@2
   163
/**
williamr@2
   164
@publishedAll
williamr@2
   165
@deprecated
williamr@2
   166
*/
williamr@2
   167
const TInt8 KWbxmlIdIndex = 0;
williamr@2
   168
/**
williamr@2
   169
@publishedAll
williamr@2
   170
@deprecated
williamr@2
   171
*/
williamr@2
   172
const TInt8 KWbxmlIdUnknown = 1;
williamr@2
   173
/**
williamr@2
   174
@publishedAll
williamr@2
   175
@deprecated
williamr@2
   176
*/
williamr@2
   177
const TInt8 KWbxmlIdWml10 = 2;
williamr@2
   178
/**
williamr@2
   179
@publishedAll
williamr@2
   180
@deprecated
williamr@2
   181
*/
williamr@2
   182
const TInt8 KWbxmlIdWta10 = 3;
williamr@2
   183
/**
williamr@2
   184
@publishedAll
williamr@2
   185
@deprecated
williamr@2
   186
*/
williamr@2
   187
const TInt8 KWbxmlIdWml11 = 4;
williamr@2
   188
/**
williamr@2
   189
@publishedAll
williamr@2
   190
@deprecated
williamr@2
   191
*/
williamr@2
   192
const TInt8 KWbxmlIdSI = 5;
williamr@2
   193
/**
williamr@2
   194
@publishedAll
williamr@2
   195
@deprecated
williamr@2
   196
*/
williamr@2
   197
const TInt8 KWbxmlIdSL = 6;
williamr@2
   198
/**
williamr@2
   199
@publishedAll
williamr@2
   200
@deprecated
williamr@2
   201
*/
williamr@2
   202
const TInt8 KWbxmlIdWml12 = 9;
williamr@2
   203
williamr@2
   204
// Entity translation literals
williamr@2
   205
/**
williamr@2
   206
@publishedAll
williamr@2
   207
@deprecated
williamr@2
   208
*/
williamr@2
   209
_LIT8(KEntityDollar,"$$");
williamr@2
   210
/**
williamr@2
   211
@publishedAll
williamr@2
   212
@deprecated
williamr@2
   213
*/
williamr@2
   214
_LIT8(KEntityAmp,"&amp;");
williamr@2
   215
/**
williamr@2
   216
@publishedAll
williamr@2
   217
@deprecated
williamr@2
   218
*/
williamr@2
   219
_LIT8(KEntityLt,"&lt;");
williamr@2
   220
/**
williamr@2
   221
@publishedAll
williamr@2
   222
@deprecated
williamr@2
   223
*/
williamr@2
   224
_LIT8(KEntityGt,"&gt;");
williamr@2
   225
/**
williamr@2
   226
@publishedAll
williamr@2
   227
@deprecated
williamr@2
   228
*/
williamr@2
   229
_LIT8(KEntityQuot,"&quot;");
williamr@2
   230
/**
williamr@2
   231
@publishedAll
williamr@2
   232
@deprecated
williamr@2
   233
*/
williamr@2
   234
_LIT8(KEntityApos,"&apos;");
williamr@2
   235
/**
williamr@2
   236
@publishedAll
williamr@2
   237
@deprecated
williamr@2
   238
*/
williamr@2
   239
_LIT8(KEntityNbsp,"&nbsp;");
williamr@2
   240
/**
williamr@2
   241
@publishedAll
williamr@2
   242
@deprecated
williamr@2
   243
*/
williamr@2
   244
_LIT8(KEntityShy,"&shy;");
williamr@2
   245
williamr@2
   246
/**
williamr@2
   247
@publishedAll
williamr@2
   248
@deprecated
williamr@2
   249
*/
williamr@2
   250
const TUint16 KWbxmlSkipLiteralEndTagMagicToken = 0xac1d;
williamr@2
   251
williamr@2
   252
williamr@4
   253
//
williamr@2
   254
// CWbxmlConverter
williamr@4
   255
//
williamr@2
   256
class RFileReadStream;
williamr@2
   257
//##ModelId=3B6678E20007
williamr@2
   258
class CWbxmlConverter : public CBase
williamr@2
   259
/**
williamr@2
   260
@publishedAll
williamr@2
   261
@deprecated
williamr@2
   262
*/
williamr@2
   263
{
williamr@2
   264
public:	// Methods
williamr@2
   265
	//##ModelId=3B6678E30199
williamr@2
   266
	~CWbxmlConverter();
williamr@2
   267
williamr@2
   268
	// NOTE: input data really is 8bit bytecode
williamr@2
   269
	//##ModelId=3B6678E300F9
williamr@4
   270
	IMPORT_C static CWbxmlConverter* NewL(RFs& aFs, MWbxmlConverterObserver* aObserver);
williamr@2
   271
	//##ModelId=3B6678E300BD
williamr@4
   272
	IMPORT_C static CWbxmlConverter* NewLC(RFs& aFs, MWbxmlConverterObserver* aObserver);
williamr@2
   273
	//##ModelId=3B6678E30135
williamr@4
   274
	IMPORT_C static CWbxmlConverter* NewL(RFs& aFs, MWbxmlConverterObserver* aObserver, const TDesC* aCharacterEncoding);
williamr@2
   275
	//##ModelId=3B6678E3009F
williamr@2
   276
	IMPORT_C void ProcessDataL(HBufC8& aBuffer);
williamr@2
   277
	//##ModelId=3B6678E3009E
williamr@2
   278
	IMPORT_C void CommitL();
williamr@2
   279
williamr@2
   280
private:	// Emumerations
williamr@2
   281
williamr@2
   282
	enum TGotoState
williamr@2
   283
	{
williamr@2
   284
		EGotoStreaming = 1,
williamr@2
   285
		EGotoString,
williamr@2
   286
		EGotoOpaque
williamr@2
   287
	};
williamr@2
   288
	enum TConvertState
williamr@2
   289
	{
williamr@2
   290
		EConvertError = 1,
williamr@2
   291
		EConvertVersion,
williamr@2
   292
		EConvertPublicIdValue,
williamr@2
   293
		EConvertCharset,
williamr@2
   294
		EConvertStringTable,
williamr@2
   295
		EConvertPublicIdName,
williamr@2
   296
		EConvertData,
williamr@2
   297
		EConvertFinished
williamr@2
   298
	};
williamr@2
   299
williamr@2
   300
private:	// Methods
williamr@2
   301
williamr@2
   302
	//##ModelId=3B6678E30080
williamr@2
   303
	CWbxmlConverter(RFs& aFs);
williamr@2
   304
	//##ModelId=3B6678E30045
williamr@2
   305
	void ConstructL(MWbxmlConverterObserver* aObserver, const TDesC* aCharacterEncoding);
williamr@2
   306
williamr@2
   307
	//##ModelId=3B6678E30044
williamr@2
   308
	void HandleDataL();
williamr@2
   309
	//##ModelId=3B6678E30009
williamr@2
   310
	void SetNextStateL(const TInt aResult, const TConvertState aState);
williamr@2
   311
	//##ModelId=3B6678E30008
williamr@2
   312
	TInt ConvertWbxmlVersionL();
williamr@2
   313
	//##ModelId=3B6678E203E8
williamr@2
   314
	TInt ConvertPublicIdValueL();	// Extract PublicId
williamr@2
   315
	//##ModelId=3B6678E203E7
williamr@2
   316
	TInt ConvertPublicIdNameL();	// Report PublicId
williamr@2
   317
	//##ModelId=3B6678E203E6
williamr@2
   318
	TInt ConvertCharsetL();
williamr@2
   319
	//##ModelId=3B6678E203DE
williamr@2
   320
	TInt ConvertStringTableL();
williamr@2
   321
	//##ModelId=3B6678E203DD
williamr@2
   322
	TInt ConvertDataL();
williamr@2
   323
	//##ModelId=3B6678E203DC
williamr@2
   324
	TInt ConvertDataStreamingL();
williamr@2
   325
	//##ModelId=3B6678E203D3
williamr@2
   326
	TInt ConvertDataStringL();
williamr@2
   327
	//##ModelId=3B6678E203D2
williamr@2
   328
	TInt ConvertOpaqueDataL();
williamr@2
   329
	//##ModelId=3B6678E203B4
williamr@2
   330
	HBufC16* FormatDateStringL(TDesC8& aData);
williamr@2
   331
williamr@2
   332
	//##ModelId=3B6678E20396
williamr@2
   333
	TInt OpenTokenFileL(HBufC& aFileName);
williamr@2
   334
	//##ModelId=3B6678E2035A
williamr@2
   335
	void ReadTokenFileL(RFileReadStream& aStream, HBufC8& aBuffer);
williamr@2
   336
	//##ModelId=3B6678E2033C
williamr@2
   337
	TInt LoadTokensL(HBufC* aBuffer);
williamr@2
   338
williamr@2
   339
	//##ModelId=3B6678E2030A
williamr@2
   340
	TInt ExtractMultiByte(TUint32* aMultiByte, TInt aSkipHeader);
williamr@2
   341
	//##ModelId=3B6678E202E3
williamr@2
   342
	void Indent(const TInt aCount) const;
williamr@2
   343
	//##ModelId=3B6678E202E2
williamr@2
   344
	void FinishStringL();
williamr@2
   345
	//##ModelId=3B6678E202C4
williamr@2
   346
	HBufC16* CharsetConvertDataL(TDesC8& aData);
williamr@2
   347
williamr@2
   348
	// Gets the full path to wmlc token table. Input aTokenFilePath is the path, without the drive.
williamr@2
   349
	//
williamr@2
   350
	// In:
williamr@2
   351
	// aTokenFilePath	- the path to the token table file.
williamr@2
   352
	//
williamr@2
   353
	// Rtn: the full path to the token table file. Ownership is transfered to caller.
williamr@2
   354
	//
williamr@2
   355
	//##ModelId=3B6678E202A6
williamr@2
   356
	HBufC* FindTokenFileL(const TDesC& aTokenFilePath) const;
williamr@2
   357
williamr@2
   358
	// Replaces characters originating from chracter entity references with the reference string
williamr@2
   359
	// For example chracter '&' will be "decoded" back to "&amp;"
williamr@2
   360
	//
williamr@2
   361
	// In:
williamr@2
   362
	// aString - The original string containing the undedcoded characters.
williamr@2
   363
	//			 This string can get ReAllocated during the process - DO NOT USE THIS POINTER
williamr@2
   364
	//           AFTER THE CALL to this method. (use the returned one instead...)
williamr@2
   365
	// Return:
williamr@2
   366
	// HBufC*  - Pointer to the string with replaced stuff
williamr@2
   367
	//
williamr@2
   368
	//##ModelId=3B6678E20288
williamr@2
   369
	HBufC* ReplaceCharacterEntitiesL(HBufC* aString);
williamr@2
   370
williamr@2
   371
	// MWbxmlConverterObserver interface overloads
williamr@2
   372
	//##ModelId=3B6678E2024C
williamr@2
   373
	void OutputL(const TUint32 aSource) const;
williamr@2
   374
williamr@2
   375
	//##ModelId=3B6678E2022E
williamr@2
   376
	TBool OutputCheckQuoteL(HBufC8& aSource) const;
williamr@2
   377
williamr@2
   378
	// Helper method to optimise the OutputL oveloads
williamr@2
   379
	//##ModelId=3B6678E20211
williamr@2
   380
	void BufferAndOutputL(const TDesC8& aSource) const;
williamr@2
   381
williamr@2
   382
	// Must exist for Binary Compatibility
williamr@2
   383
	//##ModelId=3B6678E20210
williamr@2
   384
	IMPORT_C virtual void CWbxmlConverter_Reserved1();
williamr@2
   385
williamr@2
   386
private:	// Attributes
williamr@2
   387
	
williamr@2
   388
	// For binary compatibility
williamr@2
   389
	//##ModelId=3B6678E20206
williamr@2
   390
	TAny* CWbxmlConverter_Reserved;
williamr@2
   391
	
williamr@2
   392
	// Attributes
williamr@2
   393
	// Note: conversion table from disk ie. you can change it at runtime
williamr@2
   394
	//##ModelId=3B6678E201F2
williamr@2
   395
	CArrayPtrFlat<CWbxmlToken>* iTagArray;
williamr@2
   396
	//##ModelId=3B6678E201D3
williamr@2
   397
	CArrayPtrFlat<CWbxmlToken>* iAttArray;
williamr@2
   398
williamr@2
   399
	//##ModelId=3B6678E2018D
williamr@2
   400
	MWbxmlConverterObserver* iObserver;
williamr@2
   401
williamr@2
   402
	//##ModelId=3B6678E20179
williamr@2
   403
	TUint8 iWbxmlVersion;
williamr@2
   404
	//##ModelId=3B6678E20165
williamr@2
   405
	TUint32 iWbxmlCharset;
williamr@2
   406
	//##ModelId=3B6678E20151
williamr@2
   407
	TUint32 iPublicId;
williamr@2
   408
	//##ModelId=3B6678E2013D
williamr@2
   409
	TUint32 iPublicIdIndex;
williamr@2
   410
williamr@2
   411
	// Note: must handle source as 8bit data even in Unicode compile!
williamr@2
   412
	//##ModelId=3B6678E2012B
williamr@2
   413
	CByteList* iByteList;
williamr@2
   414
	//##ModelId=3B6678E2011F
williamr@2
   415
	HBufC8* iStringTable;
williamr@2
   416
	//##ModelId=3B6678E2010D
williamr@2
   417
	HBufC8* iPublicIdStr;
williamr@2
   418
	//##ModelId=3B6678E20101
williamr@2
   419
	RFs&	iFs;
williamr@2
   420
williamr@2
   421
	//##ModelId=3B6678E200ED
williamr@2
   422
	TInt iState;
williamr@2
   423
	//##ModelId=3B6678E200E3
williamr@2
   424
	TUint32 iContinue;
williamr@2
   425
williamr@2
   426
	//##ModelId=3B6678E200D1
williamr@2
   427
	TUint8 iVariable;
williamr@2
   428
	//##ModelId=3B6678E200C5
williamr@2
   429
	TUint8 hasAttrs;
williamr@2
   430
	//##ModelId=3B6678E200B3
williamr@2
   431
	TUint8 hasContent;
williamr@2
   432
williamr@2
   433
williamr@2
   434
	//##ModelId=3B6678E200A7
williamr@2
   435
	TInt iTagIndex;
williamr@2
   436
	//##ModelId=3B6678E20095
williamr@2
   437
	CArrayFixFlat<TUint16>* iTagStack;
williamr@2
   438
	//##ModelId=3B6678E2006B
williamr@2
   439
	TBool iRestrictedOutput;
williamr@2
   440
williamr@2
   441
	enum TParsing
williamr@2
   442
	{
williamr@2
   443
		EParseNot = 0,
williamr@2
   444
		EParseTag,
williamr@2
   445
		EParseAttrs
williamr@2
   446
	};
williamr@2
   447
	//##ModelId=3B6678E20059
williamr@2
   448
	TParsing iParsing;
williamr@2
   449
	//##ModelId=3B6678E2004F
williamr@2
   450
	TBool iOpenQuote;
williamr@2
   451
williamr@2
   452
	//##ModelId=3B6678E20045
williamr@2
   453
	mutable HBufC8* iOutputBuffer;		// Buffered output buffer : Optimisation
williamr@2
   454
williamr@2
   455
	//##ModelId=3B6678E2003B
williamr@2
   456
	CCnvCharacterSetConverter* iCharsetConverter;
williamr@2
   457
williamr@2
   458
#ifdef __OUTPUT_WMLC
williamr@2
   459
	//##ModelId=3B6678E20031
williamr@2
   460
	RFile iWmlcFile;		// Debug stuff
williamr@2
   461
	//##ModelId=3B6678E20025
williamr@2
   462
	RFs iWmlcFs;			// Debug stuff
williamr@2
   463
#endif
williamr@2
   464
williamr@2
   465
};
williamr@2
   466
williamr@2
   467
#endif // __WBCONVERTER_H
williamr@2
   468
williamr@4
   469
//
williamr@2
   470
// End of file
williamr@4
   471
//