PECengine/AttributeLibrary2/SrcWVAttributes/CPEngWVAttributeConstructBase.h
changeset 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PECengine/AttributeLibrary2/SrcWVAttributes/CPEngWVAttributeConstructBase.h	Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,142 @@
+/*
+* Copyright (c) 2004 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:  Base class for WV attribute constructors.
+*
+*/
+
+#ifndef CPENGWVATTRIBUTECONSTRUCTBASE_H
+#define CPENGWVATTRIBUTECONSTRUCTBASE_H
+
+//  INCLUDES
+#include <E32Base.h>
+#include "PEngWVCspVersion.h"
+#include "MPEngPresenceAttrConstructorTypeImp.h"
+
+
+//DATA TYPES
+
+/**
+ * Attribute WV CSP name entry.
+ *
+ * @since 3.0
+ */
+NONSHARABLE_CLASS( TWVCspAttributeNameEntry )
+    {
+public: //Data
+
+    //OWN: CSP version id
+    TPEngWVCspVersion   iCspVersion;
+
+    //OWN: Attribute name for CSP version
+    const TDesC8*   iName;
+
+    //OWN: Attribute namespace for CSP version
+    const TDesC8*   iNameSpace;
+    };
+
+
+/**
+ * Helper macro for initializing
+ * TWVCspAttributeNameEntry with standard _LIT8.
+ *
+ * @since 3.0
+ */
+#define LIT_AS_DESC8_PTR(aLit) (reinterpret_cast<TDesC8 const*>(&aLit.iTypeLength))
+
+
+
+
+
+// Class definition
+
+/**
+ * Base class for WV attribute constructors.
+ *
+ * @lib PEngAttrLib
+ * @since 3.0
+ */
+NONSHARABLE_CLASS( CPEngWVAttributeConstructBase ) : public CBase,
+        public MPEngPresenceAttrConstructorTypeImp
+    {
+public:  // Constructors and destructor
+
+    /**
+     * Destructor.
+     */
+    virtual ~CPEngWVAttributeConstructBase();
+
+
+    /**
+     * C++ default constructor.
+     */
+    CPEngWVAttributeConstructBase( TPEngWVCspVersion aCurrentCspVer,
+                                   const TWVCspAttributeNameEntry* aNameTable,
+                                   TInt aTableCount );
+
+
+
+public: // Functions from MPEngPresenceAttrConstructorTypeImp
+
+    /**
+     * From MPEngPresenceAttrConstructorTypeImp.
+     *
+     * @since 3.0
+     */
+    TInt GetProperty( TUint aPropertyName,
+                      TUint aPropertyLevel,
+                      TInt& aProperty ) const;
+    TInt GetProperty( TUint aPropertyName,
+                      TUint aPropertyLevel,
+                      TDes8& aProperty ) const;
+    TInt GetPropertyPtr( TUint aPropertyName,
+                         TUint aPropertyLevel,
+                         TPtrC16& aProperty ) const;
+
+    TAny* TypeExtension( TUint32 aType );
+
+    TInt GetCurrentCspName( TPtrC8& aAttributeName,
+                            TPtrC8& aAttributeNameSpace ) const;
+
+
+private: // New helpers
+
+    /**
+     * Gets the CSP name table index for given protocol version.
+     *
+     * @since 3.0
+     * @param aCspVer The CSP version to get.
+     * @return Valid index or KErrNotFound if
+     * requested protocol isn't supported.
+     */
+    TInt ProtocolNameTableIndex( TPEngWVCspVersion aCspVer ) const;
+
+
+
+private: //Data
+
+    //OWN: Current WV CSP version.
+    const TPEngWVCspVersion iCurrentCspVer;
+
+    //OWN: CSP protocol name table
+    const TWVCspAttributeNameEntry*    iCspNameTable;
+
+    //OWN:CSP protocol name table entry count
+    const TInt  iCspNameTableCount;
+
+    };
+
+#endif      //CPENGWVATTRIBUTECONSTRUCTBASE_H
+
+//  End of File
+