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