syncmlfw/dm/dmutils/inc/nsmldmtreedtd.h
changeset 0 b497e44ab2fc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/syncmlfw/dm/dmutils/inc/nsmldmtreedtd.h	Thu Dec 17 09:07:52 2009 +0200
@@ -0,0 +1,866 @@
+/*
+* 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:  DM Utilities
+*
+*/
+
+ 
+
+#ifndef __NSMLDMTREEDTD_H
+#define __NSMLDMTREEDTD_H
+
+#include <e32std.h>
+#include <e32base.h>
+#include <s32file.h>
+#include <smldmadapter.h>
+
+
+_LIT8( KNSmlDmTreeDTDVersion, "1.1" ); 
+
+//XML generator flags
+_LIT8( KNSmlDDFMgmtTree, "<MgmtTree>" ); 
+_LIT8( KNSmlDDFMgmtTreeEnd, "</MgmtTree>" ); 
+_LIT8( KNSmlDDFNode, "<Node>" ); 
+_LIT8( KNSmlDDFNodeEnd, "</Node>" ); 
+_LIT8( KNSmlDDFNodeName, "<NodeName>" ); 
+_LIT8( KNSmlDDFNodeNameEnd, "</NodeName>" ); 
+_LIT8( KNSmlDDFDFProperties, "<DFProperties>" ); 
+_LIT8( KNSmlDDFDFPropertiesEnd, "</DFProperties>" ); 
+_LIT8( KNSmlDDFPath, "<Path>" ); 
+_LIT8( KNSmlDDFPathEnd, "</Path>" ); 
+_LIT8( KNSmlDDFValue, "<Value>" ); 
+_LIT8( KNSmlDDFValueEnd, "</Value>" ); 
+_LIT8( KNSmlDDFVerDTD, "<VerDTD>" );
+_LIT8( KNSmlDDFVerDTDEnd, "</VerDTD>" ); 
+_LIT8( KNSmlDDFMan, "<Man>" );
+_LIT8( KNSmlDDFManEnd, "</Man>" );
+_LIT8( KNSmlDDFMod, "<Mod>" );
+_LIT8( KNSmlDDFModEnd, "</Mod>" );
+_LIT8( KNSmlDDFAccessType, "<AccessType>" );
+_LIT8( KNSmlDDFAccessTypeEnd, "</AccessType>" );
+_LIT8( KNSmlDDFDefaultValue, "<DefaultValue>" );
+_LIT8( KNSmlDDFDefaultValueEnd, "</DefaultValue>" );
+_LIT8( KNSmlDDFDescription, "<Description>" );
+_LIT8( KNSmlDDFDescriptionEnd, "</Description>" );
+_LIT8( KNSmlDDFDFTitle, "<DFTitle>" );
+_LIT8( KNSmlDDFDFTitleEnd, "</DFTitle>" );
+_LIT8( KNSmlDDFDFType, "<DFType>" );
+_LIT8( KNSmlDDFDFTypeEnd, "</DFType>" );
+_LIT8( KNSmlDDFDFFormat, "<DFFormat>" );
+_LIT8( KNSmlDDFDFFormatEnd, "</DFFormat>" );
+_LIT8( KNSmlDDFFormatB64, "<b64/>" );
+_LIT8( KNSmlDDFFormatDate, "<date/>" );
+_LIT8( KNSmlDDFFormatTime, "<time/>" );
+_LIT8( KNSmlDDFFormatFloat, "<float/>" );
+_LIT8( KNSmlDDFFormatBool, "<bool/>" );
+_LIT8( KNSmlDDFFormatChr, "<chr/>" );
+_LIT8( KNSmlDDFFormatInt, "<int/>" );
+_LIT8( KNSmlDDFFormatNode, "<node/>" );
+_LIT8( KNSmlDDFFormatNull, "<null/>" );
+_LIT8( KNSmlDDFFormatXml, "<xml/>" );
+_LIT8( KNSmlDDFFormatBin, "<bin/>" );
+_LIT8( KNSmlDDFAccessTypeAdd, "<Add/>" );
+_LIT8( KNSmlDDFAccessTypeDelete, "<Delete/>" );
+_LIT8( KNSmlDDFAccessTypeGet, "<Get/>" );
+_LIT8( KNSmlDDFAccessTypeReplace, "<Replace/>" );
+_LIT8( KNSmlDDFAccessTypeExec, "<Exec/>" );
+_LIT8( KNSmlDDFAccessTypeCopy, "<Copy/>" );
+_LIT8( KNSmlDDFOccurrence, "<Occurrence>" );
+_LIT8( KNSmlDDFOccurrenceEnd, "</Occurrence>" ); 
+_LIT8( KNSmlDDFOccurrenceOne, "<One/>" );
+_LIT8( KNSmlDDFOccurrenceZeroOrOne, "<ZeroOrOne/>" );
+_LIT8( KNSmlDDFOccurrenceZeroOrMore, "<ZeroOrMore/>" );
+_LIT8( KNSmlDDFOccurrenceOneOrMore, "<OneOrMore/>" );
+_LIT8( KNSmlDDFOccurrenceZeroOrN, "<ZeroOrN/>" );
+_LIT8( KNSmlDDFOccurrenceOneOrN, "<OneOrN/>" );
+_LIT8( KNSmlDDFScope, "<Scope>" );
+_LIT8( KNSmlDDFScopeEnd, "</Scope>" );
+_LIT8( KNSmlDDFScopePermanent, "<Permanent/>" );
+_LIT8( KNSmlDDFScopeDynamic, "<Dynamic/>" );
+_LIT8( KNSmlDDFMIME, "<MIME>" );
+_LIT8( KNSmlDDFMIMEEnd, "</MIME>" );
+
+_LIT8( KNSmlDDFRTProperties, "<RTProperties>" ); 
+_LIT8( KNSmlDDFRTPropertiesEnd, "</RTProperties>" ); 
+_LIT8( KNSmlDDFACL, "<ACL>" ); 
+_LIT8( KNSmlDDFACLEnd, "</ACL>" ); 
+_LIT8( KNSmlDDFFormat, "<Format>" ); 
+_LIT8( KNSmlDDFFormatEnd, "</Format>" ); 
+_LIT8( KNSmlDDFName, "<Name>" ); 
+_LIT8( KNSmlDDFNameEnd, "</Name>" ); 
+_LIT8( KNSmlDDFSize, "<Size>" ); 
+_LIT8( KNSmlDDFSizeEnd, "</Size>" );
+_LIT8( KNSmlDDFTitle, "<Title>" ); 
+_LIT8( KNSmlDDFTitleEnd, "</Title>" );
+_LIT8( KNSmlDDFTStamp, "<TStamp>" ); 
+_LIT8( KNSmlDDFTStampEnd, "</TStamp>" );
+_LIT8( KNSmlDDFType, "<Type>" ); 
+_LIT8( KNSmlDDFTypeEnd, "</Type>" );
+_LIT8( KNSmlDDFVerNo, "<VerNo>" ); 
+_LIT8( KNSmlDDFVerNoEnd, "</VerNo>" );
+
+_LIT8( KNSmlDevInfoMan, "DevInfo/Man" );
+_LIT8( KNSmlDevInfoMod, "DevInfo/Mod" );
+
+_LIT( KNSmlTreeDTDPanic, "NSmlDMTreeDTD" );
+
+_LIT8( KNSmlDDFCaseSense, "CS" );
+_LIT8( KNSmlDDFCaseInSense, "CIS" );
+enum TNSmlDdfWBXMLTags 
+	{
+EDDFMgmtTree = 5,
+EDDFMgmtTreeEnd,
+EDDFNode,
+EDDFNodeEnd,
+EDDFNodeName,
+EDDFNodeNameEnd,        //10
+EDDFDFProperties,
+EDDFDFPropertiesEnd,
+EDDFPath,
+EDDFPathEnd,
+EDDFValue,              //15
+EDDFValueEnd,
+EDDFVerDTD,
+EDDFVerDTDEnd,
+EDDFMan,
+EDDFManEnd,             //20
+EDDFMod,
+EDDFModEnd,
+EDDFAccessType,
+EDDFAccessTypeEnd,
+EDDFDefaultValue,       //25
+EDDFDefaultValueEnd,
+EDDFDescription,
+EDDFDescriptionEnd,
+EDDFDFTitle,
+EDDFDFTitleEnd,         //30
+EDDFDFType,
+EDDFDFTypeEnd,
+EDDFDFFormat,
+EDDFDFFormatEnd,
+EDDFFormatB64,          //35
+EDDFFormatBool,
+EDDFFormatChr,
+EDDFFormatInt,
+EDDFFormatNode,
+EDDFFormatNull,         //40
+EDDFFormatXml,
+EDDFFormatBin,
+EDDFFormatDate,
+EDDFFormatTime,
+EDDFFormatFloat,
+EDDFAccessTypeAdd,
+EDDFAccessTypeDelete,
+EDDFAccessTypeGet,      //45
+EDDFAccessTypeReplace,
+EDDFAccessTypeExec,
+EDDFAccessTypeCopy,
+EDDFOccurrence,
+EDDFOccurrenceEnd,      //50
+EDDFOccurrenceOne,
+EDDFOccurrenceZeroOrOne,
+EDDFOccurrenceZeroOrMore,
+EDDFOccurrenceOneOrMore,
+EDDFOccurrenceZeroOrN,  //55
+EDDFOccurrenceOneOrN,
+EDDFScope,
+EDDFScopeEnd,
+EDDFScopePermanent,
+EDDFScopeDynamic,       //60
+EDDFMIME,
+EDDFMIMEEnd,
+EDDFRTProperties,
+EDDFRTPropertiesEnd,
+EDDFACL,                //65
+EDDFACLEnd,
+EDDFFormat,
+EDDFFormatEnd,
+EDDFName,
+EDDFNameEnd,            //70
+EDDFSize,
+EDDFSizeEnd,
+EDDFTitle,
+EDDFTitleEnd,
+EDDFTStamp,             //75
+EDDFTStampEnd,
+EDDFType,
+EDDFTypeEnd,
+EDDFVerNo,
+EDDFVerNoEnd,            //80
+EDDFStaticLevel,
+EDDFStaticLevelEnd,
+EDDFAdapterUid,
+EDDFAdapterUidEnd,
+EDDFHostServerId,
+EDDFHostServerIdEnd
+	};
+
+enum TNSmlDmDDFFormat 
+	{
+	ENSmlDmDDFLeaf,
+	ENSmlDmDDFNode,
+	ENSmlDmDDFNotFound
+	};
+
+
+//class forwards
+class CNSmlDmNodeList;
+
+// ===========================================================================
+//PCData element
+// ===========================================================================
+/**
+* CNSmlDmPcdata is data element in DDF tree structure
+*
+*  @since
+*/
+class CNSmlDmPcdata : public CBase
+	{
+public:
+
+	/**
+	* Length of the data in this PCDATA structure
+	*/
+	TInt	iLength;
+	
+	/**
+	* Pointer to the data
+	*/
+	TAny*	iContent;       
+
+public:
+
+	/**
+	* Constructor
+	*/
+	CNSmlDmPcdata();
+
+	/**
+	* Destructor
+	*/
+	~CNSmlDmPcdata();
+	
+	/**
+	* Frees content
+	*/
+	void FreeContent();
+	
+	/**
+	* Sets data
+	* @param	aData				Data to be set
+	*/
+	void DataL( const TDesC8& aData );
+
+
+	/**
+	* Compare data
+	* @param	aStr				Data start  pointer
+	* @param	aLength				Data length
+	* @return						ETrue if data is similar to iContent
+	*/
+	TBool Compare(const TUint8* aStr, TInt aLength);
+
+private:
+	};
+
+
+// ===========================================================================
+// RTProperties 
+// ===========================================================================
+/**
+* CNSmlDmRTProperties contains runtime properties element in DDF tree
+* structure
+*
+*  @since
+*/
+class CNSmlDmRTProperties : public CBase
+	{
+public:
+
+	/**
+	* ACL Property
+	*/
+	CNSmlDmPcdata iACL;
+
+	/**
+	* Name property
+	*/
+	CNSmlDmPcdata iName;				
+
+	/**
+	* Format property
+	*/
+	MSmlDmDDFObject::TDFFormat	iFormat;
+
+	/**
+	* Size property, optional
+	*/
+	CNSmlDmPcdata* iSize;		
+
+	/**
+	* Title property, optional
+	*/
+	CNSmlDmPcdata* iTitle;		
+
+	/**
+	* TimeStamp property, optional
+	*/
+	CNSmlDmPcdata* iTStamp;		
+	
+	/**
+	* Type property, optional
+	*/
+	CNSmlDmPcdata* iType;		
+
+	/**
+	* Version number property, optional
+	*/
+	CNSmlDmPcdata* iVerNo;		
+
+public:
+	/**
+	* Destructor
+	*/
+	virtual ~CNSmlDmRTProperties();
+
+	/**
+	* Generates xml of elelment
+	* @param	aObject			Buffer to write xml
+	*/
+	void GenerateRTPropertiesL(CBufBase& aObject);
+
+private:
+	/**
+	* Constructor
+	*/
+	CNSmlDmRTProperties();
+	};
+
+
+
+// ===========================================================================
+// DFProperties 
+// ===========================================================================
+/**
+* CNSmlDmDFProperties contains description framwork properties element in
+* DDF tree structure
+*
+*  @since
+*/
+class CNSmlDmDFProperties : public CBase
+	{
+public:
+
+	/**
+	* Accestype property of the node
+	*/
+	TUint8 iAccessTypes;
+
+	/**
+	* Default value property of the node, optional
+	*/
+	CNSmlDmPcdata* iDefaultValue;					
+
+	/**
+	* Description property of the node, optional
+	*/
+	CNSmlDmPcdata* iDescription;	
+
+	/**
+	* Format property of the node
+	*/
+	MSmlDmDDFObject::TDFFormat iDFFormat;		
+
+	/**
+	* Occurrence property of the node, optional
+	*/
+	MSmlDmDDFObject::TOccurence iOccurrence;
+
+	/**
+	* Scope property of the node, optional
+	*/
+	MSmlDmDDFObject::TScope iScope;	
+
+	/**
+	* Title property of the node, optional
+	*/
+	CNSmlDmPcdata* iDFTitle;
+			
+	/**
+	* Type property of the node, optional
+	*/
+	CNSmlDmPcdata* iDFType;
+
+    TBool iCaseSense;
+public:
+
+	/**
+	* Desstructor
+	*/
+	~CNSmlDmDFProperties();
+
+	/**
+	* Constructor
+	*/
+	CNSmlDmDFProperties();
+
+	/**
+	* Generates xml of elelment
+	* @param	aObject			Buffer to write xml
+	*/
+	void GenerateDFPropertiesL(CBufBase& aObject);
+
+	/**
+	* Generates wbxml of elelment
+	* @param	aObject			Buffer to write xml
+	*/
+	void GenerateDFPropertiesWBXMLL(RWriteStream& aStream);
+
+private:
+	/**
+	* Generates xml of elelment
+	* @param	aObject			Buffer to write xml
+	*/
+	void GenerateDFPropsSubmethodL(CBufBase& aObject);
+	};
+
+
+// ===========================================================================
+// CNSmlDmNode 
+// ===========================================================================
+/**
+* CNSmlDmNode is node object in DDF structure
+*
+*  @since
+*/
+class CNSmlDmNode : public CBase, public MSmlDmDDFObject
+	{
+public:
+	/**
+	* Path of the node, optional
+	*/
+	CNSmlDmPcdata* iPath;
+
+	/**
+	* Run time properties of the node, optional
+	*/
+	CNSmlDmRTProperties* iRTProperties;
+	
+	/**
+	* Description framework properties of the node
+	*/
+	CNSmlDmDFProperties iDFProperties;
+
+	/**
+	* Children of the node, optional
+	* (if null -> leaf otherwise interior node)
+	*/
+	CNSmlDmNodeList* iNodeListPtr;
+	
+	/**
+	* Default value of the node, optional
+	*/
+	CNSmlDmPcdata* iValue;
+
+	/**
+	* Name of the node
+	*/
+	CNSmlDmPcdata iNodeName;
+	
+	/**
+	* True if node is static level, i.e. before firs nameless level
+	*/
+	TBool iStaticLevel;
+
+	/**
+	* Implementation uid of adapter which handles the current node
+	*/
+	TUint32 iImplUid;
+
+	/**
+	* Host server id which handles adapter
+	*/
+	TUint8 iHostServerId;
+
+public:
+
+	/**
+	* Constructor
+	*/
+	CNSmlDmNode();
+
+	/**
+	* Desstructor
+	*/
+	virtual ~CNSmlDmNode();
+	
+	/**
+	* Sets access types to node
+	* @param	aAccessTypes		Access types
+	*/
+	void SetAccessTypesL( TSmlDmAccessTypes aAccessTypes );
+
+	/**
+	* Sets default value to node
+	* @param	aDefaultValue		Default value
+	*/
+	void SetDefaultValueL( const TDesC8& aDefaultValue ); 
+
+	/**
+	* Sets description to node
+	* @param	aDescription		Description
+	*/
+	void SetDescriptionL( const TDesC8& aDescription );
+
+	/**
+	* Sets format of the node
+	* @param	aFormat				Format
+	*/
+	void SetDFFormatL( TDFFormat aFormat );
+	
+	/**
+	* Sets occurrence of the node
+	* @param	aOccurence			Occurrence
+	*/
+	void SetOccurenceL( TOccurence aOccurence );
+
+
+    /**
+	* Sets case sense of the node
+	* @param	aOccurence			Occurrence
+	*/
+	void SetCaseSenseL( TBool aCaseSense );
+
+	/**
+	* Sets scope of the node
+	* @param	aScope			Scope
+	*/
+	void SetScopeL( TScope aScope );
+
+	/**
+	* Sets Title of the node
+	* @param	aTitle			Title
+	*/
+	void SetDFTitleL( const TDesC8& aTitle );
+
+	/**
+	* Sets mime type of the node
+	* @param	aMimeType 		Mime type
+	*/
+	void AddDFTypeMimeTypeL( const TDesC8& aMimeType );
+	
+	/**
+	* Sets the object as object group. Inherited from MSmlDmDDFObject
+	* but not used anymore
+	*/
+	void SetAsObjectGroup();
+
+	/**
+	* Compare data
+	* @param	aNodeName			Name of the child node
+	* @return						Reference to created child object
+	*/
+	MSmlDmDDFObject& AddChildObjectL(const TDesC8& aNodeName);
+
+	/**
+	* Add nameless child to node
+	* @return						Reference to created child object
+	*/
+	MSmlDmDDFObject& AddChildObjectGroupL();
+	
+
+	/**
+	* Pointer to parent node
+	*/
+	CNSmlDmNode* iParent;
+
+
+private:
+	};
+
+
+// ===========================================================================
+// CNSmlDmNodeList 
+// ===========================================================================
+/**
+* CNSmlDmNodeList is node list object in DDF structure and it contains pointer
+* to node and pointer to next CNSmlDmNodeList object
+*
+*  @since
+*/
+class CNSmlDmNodeList : public CBase
+	{
+public:
+	/**
+	* Constructor
+	*/
+	CNSmlDmNodeList();
+	
+	/**
+	* Pointer to node
+	*/
+	CNSmlDmNode* iNode;
+
+	/**
+	* Pointer to next list item
+	*/
+	CNSmlDmNodeList* iNext;
+
+	/**
+	* Generates nodelist xml to aObject
+	* @param	aObject			Buffer to write xml
+	*/
+	void GenerateNodeListL(CBufBase& aObject);
+
+	/**
+	* Generates nodelist wbxml to aObject
+	* @param	aStream			Stream to write wbxml
+	*/
+	void GenerateNodeListWBXMLL(RWriteStream& aStream);
+	
+	/**
+	* Parse nodelist wbxml to structure
+	* @param	aReader			Stream which contains wbxml
+	* @param	aNodeListPtr	Reference to nodelist ptr where to build
+	*							ddf structure
+	* @param	aParent			Parent node pointer
+	*/
+	TUint ParseNodeListWBXMLL(RReadStream& aReader,
+		CNSmlDmNodeList*& aNodeListPtr, CNSmlDmNode* aParent);
+		
+	/**
+	* Parse node wbxml to structure
+	* @param	aReader			Stream which contains wbxml
+	* @param	aNode			Reference to node where to build
+	*							ddf structure
+	*/
+	void ParseNodeWBXMLL(RReadStream& aReader,CNSmlDmNode* aNode );
+
+	/**
+	* Parse df properties wbxml to structure
+	* @param	aReader			Stream which contains wbxml
+	* @param	aNodePtr		Pointer to node where to build
+	*							ddf structure
+	*/
+   	void ParseDFPropertiesWBXMLL(RReadStream& aReader,
+   		MSmlDmDDFObject* aNodePtr );
+   		
+	/**
+	* Get adapter id and host session id
+	* @param	aImplUid		Reference where to write adapter id
+	* @param	aSessionId		Reference where to write session id
+	*/
+	IMPORT_C void GetImplUid(TUint32& aImplUid,TUint8& aSessionId);
+
+private:
+	};
+
+
+// ===========================================================================
+// CNSmlDmMgmtTree 
+// ===========================================================================
+/**
+* CNSmlDmMgmtTree is the root node in DDF structure
+*
+*  @since
+*/
+class CNSmlDmMgmtTree : public CBase, public MSmlDmDDFObject
+	{
+public:
+	/**
+	* Two-phased construction
+	* @return				Pointer to newly created instance
+	*/
+	IMPORT_C static CNSmlDmMgmtTree* NewL();
+
+	/**
+	* Destructor
+	*/
+	virtual ~CNSmlDmMgmtTree();
+
+	/**
+	* Inherited from MSmlDmDDFObject, no use in this class
+	* @param	aAccessTypes		Access type
+	*/
+	void SetAccessTypesL( TSmlDmAccessTypes aAccessTypes );
+
+	/**
+	* Inherited from MSmlDmDDFObject, no use in this class
+	* @param	aDefaultValue		Default value
+	*/
+	void SetDefaultValueL( const TDesC8& aDefaultValue ); 
+
+	/**
+	* Inherited from MSmlDmDDFObject, no use in this class
+	* @param	aDescription		Description
+	*/
+	void SetDescriptionL( const TDesC8& aDescription );
+
+	/**
+	* Inherited from MSmlDmDDFObject, no use in this class
+	* @param	aFormat			Format
+	*/
+	void SetDFFormatL( TDFFormat aFormat );
+
+	/**
+	* Inherited from MSmlDmDDFObject, no use in this class
+	* @param	aOccurence		Occurence
+	*/
+	void SetOccurenceL( TOccurence aOccurence );
+
+	/**
+	* Inherited from MSmlDmDDFObject, no use in this class
+	* @param	aScope			Scope
+	*/
+	void SetScopeL( TScope aScope );
+
+	/**
+	* Inherited from MSmlDmDDFObject, no use in this class
+	* @param	aTitle			Title
+	*/
+	void SetDFTitleL( const TDesC8& aTitle );
+
+	/**
+	* Inherited from MSmlDmDDFObject, no use in this class
+	* @param	aMimeType			Mime type
+	*/
+	void AddDFTypeMimeTypeL( const TDesC8& aMimeType );
+
+	/**
+	* Inherited from MSmlDmDDFObject, no use in this class
+	*/
+	void SetAsObjectGroup();
+
+	/**
+	* Adds child object with name under th root node.
+	* This is inherited from MSmlDmDDFObject.
+	* @param	aNodeName		Node name
+	*/
+	MSmlDmDDFObject& AddChildObjectL(const TDesC8& aNodeName);
+
+	/**
+	* Inherited from MSmlDmDDFObject, no use in this class
+	*/
+	MSmlDmDDFObject& AddChildObjectGroupL();
+
+	/**
+	* Generates xml of the whole DDF and writes it to aObject
+	* @param	aObject			Reference to buffer where to write
+	*							generated xml
+	*/
+	IMPORT_C void GenerateXMLL(CBufBase& aObject);
+
+	/**
+	* Looks through the ddf tree and sets the adapter id to new static nodes
+	* @param	aUid			Adapter id
+	*/
+	IMPORT_C void SetAdapterUid(TUint32 aUid);
+
+	/**
+	* Looks through the ddf tree and sets the session id to new static nodes
+	* @param	aServerId		Id of the session to correct host server
+	*/
+	IMPORT_C void SetServerId(TUint8 aServerId);
+
+	/**
+	* Returns pointer to actual root nodelist pointer. The whole tree can be
+	* accessed through this pointer
+	* @reutrn				Root nodelist pointer
+	*/
+	IMPORT_C CNSmlDmNodeList* NodeListPtr();
+
+	/**
+	* Generates wbxml of the whole DDF and writes it to aStream
+	* @param	aStream			Reference to stream where to write
+	*							generated wbxml
+	*/
+	IMPORT_C void GenerateWBXMLL(RWriteStream& aStream);
+
+	/**
+	* Parses wbxml from stream to ddf structure. This is used when
+	* ddf subtree is got from hostserver. The ddf is parsed on the existing
+	* tree, i.e the whole tree is got when all subtrees are parsed.
+	* @param	aReader			Reference to stream where to read wbxml
+	*							
+	*/
+	IMPORT_C void ParseWBXMLL(RReadStream& aReader);
+
+	/**
+	* Finds the node pointed by aURI from tree 
+	* @param	aURI			Uri
+	* @param	aFinalPtr		Found pointer is written here
+	* @return					ENSmlDmDDFLeaf,ENSmlDmDDFNode or
+	*							ENSmlDmDDFNotFound
+	*/
+	IMPORT_C TNSmlDmDDFFormat FindNameFromNodeListL(const TDesC8& aURI,
+		CNSmlDmNodeList*& aFinalPtr);
+		
+	/**
+	* Finds the allrady loaded adapters 
+	* @param	aLoadedAdapters Arrayf of found adapter ids			
+	* @param	aNodeListPtr	Algorythm is recursive and next level nodelist
+	*							pointer is provided here
+	* @return					Not used
+	*/
+	IMPORT_C TBool FindLoadedAdaptersL(RArray<TUint32>& aLoadedAdapters,
+		CNSmlDmNodeList* aNodeListPtr=NULL);
+
+	
+private:
+	/**
+	* Constructor
+	*/
+	CNSmlDmMgmtTree();
+
+	/**
+	* Second phase constructor
+	*/
+	void ConstructL();
+
+	/**
+	* Looks through the ddf tree and sets the adapter id to new static nodes
+	* @param	aNodeListPtr	Algorythm is recursive and next level nodelist
+	*							pointer is provided here
+	* @param	aUid			Adapter id
+	*/
+	TBool SetUidToNewItems ( CNSmlDmNodeList* aNodeListPtr, TUint32 aUid);
+
+	/**
+	* Looks through the ddf tree and sets the session id to new static nodes
+	* @param	aNodeListPtr	Algorythm is recursive and next level nodelist
+	*							pointer is provided here
+	* @param	aServerId		Id of the session to correct host server
+	*/
+	TBool SetServerIdToNewItems ( CNSmlDmNodeList* aNodeListPtr,
+		TUint8 aServerId );
+
+public:
+	
+	/**
+	* Pointer to root node list pointer
+	*/
+	CNSmlDmNodeList* iNodeListPtr;
+
+
+private:
+	/**
+	* dtd version
+	*/
+	CNSmlDmPcdata iVerDTD;
+	};
+
+
+
+
+#endif // __NSMLDMTREEDTD_H