toolsandutils/e32tools/elf2e32/source/polydll_fb_target.cpp
changeset 0 83f4b4db085c
child 1 d4b442d23379
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/toolsandutils/e32tools/elf2e32/source/polydll_fb_target.cpp	Tue Feb 02 01:39:43 2010 +0200
@@ -0,0 +1,112 @@
+// 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:
+// Implementation of the Class PolyDllFB Target for the elf2e32 tool
+// @internalComponent
+// @released
+// 
+//
+
+#include "polydll_fb_target.h"
+
+/**
+Constructor for the POLYDLLFBTarget Class
+
+@internalComponent
+@released
+*/
+POLYDLLFBTarget::POLYDLLFBTarget(ParameterListInterface* aParameterListInterface) : ExportTypeFBTarget(aParameterListInterface) {
+}
+
+/**
+Destructor for the POLYDLLFBTarget Class
+
+@internalComponent
+@released
+*/
+POLYDLLFBTarget::~POLYDLLFBTarget()
+{
+	if(iDefExports)
+	{
+		SymbolList::iterator aItr = iDefExports->begin();
+		SymbolList::iterator last = iDefExports->end();
+		Symbol *temp;
+
+		while( aItr != last)
+		{
+			temp = *aItr;
+			aItr++;
+			delete temp;
+		}
+		iDefExports->clear();
+	}
+}
+
+/**
+Function to process the symbols to be exported. In case of Poly DLL, there might be
+predefined symbols passed to '--sydef' option, need to consider them alongwith the 
+symbols coming from the ELF file.
+ 
+@internalComponent
+@released
+*/
+void POLYDLLFBTarget::ProcessExports() 
+{
+	int count = iParameterListInterface->SysDefCount();
+	ParameterListInterface::Sys aSysDefSymbols[10];
+
+	int j=0, i=count;
+	while (i)
+	{
+		aSysDefSymbols[j] = iParameterListInterface->SysDefSymbols(j);
+		j++; i--;
+	}
+
+	typedef SymbolList::iterator Iterator;
+
+	Symbol *aSymbolEntry;
+
+	iDefExports = new SymbolList;
+
+	for (int k=0; k < count; k++)
+	{
+		SymbolType aType = SymbolTypeCode;
+		aSymbolEntry = new Symbol(aSysDefSymbols[k].iSysDefSymbolName, aType);
+		aSymbolEntry->SetOrdinal(aSysDefSymbols[k].iSysDefOrdinalNum);
+		iDefExports->push_back(aSymbolEntry);
+	}
+
+	ValidateExports(iDefExports);
+	CreateExports();
+}
+
+/**
+Function to generate the output E32 image. Incase of an output DEF file, then the 
+DEF file and the corresponding DSO file should be generated.
+  
+@internalComponent
+@released
+*/
+void POLYDLLFBTarget::GenerateOutput() {
+	
+	if( UseCaseBase::DefOutput() ) {
+		WriteDefFile();
+	}
+	if(UseCaseBase::DSOOutput() && UseCaseBase::LinkAsDLLName()) {
+		WriteDSOFile();
+	}
+	WriteE32();
+}
+
+
+