--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/aknlayoutcompiler/inc/CppWriter.h Thu Dec 17 09:14:18 2009 +0200
@@ -0,0 +1,192 @@
+/*
+* Copyright (c) 2002-2004 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:
+*
+*/
+
+
+#ifndef CPPWRITER_H
+#define CPPWRITER_H
+
+// disable "identifier was truncated to '255' characters in the browser information" warning
+#pragma warning (disable:4786)
+#include <vector>
+#include <string>
+#include <iosfwd>
+#include "WriterBase.h"
+using namespace std;
+
+
+
+
+/**
+* TValuesCppWriter
+* Write out layout cell values for AknLayout.dll
+*/
+class TValuesCppWriter
+ {
+public:
+ TValuesCppWriter(TValues& aValues) : iValues(aValues) {}
+ void WriteCpp(ostream& aCpp);
+
+private:
+ TValues& iValues;
+ };
+
+
+/**
+* TLayoutLineCppWriter
+* Base class for writing out a layout line for AknLayout.dll
+*/
+class TLayoutLineCppWriter
+ {
+public:
+ TLayoutLineCppWriter(TLayoutLine& aLine) : iLine(aLine) {}
+ void WriteCpp(ostream& aCpp);
+ virtual string Name()=0;
+ virtual void WriteMacro(ostream& aLag) = 0;
+ virtual void FillParamLists(vector<string>& aDef, vector<string>& aCtor) = 0;
+
+ void WriteCppData(ostream& aCpp);
+ int WriteParamList(ostream& aLag, const vector<string>& aParams);
+
+protected:
+ virtual void WriteLineClassName(ostream& aCpp) = 0;
+ virtual void WriteVarCppData(ostream& aCpp) = 0;
+ virtual void WriteFixedCppData(ostream& aCpp) = 0;
+
+ int ValCount();
+
+protected:
+ TLayoutLine& iLine;
+ };
+
+/**
+* TWindowLineCppWriter
+* Write out a window line for AknLayout.dll
+*/
+class TWindowLineCppWriter : public TLayoutLineCppWriter
+ {
+public:
+ TWindowLineCppWriter(TLayoutLine& aLine) : TLayoutLineCppWriter(aLine) {}
+ void WriteMacro(ostream& aLag);
+ string Name();
+ void FillParamLists(vector<string>& aDef, vector<string>& aCtor);
+
+private:
+ void WriteVarCppData(ostream& aCpp);
+ void WriteFixedCppData(ostream& aCpp);
+ void WriteLineClassName(ostream& aCpp);
+ };
+
+/**
+* TTextLineCppWriter
+* Write out a text line for AknLayout.dll
+*/
+class TTextLineCppWriter : public TLayoutLineCppWriter
+ {
+public:
+ TTextLineCppWriter(TLayoutLine& aLine) : TLayoutLineCppWriter(aLine) {}
+ void WriteMacro(ostream& aLag);
+ string Name();
+ void FillParamLists(vector<string>& aDef, vector<string>& aCtor);
+
+private:
+ void WriteVarCppData(ostream& aCpp);
+ void WriteFixedCppData(ostream& aCpp);
+ void WriteLineClassName(ostream& aCpp);
+
+ // Specific to text
+ void WriteMultiLineTextParamList(ostream& aLag, const vector<string>& aParams);
+
+private:
+ bool iBaseLineVariation;
+ };
+
+
+/**
+* TLayoutTableCppWriter
+* Write out a layout table for AknLayout.dll
+*/
+class TLayoutTableCppWriter
+ {
+public:
+ TLayoutTableCppWriter(TLayoutTable& aTable) : iTable(aTable) {}
+ void WriteCppLineData(ostream& aCpp);
+ void WriteCppTableData(ostream& aCpp);
+ void WriteLag(ostream& aLag);
+ void WriteLagSubTable(const TLayoutTable::TLayoutSubTable& aSubTable, int aCount, ostream& aLag);
+ static TLayoutLineCppWriter* CreateLayoutLineCppWriter(TLayoutLine& aData, TLayoutTable& iTable);
+
+private:
+ TLayoutTable& iTable;
+ };
+
+
+/**
+* TLayoutCppWriter
+* Write out a layout for AknLayout.dll
+*/
+class TLayoutCppWriter
+ {
+public:
+ TLayoutCppWriter(TLayout& aLayout) : iLayout(aLayout) {}
+ void WriteCppLineData(ostream& aCpp);
+ void WriteCppTableData(ostream& aCpp);
+ void WriteLag(ostream& aLag);
+
+private:
+ TLayout& iLayout;
+ };
+
+
+/**
+* TLayoutLineTable
+* Represents and writes a table of layout lines for AknLayout.dll
+*/
+class TLayoutLineTable : public vector<TLayoutLine*>
+ {
+public:
+ void WriteCpp(ostream& aCpp);
+ void WriteLag(ostream& aLag);
+ };
+
+
+/**
+* TCppWriter
+* Write the source code for AknLayout.dll
+*/
+class TCppWriter : public TLayWriterBase
+ {
+public:
+ TCppWriter(TLayout& aLayout, const std::string& aName);
+ void Write(const std::string& aLayName);
+
+private:
+ void Output(const string& aCpp, const string& aLag, const string& aLayName);
+
+ void WriteCppHeader(ostream& aCpp);
+ void WriteCppFooter(ostream& aCpp, const string& aLayName);
+ void WriteLagHeader(ostream& aLag);
+
+ void BuildLayoutLineTable();
+
+private:
+ TLayoutLineTable iLineTable;
+ string iShortName;
+ };
+
+#endif
+
+// End of File