xdmprotocols/XcapProtocol/src/XcapDocumentNode.cpp
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:23:14 +0100
branchRCL_3
changeset 35 fbd2e7cec7ef
parent 0 c8caa15ef882
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201027 Kit: 201035

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