diff options
Diffstat (limited to 'src/common/dynamic_library.h')
| -rw-r--r-- | src/common/dynamic_library.h | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/common/dynamic_library.h b/src/common/dynamic_library.h index 2a06372fd..3512da940 100644 --- a/src/common/dynamic_library.h +++ b/src/common/dynamic_library.h | |||
| @@ -33,7 +33,7 @@ public: | |||
| 33 | ~DynamicLibrary(); | 33 | ~DynamicLibrary(); |
| 34 | 34 | ||
| 35 | /// Returns the specified library name with the platform-specific suffix added. | 35 | /// Returns the specified library name with the platform-specific suffix added. |
| 36 | static std::string GetUnprefixedFilename(const char* filename); | 36 | [[nodiscard]] static std::string GetUnprefixedFilename(const char* filename); |
| 37 | 37 | ||
| 38 | /// Returns the specified library name in platform-specific format. | 38 | /// Returns the specified library name in platform-specific format. |
| 39 | /// Major/minor versions will not be included if set to -1. | 39 | /// Major/minor versions will not be included if set to -1. |
| @@ -41,28 +41,29 @@ public: | |||
| 41 | /// Windows: LIBNAME-MAJOR-MINOR.dll | 41 | /// Windows: LIBNAME-MAJOR-MINOR.dll |
| 42 | /// Linux: libLIBNAME.so.MAJOR.MINOR | 42 | /// Linux: libLIBNAME.so.MAJOR.MINOR |
| 43 | /// Mac: libLIBNAME.MAJOR.MINOR.dylib | 43 | /// Mac: libLIBNAME.MAJOR.MINOR.dylib |
| 44 | static std::string GetVersionedFilename(const char* libname, int major = -1, int minor = -1); | 44 | [[nodiscard]] static std::string GetVersionedFilename(const char* libname, int major = -1, |
| 45 | int minor = -1); | ||
| 45 | 46 | ||
| 46 | /// Returns true if a module is loaded, otherwise false. | 47 | /// Returns true if a module is loaded, otherwise false. |
| 47 | bool IsOpen() const { | 48 | [[nodiscard]] bool IsOpen() const { |
| 48 | return handle != nullptr; | 49 | return handle != nullptr; |
| 49 | } | 50 | } |
| 50 | 51 | ||
| 51 | /// Loads (or replaces) the handle with the specified library file name. | 52 | /// Loads (or replaces) the handle with the specified library file name. |
| 52 | /// Returns true if the library was loaded and can be used. | 53 | /// Returns true if the library was loaded and can be used. |
| 53 | bool Open(const char* filename); | 54 | [[nodiscard]] bool Open(const char* filename); |
| 54 | 55 | ||
| 55 | /// Unloads the library, any function pointers from this library are no longer valid. | 56 | /// Unloads the library, any function pointers from this library are no longer valid. |
| 56 | void Close(); | 57 | void Close(); |
| 57 | 58 | ||
| 58 | /// Returns the address of the specified symbol (function or variable) as an untyped pointer. | 59 | /// Returns the address of the specified symbol (function or variable) as an untyped pointer. |
| 59 | /// If the specified symbol does not exist in this library, nullptr is returned. | 60 | /// If the specified symbol does not exist in this library, nullptr is returned. |
| 60 | void* GetSymbolAddress(const char* name) const; | 61 | [[nodiscard]] void* GetSymbolAddress(const char* name) const; |
| 61 | 62 | ||
| 62 | /// Obtains the address of the specified symbol, automatically casting to the correct type. | 63 | /// Obtains the address of the specified symbol, automatically casting to the correct type. |
| 63 | /// Returns true if the symbol was found and assigned, otherwise false. | 64 | /// Returns true if the symbol was found and assigned, otherwise false. |
| 64 | template <typename T> | 65 | template <typename T> |
| 65 | bool GetSymbol(const char* name, T* ptr) const { | 66 | [[nodiscard]] bool GetSymbol(const char* name, T* ptr) const { |
| 66 | *ptr = reinterpret_cast<T>(GetSymbolAddress(name)); | 67 | *ptr = reinterpret_cast<T>(GetSymbolAddress(name)); |
| 67 | return *ptr != nullptr; | 68 | return *ptr != nullptr; |
| 68 | } | 69 | } |