--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/aknlayoutcompiler/src/MLCompData2LayPerf.cpp Thu Dec 17 09:14:18 2009 +0200
@@ -0,0 +1,126 @@
+/*
+* Copyright (c) 2006 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:
+*
+*/
+
+
+
+// disable "identifier was truncated to '255' characters in the browser information" warning
+#pragma warning (disable:4786)
+
+// disable "decorated name length exceeded, name was truncated"
+#pragma warning (disable:4503)
+
+#include <cdlcompilertoolkit/cdltkprocess.h>
+#include <fstream>
+#include <iostream>
+#include <algorithm>
+
+#include "LayoutCompilerErr.h"
+#include "MLCompDataParse.h"
+#include "MLAttributesParse.h"
+#include "MLCompData2LayPerf.h"
+#include "MLCompDataLayPerfWriter.h"
+
+typedef LayoutProcessArgsErr<MLCompDataToLayPerf> MLCompDataToLayPerfArgsErr;
+
+const string KCompDataFileNameSuffix("compData");
+const string KAttributesFileNameSuffix("attributes");
+
+//------------------------------------
+// class MLCompDataToLayPerf
+//------------------------------------
+int MLCompDataToLayPerf::Process(const vector<string>& args)
+ {
+ if (args.size() != 6)
+ throw MLCompDataToLayPerfArgsErr();
+
+ int arg = 2;
+ string cdlName = args[arg++];
+
+ CCdlTkCdlFileParser parser(cdlName);
+ auto_ptr<CCdlTkInterface> iface(parser.LoadAndParse(true));
+
+ int numLayouts = args.size() - 4;
+ if (numLayouts < 1)
+ throw MLCompDataToLayPerfArgsErr();
+
+ TMLCompData* mergedLayout = NULL;
+ TMLAttributes* mergedAttribs = NULL;
+ for(int ii = 0; ii < numLayouts; ii++)
+ {
+ string layoutName = args[arg++];
+ string attribsName = CdlTkUtil::Replace(KCompDataFileNameSuffix, KAttributesFileNameSuffix, layoutName);
+
+ auto_ptr<TMLCompDataParseLayout> layoutParse = TMLCompDataParseLayout::Parse(layoutName);
+ auto_ptr<TMLCompData> layout(layoutParse.get());
+ layoutParse.release();
+
+ auto_ptr<TMLAttributesParse> attribsParse = TMLAttributesParse::Parse(attribsName);
+ auto_ptr<TMLAttributes> attribs(attribsParse.get());
+ attribsParse.release();
+
+ if (mergedLayout || mergedAttribs)
+ {
+ // first we merge the components and the attributes
+ mergedLayout->MergeComponents(*layout);
+ mergedAttribs->Merge(*attribs);
+ }
+ else
+ {
+ // first time around
+ mergedLayout = layout.get();
+ mergedAttribs = attribs.get();
+ }
+ layout.release();
+ attribs.release();
+ }
+
+ mergedLayout->iAttributes = mergedAttribs; // transfer ownership
+
+ // once merged, we can compile the tables
+ mergedLayout->Compile();
+
+
+ string destLayout = args[arg++];
+ MLCompDataToLayPerf layPerf(cdlName, *iface, *mergedLayout, destLayout);
+ layPerf.WriteLayout();
+
+ return 0;
+ }
+
+void MLCompDataToLayPerf::ShowHelp(ostream& stream)
+ {
+ stream << "MLCompData2LayPerf <layout.cdl> (<MLCompDataName>)+ <layPerf.cpp> " << endl;
+ stream << "MLCompData2LayPerf ..\\cdl\\AknLayoutScalable_Avkon.cdl ..\\xml\\pdp_av_dbl_prt\\display_eur_compData.xml ..\\xml\\pdl_av_dbl_lsc\\display_eur_compData.xml ..\\generated\\LayPerf_AknLayoutScalable_Avkon.cpp " << endl;
+ stream << " This converts a CDL file into a specialised format for inclusion in the LayPerfScalable2 test app." << endl;
+ stream << " LayPerfScalable2 runs on the device, calling each API that would be generated from the CDL file." << endl;
+ }
+
+MLCompDataToLayPerf::MLCompDataToLayPerf(const string& aCdlName, CCdlTkInterface& aInterface, TMLCompData& aSourceLayout, const string& aDestLayoutName)
+ :
+ iCdlName(aCdlName),
+ iInterface(aInterface),
+ iLayout(aSourceLayout),
+ iDestLayoutName(aDestLayoutName)
+ {
+ }
+
+void MLCompDataToLayPerf::WriteLayout()
+ {
+ TMLCompDataLayPerfWriter writer(iInterface, iLayout, iDestLayoutName);
+ writer.Write(iCdlName);
+ }
+