xml/legacyminidomparser/XMLDom/SRC/GMXMLElement.cpp
changeset 34 c7e9f1c97567
parent 25 417699dc19c9
child 36 172b09aa4eb6
--- a/xml/legacyminidomparser/XMLDom/SRC/GMXMLElement.cpp	Thu Jul 01 15:13:40 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,378 +0,0 @@
-// Copyright (c) 2001-2009 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:
-// MDXMLElement.CPP
-// @file
-// This file contains the implementation of the CMDXMLElement class.
-// This class represents a generic XML element with attributes
-// stored as name-value pairs.  DTD-specific element classes
-// will store their attributes as member variables.
-// 
-//
-
-#include <f32file.h>
-
-#include <gmxmldomconstants.h>
-#include <gmxmlnode.h>
-#include <gmxmldocument.h>
-#include <gmxmlelement.h>
-
-
-EXPORT_C CMDXMLElement* CMDXMLElement::NewLC( TBool aCanHaveChildren, CMDXMLDocument* aOwnerDocument, TPtrC aTagName )
-//
-// Two phase constructor
-// @param aCanHaveChildren Flag to indicate if the node represents a node
-// @param aOwnerDocument Pointer to the document at the root of the DOM tree
-// @param aTagName Name of the tag used to create the element
-// @return Created CMDXMLElement
-// @leave can Leave due to OOM
-//
-	{
-	CMDXMLElement* elPtr = new(ELeave) CMDXMLElement( aCanHaveChildren, aOwnerDocument );
-	CleanupStack::PushL( elPtr );
-	elPtr->SetNodeNameL( aTagName );
-	elPtr->ConstructL();
-	return elPtr;
-	}
-
-EXPORT_C CMDXMLElement* CMDXMLElement::NewL( TBool aCanHaveChildren, CMDXMLDocument* aOwnerDocument, TPtrC aTagName )
-//
-// Two phase constructor
-// @param aCanHaveChildren Flag to indicate if the node represents a node
-// @param aOwnerDocument Pointer to the document at the root of the DOM tree
-// @param aTagName Name of the tag used to create the element
-// @return Created CMDXMLElement
-// @leave can Leave due to OOM
-//
-	{
-	CMDXMLElement* elPtr = CMDXMLElement::NewLC( aCanHaveChildren, aOwnerDocument, aTagName );
-	CleanupStack::Pop(elPtr);
-	return elPtr;
-	}
-
-EXPORT_C CMDXMLElement::CMDXMLElement( TBool aCanHaveChildren, CMDXMLDocument* aOwnerDocument ):
-CMDXMLNode( EElementNode, aCanHaveChildren, aOwnerDocument)
-//
-// Constructor
-// @param aCanHaveChildren Flag to indicate if the node represents a node which is allowed children
-// @param aOwnerDocument Pointer to the document at the root of the DOM tree
-//
-	{
-	// No other work to do.
-	}
-
-void CMDXMLElement::ConstructL()
-/**
- * 2nd-phase constructor. Initialises this object's member data.
- *
- * @leave KErrXxx Standard EPOC error codes if allocation or construction of the object's members fails
- */
-	{
-	iDescAttName = new (ELeave) CDesCArraySeg(1);
-	iDescAttValue = new (ELeave) CDesCArraySeg(1);
-
-	}
-
-EXPORT_C CMDXMLElement::~CMDXMLElement()
-/**
- * C++ destructor
- */
-	{
-	// Delete the array of attribute name-value pairs.
-	if(iDescAttName)
-		delete iDescAttName;
-
-	if(iDescAttValue)
-		delete iDescAttValue;
-
-	}
-
-
-EXPORT_C TInt CMDXMLElement::GetAttribute(const TDesC&  aAttributeName, TPtrC& aAttributeValue) const
-//
-// Returns the attribute value if it is set.
-// @param aAttributeName Name of attribute to return
-// @param aAttributeValue Value of attribute returned
-// @return Returns KErrNone if successful, KErrNotFound if the named attribute
-// is not set or KErrNotSupported if the named attribute doesn't exist.
-//
-	{
-	TInt returnValue = KErrNone;
-
-	TInt index;
-	TInt attributeFound;
-	attributeFound = iDescAttName->Find(aAttributeName,index);
-
-	if(attributeFound == 0)
-		{
-		aAttributeValue.Set(iDescAttValue->MdcaPoint(index));
-		}
-	else
-		returnValue = KErrNotSupported;
-
-	return returnValue;
-
-	}
-
-EXPORT_C TInt CMDXMLElement::SetAttributeL(const TDesC& aAttributeName, const TDesC& aAttributeValue)
-//
-// Sets the attribute value.if it is valid
-// @param aAttributeName Name of attribute to set
-// @param aAttributeValue Value of attribute
-// @return Returns KErrNone if successful, KErrNotSupported if a DTD-specific class.
-// @leave Can Leave due to OOM
-//
-	{
-	return SetAttributeL(aAttributeName, aAttributeValue, EFalse);
-	}
-
-EXPORT_C TInt CMDXMLElement::SetAttributeL(const TDesC& aAttributeName, const TDesC& aAttributeValue, TBool aStoreInvalid)
-//
-// Checks an attribute for validity and adds it to the DOM.  The aStoreInvalid parameter is used to control whether invalid
-// attributes are added to the DOM.
-// @param aAttributeName Name of attribute to set
-// @param aAttributeValue Value of attribute
-// @param aStoreInvalid If set to ETrue all attributes will be stored in the DOM.  Otherwise only those that are valid will be.
-// @return Returns KErrNone if successful, KErrNotSupported if a DTD-specific class.
-// @leave Can Leave due to OOM
-//
-	{
-	TInt returnValue = (iOwnerDocument->DtdRepresentation()).IsValidAttributeForElementL(NodeName(), aAttributeName, aAttributeValue);
-		
-	if(returnValue == KErrNone || aStoreInvalid)
-		{
-		iDescAttName->AppendL(aAttributeName);
-		iDescAttValue->AppendL(aAttributeValue);
-		}
-		
-	return returnValue;
-	}
-
-EXPORT_C TInt CMDXMLElement::RemoveAttribute(const TDesC& aAttributeName)
-//
-// Removes the named attribute if present.
-// @param aAttributeName Name of attribute to set
-// @return Returns KErrNone if successful, KErrNotFound if the named attribute is not set, KErrNotSupported if a DTD-specific class.
-//
-	{
-	TInt returnValue = KErrNone;
-
-	TInt index;
-	TInt attributeFound;
-	attributeFound = iDescAttName->Find(aAttributeName,index);
-
-	if(attributeFound == 0)
-		{
-		iDescAttName->Delete(index);
-		iDescAttValue->Delete(index);
-		}
-	else
-		returnValue = KErrNotFound;
-
-	return returnValue;
-	}
-
-
-EXPORT_C TBool CMDXMLElement::IsAttributeSpecified(const TDesC& aAttributeName) const
-//
-// Finds out whether or not the named attribute is set
-// @param aAttributeName Name of attribute that is subject of the enquiry.
-// @return true of the named attribute has a value set, false if not
-//
-	{
-	TBool returnValue = EFalse;
-
-	if(iDescAttName)
-		{
-		TInt index = 0;
-		TInt found = 0;
-		found = iDescAttName->Find(aAttributeName,index);
-		if(found == 0)
-			returnValue = ETrue;
-		}
-
-	return returnValue;
-	}
-
-
-
-
-
-EXPORT_C TBool CMDXMLElement::CheckImmediateChildren()
-// Check the immediate children of this element - i.e. the first level of children only
-// If the document has not been constructed with a pointer to a MXMLDtd object then a default ETrue will be returned
-// Otherwise the MXMLDtd object is used to validate immediate children - returns ETrue if valid 
-// @return True if immediate children are valid
-	{
-	TBool returnValue = ETrue;
-	TRAPD(error,returnValue = DoCheckImmediateChildrenL());
-	if(error != KErrNone)
-		{
-		return EFalse;
-		}
-	return returnValue;
-	}
-
-TBool CMDXMLElement::DoCheckImmediateChildrenL()
-	{
-	TBool returnValue = ETrue;
-
-	// Create an array of this elements immediate children
-	CDesCArray* children = new (ELeave) CDesCArrayFlat(3);
-	CleanupStack::PushL(children);
-
-	if (HasChildNodes())
-		{
-		CMDXMLNode* childPtr;
-		childPtr = FirstChild();
-		// Cycle through the siblings
-		while (childPtr != NULL)
-			{
-			  if( childPtr->NodeType() == EElementNode )
-				  children->AppendL(childPtr->NodeName());
-			  childPtr = childPtr->NextSibling();
-			}
-		returnValue = OwnerDocument()->DtdRepresentation().AreValidChildElementsL(this->NodeName(),*children); 
-		}
-
-	// Do a DTD specific check to see if the children are valid
-	CleanupStack::PopAndDestroy();	// children	
-
-	return returnValue;
-	}
-
-EXPORT_C TBool CMDXMLElement::CheckChildren()
-//
-// Check the children of this node for legality - must be defined based on DTD.
-// This function checks that the list of child elements
-// conforms to those allowed by the DTD.  
-// As well as checking the list of direct children, it
-// calls CheckChildren for each child element which is an
-// element (it does not call this for child nodes which are
-// not elements as they cannot have children).
-// @return True if the node has legitimate children
-//
-	{
-	TBool retVal= CheckImmediateChildren();
-	if( retVal && HasChildNodes() )
-		{
-		CMDXMLNode* childPtr;
-		childPtr = FirstChild();
-		while((childPtr != NULL) && (retVal != false))
-			{
-			  if( childPtr->NodeType() == EElementNode )
-				  {
-				  retVal = childPtr->CheckChildren();
-				  }
-			  childPtr = childPtr->NextSibling();
-			}
-		}
-
-	return retVal;
-	}
-
-
-EXPORT_C TInt CMDXMLElement::FindIndex(const TDesC &aAttName)
-//
-// Find an attribute and return the index of it
-// @param aAttName the string to search for
-// @return returns the index of the string if found or KErrNotFound
-//
-	{
-	TInt index = KErrNotFound;
-
-	if(iDescAttName)
-		{
-		TInt found = 0;
-		found = iDescAttName->Find(aAttName,index);
-		if(found != 0)
-			index = KErrNotFound;
-		}
-
-	return index;
-
-
-	}
-
-
-EXPORT_C TInt CMDXMLElement::AttributeDetails(TInt aIndex, TPtrC& aAttributeName, TPtrC& aAttributeValue)
-//
-// Retrieves the Name and Value of an attribute at a given index
-// @param aIndex the array index of the element for which details are required 
-// @param aAttributeName the attribute name returned
-// @param aAttributeValue the attribute value returned
-// @return returns KErrNone if index is valid else KErrNotFound
-//
-
-	{
-	TInt error = KErrNone;
-	if (iDescAttName->Count() < aIndex)
-		error = KErrNotFound;
-	else
-		{
-		aAttributeValue.Set(iDescAttValue->MdcaPoint(aIndex));
-		aAttributeName.Set(iDescAttName->MdcaPoint(aIndex));
-		}
-	return error;
-	}
-
-
-
-EXPORT_C TInt CMDXMLElement::NumAttributes()
-//
-// Retrieves the Number od Attributes that this element has
-// @return returns the number of attributes held by the element
-//
-	{
-	return iDescAttName->Count(); 
-	}
-
-
-EXPORT_C CMDXMLElement* CMDXMLElement::FirstChildOfType(const TDesC& aElementType)
-// @return Returns a pointer to the first child of a given type if any, otherwise returns NULL
-// @param aElementType Name of element type to return 
-	{
-	CMDXMLElement* retVal = NULL;
-	CMDXMLNode* nodePtr = FirstChild();
-	while((nodePtr != NULL) && (nodePtr->NodeName()).Compare(aElementType) != 0)
-		{
-		nodePtr = nodePtr->NextSibling();
-		}
-	if( nodePtr != NULL )
-		{
-		retVal = (CMDXMLElement*)nodePtr;
-		}
-	return retVal;
-
-	}
-
-EXPORT_C CMDXMLElement* CMDXMLElement::LastChildOfType(const TDesC& aElementType)
-// @return Returns a pointer to the last child of a given type if any, otherwise returns NULL
-// @param aElementType Name of element type to return 
-
-	{
-	CMDXMLElement* retVal = NULL;
-	CMDXMLNode* nodePtr = LastChild();
-	while((nodePtr != NULL) && (nodePtr->NodeName()).Compare(aElementType) != 0)
-		{
-		nodePtr = nodePtr->PreviousSibling();
-		}
-	if( nodePtr != NULL )
-		{
-		retVal = (CMDXMLElement*)nodePtr;
-		}
-	return retVal;
-	}
-
-
-// End Of File