/** 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: CLocalDocumentNode**/#ifndef __LOCALDOCUMENTNODE__#define __LOCALDOCUMENTNODE__#include "XdmNodeFactory.h"#include "XdmDocumentNode.h"class CLocalProtocol;class CXdmNodeAttribute;//CLASS DECLARATIONNONSHARABLE_CLASS( CLocalDocumentNode ) : public CXdmDocumentNode, public MXdmNodeFactory { public: // Constructors and destructor /** * Destructor. */ IMPORT_C virtual ~CLocalDocumentNode(); public: // New functions /** * Two-phased constructor. * * @param TDesC8& Name of the new element * @return CXdmDocumentNode* */ static CLocalDocumentNode* NewL( CXdmEngine& aXdmEngine, CLocalProtocol& aLocalProtocol ); /** * Two-phased constructor. * * @param TDesC8& Name of the new element * @return CXdmDocumentNode* */ static CLocalDocumentNode* NewL( CXdmEngine& aXdmEngine, const TDesC& aNodeName, CLocalProtocol& aLocalProtocol ); /** * Two-phased constructor. * * @param TDesC8& Name of the new element * @return CXdmDocumentNode* */ static CLocalDocumentNode* NewL( CXdmEngine& aXdmEngine, CLocalProtocol& aLocalProtocol, const CXdmDocumentNode& aAnotherNode, const CXdmDocumentNode& aParentNode ); /** * Two-phased constructor. * * @param TDesC8& Name of the new element * @param CXdmDocumentNode* The parent of the new node * @return CXdmDocumentNode* */ static CLocalDocumentNode* NewL( CXdmEngine& aXdmEngine, const TDesC& aNodeName, CXdmDocumentNode* aParentNode, CLocalProtocol& aLocalProtocol ); /** * Two-phased constructor. * * @param TBool Leaf node indicator * @param TDesC8& Name of the new element * @param CXdmDocumentNode* The parent of the new node * @return CXdmDocumentNode* */ static CLocalDocumentNode* NewL( const TBool aLeafNode, CXdmEngine& aXdmEngine, const TDesC& aNodeName, CXdmDocumentNode* aParentNode, CLocalProtocol& aLocalProtocol ); /** * Two-phased constructor. * * @param TBool Leaf node indicator * @param TDesC8& Name of the new element * @param CXdmDocumentNode* The parent of the new node * @return CXdmDocumentNode* */ static CLocalDocumentNode* NewL( const TBool aLeafNode, CXdmEngine& aXdmEngine, CXdmDocumentNode* aParentNode, CLocalProtocol& aLocalProtocol ); /** * Set the next node in the list * @param The next node in the list * @return void */ void SetParentNode( CLocalDocumentNode*& aParentNode ); public: /** * Set the next node in the list * @param The next node in the list * @return void */ IMPORT_C void RemoveLocalL( CXdmDocumentNode* aChileNode ); /** * Set the next node in the list * @param The next node in the list * @return void */ IMPORT_C void AppendLocalL( CXdmDocumentNode* aChileNode ); /** * Set the next node in the list * @param The next node in the list * @return void */ IMPORT_C void ReplaceLocalL( CXdmDocumentNode* aNewNode, CXdmDocumentNode* aTargetNode ); private: /** * C++ constructor, private version. */ CLocalDocumentNode( CXdmEngine& aXdmEngine, CLocalProtocol& aLocalProtocol ); /** * C++ constructor, protected version. * * @param CXdmDocumentNode* The parent node of this element */ CLocalDocumentNode( CXdmEngine& aXdmEngine, CXdmDocumentNode* aParentNode, CLocalProtocol& aLocalProtocol ); /** * C++ constructor, another private version. */ CLocalDocumentNode( const TBool aLeafNode, CXdmEngine& aXdmEngine, CXdmDocumentNode* aParentNode, CLocalProtocol& aLocalProtocol ); /** * By default Symbian OS constructor is private. * * @param TDesC8& Name of this node * @return void */ virtual void CopyConstructL( const CXdmDocumentNode& aAnotherNode, const CXdmDocumentNode& aParentNode ); private: //From MXdmNodeFactory /** * Create a new child element * * @param TDesC8& Name of the new element * @return CXdmDocumentNode* */ CXdmDocumentNode* ChileNodeL(); /** * Create a new child element * * @param TDesC8& Name of the new element * @return CXdmDocumentNode* */ CXdmDocumentNode* ChileNodeL( const TDesC& aChildName ); /** * Create a new child element * * @param TDesC8& Name of the new element * @return CXdmDocumentNode* */ CXdmDocumentNode* ChileNodeL( const CXdmDocumentNode* aAnotherNode ); /** * Create a new attribute * * @param TDesC8& Name of the new attribute * @return CXdmNodeAttribute* */ CXdmNodeAttribute* AttributeL(); /** * Create a new attribute * * @param TDesC8& Name of the new attribute * @return CXdmNodeAttribute* */ CXdmNodeAttribute* AttributeL( const TDesC& aAttributeName ); private: //From MXdmNodeInterface /** * Copies the request data * @param aRequestData Data to be sent */ TPtrC8 Prefix() const; /** * Copies the request data * @param aRequestData Data to be sent */ void SetPrefixL( const TDesC8& aNamespacePrefix ); private: HBufC8* iPrefix; CLocalProtocol& iLocalProtocol; CLocalDocumentNode* iNextNode; };#endif //__LOCALDOCUMENTNODE__// End of File