// Copyright (c) 2004-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:
// DST TZ Database Compiler
//
//
#include "TZNode.h"
#include <iostream>
//============================================================================
// CTZElement::~CTZElement
//============================================================================
CTZElement::~CTZElement()
{
for (int i = 0; i < NodeList().size();++i)
{
delete NodeList()[i];
}
}
//============================================================================
// CTZElement::CheckNode
// Checks to see that the node actually contains information and is valid for
// assembly. Invalid nodes may be generated if a file contains a comment
// on a line beginning with empty tabs. If this happens, a node with empty
// tab elements will be generated.
//============================================================================
bool CTZElement::CheckNode() const
{
char startChar;
int size = iNodeList.size();
for (int x = 0; x < size;x++)
{
startChar = iNodeList[x]->iValue[0]; //First character of attribute
if ((startChar != '\t') && (startChar != KCharOlsonStartOfComment) && (startChar != ' '))
{
return true;
}
}
return false;
}
bool CTZAttribute::CheckNode() const
{
char startChar = iValue[0]; //First character of attribute
if ((startChar != '\t') && (startChar != KCharOlsonStartOfComment) && (startChar != ' '))
{
return true;
}
return false;
}
//============================================================================
// CTZElement::AddAttribute
// Adds an attribute to the current node
//============================================================================
void CTZElement::AddAttribute(const char* aValue)
{
CTZNode* aAttribute = new CTZAttribute();
aAttribute->iParent = this;
aAttribute->iValue = aValue;
iNodeList.push_back(aAttribute);
}
//============================================================================
// CTZElement::AddChildElement
// Creates a new CTZElement as a child node of the current element.
//============================================================================
CTZNode* CTZElement::CreateChildElement()
{
CTZElement* childElement = new CTZElement();
childElement->iParent = this;
iNodeList.push_back(childElement);
return childElement;
}
//============================================================================
// End of file
//============================================================================