--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/xdmprotocols/LocalProtocol/inc/LocalDocumentNode.h Wed Sep 01 12:23:14 2010 +0100
@@ -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