1// LazyInitializable.h
2
3#ifndef USERLAND_FS_LAZY_INITIALIZABLE_H
4#define USERLAND_FS_LAZY_INITIALIZABLE_H
5
6#include <OS.h>
7
8namespace UserlandFSUtil {
9
10class LazyInitializable {
11public:
12								LazyInitializable();
13								LazyInitializable(bool init);
14	virtual						~LazyInitializable();
15
16			status_t			Access();
17			status_t			InitCheck() const;
18
19protected:
20	virtual	status_t			FirstTimeInit() = 0;
21
22protected:
23			status_t			fInitStatus;
24			sem_id				fInitSemaphore;
25};
26
27} // namespace UserlandFSUtil
28
29using UserlandFSUtil::LazyInitializable;
30
31#endif	// USERLAND_FS_LAZY_INITIALIZABLE_H
32