diff options
author | orivej <orivej@yandex-team.ru> | 2022-02-10 16:44:49 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:44:49 +0300 |
commit | 718c552901d703c502ccbefdfc3c9028d608b947 (patch) | |
tree | 46534a98bbefcd7b1f3faa5b52c138ab27db75b7 /contrib/libs/poco/Foundation/include/Poco/SharedLibrary.h | |
parent | e9656aae26e0358d5378e5b63dcac5c8dbe0e4d0 (diff) | |
download | ydb-718c552901d703c502ccbefdfc3c9028d608b947.tar.gz |
Restoring authorship annotation for <orivej@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/libs/poco/Foundation/include/Poco/SharedLibrary.h')
-rw-r--r-- | contrib/libs/poco/Foundation/include/Poco/SharedLibrary.h | 288 |
1 files changed, 144 insertions, 144 deletions
diff --git a/contrib/libs/poco/Foundation/include/Poco/SharedLibrary.h b/contrib/libs/poco/Foundation/include/Poco/SharedLibrary.h index 52292c741e..ebbac54883 100644 --- a/contrib/libs/poco/Foundation/include/Poco/SharedLibrary.h +++ b/contrib/libs/poco/Foundation/include/Poco/SharedLibrary.h @@ -1,144 +1,144 @@ -// -// SharedLibrary.h -// -// Library: Foundation -// Package: SharedLibrary -// Module: SharedLibrary -// -// Definition of the SharedLibrary class. -// -// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. -// and Contributors. -// -// SPDX-License-Identifier: BSL-1.0 -// - - -#ifndef Foundation_SharedLibrary_INCLUDED -#define Foundation_SharedLibrary_INCLUDED - - -#include "Poco/Foundation.h" - - -#if defined(hpux) || defined(_hpux) -#include "Poco/SharedLibrary_HPUX.h" -#elif defined(POCO_VXWORKS) -#include "Poco/SharedLibrary_VX.h" -#elif defined(POCO_OS_FAMILY_UNIX) -#include "Poco/SharedLibrary_UNIX.h" -#elif defined(POCO_OS_FAMILY_WINDOWS) && defined(POCO_WIN32_UTF8) -#include "Poco/SharedLibrary_WIN32U.h" -#elif defined(POCO_OS_FAMILY_WINDOWS) -#include "Poco/SharedLibrary_WIN32.h" -#endif - - -namespace Poco { - - -class Foundation_API SharedLibrary: private SharedLibraryImpl - /// The SharedLibrary class dynamically - /// loads shared libraries at run-time. -{ -public: - enum Flags - { - SHLIB_GLOBAL = 1, - /// On platforms that use dlopen(), use RTLD_GLOBAL. This is the default - /// if no flags are given. - /// - /// This flag is ignored on platforms that do not use dlopen(). - - SHLIB_LOCAL = 2 - /// On platforms that use dlopen(), use RTLD_LOCAL instead of RTLD_GLOBAL. - /// - /// Note that if this flag is specified, RTTI (including dynamic_cast and throw) will - /// not work for types defined in the shared library with GCC and possibly other - /// compilers as well. See http://gcc.gnu.org/faq.html#dso for more information. - /// - /// This flag is ignored on platforms that do not use dlopen(). - }; - - SharedLibrary(); - /// Creates a SharedLibrary object. - - SharedLibrary(const std::string& path); - /// Creates a SharedLibrary object and loads a library - /// from the given path. - - SharedLibrary(const std::string& path, int flags); - /// Creates a SharedLibrary object and loads a library - /// from the given path, using the given flags. - /// See the Flags enumeration for valid values. - - virtual ~SharedLibrary(); - /// Destroys the SharedLibrary. The actual library - /// remains loaded. - - void load(const std::string& path); - /// Loads a shared library from the given path. - /// Throws a LibraryAlreadyLoadedException if - /// a library has already been loaded. - /// Throws a LibraryLoadException if the library - /// cannot be loaded. - - void load(const std::string& path, int flags); - /// Loads a shared library from the given path, - /// using the given flags. See the Flags enumeration - /// for valid values. - /// Throws a LibraryAlreadyLoadedException if - /// a library has already been loaded. - /// Throws a LibraryLoadException if the library - /// cannot be loaded. - - void unload(); - /// Unloads a shared library. - - bool isLoaded() const; - /// Returns true iff a library has been loaded. - - bool hasSymbol(const std::string& name); - /// Returns true iff the loaded library contains - /// a symbol with the given name. - - void* getSymbol(const std::string& name); - /// Returns the address of the symbol with - /// the given name. For functions, this - /// is the entry point of the function. - /// Throws a NotFoundException if the symbol - /// does not exist. - - const std::string& getPath() const; - /// Returns the path of the library, as - /// specified in a call to load() or the - /// constructor. - - static std::string suffix(); - /// Returns the platform-specific filename suffix - /// for shared libraries (including the period). - /// In debug mode, the suffix also includes a - /// "d" to specify the debug version of a library - /// (e.g., "d.so", "d.dll") unless the library has - /// been compiled with -DPOCO_NO_SHARED_LIBRARY_DEBUG_SUFFIX. - - static bool setSearchPath(const std::string& path); - /// Adds the given path to the list of paths shared libraries - /// are searched in. - /// - /// Returns true if the path was set, otherwise false. - /// - /// Currently only supported on Windows, where it calls - /// SetDllDirectory(). On all other platforms, does not - /// do anything and returns false. - -private: - SharedLibrary(const SharedLibrary&); - SharedLibrary& operator = (const SharedLibrary&); -}; - - -} // namespace Poco - - -#endif // Foundation_SharedLibrary_INCLUDED +// +// SharedLibrary.h +// +// Library: Foundation +// Package: SharedLibrary +// Module: SharedLibrary +// +// Definition of the SharedLibrary class. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_SharedLibrary_INCLUDED +#define Foundation_SharedLibrary_INCLUDED + + +#include "Poco/Foundation.h" + + +#if defined(hpux) || defined(_hpux) +#include "Poco/SharedLibrary_HPUX.h" +#elif defined(POCO_VXWORKS) +#include "Poco/SharedLibrary_VX.h" +#elif defined(POCO_OS_FAMILY_UNIX) +#include "Poco/SharedLibrary_UNIX.h" +#elif defined(POCO_OS_FAMILY_WINDOWS) && defined(POCO_WIN32_UTF8) +#include "Poco/SharedLibrary_WIN32U.h" +#elif defined(POCO_OS_FAMILY_WINDOWS) +#include "Poco/SharedLibrary_WIN32.h" +#endif + + +namespace Poco { + + +class Foundation_API SharedLibrary: private SharedLibraryImpl + /// The SharedLibrary class dynamically + /// loads shared libraries at run-time. +{ +public: + enum Flags + { + SHLIB_GLOBAL = 1, + /// On platforms that use dlopen(), use RTLD_GLOBAL. This is the default + /// if no flags are given. + /// + /// This flag is ignored on platforms that do not use dlopen(). + + SHLIB_LOCAL = 2 + /// On platforms that use dlopen(), use RTLD_LOCAL instead of RTLD_GLOBAL. + /// + /// Note that if this flag is specified, RTTI (including dynamic_cast and throw) will + /// not work for types defined in the shared library with GCC and possibly other + /// compilers as well. See http://gcc.gnu.org/faq.html#dso for more information. + /// + /// This flag is ignored on platforms that do not use dlopen(). + }; + + SharedLibrary(); + /// Creates a SharedLibrary object. + + SharedLibrary(const std::string& path); + /// Creates a SharedLibrary object and loads a library + /// from the given path. + + SharedLibrary(const std::string& path, int flags); + /// Creates a SharedLibrary object and loads a library + /// from the given path, using the given flags. + /// See the Flags enumeration for valid values. + + virtual ~SharedLibrary(); + /// Destroys the SharedLibrary. The actual library + /// remains loaded. + + void load(const std::string& path); + /// Loads a shared library from the given path. + /// Throws a LibraryAlreadyLoadedException if + /// a library has already been loaded. + /// Throws a LibraryLoadException if the library + /// cannot be loaded. + + void load(const std::string& path, int flags); + /// Loads a shared library from the given path, + /// using the given flags. See the Flags enumeration + /// for valid values. + /// Throws a LibraryAlreadyLoadedException if + /// a library has already been loaded. + /// Throws a LibraryLoadException if the library + /// cannot be loaded. + + void unload(); + /// Unloads a shared library. + + bool isLoaded() const; + /// Returns true iff a library has been loaded. + + bool hasSymbol(const std::string& name); + /// Returns true iff the loaded library contains + /// a symbol with the given name. + + void* getSymbol(const std::string& name); + /// Returns the address of the symbol with + /// the given name. For functions, this + /// is the entry point of the function. + /// Throws a NotFoundException if the symbol + /// does not exist. + + const std::string& getPath() const; + /// Returns the path of the library, as + /// specified in a call to load() or the + /// constructor. + + static std::string suffix(); + /// Returns the platform-specific filename suffix + /// for shared libraries (including the period). + /// In debug mode, the suffix also includes a + /// "d" to specify the debug version of a library + /// (e.g., "d.so", "d.dll") unless the library has + /// been compiled with -DPOCO_NO_SHARED_LIBRARY_DEBUG_SUFFIX. + + static bool setSearchPath(const std::string& path); + /// Adds the given path to the list of paths shared libraries + /// are searched in. + /// + /// Returns true if the path was set, otherwise false. + /// + /// Currently only supported on Windows, where it calls + /// SetDllDirectory(). On all other platforms, does not + /// do anything and returns false. + +private: + SharedLibrary(const SharedLibrary&); + SharedLibrary& operator = (const SharedLibrary&); +}; + + +} // namespace Poco + + +#endif // Foundation_SharedLibrary_INCLUDED |