diff -r 000000000000 -r 83f4b4db085c toolsandutils/e32tools/elf2e32/source/pl_elfexports.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/toolsandutils/e32tools/elf2e32/source/pl_elfexports.h Tue Feb 02 01:39:43 2010 +0200 @@ -0,0 +1,100 @@ +// 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 ElfExports for the elf2e32 tool +// @internalComponent +// @released +// +// + +#if !defined(_PL_ELFEXPORTS_H_) +#define _PL_ELFEXPORTS_H_ + +#include "pl_common.h" +#include +#include +#include + +using std::vector; +using std::binary_function; + +class ElfExecutable; +class DllSymbol; +class Symbol; + +/** +This class is for exports coming from elf file. +(Corresponding to the exported symbols defined in the given DLL. These exports are filtered +by individual targets as per their requirements(relating to class impedimenta). While +processing these exports, they are also to update the ordinal numbers before these exports +are written into the dso file. +@internalComponent +@released +*/ +class ElfExports +{ + +public: + typedef std::vector ExportList; + + + struct PtrELFExportNameCompare : + binary_function + { + bool operator()(const Symbol * lhs, const Symbol * rhs) const; + }; + + struct PtrELFExportOrdinalCompare : + binary_function + { + bool operator()(const Symbol * lhs, const Symbol * rhs) const; + }; + + struct PtrELFExportNameCompareUpdateAttributes : + binary_function + { + bool operator()(const Symbol * lhs, const Symbol * rhs) const; + }; + + + ElfExports(); + ~ElfExports(); + + bool ValidExportP(ElfExecutable * aExecutable, DllSymbol * aSym); + void FilterExports(); + DllSymbol* Add(char *aDll, ElfExecutable * aExecutable, DllSymbol *aSym); + void Add(char *aDll, DllSymbol *aSym); + void Sort(); + void ExportsFilteredP(bool aExportsFilteredP) + { + iExportsFilteredP = aExportsFilteredP; + } + bool ExportsFilteredP() {return iExportsFilteredP;} + + char* DllName(); + ExportList& GetExports(bool) ; + ExportList& GetExportsInOrdinalOrder(); + size_t GetNumExports(); + ExportList iFilteredExports; + +private: + ExportList iExportList; + char *iDllName; + bool iSorted; + bool iExportsFilteredP; +}; + + + + +#endif // !defined(_PL_ELFEXPORTS_H_)