--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/email/emailnotificationhandler/StringDictionaries/src/OMAPushEMNStringDict00.cpp Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,255 @@
+/*
+* Copyright (c) 2002 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: COMAPushEMNStringDict00
+*
+*
+*/
+
+
+#include <e32std.h>
+#include <ecom/implementationproxy.h>
+
+#include <xml/plugins/dictionarycodepage.h>
+
+#include <xml/xmlframeworkerrors.h>
+
+#include "OMAPushEMNStringDict00.h"
+
+// These headers are automatically generated from \StringDictionaries\src\*.st
+// files.
+#include "omapushemntagtable.h"
+#include "omapushemnattributetable.h"
+#include "omapushemnattributevaluetable.h"
+
+using namespace Xml;
+
+//-----------------------------------------------------------------------------
+// COMAPushEMNStringDict00::NewL
+//-----------------------------------------------------------------------------
+MStringDictionary* COMAPushEMNStringDict00::NewL( TAny* aStringPool )
+ {
+ COMAPushEMNStringDict00* self =
+ new(ELeave) COMAPushEMNStringDict00(
+ reinterpret_cast<RStringPool*>( aStringPool ) );
+
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return ( static_cast<MStringDictionary*>( self ) );
+ }
+
+//-----------------------------------------------------------------------------
+// COMAPushEMNStringDict00::COMAPushEMNStringDict00
+//-----------------------------------------------------------------------------
+COMAPushEMNStringDict00::COMAPushEMNStringDict00(
+ RStringPool* aStringPool ) : iStringPool(*aStringPool), iCodePage(0)
+ {
+ // do nothing;
+ }
+
+//-----------------------------------------------------------------------------
+// COMAPushEMNStringDict00::ConstructL
+//-----------------------------------------------------------------------------
+void COMAPushEMNStringDict00::ConstructL()
+ {
+ // we don't own this stringpool
+ iStringPool.OpenL(OMAPushEMNStringDict00TagTable::Table);
+ iStringPool.OpenL(OMAPushEMNStringDict00AttributeTable::Table);
+ iStringPool.OpenL(OMAPushEMNStringDict00AttributeValueTable::Table);
+
+ iCodepage00Table = CDictionaryCodePage::NewL(
+ &OMAPushEMNStringDict00TagTable::Table,
+ &OMAPushEMNStringDict00AttributeTable::Table,
+ &OMAPushEMNStringDict00AttributeValueTable::Table,
+ 0); // codepage
+
+ // Construct the correlation mapping
+ iCodepage00Table->ConstructIndexMappingL(
+ iTagCodePage00, CDictionaryCodePage::EStringTypeElement );
+ iCodepage00Table->ConstructIndexMappingL(
+ iAttributeCodePage00, CDictionaryCodePage::EStringTypeAttribute );
+ iCodepage00Table->ConstructIndexMappingL(
+ iAttributeValueCodePage00, CDictionaryCodePage::EStringTypeAttributeValue );
+ }
+
+//-----------------------------------------------------------------------------
+// COMAPushEMNStringDict00::Release
+//-----------------------------------------------------------------------------
+void COMAPushEMNStringDict00::Release()
+ {
+ delete( this );
+ }
+
+//-----------------------------------------------------------------------------
+// COMAPushEMNStringDict00::~COMAPushEMNStringDict00
+//-----------------------------------------------------------------------------
+COMAPushEMNStringDict00::~COMAPushEMNStringDict00()
+ {
+ if ( iCodepage00Table )
+ {
+ delete iCodepage00Table;
+ }
+ }
+
+//-----------------------------------------------------------------------------
+// COMAPushEMNStringDict00::ElementL
+//-----------------------------------------------------------------------------
+void COMAPushEMNStringDict00::ElementL(
+ TInt aToken, RString& aElement) const
+ {
+ TInt index = iCodepage00Table->StringPoolIndexFromToken(
+ aToken, CDictionaryCodePage::EStringTypeElement );
+
+ if ( index == KErrXmlStringPoolTableNotFound )
+ {
+ User::Leave( KErrXmlUnsupportedElement );
+ }
+
+ // when we have multiple codepages per string dictionary we'd do something
+ // like iCodepageTable[n]->StringTable()
+ aElement = iStringPool.String(
+ index,
+ *( iCodepage00Table->StringTable(
+ CDictionaryCodePage::EStringTypeElement ) ) );
+ }
+
+//-----------------------------------------------------------------------------
+// COMAPushEMNStringDict00::AttributeL
+//-----------------------------------------------------------------------------
+void COMAPushEMNStringDict00::AttributeL(
+ TInt aToken, RString& aAttribute ) const
+ {
+ TInt index = iCodepage00Table->StringPoolIndexFromToken(
+ aToken, CDictionaryCodePage::EStringTypeAttribute );
+
+ if ( index == KErrXmlStringPoolTableNotFound )
+ {
+ User::Leave( KErrXmlUnsupportedAttribute );
+ }
+
+ // when we have multiple codepages per string dictionary we'd do something
+ // like iCodepageTable[n]->StringTable()
+ aAttribute = iStringPool.String(
+ index,
+ *( iCodepage00Table->StringTable(
+ CDictionaryCodePage::EStringTypeAttribute ) ) );
+ };
+
+//-----------------------------------------------------------------------------
+// COMAPushEMNStringDict00::AttributeValuePairL
+//-----------------------------------------------------------------------------
+void COMAPushEMNStringDict00::AttributeValuePairL(
+ TInt aToken, RString& aAttribute, RString& aValue ) const
+ {
+ AttributeL( aToken, aAttribute );
+ AttributeValueL( aToken, aValue );
+ };
+
+//-----------------------------------------------------------------------------
+// COMAPushEMNStringDict00::AttributeValueL
+//-----------------------------------------------------------------------------
+void COMAPushEMNStringDict00::AttributeValueL(
+ TInt aToken, RString& aValue ) const
+ {
+ TInt index = iCodepage00Table->StringPoolIndexFromToken(
+ aToken, CDictionaryCodePage::EStringTypeAttributeValue );
+
+ if ( index == KErrXmlStringPoolTableNotFound )
+ {
+ User::Leave( KErrXmlUnsupportedAttributeValue );
+ }
+
+ // when we have multiple codepages per string dictionary we'd do something
+ // like iCodepageTable[n]->StringTable()
+ aValue = iStringPool.String(
+ index,
+ *( iCodepage00Table->StringTable(
+ CDictionaryCodePage::EStringTypeAttributeValue ) ) );
+ };
+
+//-----------------------------------------------------------------------------
+// COMAPushEMNStringDict00::CompareThisDictionary
+//-----------------------------------------------------------------------------
+TBool COMAPushEMNStringDict00::CompareThisDictionary(
+ const RString& aDictionaryDescription ) const
+ {
+ // If this string dictionary has many codepages then all these comparisons should go here.
+ // Remember, the string dictionary loads up all the RStringTables into its RStringPool
+ // on construction. So if the comparison fails we do not have it.
+ return (
+ ( aDictionaryDescription == iStringPool.String(
+ OMAPushEMNStringDict00TagTable::EUri,
+ OMAPushEMNStringDict00TagTable::Table ) ) ||
+ ( aDictionaryDescription == iStringPool.String(
+ OMAPushEMNStringDict00TagTable::EPublicId,
+ OMAPushEMNStringDict00TagTable::Table ) ) ||
+ ( aDictionaryDescription == iStringPool.String(
+ OMAPushEMNStringDict00TagTable::EFormalPublicId,
+ OMAPushEMNStringDict00TagTable::Table ) ) );
+ }
+
+//-----------------------------------------------------------------------------
+// COMAPushEMNStringDict00::SwitchCodePage
+//-----------------------------------------------------------------------------
+TInt COMAPushEMNStringDict00::SwitchCodePage( TInt aCodePage )
+ {
+ // We only have one codepage sp can't switch
+ if ( aCodePage != iCodePage )
+ {
+ return KErrXmlMissingStringDictionary;
+ }
+ return iCodePage;
+ }
+
+//-----------------------------------------------------------------------------
+// COMAPushEMNStringDict00::PublicIdentifier
+//-----------------------------------------------------------------------------
+void COMAPushEMNStringDict00::PublicIdentifier( RString& aPubId )
+ {
+ aPubId = iStringPool.String(
+ OMAPushEMNStringDict00TagTable::EFormalPublicId,
+ *( iCodepage00Table->StringTable(
+ CDictionaryCodePage::EStringTypeElement ) ) );
+ }
+
+//-----------------------------------------------------------------------------
+// COMAPushEMNStringDict00::NamespaceUri
+//-----------------------------------------------------------------------------
+void COMAPushEMNStringDict00::NamespaceUri( RString& aUri )
+ {
+ aUri = iStringPool.String(
+ OMAPushEMNStringDict00TagTable::EUri,
+ *( iCodepage00Table->StringTable(
+ CDictionaryCodePage::EStringTypeElement ) ) );
+ }
+
+//-----------------------------------------------------------------------------
+// ECOM PLUGIN LOADING STUFF
+//-----------------------------------------------------------------------------
+const TImplementationProxy ImplementationTable[] = {
+ IMPLEMENTATION_PROXY_ENTRY( 0x1027508B, COMAPushEMNStringDict00::NewL )
+};
+
+//-----------------------------------------------------------------------------
+// ImplementationGroupProxy
+//-----------------------------------------------------------------------------
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(
+ TInt& aTableCount )
+ {
+ aTableCount = sizeof( ImplementationTable ) /
+ sizeof( TImplementationProxy );
+
+ return ImplementationTable;
+ }
+