xdmprotocols/XcapProtocol/src/XcapDocumentNode.cpp
branchRCL_3
changeset 35 fbd2e7cec7ef
parent 0 c8caa15ef882
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xdmprotocols/XcapProtocol/src/XcapDocumentNode.cpp	Wed Sep 01 12:23:14 2010 +0100
@@ -0,0 +1,281 @@
+/*
+* 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: CXcapDocumentNode 
+*
+*/
+
+
+
+
+// INCLUDE FILES
+#include "XdmDocument.h"
+#include "XcapProtocol.h"
+#include "XcapDocumentNode.h"
+#include "XcapNodeAttribute.h"
+                                        
+// ----------------------------------------------------------
+// CXcapDocumentNode::CXcapDocumentNode
+// 
+// ----------------------------------------------------------
+//
+CXcapDocumentNode::CXcapDocumentNode( CXdmEngine& aXdmEngine,
+                                      CXcapProtocol& aXcapProtocol ) :
+                                      CXdmDocumentNode( aXdmEngine, ( MXdmNodeFactory& )*this ),
+                                      iXcapProtocol( aXcapProtocol )                                    
+                                                
+    {
+    }
+
+
+// ----------------------------------------------------------
+// CXcapDocumentNode::CXcapDocumentNode
+// 
+// ----------------------------------------------------------
+//
+CXcapDocumentNode::CXcapDocumentNode( CXdmEngine& aXdmEngine,
+                                      CXcapProtocol& aXcapProtocol,
+                                      CXdmDocumentNode* aParentNode ) :
+                                      CXdmDocumentNode( aXdmEngine,
+                                    ( MXdmNodeFactory& )*this, aParentNode ),
+                                      iXcapProtocol( aXcapProtocol )
+                                                
+    {   
+    }
+
+// ----------------------------------------------------------
+// CXcapDocumentNode::CXcapDocumentNode
+// 
+// ----------------------------------------------------------
+//
+CXcapDocumentNode::CXcapDocumentNode( const TBool aLeafNode,
+                                      CXdmEngine& aXdmEngine,
+                                      CXcapProtocol& aXcapProtocol,
+                                      CXdmDocumentNode* aParentNode ) :
+                                      CXdmDocumentNode( aLeafNode, aXdmEngine, 
+                                      ( MXdmNodeFactory& )*this, aParentNode ),
+                                      iXcapProtocol( aXcapProtocol )                                                
+    {
+    
+    }
+
+// ----------------------------------------------------------
+// CXcapDocumentNode::NewL
+// 
+// ----------------------------------------------------------
+//
+CXcapDocumentNode* CXcapDocumentNode::NewL( CXdmEngine& aXdmEngine,
+                                            CXcapProtocol& aXcapProtocol )
+    {
+    return new ( ELeave ) CXcapDocumentNode( aXdmEngine, aXcapProtocol );
+    }
+
+// ----------------------------------------------------------
+// CXcapDocumentNode::NewL
+// 
+// ----------------------------------------------------------
+//
+CXcapDocumentNode* CXcapDocumentNode::NewL( CXdmEngine& aXdmEngine,
+                                            const TDesC& aNodeName,
+                                            CXcapProtocol& aXcapProtocol )
+    {
+    CXcapDocumentNode* self = new ( ELeave ) CXcapDocumentNode( aXdmEngine, aXcapProtocol );
+    CleanupStack::PushL( self );
+    self->BaseConstructL( aNodeName );
+    CleanupStack::Pop();
+    return self;
+    }
+
+// ----------------------------------------------------------
+// CXcapDocumentNode::NewL
+// 
+// ----------------------------------------------------------
+//
+CXcapDocumentNode* CXcapDocumentNode::NewL( CXdmEngine& aXdmEngine,
+                                            CXcapProtocol& aXcapProtocol,
+                                            const CXdmDocumentNode& aAnotherNode,
+                                            const CXdmDocumentNode& aParentNode )
+    {
+    CXcapDocumentNode* self = new ( ELeave ) CXcapDocumentNode( aXdmEngine, aXcapProtocol );
+    CleanupStack::PushL( self );
+    self->BaseConstructL( aAnotherNode.NodeName() );
+    self->CopyConstructL( aAnotherNode, aParentNode );
+    CleanupStack::Pop();
+    return self;
+    }
+    
+// ----------------------------------------------------------
+// CXcapDocumentNode::NewL
+// 
+// ----------------------------------------------------------
+//
+CXcapDocumentNode* CXcapDocumentNode::NewL( CXdmEngine& aXdmEngine,
+                                            const TDesC& aNodeName,
+                                            CXcapProtocol& aXcapProtocol,
+                                            CXdmDocumentNode* aParentNode )
+    {
+    CXcapDocumentNode* self = new ( ELeave ) CXcapDocumentNode( aXdmEngine, aXcapProtocol, aParentNode );
+    CleanupStack::PushL( self );
+    self->BaseConstructL( aNodeName );
+    CleanupStack::Pop();
+    return self;
+    }
+
+// ----------------------------------------------------------
+// CXcapDocumentNode::NewL
+// 
+// ----------------------------------------------------------
+//
+CXcapDocumentNode* CXcapDocumentNode::NewL( CXdmEngine& aXdmEngine,
+                                            const TBool aLeafNode,
+                                            const TDesC& aNodeName,
+                                            CXcapProtocol& aXcapProtocol,
+                                            CXdmDocumentNode* aParentNode  )
+    {
+    CXcapDocumentNode* self = new ( ELeave ) CXcapDocumentNode( aLeafNode, aXdmEngine, aXcapProtocol, aParentNode );
+    CleanupStack::PushL( self );
+    self->BaseConstructL( aNodeName );
+    CleanupStack::Pop();
+    return self;
+    }
+
+// ----------------------------------------------------------
+// CXdmDocumentNode::NewL
+// 
+// ----------------------------------------------------------
+//
+CXcapDocumentNode* CXcapDocumentNode::NewL( CXdmEngine& aXdmEngine,
+                                            const TBool aLeafNode,
+                                            CXcapProtocol& aXcapProtocol,
+                                            CXdmDocumentNode* aParentNode )
+    {
+    return new ( ELeave ) CXcapDocumentNode( aLeafNode, aXdmEngine, aXcapProtocol, aParentNode );
+    }
+
+// ----------------------------------------------------------
+// CXcapDocumentNode::CopyConstructL
+// 
+// ----------------------------------------------------------
+//
+void CXcapDocumentNode::CopyConstructL( const CXdmDocumentNode& aAnotherNode,
+		                                const CXdmDocumentNode& aParentNode )
+    {
+    CXdmDocumentNode::CopyConstructL( aAnotherNode, aParentNode );
+    }
+        
+// ----------------------------------------------------
+// CXcapDocumentNode::~CXcapDocumentNode
+// 
+// ----------------------------------------------------
+//
+EXPORT_C CXcapDocumentNode::~CXcapDocumentNode()
+    {
+    #ifdef _DEBUG
+        iXcapProtocol.WriteToLog( _L8( "CXcapDocumentNode::~CXcapDocumentNode()" ) );
+    #endif
+    delete iPrefix;
+    iPrefix = NULL;
+    }
+
+// ----------------------------------------------------
+// CXcapDocumentNode::ChileNodeL
+// 
+// ----------------------------------------------------
+//
+CXdmDocumentNode* CXcapDocumentNode::ChileNodeL()
+    {
+    return CXcapDocumentNode::NewL( iXdmEngine, EFalse, iXcapProtocol, this );
+    }
+    
+// ----------------------------------------------------
+// CXcapDocumentNode::ChileNodeL
+// 
+// ----------------------------------------------------
+//
+CXdmDocumentNode* CXcapDocumentNode::ChileNodeL( const TDesC& aChildName )
+    {
+    return CXcapDocumentNode::NewL( iXdmEngine, EFalse, aChildName, iXcapProtocol, this );
+    }
+
+// ----------------------------------------------------
+// CXcapDocumentNode::ChileNodeL
+// 
+// ----------------------------------------------------
+//
+CXdmDocumentNode* CXcapDocumentNode::ChileNodeL( const CXdmDocumentNode* aAnotherNode  )
+    {
+    return CXcapDocumentNode::NewL( iXdmEngine, iXcapProtocol, *aAnotherNode, *this );
+    }
+
+// ----------------------------------------------------
+// CXcapDocumentNode::CreateAttributeL
+// 
+// ----------------------------------------------------
+//
+CXdmNodeAttribute* CXcapDocumentNode::AttributeL()
+    {
+    return CXcapNodeAttribute::NewL( iXdmEngine, this );
+    }
+    
+// ----------------------------------------------------
+// CXcapDocumentNode::CreateAttributeL
+// 
+// ----------------------------------------------------
+//
+CXdmNodeAttribute* CXcapDocumentNode::AttributeL( const TDesC& aAttributeName )
+    {
+    return CXcapNodeAttribute::NewL( iXdmEngine, aAttributeName, this );
+    }
+
+// ----------------------------------------------------------
+// CXcapDocumentNode::RemoveNode
+// 
+// ----------------------------------------------------------
+//
+void CXcapDocumentNode::RemoveNode( CXcapDocumentNode* aChileNode )
+    {
+    #ifdef _DEBUG
+        iXcapProtocol.WriteToLog( _L8( "CXcapDocumentNode::RemoveNode()" ) );
+    #endif
+    CXdmDocumentNode* remove = NULL;
+    TInt index = iChildren.Find( aChileNode );
+    __ASSERT_DEBUG( index >= 0, User::Panic( _L( "CXcapDocumentNode" ), 0 ) );
+    remove = iChildren[index];
+    iChildren.Remove( index );
+    delete remove;
+    remove = NULL;
+    }
+
+// ----------------------------------------------------------
+// CXcapDocumentNode::SetPrefix
+// 
+// ----------------------------------------------------------
+//
+void CXcapDocumentNode::SetPrefixL( const TDesC8& aPrefix )
+    {
+    delete iPrefix;
+    iPrefix = NULL;
+    iPrefix = aPrefix.AllocL();
+    }
+    
+// ----------------------------------------------------------
+// CXcapDocumentNode::NamespacePrefix
+// 
+// ----------------------------------------------------------
+//
+TPtrC8 CXcapDocumentNode::Prefix() const
+    {
+    return iPrefix != NULL ? iPrefix->Des() : TPtrC8();
+    }
+
+