diff -r 000000000000 -r 2e3d3ce01487 tzpcside/tzcompiler/Include/TzEntities.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tzpcside/tzcompiler/Include/TzEntities.h Tue Feb 02 10:12:00 2010 +0200 @@ -0,0 +1,242 @@ +// 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 __TZENTITIES_H_ +#define __TZENTITIES_H_ + +#include "PersistedEntityWrapper.h" +#include "..\..\tz\server\include\tzpersisted.h" +#include "TzNode.h" +#include "TzEntities.h" +#include "TzDocument.h" +#include +#include +using namespace std; + +class CTzCpRuleSet; +//============================================================================ +// CTzCpString Class Definition +// String wrapper class, binds a string to its offset in the string table. +//============================================================================ +class CTzCpString : public CPersistedEntityWrapper + { +public: + CTzCpString(CTZDocument& aDocument); + //From CPersistedEntityWrapper + int AssembleL(CTZNode& aNode) {return 0;} + void ExternaliseL(ofstream& aFilestream); +public: + std::string iString; + //int iOffset; + }; +//============================================================================ +// CTzCpStdTimeAlignment Class Definition +//============================================================================ +class CTzCpStdTimeAlignment : public CPersistedEntityWrapper + { +public: + CTzCpStdTimeAlignment(CTZDocument& aDocument); + ~CTzCpStdTimeAlignment(); + //From CPersistedEntityWrapper + int AssembleL(CTZNode& aNode); + void ExternaliseL(ofstream& aFilestream); + + //member data + std::vector iOffsetsToTimeZonesShortNames; + CTzCpString* iOffsetToTimeZoneFormatName; + CTzCpRuleSet* iRuleSet; + TTzStdTimeAlignment iPersistedEntity; + }; +//============================================================================ +// CTzCpZone Class Definition +//============================================================================ +class CTzCpZone : public CPersistedEntityWrapper + { +public: + CTzCpZone(CTZDocument& aDocument); + ~CTzCpZone(); + //From CPersistedEntityWrapper + void ExternaliseL(ofstream& aFilestream); + +public: + //member data + std::vector iTimeAlignments; + CTzCpString* iRegionNameRef; + CTzCpString* iZoneNameRef; + TUint16 iLocationId; + + TTzZone iPersistedEntity; + + // + // three different methods to sort zones: + // + // alphabetically by zone name (for the regional zone indices): + struct SZoneNameSort + { + TBool operator()(CTzCpZone* aZone1, CTzCpZone* aZone2) + { + return aZone1->iZoneNameRef->iString < aZone2->iZoneNameRef->iString; + } + }; + + // by LocationId (for the Zones table) + struct SLocationIdSort + { + TBool operator()(CTzCpZone* aZone1, CTzCpZone* aZone2) + { + return aZone1->iLocationId < aZone2->iLocationId; + } + }; + + struct SZoneFullNameSort + { + TBool operator()(CTzCpZone* aZone1, CTzCpZone* aZone2) + { + if (aZone1->iRegionNameRef->iString < aZone2->iRegionNameRef->iString) + { + return true; + } + else if (aZone1->iRegionNameRef->iString == aZone2->iRegionNameRef->iString) + { + if (aZone1->iZoneNameRef->iString < aZone2->iZoneNameRef->iString) + { + return true; + } + else + { + return false; + } + } + else + { + return false; + } + } + }; + }; +//============================================================================ +// CTzCpRegionalZonesIndex Class Definition +//============================================================================ +class CTzCpRegionalZonesIndex : public CPersistedEntityWrapper + { +public: + CTzCpRegionalZonesIndex(CTZDocument& aDocument); + //From CPersistedEntityWrapper + void ExternaliseL(ofstream& aFilestream); + + void AddZoneIndex(CTzCpZone& aZoneRef); + //member data + TTzRegionalZoneIndex iPersistedEntity; + std::vector iZoneIndex; + }; +//============================================================================ +// CTzCpRegion Class Definition +//============================================================================ +class CTzCpRegion : public CPersistedEntityWrapper + { +public: + CTzCpRegion(CTZDocument& aDocument); + ~CTzCpRegion(); + //From CPersistedEntityWrapper + void ExternaliseL(ofstream& aFilestream); + + //member data + CTzCpRegionalZonesIndex* iRegionalZonesIndex; + CTzCpString* iRegionNameRef; + TTzRegion iPersistedEntity; + + }; +//============================================================================ +// CTzCpLink Class Definition +// Wrapper class for a TTzLink. +//============================================================================ +class CTzCpLink : public CPersistedEntityWrapper + { +public: + CTzCpLink(CTZDocument& aDocument); + //From CPersistedEntityWrapper + int AssembleL(CTZNode& aNode); + void ExternaliseL(ofstream& aFilestream); + + //member data + TTzLink iPersistedEntity; + //These objects are NOT owned by CTzCpLink + CTzCpString* iLinkString; + CTzCpString* iRegionString; + CTzCpString* iZoneString; + CTzCpZone* iLinkedZoneOffset; + }; +//============================================================================ +// CTzCpRuleDefinition Class Definition +//============================================================================ +class CTzCpRuleDefinition : public CPersistedEntityWrapper + { +public: + CTzCpRuleDefinition(CTZDocument& aDocument); + //From CPersistedEntityWrapper + int AssembleL(CTZNode& aNode); + void ExternaliseL(ofstream& aFilestream); + //member data + TTzRuleDefinition iPersistedEntity; + }; +//============================================================================ +// CTzCpRuleUse Class Definition +// Encapsulates TRuleUse. Will be part of a collection of CTzCpRuleUse +// objects owned by a CTzCpRuleSet +//============================================================================ +class CTzCpRuleUse : public CPersistedEntityWrapper + { +public: + CTzCpRuleUse(CTZDocument& aDocument); + ~CTzCpRuleUse(); + //From CPersistedEntityWrapper + void AssembleL(CTZNode& aNode); + void ExternaliseL(ofstream& aFilestream); + + //member data + CTzCpString* iRuleLetterPtr; + CTzCpRuleDefinition* iRuleDefinitionPtr; + TTzRuleUse iPersistedEntity; + }; +//============================================================================ +// CTzCPRuleSet Class Definition +// Encapsulates a TTzRuleSet, and is responsible for creating a collection of +// CTzCpRuleUse objects. +//============================================================================ +class CTzCpRuleSet : public CPersistedEntityWrapper + { +public: + CTzCpRuleSet(CTZDocument& aDocument,std::string aName); + ~CTzCpRuleSet(); + //From CPersistedEntityWrapper + void ExternaliseL(ofstream& aFilestream); + + void AddRuleUse(CTzCpRuleUse& aRuleUseRef); + + std::vector& RuleUses() { return iVector; } + std::string& Name() { return iName; } + +private: + //member data + TTzRuleSet iPersistedEntity; + std::string iName; //Name string for the ruleset. DO NOT add to string table + std::vector iVector; + }; +#endif // __TZENTITIES_H_ +//============================================================================ +// End of file +//============================================================================