syncmlfw/ds/dsutils/dbcaps/inc/nsmldbcaps.h
changeset 0 b497e44ab2fc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/syncmlfw/ds/dsutils/dbcaps/inc/nsmldbcaps.h	Thu Dec 17 09:07:52 2009 +0200
@@ -0,0 +1,794 @@
+/*
+* Copyright (c) 2005 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:  DB capabilities header.
+*
+*/
+
+
+#ifndef __NSMLDBCAPS_H__
+#define __NSMLDBCAPS_H__
+
+// ------------------------------------------------------------------------------------------------
+// Includes
+// ------------------------------------------------------------------------------------------------
+#include <e32base.h>
+#include <badesca.h>
+
+// ------------------------------------------------------------------------------------------------
+// TNSmlCtCapData 
+// ------------------------------------------------------------------------------------------------
+struct TNSmlCtCapData
+	{
+public:
+
+// 1.2 CHANGES: New elements added.
+	enum TNSmlCtCapTag
+		{
+		ECtType,
+        EVerCt,
+        EFieldLevel,
+		EPropName,
+        EPropDataType,
+        EPropMaxOccur,
+        EPropMaxSize,
+        EPropNoTruncate,
+        EPropValEnum,
+        EPropDisplayName,
+		EParamName,
+		EParamValEnum,
+		EParamDataType,
+		EParamDisplayName
+		};
+// changes end
+
+	/**
+    * C++ constructor.
+    * @param aTag Element type.
+    * @param aValue Value of the element.
+    */
+	IMPORT_C TNSmlCtCapData( TNSmlCtCapTag aTag, const TDesC8& aValue );
+	
+	/**
+    * Static compare routine for two TNSmlCtCapData instances. Instances are kept in order
+	* in array for faster searching.
+    * @param aFirst First compare instance.
+    * @param aSecond Second compare instance.
+	* @return TInt Returns greater than 0 if aFirst is greater than aSecond, less than 0 if aFirst
+	* is less than aSecond and 0 if aFirst is equal to aSecond.
+    */
+	IMPORT_C static TInt Compare( const TNSmlCtCapData& aFirst, const TNSmlCtCapData& aSecond );
+
+public:
+	TNSmlCtCapTag iTag;
+	const TBuf8<64> iValue;
+	};
+
+// 1.2 CHANGES: FilterCap 
+// ------------------------------------------------------------------------------------------------
+// TNSmlFilterCapData 
+// ------------------------------------------------------------------------------------------------
+struct TNSmlFilterCapData
+	{
+public:
+
+	enum TNSmlFilterCapTag
+		{
+		ECtType,
+        EVerCt,
+        EFilterKeyword,
+		EPropName
+		};
+
+	/**
+    * C++ constructor.
+    * @param aTag Element type.
+    * @param aValue Value of the element.
+    */
+	IMPORT_C TNSmlFilterCapData( TNSmlFilterCapTag aTag, const TDesC8& aValue );
+	
+	/**
+    * Static compare routine for two TNSmlFilterCapData instances. Instances are kept in order
+	* in array for faster searching.
+    * @param aFirst First compare instance.
+    * @param aSecond Second compare instance.
+	* @return TInt Returns greater than 0 if aFirst is greater than aSecond, less than 0 if aFirst
+	* is less than aSecond and 0 if aFirst is equal to aSecond.
+    */
+	IMPORT_C static TInt Compare( const TNSmlFilterCapData& aFirst, const TNSmlFilterCapData& aSecond );
+
+public:
+	TNSmlFilterCapTag iTag;
+	const TBuf8<64> iValue;
+	};
+
+// changes end
+
+// 1.2 CHANGES: New class (replaces CNSmlCtParam).
+// ------------------------------------------------------------------------------------------------
+// CNSmlPropParam
+// ------------------------------------------------------------------------------------------------
+struct sml_devinf_propparam_s;
+class CNSmlPropParam : public CBase
+	{
+public:
+	/**
+    * C++ constructor.
+    * @param aParamPtr Pointer to device info property parameter structure.
+    */
+    IMPORT_C CNSmlPropParam( sml_devinf_propparam_s* aParamPtr );
+
+	/**
+    * Sets parameter's displayable name.
+    * @param aDispName Displayable name as descriptor.
+    */
+	IMPORT_C void SetDisplayNameL( const TDesC8& aDispName );
+
+	/**
+    * Adds new valenum.
+    * @param aValEnum Value of valenum as descriptor.
+    */
+	IMPORT_C void AddValEnumL( const TDesC8& aValEnum );
+
+	/**
+    * Sets datatype.
+    * @param aDataType Value of datatype as descriptor.
+    */
+    IMPORT_C void SetDataTypeL( const TDesC8& aDataType );
+
+private:
+    sml_devinf_propparam_s* iParamPtr;
+	};
+// changes end
+
+
+// 1.2 CHANGES: New class (replaces CNSmlCtProp).
+// ------------------------------------------------------------------------------------------------
+// CNSmlDevInfProp
+// ------------------------------------------------------------------------------------------------
+struct sml_devinf_property_s;
+class CNSmlDevInfProp : public CBase
+	{
+public:
+
+	/**
+    * C++ constructor.
+    * @param aParamPtr Pointer to device info property structure.
+    */
+    IMPORT_C CNSmlDevInfProp( sml_devinf_property_s* aPropPtr );
+
+	/**
+    * C++ destructor.
+    */
+	IMPORT_C ~CNSmlDevInfProp();
+
+	/**
+    * Adds new parameter to this property. Also leaves newly created instance into cleanupstack.
+    * @param aParam Name of the parameter as descriptor.
+	* @return CNSmlPropParam* Pointer to newly created instance.
+    */
+	IMPORT_C CNSmlPropParam* AddParamLC( const TDesC8& aParam );
+
+	/**
+    * Sets property's maximum occurrence value.
+    * @param aMaxOccur Maximum occurrence value as descriptor.
+    */    
+    IMPORT_C void SetMaxOccurL( const TDesC8& aMaxOccur );
+
+	/**
+    * Sets the maximum size of a property.
+    * @param aMaxSize Maximum size of a property as descriptor.
+    */    
+    IMPORT_C void SetMaxSizeL( const TDesC8& aMaxSize );
+
+	/**
+    * Sets NoTruncate element.
+    * Secifies if truncation is permitted.
+    */    
+    IMPORT_C void SetNoTruncateL();
+
+	/**
+    * Sets property's displayable name.
+    * @param aDispName Displayable name as descriptor.
+    */
+	IMPORT_C void SetDisplayNameL( const TDesC8& aDispName );
+
+	/**
+    * Adds new valenum.
+    * @param aValEnum Value of valenum as descriptor.
+    */
+	IMPORT_C void AddValEnumL( const TDesC8& aValEnum );
+
+	/**
+    * Sets datatype.
+    * @param aDataType Value of datatype as descriptor.
+    */
+    IMPORT_C void SetDataTypeL( const TDesC8& aDataType );
+private:
+    sml_devinf_property_s* iPropPtr;
+	};
+// changes end
+
+// ------------------------------------------------------------------------------------------------
+// CNSmlCtCap
+// ------------------------------------------------------------------------------------------------
+struct sml_devinf_ctcap_s;
+class CNSmlCtCap : public CBase
+	{
+public:
+	CNSmlCtCap( sml_devinf_ctcap_s* aCtCapPtr );
+	~CNSmlCtCap();
+
+	/**
+    * Sets value of CtCtype.
+    * @param aCtType Value of CtType as descriptor.
+    */
+	IMPORT_C void SetCtTypeL( const TDesC8& aCtType );
+
+// 1.2 CHANGES: Setting new elements in CtCap structure.
+	/**
+    * Sets value of VerCt.
+    * @param aVerCt Value of VerCt as descriptor.
+    */
+    IMPORT_C void SetVerCtL( const TDesC8& aVerCt );
+    
+	/**
+    * Sets FieldLevel element.
+    */
+    IMPORT_C void SetFieldLevelL();
+
+	/**
+    * Adds new property, also leaves newly created instance into cleanupstack.
+    * @param aProp Property's name as descriptor.
+	* @return CNSmlDevInfProp* Pointer to newly created instance.
+    */
+	IMPORT_C CNSmlDevInfProp* AddDevInfPropLC( const TDesC8& aProp );
+// changes end
+
+private:
+	sml_devinf_ctcap_s* iCtCapPtr;
+	};
+
+// 1.2 CHANGES: New class for FilterCap params.
+// ------------------------------------------------------------------------------------------------
+// CNSmlFilterCap
+// ------------------------------------------------------------------------------------------------
+struct sml_devinf_filtercap_s;
+class CNSmlFilterCap : public CBase
+    {
+public:
+    CNSmlFilterCap( sml_devinf_filtercap_s* aFilterCapPtr );
+    ~CNSmlFilterCap();
+
+    /**
+    * Adds new filter keyword to FilterCap.
+    * @param aKeyword Value of filter keyword as descriptor.
+    */
+    IMPORT_C void AddFilterKeywordL( const TDesC8& aKeyword );
+
+    /**
+    * Adds new property name to FilterCap.
+    * @param aPropName Value of property name as descriptor.
+    */
+    IMPORT_C void AddPropNameL( const TDesC8& aPropName );
+private:
+    sml_devinf_filtercap_s* iFilterCapPtr;
+    };
+// changes end
+
+// ------------------------------------------------------------------------------------------------
+// CNSmlCtCapHandler
+// ------------------------------------------------------------------------------------------------
+struct sml_devinf_datastore_s;
+struct sml_devinf_ctcaplist_s;
+struct sml_devinf_filtercaplist_s;
+struct sml_pcdata_s;
+struct sml_devinf_xmit_s;
+struct sml_devinf_ctcap_s;
+struct sml_devinf_ctdataprop_s;
+
+class CNSmlCtCapsHandler : public CBase
+	{
+public:
+	/**
+    * C++ constructor.
+    * @param aCtCaps Pointer to CtCaps structure.
+    */
+	IMPORT_C CNSmlCtCapsHandler( sml_devinf_ctcaplist_s* aCtCaps );
+
+	/**
+    * Gets CtCaps as array of TNSmlCtCapData items.
+    * @param aCtCaps On return contains CtCaps parsed into TNSmlCtCapData items.
+	* @param aCtType If defined then CtCaps only for given CtType are returned otherwise all CtCaps
+	* are parsed into array.
+    */
+	IMPORT_C void GetCtCapsL( CArrayFix<TNSmlCtCapData>& aCtCaps, const TDesC8& aCtType = TPtrC8() );
+
+protected:
+
+	void AppendCtCapL( CArrayFix<TNSmlCtCapData>& aCtCaps, sml_devinf_ctcap_s* aCtCap );
+
+// 1.2 CHANGES: New structures for version 1.2.
+	void AppendDevInfPropL( CArrayFix<TNSmlCtCapData>& aCtCaps, sml_devinf_property_s* aCtCap );
+	void AppendPropParamL( CArrayFix<TNSmlCtCapData>& aCtCaps, sml_devinf_propparam_s* aCtCap, TNSmlCtCapData::TNSmlCtCapTag aTag );
+// changes end
+private:
+	sml_devinf_ctcaplist_s* iCtCaps; // does not own this!
+	};
+
+// 1.2 CHANGES: FilterCap Handler
+// ------------------------------------------------------------------------------------------------
+// CNSmlFilterCapHandler
+// ------------------------------------------------------------------------------------------------
+class CNSmlFilterCapsHandler : public CBase
+	{
+public:
+	/**
+    * C++ constructor.
+    * @param aFilterCaps Pointer to FilterCaps structure.
+    */
+	IMPORT_C CNSmlFilterCapsHandler( sml_devinf_filtercaplist_s* aFilterCaps );
+
+	/**
+    * Gets FilterCaps as array of TNSmlFilterCapData items.
+    * @param aFilterCaps On return contains FilterCaps parsed into TNSmlFilterCapData items.
+	* @param aCtType If defined then FilterCaps only for given CtType are returned otherwise all FilterCaps
+	* are parsed into array.
+    */
+	IMPORT_C void GetFilterCapsL( CArrayFix<TNSmlFilterCapData>& aFilterCaps, const TDesC8& aCtType = TPtrC8() );
+
+protected:
+
+	void AppendFilterCapL( CArrayFix<TNSmlFilterCapData>& aFilterCaps, sml_devinf_filtercap_s* aFilterCap );
+
+private:
+	sml_devinf_filtercaplist_s* iFilterCaps; // does not own this!
+	};
+
+// changes end
+
+// ------------------------------------------------------------------------------------------------
+// CNSmlDbCaps
+// ------------------------------------------------------------------------------------------------
+
+// 1.2 HYBRID CHANGES:
+	struct sml_devinf_devinf_s;
+// changes end
+
+class CNSmlDbCaps : public CBase
+	{
+public:
+	enum ENSmlSyncTypes 
+		{
+		EAllTypes = 0,
+		ETwoWaySync = 1,
+		ESlowTwoWaySync,
+		EOneWaySyncFromClient,
+		ERefreshSyncFromClient,
+		EOneWaySyncFromServer,
+		ERefreshSyncFromServer,
+		EServerAlertedSync,
+		ESyncTypeNone = 8
+		};
+
+	/**
+    * Two-phase (leave safe) constructor.
+    * @return CNSmlDbCaps* Pointer to newly created instance.
+    */
+	IMPORT_C static CNSmlDbCaps* NewL();
+
+	/**
+    * Two-phase (leave safe) constructor. Leaves instance into cleanupstack.
+    * @return CNSmlDbCaps* Pointer to newly created instance.
+    */
+	IMPORT_C static CNSmlDbCaps* NewLC();
+
+	/**
+    * C++ destructor.
+    */
+	IMPORT_C ~CNSmlDbCaps();
+
+	// These structs are used by sync agent
+
+	/**
+    * Returns pointer to datastore structure.
+    * @return sml_devinf_datastore_s* Pointer to datastore structure.
+    */
+	IMPORT_C sml_devinf_datastore_s* DatastoreL() const;
+
+	/**
+    * Returns pointer to ctcap structure.
+    * @return sml_devinf_ctcaplist_s* Pointer to ctcap structure.
+    */
+	IMPORT_C sml_devinf_ctcaplist_s* CtCaps() const;
+
+// 1.2 CHANGES: FilterCap
+    /**
+    * Returns pointer to filtercap structure.
+    * @return sml_devinf_filtercaplist_s* Pointer to filtercap structure.
+    */
+    IMPORT_C sml_devinf_filtercaplist_s* FilterCaps() const;
+// changes end
+
+	/**
+    * Checks whether given synctype is supported or not.
+	* @param aType Synctype to check.
+    * @return TBool ETrue if Synctype is supported, EFalse otherwise.
+    */
+	IMPORT_C TBool SupportsSyncType( ENSmlSyncTypes aType ) const;
+	
+	/**
+    * Creates instance of CtCaps handler.
+    * @return CNSmlCtCapsHandler* Pointer to newly created CtCaps handler.
+    */
+	IMPORT_C CNSmlCtCapsHandler* CreateHandlerL() const;
+	// DataStore element
+
+	/**
+    * Sets RxPref element.
+    * @param aCtType Value of CtType as descriptor.
+    * @param aVerCt Value of VerCt as descriptor.
+    */
+	IMPORT_C void SetRxPrefL( const TDesC8& aCtType, const TDesC8& aVerCt );
+
+	/**
+    * Adds Rx element.
+    * @param aCtType Value of CtType as descriptor.
+    * @param aVerCt Value of VerCt as descriptor.
+    */
+	IMPORT_C void AddRxL( const TDesC8& aCtType, const TDesC8& aVerCt );
+	
+	/**
+    * Sets TxPref element.
+    * @param aCtType Value of CtType as descriptor.
+    * @param aVerCt Value of VerCt as descriptor.
+    */
+	IMPORT_C void SetTxPrefL( const TDesC8& aCtType, const TDesC8& aVerCt );
+	
+	/**
+    * Adds Tx element.
+    * @param aCtType Value of CtType as descriptor.
+    * @param aVerCt Value of VerCt as descriptor.
+    */
+	IMPORT_C void AddTxL( const TDesC8& aCtType, const TDesC8& aVerCt );
+	
+	/**
+    * Enables synctype (does not clear other settings!).
+    * @param aType Syntype to enable.
+    */
+	IMPORT_C void SetSyncType( ENSmlSyncTypes aType );
+
+// 1.2 CHANGES: Filter-Rx & FilterCap
+	/**
+    * Adds Filter-Rx element.
+    * @param aCtType Value of CtType as descriptor.
+    * @param aVerCt Value of VerCt as descriptor.
+    */
+    IMPORT_C void AddFilterRxL( const TDesC8& aCtType, const TDesC8& aVerCt );
+
+    /**
+    * Creates new FilterCap element instance, also leaves newly created instance into cleanupstack.
+    * @param aCtType Value of CtType as descriptor.
+    * @param aVerCt Value of VerCt as descriptor.
+    * @return CNSmlFilterCap* Pointer to newly created instance.
+    */
+    IMPORT_C  CNSmlFilterCap* AddFilterCapLC( const TDesC8& aCtType, const TDesC8& aVerCt );
+
+	/**
+    * Creates instance of FilterCaps handler.
+    * @return CNSmlFilterCapsHandler* Pointer to newly created FilterCaps handler.
+    */
+	IMPORT_C CNSmlFilterCapsHandler* CreateFilterCapsHandlerL() const;
+
+// changes end
+
+// 1.2 CHANGES: Setting SupportHierarchicalSync, SourceRef, DisplayName, MaxGuidSize
+	/**
+    * Sets SupportHierarchicalSync element.
+    * Indicates if hierarchical synchronization is supported.
+    */
+    IMPORT_C void SetSupportHierarchicalSyncL();
+
+	/**
+    * Sets SourceRef element.
+    * @param aSourceRef Value of SourceRef as descriptor.
+    */
+    IMPORT_C void SetSourceRefL( const TDesC8& aSourceRef );
+
+	/**
+    * Sets DisplayName element.
+    * @param aDispName Value of DisplayName as descriptor.
+    */
+    IMPORT_C void SetDisplayNameL( const TDesC8& aDispName );
+
+    /**
+    * Sets MaxGuidSize element.
+    * @param aMaxGuid Value of MaxGuidSize as descriptor.
+    */
+    IMPORT_C void SetMaxGuidSizeL( const TDesC8& aMaxGuid );
+
+// changes end                                
+	// CTCap element
+	/**
+    * Creates new CtCap element instance, also leaves newly created instance into cleanupstack.
+    * @return CNSmlCtCap* Pointer to newly created instance.
+    */
+	IMPORT_C CNSmlCtCap* AddCtCapLC();
+
+// 1.2 HYBRID CHANGES: Device info conversion
+	/**
+    * Creates version 1.1 CtCap element from version 1.2 Ctcap element
+    * @return error code if conversion fails or is not possible
+    */
+	
+	IMPORT_C TInt ConvertDeviceInfoL( sml_devinf_devinf_s* aDeviceInfo);
+// changes end
+
+	/**
+    * sets maxitems element. Same as: iDatastore->dsmem->maxid
+    * @param aMaxItems. Max items. Contains a number.
+    */
+	void SetMaxItemsL( const TDesC8& aMaxItems );
+	
+	/**
+    * sets maxsize element. Same as: iDatastore->dsmem->maxmem
+    * @param aMaxSize. Max size. Contains a number.
+    */
+	void SetMaxSizeL( const TDesC8& aMaxSize );
+
+	/**
+    * Returns pointer to datastore structure. No export needed, only needed inside the dll.
+    * @return sml_devinf_datastore_s* Pointer to datastore structure.
+    */
+	const sml_devinf_datastore_s* Datastore() const;
+	
+	// 1.2 CHANGES: FilterCap
+    /**
+    * Returns pointer to filtercap structure. No export needed, only needed inside the dll.
+    * @return sml_devinf_filtercaplist_s* Pointer to filtercap structure.
+    */
+    const sml_devinf_filtercaplist_s* FilterCapsList() const;
+// changes end
+
+protected:
+	void ConstructL();
+	CNSmlDbCaps();
+	sml_pcdata_s* CreatePcdataL( const TDesC8& aData );
+	sml_devinf_xmit_s* CreateXmitL( const TDesC8& aCtType, const TDesC8& aVerCt );
+    
+private:
+	TUint32 iSyncTypes;
+    TInt32 iPublicId;
+	mutable sml_devinf_datastore_s* iDatastore;
+	mutable sml_devinf_ctcaplist_s* iCtCaps;
+    mutable sml_devinf_filtercaplist_s* iFilterCaps;
+	};
+
+// ------------------------------------------------------------------------------------------------
+// CNSmlDbMetaHandler
+// ------------------------------------------------------------------------------------------------
+struct sml_metinf_metinf_s;
+
+class CNSmlDbMetaHandler : public CBase
+	{
+public:
+	/**
+    * C++ constructor.
+    */
+	IMPORT_C CNSmlDbMetaHandler();
+	
+	/**
+    * C++ constructor.
+    * @param aMetInf Pointer to meta information structure.
+    */
+	IMPORT_C CNSmlDbMetaHandler( sml_metinf_metinf_s* aMetInf );
+
+	/**
+    * Returns value of Format element as 8-bit descriptor.
+    * @return TPtrC8 Value of Format element.
+    */
+	IMPORT_C TPtrC8 Format() const;
+
+	/**
+    * Returns value of Type element as 8-bit descriptor.
+    * @return TPtrC8 Value of Type element.
+    */
+	IMPORT_C TPtrC8 Type() const;
+
+	/**
+    * Returns value of Mark element as 8-bit descriptor.
+    * @return TPtrC8 Value of Mark element.
+    */
+	IMPORT_C TPtrC8 Mark() const;
+
+	/**
+    * Returns value of Size element as 8-bit descriptor.
+    * @return TPtrC8 Value of Size element.
+    */
+	IMPORT_C TPtrC8 Size() const;
+
+	/**
+    * Returns value of NextNonce element as 8-bit descriptor.
+    * @return TPtrC8 Value of NextNonce element.
+    */
+	IMPORT_C TPtrC8 NextNonce() const;
+
+	/**
+    * Returns value of Version element as 8-bit descriptor.
+    * @return TPtrC8 Value of Version element.
+    */
+	IMPORT_C TPtrC8 Version() const;
+
+	/**
+    * Returns value of MaxMsgSize element as 8-bit descriptor.
+    * @return TPtrC8 Value of MaxMsgSize element.
+    */
+	IMPORT_C TPtrC8 MaxMsgSize() const;
+
+	/**
+    * Returns value of MaxObjSize element as 8-bit descriptor.
+    * @return TPtrC8 Value of MaxObjSize element.
+    */
+	IMPORT_C TPtrC8 MaxObjSize() const;
+
+	/**
+    * Returns value of Mem/Shared element as 8-bit descriptor.
+    * @return TPtrC8 Value of Mem/Shared element.
+    */
+	IMPORT_C TPtrC8 MemShared() const;
+
+	/**
+    * Returns value of Mem/Free element as 8-bit descriptor.
+    * @return TPtrC8 Value of Mem/Free element.
+    */
+	IMPORT_C TPtrC8 MemFreeMem() const;
+
+	/**
+    * Returns value of Mem/FreeID element as 8-bit descriptor.
+    * @return TPtrC8 Value of Mem/FreeID element.
+    */
+	IMPORT_C TPtrC8 MemFreeID() const;
+
+	/**
+    * Returns value of Anchor/Next element as 8-bit descriptor.
+    * @return TPtrC8 Value of Anchor/Next element.
+    */
+	IMPORT_C TPtrC8 AnchorNext() const;
+
+	/**
+    * Returns value of Anchor/Last element as 8-bit descriptor.
+    * @return TPtrC8 Value of Anchor/Last element.
+    */
+	IMPORT_C TPtrC8 AnchorLast() const;
+
+	/**
+    * Returns values of EMI element as array.
+    * @param aEMI On return contains values of EMI element.
+    */
+	IMPORT_C void GetEmiL( CDesC8Array& aEMI ) const;
+
+private:
+	sml_metinf_metinf_s* iMetInf; // does not own this!
+	};
+
+// ------------------------------------------------------------------------------------------------
+// CNSmlDbMeta
+// ------------------------------------------------------------------------------------------------
+class CNSmlDbMeta : public CBase
+	{
+public:
+	IMPORT_C static CNSmlDbMeta* NewL();
+	IMPORT_C static CNSmlDbMeta* NewLC();
+	IMPORT_C ~CNSmlDbMeta();
+
+	// These structs are used by sync agent
+	IMPORT_C sml_metinf_metinf_s* MetInfL() const;
+	IMPORT_C CNSmlDbMetaHandler* CreateHandlerL() const;
+	IMPORT_C void Clear();
+
+	/**
+    * Sets value of Format element.
+    * @param aValue Value of Format element as 8-bit descriptor.
+    */
+	IMPORT_C void SetFormatL( const TDesC8& aValue );
+
+	/**
+    * Sets value of Type element.
+    * @param aValue Value of Type element as 8-bit descriptor.
+    */
+	IMPORT_C void SetTypeL( const TDesC8& aValue );
+
+	/**
+    * Sets value of Mark element.
+    * @param aValue Value of Mark element as 8-bit descriptor.
+    */
+	IMPORT_C void SetMarkL( const TDesC8& aValue );
+
+	/**
+    * Sets value of Size element.
+    * @param aValue Value of Size element as 8-bit descriptor.
+    */
+	IMPORT_C void SetSizeL( const TDesC8& aValue );
+
+	/**
+    * Sets value of NextNonce element.
+    * @param aValue Value of NextNonce element as 8-bit descriptor.
+    */
+	IMPORT_C void SetNextNonceL( const TDesC8& aValue );
+
+	/**
+    * Sets value of Version element.
+    * @param aValue Value of Version element as 8-bit descriptor.
+    */
+	IMPORT_C void SetVersionL( const TDesC8& aValue );
+
+	/**
+    * Sets value of MaxMsgSize element.
+    * @param aValue Value of MaxMsgSize element as 8-bit descriptor.
+    */
+	IMPORT_C void SetMaxMsgSizeL( const TDesC8& aValue );
+
+	/**
+    * Sets value of MaxObjSize element.
+    * @param aValue Value of MaxObjSize element as 8-bit descriptor.
+    */
+	IMPORT_C void SetMaxObjSizeL( const TDesC8& aValue );
+
+	/**
+    * Sets value of Mem/Shared element.
+    * @param aValue Value of Mem/Shared element as 8-bit descriptor.
+    */
+	IMPORT_C void SetMemSharedL( const TDesC8& aValue );
+
+	/**
+    * Sets value of Mem/FreeMem element.
+    * @param aValue Value of Mem/FreeMem element as 8-bit descriptor.
+    */
+	IMPORT_C void SetMemFreeMemL( const TDesC8& aValue );
+
+	/**
+    * Sets value of Mem/FreeID element.
+    * @param aValue Value of Mem/FreeID element as 8-bit descriptor.
+    */
+	IMPORT_C void SetMemFreeIDL( const TDesC8& aValue );
+
+	/**
+    * Sets value of Anchor/Next element.
+    * @param aValue Value of Anchor/Next element as 8-bit descriptor.
+    */
+	IMPORT_C void SetAnchorNextL( const TDesC8& aValue );
+
+	/**
+    * Sets value of Anchor/Last element.
+    * @param aValue Value of Anchor/Last element as 8-bit descriptor.
+    */
+	IMPORT_C void SetAnchorLastL( const TDesC8& aValue );
+
+	/**
+    * Adds EMI elements.
+    * @param aValue Array of EMI element values.
+    */
+	IMPORT_C void SetEmiL( const CDesC8Array& aValue );
+	
+protected:
+	void MakeSureMetInfExistsL();
+	void ConstructL();
+	CNSmlDbMeta();
+
+private:
+	mutable sml_metinf_metinf_s* iMetInf;
+	};
+
+#endif // __NSMLDBCAPS_H__
+
+// End of File