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 
70  SharedLibrary();
72 
73  SharedLibrary(const std::string& path, int flags = 0);
77 
78  virtual ~SharedLibrary() = default;
81 
82  void load(const std::string& path, int flags = 0);
90 
91  void unload();
93 
94  bool isLoaded() const;
96 
97  bool hasSymbol(const std::string& name);
100 
101  void* getSymbol(const std::string& name);
107 
108  const std::string& getPath() const;
112 
113  static std::string prefix();
118 
119  static std::string suffix();
124 
125  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;
139 };
140 
141 } // namespace Poco
142 
143 #endif // Foundation_SharedLibrary_INCLUDED
virtual ~SharedLibrary()=default
static pthread_mutex_t mutex
Definition: minitrace.cpp:61
static std::string prefix()
SharedLibrary & operator=(const SharedLibrary &)
bool hasSymbol(const std::string &name)
Returns true iff a library has been loaded.
static std::string getOSName(const std::string &name)
static std::string suffix()
void * getSymbol(const std::string &name)
const std::string & getPath() const
Simple class for manipulating paths on Linux/Windows/Mac OS.
Definition: path.h:42
void load(const std::string &path, int flags=0)
bool isLoaded() const
Unloads a shared library.
void * findSymbol(const std::string &name)


behaviotree_cpp_v3
Author(s): Michele Colledanchise, Davide Faconti
autogenerated on Tue May 4 2021 02:56:25