diff -r 000000000000 -r 094583676ce7 PECengine/AttributeLibrary2/SrcWVAttributes/CPEngWVAttributeConstructBase.h --- /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 +#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(&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 +