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