diff -r 2669f8761a99 -r fbd2e7cec7ef xdmprotocols/XcapProtocol/src/XcapDocumentNode.cpp --- /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(); + } + +