#ifndef SENSE_API_MANAGER_H #define SENSE_API_MANAGER_H #include #include #include #include #include #include #include #include #include #include #include namespace smo { namespace sense_api { class SenseApiManager { public: static SenseApiManager& getInstance() { static SenseApiManager instance; return instance; } void initialize(void) {}; void finalize(void) {}; SenseApiLib& loadSenseApiLib( const std::string& libraryPath, const std::shared_ptr& componentThread); std::optional> getSenseApiLib( const std::string& libraryPath); std::optional> getSenseApiLibByApiName( const std::string& apiName); void unloadSenseApiLib(const std::string& libraryPath); void initializeSenseApiLib(SenseApiLib& lib); void finalizeSenseApiLib(SenseApiLib& lib); void loadAllSenseApiLibsFromOptions( const std::shared_ptr& componentThread); void unloadAllSenseApiLibs(void); void initializeAllSenseApiLibs(void); void finalizeAllSenseApiLibs(void); std::string stringifyLibs() const; private: SenseApiManager() = default; ~SenseApiManager() = default; SenseApiManager(const SenseApiManager&) = delete; SenseApiManager& operator=(const SenseApiManager&) = delete; std::vector> senseApiLibs; public: static std::optional searchForLibInSmoSearchPaths( const std::string& libraryPath); }; } // namespace sense_api } // namespace smo #endif // SENSE_API_MANAGER_H