email/emailnotificationhandler/StringDictionaries/src/OMAPushEMNStringDict00.cpp
changeset 0 72b543305e3a
--- /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;
+    }
+