xdmprotocols/XcapProtocol/src/XcapDocumentNode.cpp
branchRCL_3
changeset 18 fbd2e7cec7ef
parent 0 c8caa15ef882
equal deleted inserted replaced
17:2669f8761a99 18:fbd2e7cec7ef
       
     1 /*
       
     2 * Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: CXcapDocumentNode 
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 
       
    21 // INCLUDE FILES
       
    22 #include "XdmDocument.h"
       
    23 #include "XcapProtocol.h"
       
    24 #include "XcapDocumentNode.h"
       
    25 #include "XcapNodeAttribute.h"
       
    26                                         
       
    27 // ----------------------------------------------------------
       
    28 // CXcapDocumentNode::CXcapDocumentNode
       
    29 // 
       
    30 // ----------------------------------------------------------
       
    31 //
       
    32 CXcapDocumentNode::CXcapDocumentNode( CXdmEngine& aXdmEngine,
       
    33                                       CXcapProtocol& aXcapProtocol ) :
       
    34                                       CXdmDocumentNode( aXdmEngine, ( MXdmNodeFactory& )*this ),
       
    35                                       iXcapProtocol( aXcapProtocol )                                    
       
    36                                                 
       
    37     {
       
    38     }
       
    39 
       
    40 
       
    41 // ----------------------------------------------------------
       
    42 // CXcapDocumentNode::CXcapDocumentNode
       
    43 // 
       
    44 // ----------------------------------------------------------
       
    45 //
       
    46 CXcapDocumentNode::CXcapDocumentNode( CXdmEngine& aXdmEngine,
       
    47                                       CXcapProtocol& aXcapProtocol,
       
    48                                       CXdmDocumentNode* aParentNode ) :
       
    49                                       CXdmDocumentNode( aXdmEngine,
       
    50                                     ( MXdmNodeFactory& )*this, aParentNode ),
       
    51                                       iXcapProtocol( aXcapProtocol )
       
    52                                                 
       
    53     {   
       
    54     }
       
    55 
       
    56 // ----------------------------------------------------------
       
    57 // CXcapDocumentNode::CXcapDocumentNode
       
    58 // 
       
    59 // ----------------------------------------------------------
       
    60 //
       
    61 CXcapDocumentNode::CXcapDocumentNode( const TBool aLeafNode,
       
    62                                       CXdmEngine& aXdmEngine,
       
    63                                       CXcapProtocol& aXcapProtocol,
       
    64                                       CXdmDocumentNode* aParentNode ) :
       
    65                                       CXdmDocumentNode( aLeafNode, aXdmEngine, 
       
    66                                       ( MXdmNodeFactory& )*this, aParentNode ),
       
    67                                       iXcapProtocol( aXcapProtocol )                                                
       
    68     {
       
    69     
       
    70     }
       
    71 
       
    72 // ----------------------------------------------------------
       
    73 // CXcapDocumentNode::NewL
       
    74 // 
       
    75 // ----------------------------------------------------------
       
    76 //
       
    77 CXcapDocumentNode* CXcapDocumentNode::NewL( CXdmEngine& aXdmEngine,
       
    78                                             CXcapProtocol& aXcapProtocol )
       
    79     {
       
    80     return new ( ELeave ) CXcapDocumentNode( aXdmEngine, aXcapProtocol );
       
    81     }
       
    82 
       
    83 // ----------------------------------------------------------
       
    84 // CXcapDocumentNode::NewL
       
    85 // 
       
    86 // ----------------------------------------------------------
       
    87 //
       
    88 CXcapDocumentNode* CXcapDocumentNode::NewL( CXdmEngine& aXdmEngine,
       
    89                                             const TDesC& aNodeName,
       
    90                                             CXcapProtocol& aXcapProtocol )
       
    91     {
       
    92     CXcapDocumentNode* self = new ( ELeave ) CXcapDocumentNode( aXdmEngine, aXcapProtocol );
       
    93     CleanupStack::PushL( self );
       
    94     self->BaseConstructL( aNodeName );
       
    95     CleanupStack::Pop();
       
    96     return self;
       
    97     }
       
    98 
       
    99 // ----------------------------------------------------------
       
   100 // CXcapDocumentNode::NewL
       
   101 // 
       
   102 // ----------------------------------------------------------
       
   103 //
       
   104 CXcapDocumentNode* CXcapDocumentNode::NewL( CXdmEngine& aXdmEngine,
       
   105                                             CXcapProtocol& aXcapProtocol,
       
   106                                             const CXdmDocumentNode& aAnotherNode,
       
   107                                             const CXdmDocumentNode& aParentNode )
       
   108     {
       
   109     CXcapDocumentNode* self = new ( ELeave ) CXcapDocumentNode( aXdmEngine, aXcapProtocol );
       
   110     CleanupStack::PushL( self );
       
   111     self->BaseConstructL( aAnotherNode.NodeName() );
       
   112     self->CopyConstructL( aAnotherNode, aParentNode );
       
   113     CleanupStack::Pop();
       
   114     return self;
       
   115     }
       
   116     
       
   117 // ----------------------------------------------------------
       
   118 // CXcapDocumentNode::NewL
       
   119 // 
       
   120 // ----------------------------------------------------------
       
   121 //
       
   122 CXcapDocumentNode* CXcapDocumentNode::NewL( CXdmEngine& aXdmEngine,
       
   123                                             const TDesC& aNodeName,
       
   124                                             CXcapProtocol& aXcapProtocol,
       
   125                                             CXdmDocumentNode* aParentNode )
       
   126     {
       
   127     CXcapDocumentNode* self = new ( ELeave ) CXcapDocumentNode( aXdmEngine, aXcapProtocol, aParentNode );
       
   128     CleanupStack::PushL( self );
       
   129     self->BaseConstructL( aNodeName );
       
   130     CleanupStack::Pop();
       
   131     return self;
       
   132     }
       
   133 
       
   134 // ----------------------------------------------------------
       
   135 // CXcapDocumentNode::NewL
       
   136 // 
       
   137 // ----------------------------------------------------------
       
   138 //
       
   139 CXcapDocumentNode* CXcapDocumentNode::NewL( CXdmEngine& aXdmEngine,
       
   140                                             const TBool aLeafNode,
       
   141                                             const TDesC& aNodeName,
       
   142                                             CXcapProtocol& aXcapProtocol,
       
   143                                             CXdmDocumentNode* aParentNode  )
       
   144     {
       
   145     CXcapDocumentNode* self = new ( ELeave ) CXcapDocumentNode( aLeafNode, aXdmEngine, aXcapProtocol, aParentNode );
       
   146     CleanupStack::PushL( self );
       
   147     self->BaseConstructL( aNodeName );
       
   148     CleanupStack::Pop();
       
   149     return self;
       
   150     }
       
   151 
       
   152 // ----------------------------------------------------------
       
   153 // CXdmDocumentNode::NewL
       
   154 // 
       
   155 // ----------------------------------------------------------
       
   156 //
       
   157 CXcapDocumentNode* CXcapDocumentNode::NewL( CXdmEngine& aXdmEngine,
       
   158                                             const TBool aLeafNode,
       
   159                                             CXcapProtocol& aXcapProtocol,
       
   160                                             CXdmDocumentNode* aParentNode )
       
   161     {
       
   162     return new ( ELeave ) CXcapDocumentNode( aLeafNode, aXdmEngine, aXcapProtocol, aParentNode );
       
   163     }
       
   164 
       
   165 // ----------------------------------------------------------
       
   166 // CXcapDocumentNode::CopyConstructL
       
   167 // 
       
   168 // ----------------------------------------------------------
       
   169 //
       
   170 void CXcapDocumentNode::CopyConstructL( const CXdmDocumentNode& aAnotherNode,
       
   171 		                                const CXdmDocumentNode& aParentNode )
       
   172     {
       
   173     CXdmDocumentNode::CopyConstructL( aAnotherNode, aParentNode );
       
   174     }
       
   175         
       
   176 // ----------------------------------------------------
       
   177 // CXcapDocumentNode::~CXcapDocumentNode
       
   178 // 
       
   179 // ----------------------------------------------------
       
   180 //
       
   181 EXPORT_C CXcapDocumentNode::~CXcapDocumentNode()
       
   182     {
       
   183     #ifdef _DEBUG
       
   184         iXcapProtocol.WriteToLog( _L8( "CXcapDocumentNode::~CXcapDocumentNode()" ) );
       
   185     #endif
       
   186     delete iPrefix;
       
   187     iPrefix = NULL;
       
   188     }
       
   189 
       
   190 // ----------------------------------------------------
       
   191 // CXcapDocumentNode::ChileNodeL
       
   192 // 
       
   193 // ----------------------------------------------------
       
   194 //
       
   195 CXdmDocumentNode* CXcapDocumentNode::ChileNodeL()
       
   196     {
       
   197     return CXcapDocumentNode::NewL( iXdmEngine, EFalse, iXcapProtocol, this );
       
   198     }
       
   199     
       
   200 // ----------------------------------------------------
       
   201 // CXcapDocumentNode::ChileNodeL
       
   202 // 
       
   203 // ----------------------------------------------------
       
   204 //
       
   205 CXdmDocumentNode* CXcapDocumentNode::ChileNodeL( const TDesC& aChildName )
       
   206     {
       
   207     return CXcapDocumentNode::NewL( iXdmEngine, EFalse, aChildName, iXcapProtocol, this );
       
   208     }
       
   209 
       
   210 // ----------------------------------------------------
       
   211 // CXcapDocumentNode::ChileNodeL
       
   212 // 
       
   213 // ----------------------------------------------------
       
   214 //
       
   215 CXdmDocumentNode* CXcapDocumentNode::ChileNodeL( const CXdmDocumentNode* aAnotherNode  )
       
   216     {
       
   217     return CXcapDocumentNode::NewL( iXdmEngine, iXcapProtocol, *aAnotherNode, *this );
       
   218     }
       
   219 
       
   220 // ----------------------------------------------------
       
   221 // CXcapDocumentNode::CreateAttributeL
       
   222 // 
       
   223 // ----------------------------------------------------
       
   224 //
       
   225 CXdmNodeAttribute* CXcapDocumentNode::AttributeL()
       
   226     {
       
   227     return CXcapNodeAttribute::NewL( iXdmEngine, this );
       
   228     }
       
   229     
       
   230 // ----------------------------------------------------
       
   231 // CXcapDocumentNode::CreateAttributeL
       
   232 // 
       
   233 // ----------------------------------------------------
       
   234 //
       
   235 CXdmNodeAttribute* CXcapDocumentNode::AttributeL( const TDesC& aAttributeName )
       
   236     {
       
   237     return CXcapNodeAttribute::NewL( iXdmEngine, aAttributeName, this );
       
   238     }
       
   239 
       
   240 // ----------------------------------------------------------
       
   241 // CXcapDocumentNode::RemoveNode
       
   242 // 
       
   243 // ----------------------------------------------------------
       
   244 //
       
   245 void CXcapDocumentNode::RemoveNode( CXcapDocumentNode* aChileNode )
       
   246     {
       
   247     #ifdef _DEBUG
       
   248         iXcapProtocol.WriteToLog( _L8( "CXcapDocumentNode::RemoveNode()" ) );
       
   249     #endif
       
   250     CXdmDocumentNode* remove = NULL;
       
   251     TInt index = iChildren.Find( aChileNode );
       
   252     __ASSERT_DEBUG( index >= 0, User::Panic( _L( "CXcapDocumentNode" ), 0 ) );
       
   253     remove = iChildren[index];
       
   254     iChildren.Remove( index );
       
   255     delete remove;
       
   256     remove = NULL;
       
   257     }
       
   258 
       
   259 // ----------------------------------------------------------
       
   260 // CXcapDocumentNode::SetPrefix
       
   261 // 
       
   262 // ----------------------------------------------------------
       
   263 //
       
   264 void CXcapDocumentNode::SetPrefixL( const TDesC8& aPrefix )
       
   265     {
       
   266     delete iPrefix;
       
   267     iPrefix = NULL;
       
   268     iPrefix = aPrefix.AllocL();
       
   269     }
       
   270     
       
   271 // ----------------------------------------------------------
       
   272 // CXcapDocumentNode::NamespacePrefix
       
   273 // 
       
   274 // ----------------------------------------------------------
       
   275 //
       
   276 TPtrC8 CXcapDocumentNode::Prefix() const
       
   277     {
       
   278     return iPrefix != NULL ? iPrefix->Des() : TPtrC8();
       
   279     }
       
   280 
       
   281