diff -r 000000000000 -r c8caa15ef882 xdmprotocols/LocalProtocol/inc/LocalDocumentNode.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xdmprotocols/LocalProtocol/inc/LocalDocumentNode.h Tue Feb 02 01:05:17 2010 +0200 @@ -0,0 +1,242 @@ +/* +* 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 DECLARATION +NONSHARABLE_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