1/*
2 * Copyright 2014, Rene Gollent, rene@gollent.com.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef IMAGE_DEBUG_LOADING_STATE_HANDLER_ROSTER_H
6#define IMAGE_DEBUG_LOADING_STATE_HANDLER_ROSTER_H
7
8
9#include <Locker.h>
10#include <ObjectList.h>
11
12
13class ImageDebugLoadingStateHandler;
14class SpecificImageDebugInfoLoadingState;
15
16
17typedef BObjectList<ImageDebugLoadingStateHandler> LoadingStateHandlerList;
18
19
20class ImageDebugLoadingStateHandlerRoster {
21public:
22								ImageDebugLoadingStateHandlerRoster();
23								~ImageDebugLoadingStateHandlerRoster();
24
25	static	ImageDebugLoadingStateHandlerRoster*
26								Default();
27	static	status_t			CreateDefault();
28	static	void				DeleteDefault();
29
30			status_t			Init();
31			status_t			RegisterDefaultHandlers();
32
33			status_t			FindStateHandler(
34									SpecificImageDebugInfoLoadingState* state,
35									ImageDebugLoadingStateHandler*&
36										_handler);
37									// returns a reference
38
39			bool				RegisterHandler(
40									ImageDebugLoadingStateHandler*
41										handler);
42			void				UnregisterHandler(
43									ImageDebugLoadingStateHandler*
44										handler);
45
46private:
47			BLocker				fLock;
48			LoadingStateHandlerList
49								fStateHandlers;
50	static	ImageDebugLoadingStateHandlerRoster*
51								sDefaultInstance;
52};
53
54
55#endif	// IMAGE_DEBUG_LOADING_STATE_HANDLER_ROSTER_H
56
57