tzpcside/tzcompiler/Include/TzEntities.h
author William Roberts <williamr@symbian.org>
Fri, 23 Apr 2010 14:37:17 +0100
branchRCL_3
changeset 22 c82a39b81a38
parent 0 2e3d3ce01487
permissions -rw-r--r--
Rework addition of Symbian splash screen to reduce the source impact (uses SVG from Bug 2414) Notes: by using the OPTION SOURCEDIR parameter in the mifconv extension instructions, I can arrange to use the same source file name in sfimage, without having to export over the original Nokia file. This means that the name inside splashscreen.mbg is the same, which removes the need for the conditional compilation in SplashScreen.cpp, and gets rid of sf_splashscreen.mmp.

// 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
//============================================================================