#ifndef COMPARATOR_LIB_H #define COMPARATOR_LIB_H #include #include #include #include #include #include #include namespace smo { namespace comparator_lib { class ComparatorApiManager; class ComparatorLib { private: friend class ComparatorApiManager; public: ComparatorLib( std::shared_ptr _loadedSharedLibrary, SMO_GET_COMPARATOR_LIB_DESC_FN_TYPEDEF descFn) : loadedSharedLibrary(std::move(_loadedSharedLibrary)), SMO_GET_COMPARATOR_LIB_DESC_FN_NAME(descFn), s("ComparatorLib-" + loadedSharedLibrary->libraryPath) {} void setComparatorLibDesc(const cologex::ComparatorLibDesc &desc) { if (!cologex::ComparatorLibDesc::sanityCheck(desc)) { throw std::runtime_error( std::string(__func__) + ": Sanity check failed for comparator " "library descriptor in library '" + loadedSharedLibrary->libraryPath + "'"); } comparatorLibDesc = desc; } public: std::shared_ptr loadedSharedLibrary; std::function SMO_GET_COMPARATOR_LIB_DESC_FN_NAME; cologex::ComparatorLibDesc comparatorLibDesc; struct ComparatorLibResources {}; sscl::SharedResourceGroup< sscl::co::CoQutex, ComparatorLibResources> s; }; } // namespace comparator_lib } // namespace smo #endif // COMPARATOR_LIB_H