diff -r 000000000000 -r 2e3d3ce01487 tzpcside/tzcompiler/Include/TZDocument.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tzpcside/tzcompiler/Include/TZDocument.h Tue Feb 02 10:12:00 2010 +0200 @@ -0,0 +1,129 @@ +// 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 +// +// + +#ifndef __TZDOCUMENT_H +#define __TZDOCUMENT_H + +#include +#include +#include "MCompiler.h" +#include "MDocument.h" +#include "TZNode.h" +#include "TZTables.h" +//============================================================================ +// Forward declarations +//============================================================================ +class MScanner; +class CTzCpStringTable; +class CTzCpStringTable; +class CTzCpRuleSetsTable; +class CTzCpRuleUsesTable; +class CTzCpRuleDefinitionsTable; +class CTzCpRegionsTable; +class CTzCpZonesTable; +class CTzCpLinksTable; +class CTzCpStdTimeAlignmentsTable; +//============================================================================ +// CTZDocument class definition +//============================================================================ +class CTZDocument : public MCompiler , public MDocument + { +public: + CTZDocument(MScanner& aScanner); + ~CTZDocument(); + + //New methods + void ExternaliseL(); + TUint16 GetDefaultZoneOffset() const; + void AssignZoneIds(); + void VerifyZoneIds(); + void Exclude(); //Remove unwanted entities + void LogScanningError(int aLineNum,int aColNum,int aType); + + //helper functions + void CopyDatabaseFileToOutputDirectory() const; + void DisplayData() const; + + //From MCompiler + int Scan(const char* aFileName); + void AssembleL(); + void Link(); + + CTzCpStringTable* StringTable() { return iStringTable; } + CTzCpRuleSetsTable* RuleSetTable() { return iRuleSetTable;} + CTzCpRuleUsesTable* RuleUseTable() { return iRuleUseTable;} + CTzCpRuleDefinitionsTable* RuleDefinitionTable() { return iRuleDefinitionTable;} + CTzCpRegionsTable* RegionsTable() { return iRegionsTable;} + CTzCpZonesTable* ZonesTable() { return iZonesTable; } + CTzCpLinksTable* LinkTable() { return iLinkTable; } + CTzCpStdTimeAlignmentsTable* StdTimeAlignmentTable() { return iStdTimeAlignmentTable; } + + //Header + TTzHeader* DbHeader() { return &iDbHeader; } + +private: + // helper functions + std::string GetCommaSeparatedString(std::vector& aStringVector); + void DisplayNodeList() const; + void DisplayRegionsTable() const; + void DisplayZonesTable() const; + void DisplayRuleSetTable() const; + void DisplayRuleDefinitionTable() const; + void DisplayStringTable() const; + void DisplayTimeAlignmentTable() const; + + //From MDocument + void CreateChildElement(); + void CreateRootChildElement(); + void CloseElement(); + void AddAttribute(const char* aValue); + void HandleScanError(const char* aFileName,int aLine,int aCol,char aChar); + + void ReadConfigurationFile(); //Call on construction + void WriteConfigurationFile(); //Call on destruction + + void AssembleRuleL(CTZNode& aNode); + void AssembleZoneL(CTZNode& aNode); + + +public: + //Scanning errors + std::vector iErrors; + +private: + //Data tables + CTzCpStringTable* iStringTable; + CTzCpRuleSetsTable* iRuleSetTable; + CTzCpRuleUsesTable* iRuleUseTable; + CTzCpRuleDefinitionsTable* iRuleDefinitionTable; + CTzCpRegionsTable* iRegionsTable; + CTzCpZonesTable* iZonesTable; + CTzCpLinksTable* iLinkTable; + CTzCpStdTimeAlignmentsTable* iStdTimeAlignmentTable; + + //Header + TTzHeader iDbHeader; + + MScanner& iScanner; //Handles the actual parsing + CTZNode* iRoot; //Root node + CTZNode* iOpenedElement; //Current node + }; + +#endif //__TZDOCUMENT_H +//============================================================================ +// End of file +//============================================================================