williamr@2: // Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@2: // 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 williamr@2: // which accompanies this distribution, and is available williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // williamr@2: williamr@2: #ifndef __DICTIONARYCODEPAGE_H__ williamr@2: #define __DICTIONARYCODEPAGE_H__ williamr@2: williamr@2: #include williamr@2: #include williamr@2: williamr@2: williamr@2: namespace Xml williamr@2: { williamr@2: williamr@2: class CDictionaryCodePage : public CBase williamr@2: /** williamr@2: The CDictionaryCodePage, represents a single numeric code page for Elements, Attributes, and williamr@2: AttributeValues. williamr@2: williamr@2: This object refers to the appropriate string pool tables, and creates mappings between williamr@2: strings in these tables and their token values. williamr@2: williamr@2: Used mainly for wbxml document parsing, and allows for the quick comparison of strings. williamr@2: williamr@2: This object is associated with a string dictionary via a user defined class. williamr@2: williamr@2: @see RStringPool williamr@2: @see CStringDictionary williamr@2: williamr@2: @publishedPartner williamr@2: @released williamr@2: */ williamr@2: { williamr@2: williamr@2: public: williamr@2: williamr@2: enum TStringType williamr@2: /** williamr@2: A structure for describing the types of string pool table associated with this class. williamr@2: */ williamr@2: { williamr@2: EStringTypeElement, williamr@2: EStringTypeAttribute, williamr@2: EStringTypeAttributeValue williamr@2: }; williamr@2: williamr@2: williamr@2: public: williamr@2: williamr@2: IMPORT_C static CDictionaryCodePage* NewL(const TStringTable* aElementTable, williamr@2: const TStringTable* aAttributeTable, williamr@2: const TStringTable* aValueTable, williamr@2: TUint8 aCodePage); williamr@2: williamr@2: IMPORT_C virtual ~CDictionaryCodePage(); williamr@2: williamr@2: IMPORT_C const TStringTable* StringTable(TStringType aType) const; williamr@2: IMPORT_C TUint8 CodePage() const; williamr@2: williamr@2: IMPORT_C TInt StringPoolIndexFromToken(TInt aToken, TStringType aType) const; williamr@2: IMPORT_C TInt TokenFromStringPoolIndex(TInt aIndex, TStringType aType) const; williamr@2: williamr@2: IMPORT_C void ConstructIndexMappingL(const TInt* aStringPoolToTokenMapping, TStringType aType); williamr@2: williamr@2: private: williamr@2: williamr@2: CDictionaryCodePage(const TStringTable* aElementTable, const TStringTable* aAttributeTable, williamr@2: const TStringTable* aValueTable, TUint8 aCodePage); williamr@2: williamr@2: CDictionaryCodePage(const CDictionaryCodePage& aOriginal); williamr@2: CDictionaryCodePage& operator=(const CDictionaryCodePage& aRhs); williamr@2: williamr@2: private: williamr@2: williamr@2: struct TStringPoolTokenMapping williamr@2: /** williamr@2: The TStringPoolTokenMapping struct stores a mapping between table index and williamr@2: token values for a single string entry. williamr@2: */ williamr@2: { williamr@2: TInt iTokenValue; williamr@2: TInt iTableIndex; williamr@2: }; williamr@2: williamr@2: static TInt CompareStringPoolTokenMappingTable(const TStringPoolTokenMapping& aFirst, williamr@2: const TStringPoolTokenMapping& aSecond); williamr@2: private: williamr@2: williamr@2: /** williamr@2: Pointer to the static Element string pool table. williamr@2: We do not own this. williamr@2: */ williamr@2: const TStringTable* iElementTable; williamr@2: williamr@2: /** williamr@2: Pointer to the static Attribute string pool table. williamr@2: We do not own this. williamr@2: */ williamr@2: const TStringTable* iAttributeTable; williamr@2: williamr@2: /** williamr@2: Pointer to the static AttributeValue string pool table. williamr@2: We do not own this. williamr@2: */ williamr@2: const TStringTable* iValueTable; williamr@2: williamr@2: /** williamr@2: Array to obtain a Element Token from String Pool index. williamr@2: */ williamr@2: RArray iElementStringPoolIndexToToken; williamr@2: williamr@2: /** williamr@2: Array to obtain a Element String Pool Index from a token. williamr@2: */ williamr@2: RArray iElementTokenToStringPoolIndex; williamr@2: williamr@2: /** williamr@2: Array to obtain a Attribute Token from String Pool index. williamr@2: */ williamr@2: RArray iAttributeStringPoolIndexToToken; williamr@2: williamr@2: /** williamr@2: Array to obtain a Attribute String Pool Index from a token. williamr@2: */ williamr@2: RArray iAttributeTokenToStringPoolIndex; williamr@2: williamr@2: /** williamr@2: Array to obtain a Value Token from String Pool index. williamr@2: */ williamr@2: RArray iValueStringPoolIndexToToken; williamr@2: williamr@2: /** williamr@2: Array to obtain a Value String Pool Index from a token. williamr@2: */ williamr@2: RArray iValueTokenToStringPoolIndex; williamr@2: williamr@2: williamr@2: /** williamr@2: The numeric codepage this object represents. williamr@2: */ williamr@2: TUint8 iCodePage; williamr@2: williamr@2: }; williamr@2: williamr@2: } williamr@2: williamr@2: #endif // __DICTIONARYCODEPAGE_H__