--- /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();
+ }
+
+