--- /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 <vector>
+#include <string>
+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<CTzCpString*> 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<CTzCpStdTimeAlignment*> 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<CTzCpZone*> 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<CTzCpRuleUse*>& 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<CTzCpRuleUse*> iVector;
+ };
+#endif // __TZENTITIES_H_
+//============================================================================
+// End of file
+//============================================================================