diff -r 37ee82a83d43 -r 341ab25bc4ef imgtools/imglib/symbolutil/symbolgenerator.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/imgtools/imglib/symbolutil/symbolgenerator.h Tue Nov 23 10:47:23 2010 +0800 @@ -0,0 +1,94 @@ +/* +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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 __SYMBOLGENERATOR_H__ +#define __SYMBOLGENERATOR_H__ +#include +#include +#include +using namespace std; +#include +#include +#include "symbolprocessunit.h" + + +enum TSymbolType { + ESymCommon = 0, + ESymBsym , +}; +enum TImageType { + ERomImage = 0, + ERofsImage, + EUnknownType, +}; + + +class SymbolGenerator : public boost::thread { + public: + static SymbolGenerator* GetInstance(); + static void Release(); + void SetSymbolFileName( const string& fileName ); + void AddFile( const string& fileName, bool isExecutable ); + void AddEntry(const TPlacedEntry& aEntry); + bool HasFinished() { return iFinished; } + void SetFinished(); + bool IsEmpty() { return iQueueFiles.empty(); } + void LockOutput() { iOutputMutex.lock(); } + void UnlockOutput() { iOutputMutex.unlock(); } + TPlacedEntry GetNextPlacedEntry(); + ofstream& GetOutputFileStream() { return iSymFile; }; + void AppendMapFileInfo(MapFileInfo& aMapFileInfo) { iMapFileInfoSet.push_back(aMapFileInfo); } + void FlushSymbolFileContent(); + void SetImageType(TImageType aImageType) { iImageType = aImageType; }; + TImageType GetImageType() { return iImageType; }; + private: + SymbolGenerator(); + ~SymbolGenerator(); + static void thrd_func(); + + queue iQueueFiles; + boost::mutex iMutex; + boost::mutex iOutputMutex; + static boost::mutex iMutexSingleton; + static SymbolGenerator* iInst; + boost::condition_variable iCond; + bool iFinished; + TSymbolType iSymbolType; + TImageType iImageType; + + ofstream iSymFile; + MapFileInfoSet iMapFileInfoSet; +}; +class SymbolWorker{ +public: + SymbolWorker(); + ~SymbolWorker(); + void operator()(); +private: +}; +class PageCompressWorker { +public: + PageCompressWorker(TCompressedHeaderInfo* aHeaderInfo, char* aChar); + ~PageCompressWorker(); + void operator()(); + static TCompressedHeaderInfo * pHeaderInfo; + static int currentPage; + static boost::mutex m_mutex; + static int m_error; + static char* iChar; +}; +#endif