shared_library.h
Go to the documentation of this file.
1 //
2 // SharedLibrary.h
3 //
4 // $Id: //poco/1.3/Foundation/include/Poco/SharedLibrary.h#1 $
5 //
6 // Library: Foundation
7 // Package: SharedLibrary
8 // Module: SharedLibrary
9 //
10 // Definition of the SharedLibrary class.
11 //
12 // Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
13 // and Contributors.
14 //
15 // Permission is hereby granted, free of charge, to any person or organization
16 // obtaining a copy of the software and accompanying documentation covered by
17 // this license (the "Software") to use, reproduce, display, distribute,
18 // execute, and transmit the Software, and to prepare derivative works of the
19 // Software, and to permit third-parties to whom the Software is furnished to
20 // do so, all subject to the following:
21 //
22 // The copyright notices in the Software and this entire statement, including
23 // the above license grant, this restriction and the following disclaimer,
24 // must be included in all copies of the Software, in whole or in part, and
25 // all derivative works of the Software, unless such copies or derivative
26 // works are solely in the form of machine-executable object code generated by
27 // a source language processor.
28 //
29 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
30 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
31 // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
32 // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
33 // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
34 // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
35 // DEALINGS IN THE SOFTWARE.
36 //
37 
38 #ifndef Foundation_SharedLibrary_INCLUDED
39 #define Foundation_SharedLibrary_INCLUDED
40 
41 #include "platform.hpp"
42 #include <string>
43 #include <mutex>
44 
45 namespace BT
46 {
50 {
51 public:
52  enum Flags
53  {
59 
68  };
69 
71  SharedLibrary();
72 
76  SharedLibrary(const std::string& path, int flags = 0);
77 
80  virtual ~SharedLibrary() = default;
81 
89  void load(const std::string& path, int flags = 0);
90 
92  void unload();
93 
95  bool isLoaded() const;
96 
99  bool hasSymbol(const std::string& name);
100 
106  void* getSymbol(const std::string& name);
107 
111  const std::string& getPath() const;
112 
117  static std::string prefix();
118 
123  static std::string suffix();
124 
128  static std::string getOSName(const std::string& name);
129 
130 private:
133 
134  void* findSymbol(const std::string& name);
135 
136  std::string _path;
137  void* _handle = nullptr;
139 };
140 
141 } // namespace BT
142 
143 #endif // Foundation_SharedLibrary_INCLUDED
BT
Definition: ex01_wrap_legacy.cpp:29
BT::SharedLibrary::load
void load(const std::string &path, int flags=0)
Definition: shared_library_UNIX.cpp:14
BT::SharedLibrary::~SharedLibrary
virtual ~SharedLibrary()=default
BT::SharedLibrary::_handle
void * _handle
Definition: shared_library.h:137
BT::SharedLibrary::SharedLibrary
SharedLibrary()
Creates a SharedLibrary object.
Definition: shared_library_UNIX.cpp:9
BT::SharedLibrary::getPath
const std::string & getPath() const
Definition: shared_library_UNIX.cpp:60
BT::SharedLibrary::prefix
static std::string prefix()
Definition: shared_library_UNIX.cpp:65
BT::SharedLibrary::getSymbol
void * getSymbol(const std::string &name)
Definition: shared_library.cpp:9
BT::SharedLibrary::SHLIB_GLOBAL
@ SHLIB_GLOBAL
Definition: shared_library.h:58
mutex
static pthread_mutex_t mutex
Definition: minitrace.cpp:77
BT::SharedLibrary::suffix
static std::string suffix()
Definition: shared_library_UNIX.cpp:74
BT::SharedLibrary::operator=
SharedLibrary & operator=(const SharedLibrary &)
BT::SharedLibrary::SHLIB_LOCAL
@ SHLIB_LOCAL
Definition: shared_library.h:67
BT::SharedLibrary::unload
void unload()
Unloads a shared library.
Definition: shared_library_UNIX.cpp:32
BT::SharedLibrary::_path
std::string _path
Definition: shared_library.h:136
BT::SharedLibrary
Definition: shared_library.h:47
BT::SharedLibrary::_mutex
std::mutex _mutex
Definition: shared_library.h:138
BT::SharedLibrary::findSymbol
void * findSymbol(const std::string &name)
Definition: shared_library_UNIX.cpp:48
BT::SharedLibrary::getOSName
static std::string getOSName(const std::string &name)
Definition: shared_library.cpp:23
BT::SharedLibrary::hasSymbol
bool hasSymbol(const std::string &name)
Definition: shared_library.cpp:18
platform.hpp
BT::SharedLibrary::Flags
Flags
Definition: shared_library.h:52
BT::SharedLibrary::isLoaded
bool isLoaded() const
Returns true iff a library has been loaded.
Definition: shared_library_UNIX.cpp:43


behaviortree_cpp_v4
Author(s): Davide Faconti
autogenerated on Fri Jun 28 2024 02:20:08