/usr/include/Poco/SharedLibrary.h is in libpoco-dev 1.8.0.1-1ubuntu4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | //
// 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.
private:
SharedLibrary(const SharedLibrary&);
SharedLibrary& operator = (const SharedLibrary&);
};
} // namespace Poco
#endif // Foundation_SharedLibrary_INCLUDED
|