annotate Core/SharedLibrary.h @ 3103:81b58b549845

back to using 'var' instead of 'let' since let is not supported by many old browsers. All variables declaration have been moved to the top of the function to better show that their scope is the function
author Alain Mazy <alain@mazy.be>
date Thu, 10 Jan 2019 10:51:36 +0100
parents 4e43e67f8ecf
children 94f4a18a79cc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
884
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1 /**
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2 * Orthanc - A Lightweight, RESTful DICOM Store
1900
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1632
diff changeset
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
1288
6e7e5ed91c2d upgrade to year 2015
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 893
diff changeset
4 * Department, University Hospital of Liege, Belgium
3060
4e43e67f8ecf preparing for 2019
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2463
diff changeset
5 * Copyright (C) 2017-2019 Osimis S.A., Belgium
884
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
6 *
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
7 * This program is free software: you can redistribute it and/or
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
8 * modify it under the terms of the GNU General Public License as
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
9 * published by the Free Software Foundation, either version 3 of the
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
10 * License, or (at your option) any later version.
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
11 *
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
12 * In addition, as a special exception, the copyright holders of this
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
13 * program give permission to link the code of its release with the
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
14 * OpenSSL project's "OpenSSL" library (or with modified versions of it
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
15 * that use the same license as the "OpenSSL" library), and distribute
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
16 * the linked executables. You must obey the GNU General Public License
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
17 * in all respects for all of the code used other than "OpenSSL". If you
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
18 * modify file(s) with this exception, you may extend this exception to
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
19 * your version of the file(s), but you are not obligated to do so. If
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
20 * you do not wish to do so, delete this exception statement from your
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
21 * version. If you delete this exception statement from all source files
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
22 * in the program, then also delete it here.
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
23 *
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
24 * This program is distributed in the hope that it will be useful, but
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
25 * WITHOUT ANY WARRANTY; without even the implied warranty of
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
26 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
27 * General Public License for more details.
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
28 *
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
29 * You should have received a copy of the GNU General Public License
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
30 * along with this program. If not, see <http://www.gnu.org/licenses/>.
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
31 **/
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
32
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
33
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
34 #pragma once
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
35
2463
be5c0f4155f6 move SharedLibrary into OrthancFramework
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2447
diff changeset
36 #if !defined(ORTHANC_SANDBOXED)
be5c0f4155f6 move SharedLibrary into OrthancFramework
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2447
diff changeset
37 # error The macro ORTHANC_SANDBOXED must be defined
be5c0f4155f6 move SharedLibrary into OrthancFramework
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2447
diff changeset
38 #endif
1632
eb8fbcf008b5 fix build with plugins disabled
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1630
diff changeset
39
2463
be5c0f4155f6 move SharedLibrary into OrthancFramework
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2447
diff changeset
40 #if ORTHANC_SANDBOXED == 1
be5c0f4155f6 move SharedLibrary into OrthancFramework
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2447
diff changeset
41 # error The namespace SystemToolbox cannot be used in sandboxed environments
be5c0f4155f6 move SharedLibrary into OrthancFramework
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2447
diff changeset
42 #endif
884
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
43
1397
704de8c30ff5 modularization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1288
diff changeset
44 #if defined(_WIN32)
704de8c30ff5 modularization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1288
diff changeset
45 #include <windows.h>
704de8c30ff5 modularization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1288
diff changeset
46 #endif
704de8c30ff5 modularization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1288
diff changeset
47
2463
be5c0f4155f6 move SharedLibrary into OrthancFramework
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2447
diff changeset
48 #include <string>
be5c0f4155f6 move SharedLibrary into OrthancFramework
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2447
diff changeset
49 #include <boost/noncopyable.hpp>
be5c0f4155f6 move SharedLibrary into OrthancFramework
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2447
diff changeset
50
884
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
51 namespace Orthanc
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
52 {
1630
ffd23c0104af "/system" URI gives information about the plugins used for storage area and DB back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1397
diff changeset
53 class SharedLibrary : public boost::noncopyable
884
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
54 {
893
f57802f8b4dc plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 887
diff changeset
55 public:
f57802f8b4dc plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 887
diff changeset
56 #if defined(_WIN32)
f57802f8b4dc plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 887
diff changeset
57 typedef FARPROC FunctionPointer;
f57802f8b4dc plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 887
diff changeset
58 #else
f57802f8b4dc plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 887
diff changeset
59 typedef void* FunctionPointer;
f57802f8b4dc plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 887
diff changeset
60 #endif
f57802f8b4dc plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 887
diff changeset
61
884
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
62 private:
887
4066e6f2d134 PluginsManager
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 885
diff changeset
63 std::string path_;
884
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
64 void *handle_;
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
65
893
f57802f8b4dc plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 887
diff changeset
66 FunctionPointer GetFunctionInternal(const std::string& name);
885
0570a8c859cb SharedLibrary class
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 884
diff changeset
67
884
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
68 public:
2223
29689b30f9ae cppcheck
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2136
diff changeset
69 explicit SharedLibrary(const std::string& path);
885
0570a8c859cb SharedLibrary class
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 884
diff changeset
70
0570a8c859cb SharedLibrary class
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 884
diff changeset
71 ~SharedLibrary();
0570a8c859cb SharedLibrary class
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 884
diff changeset
72
887
4066e6f2d134 PluginsManager
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 885
diff changeset
73 const std::string& GetPath() const
4066e6f2d134 PluginsManager
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 885
diff changeset
74 {
4066e6f2d134 PluginsManager
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 885
diff changeset
75 return path_;
4066e6f2d134 PluginsManager
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 885
diff changeset
76 }
4066e6f2d134 PluginsManager
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 885
diff changeset
77
885
0570a8c859cb SharedLibrary class
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 884
diff changeset
78 bool HasFunction(const std::string& name);
0570a8c859cb SharedLibrary class
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 884
diff changeset
79
893
f57802f8b4dc plugins for windows
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 887
diff changeset
80 FunctionPointer GetFunction(const std::string& name);
884
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
81 };
cd8a69aa4093 creation of branch plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
82 }