diff -r 000000000000 -r 7f656887cf89 libraries/ltkutils/inc/bsym.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libraries/ltkutils/inc/bsym.h Wed Jun 23 15:52:26 2010 +0100 @@ -0,0 +1,100 @@ +// bsym.h +// +// Copyright (c) 2010 Accenture. All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the "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: +// Accenture - Initial contribution +// +#ifndef FSHELL_BSYM_H +#define FSHELL_BSYM_H + +#include +#include +#include +#include +class CDesC16Array; + +namespace LtkUtils + { + class CMapFile; + class CBsymFile; + class RNode; + + NONSHARABLE_CLASS(CSymbolics) : public CBase + { + public: + IMPORT_C CSymbolics(RFs& aFs); + IMPORT_C ~CSymbolics(); + IMPORT_C void AddBsymFileL(const TDesC& aFileName); + IMPORT_C void AddMapFileL(const TDesC& aFileName); + IMPORT_C void AddMapFileL(CMapFile* aMapFile); // Takes ownership + IMPORT_C void SetFallbackMapFileDirL(const TDesC& aDir); + + IMPORT_C TPtrC LookupL(TUint32 aRomAddress); + IMPORT_C TPtrC LookupL(const TDesC& aCodeseg, TUint32 aOffset); // Need to use memaccess or similar to get codeseg name + + IMPORT_C void CompleteL(const TDesC& aCodeseg, TDes& aSymbolName, CDesC16Array& aSuggestions); + IMPORT_C TUint32 CodesegOffsetFromSymbolNameL(const TDesC& aCodeseg, const TDesC& aSymbolName); + + private: + CMapFile* FindOrLoadMapFileL(const TDesC& aCodeseg); + RNode* TreeForCodesegL(const TDesC& aCodeseg); + + private: + RFs& iFs; + RStringHash iCodeSegHash; + RPointerArray iBsyms; + TFileName iFallbackMapFileDir; + TBuf<256> iTempString; + RNode* iTabCompleteTree; + HBufC* iTabCompleteCodeseg; + }; + + NONSHARABLE_CLASS(CBsymFile) : public CBase + { + public: + IMPORT_C static CBsymFile* NewL(RFs& aFs, const TDesC& aFileName); + IMPORT_C ~CBsymFile(); + IMPORT_C TPtrC LookupL(TUint32 aRomAddress); + IMPORT_C TPtrC LookupL(const TDesC& aCodesegName, TInt aOffset); + + RNode* CreateCompletionTreeL(const TDesC& aCodesegName); + + protected: + CBsymFile(); + + protected: + RFile iFile; + TUint iFileSize; + TUint32 iVersion; + TUint32 iCodesegOffset; + TUint32 iSymbolsOffset; + TUint32 iTokensOffset; + }; + + NONSHARABLE_CLASS(CMapFile) : public CBase + { + public: + IMPORT_C static CMapFile* NewL(RFs& aFs, const TDesC& aFileName); + IMPORT_C ~CMapFile(); + IMPORT_C void Lookup(TUint32 aOffsetInCodeSeg, TDes& aResult); + IMPORT_C void GetFileNameL(TDes& aFileName) const; + RNode* CreateCompletionTreeL(); + + protected: + CMapFile(); + void ConstructL(RFs& aFs, const TDesC& aFileName); + TBool GetNextLine(TPtrC8& aPtr); + + protected: + RFile iFile; + RBuf8 iReadBuf; + TInt iTextOffset; + HBufC* iFileName; + }; + } +#endif