1/*
2 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
3 * Copyright 2014, Rene Gollent, rene@gollent.com.
4 * Distributed under the terms of the MIT License.
5 */
6#ifndef DWARF_MANAGER_H
7#define DWARF_MANAGER_H
8
9#include <Locker.h>
10
11#include <util/DoublyLinkedList.h>
12
13
14class DwarfFile;
15struct DwarfFileLoadingState;
16
17
18class DwarfManager {
19public:
20								DwarfManager(uint8 addressSize, bool isBigEndian);
21								~DwarfManager();
22
23			status_t			Init();
24
25			bool				Lock()		{ return fLock.Lock(); }
26			void				Unlock()	{ fLock.Unlock(); }
27
28			status_t			LoadFile(const char* fileName,
29									DwarfFileLoadingState& _loadingState);
30									// _loadingState receives a reference
31									// to the corresponding DwarfFile.
32
33			status_t			FinishLoading();
34
35private:
36			typedef DoublyLinkedList<DwarfFile> FileList;
37
38private:
39			uint8				fAddressSize;
40			bool				fIsBigEndian;
41			BLocker				fLock;
42			FileList			fFiles;
43};
44
45
46
47#endif	// DWARF_MANAGER_H
48