Mercurial > hg > orthanc
annotate OrthancFramework/Sources/Toolbox.h @ 5577:9e74e761b108 find-refactoring
integration mainline->find-refactoring
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 26 Apr 2024 17:43:22 +0200 |
parents | d7eaa568da15 |
children | f7adfb22e20e |
rev | line source |
---|---|
0 | 1 /** |
59 | 2 * Orthanc - A Lightweight, RESTful DICOM Store |
1900 | 3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics |
1288
6e7e5ed91c2d
upgrade to year 2015
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1103
diff
changeset
|
4 * Department, University Hospital of Liege, Belgium |
5485
48b8dae6dc77
upgrade to year 2024
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5430
diff
changeset
|
5 * Copyright (C) 2017-2024 Osimis S.A., Belgium |
48b8dae6dc77
upgrade to year 2024
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5430
diff
changeset
|
6 * Copyright (C) 2021-2024 Sebastien Jodogne, ICTEAM UCLouvain, Belgium |
0 | 7 * |
8 * This program is free software: you can redistribute it and/or | |
4119
bf7b9edf6b81
re-licensing the OrthancFramework to LGPL, in order to license Stone of Orthanc under LGPL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4055
diff
changeset
|
9 * modify it under the terms of the GNU Lesser General Public License |
bf7b9edf6b81
re-licensing the OrthancFramework to LGPL, in order to license Stone of Orthanc under LGPL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4055
diff
changeset
|
10 * as published by the Free Software Foundation, either version 3 of |
bf7b9edf6b81
re-licensing the OrthancFramework to LGPL, in order to license Stone of Orthanc under LGPL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4055
diff
changeset
|
11 * the License, or (at your option) any later version. |
136 | 12 * |
0 | 13 * This program is distributed in the hope that it will be useful, but |
14 * WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
4119
bf7b9edf6b81
re-licensing the OrthancFramework to LGPL, in order to license Stone of Orthanc under LGPL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4055
diff
changeset
|
16 * Lesser General Public License for more details. |
0 | 17 * |
4119
bf7b9edf6b81
re-licensing the OrthancFramework to LGPL, in order to license Stone of Orthanc under LGPL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4055
diff
changeset
|
18 * You should have received a copy of the GNU Lesser General Public |
bf7b9edf6b81
re-licensing the OrthancFramework to LGPL, in order to license Stone of Orthanc under LGPL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4055
diff
changeset
|
19 * License along with this program. If not, see |
bf7b9edf6b81
re-licensing the OrthancFramework to LGPL, in order to license Stone of Orthanc under LGPL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4055
diff
changeset
|
20 * <http://www.gnu.org/licenses/>. |
0 | 21 **/ |
22 | |
23 | |
24 #pragma once | |
25 | |
453 | 26 #include "Enumerations.h" |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3991
diff
changeset
|
27 #include "OrthancFramework.h" |
453 | 28 |
0 | 29 #include <stdint.h> |
30 #include <vector> | |
31 #include <string> | |
4392
3af1d763763a
confining Json::Reader and Json::*Writer into Toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4199
diff
changeset
|
32 #include <json/value.h> |
0 | 33 |
2137
595cf22b3e7e
safety checks of macros
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2136
diff
changeset
|
34 |
595cf22b3e7e
safety checks of macros
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2136
diff
changeset
|
35 #if !defined(ORTHANC_ENABLE_BASE64) |
595cf22b3e7e
safety checks of macros
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2136
diff
changeset
|
36 # error The macro ORTHANC_ENABLE_BASE64 must be defined |
595cf22b3e7e
safety checks of macros
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2136
diff
changeset
|
37 #endif |
595cf22b3e7e
safety checks of macros
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2136
diff
changeset
|
38 |
2367
2aff870c2c58
refactoring of BoostConfiguration.cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2330
diff
changeset
|
39 #if !defined(ORTHANC_ENABLE_LOCALE) |
2aff870c2c58
refactoring of BoostConfiguration.cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2330
diff
changeset
|
40 # error The macro ORTHANC_ENABLE_LOCALE must be defined |
2aff870c2c58
refactoring of BoostConfiguration.cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2330
diff
changeset
|
41 #endif |
2aff870c2c58
refactoring of BoostConfiguration.cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2330
diff
changeset
|
42 |
2137
595cf22b3e7e
safety checks of macros
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2136
diff
changeset
|
43 #if !defined(ORTHANC_ENABLE_MD5) |
595cf22b3e7e
safety checks of macros
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2136
diff
changeset
|
44 # error The macro ORTHANC_ENABLE_MD5 must be defined |
595cf22b3e7e
safety checks of macros
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2136
diff
changeset
|
45 #endif |
595cf22b3e7e
safety checks of macros
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2136
diff
changeset
|
46 |
595cf22b3e7e
safety checks of macros
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2136
diff
changeset
|
47 #if !defined(ORTHANC_ENABLE_PUGIXML) |
595cf22b3e7e
safety checks of macros
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2136
diff
changeset
|
48 # error The macro ORTHANC_ENABLE_PUGIXML must be defined |
595cf22b3e7e
safety checks of macros
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2136
diff
changeset
|
49 #endif |
595cf22b3e7e
safety checks of macros
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2136
diff
changeset
|
50 |
4026
05a363186da6
ORTHANC_BUILDING_FRAMEWORK_LIBRARY, Orthanc::InitializeFramework()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3992
diff
changeset
|
51 #if !defined(ORTHANC_ENABLE_SSL) |
05a363186da6
ORTHANC_BUILDING_FRAMEWORK_LIBRARY, Orthanc::InitializeFramework()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3992
diff
changeset
|
52 # error The macro ORTHANC_ENABLE_SSL must be defined |
05a363186da6
ORTHANC_BUILDING_FRAMEWORK_LIBRARY, Orthanc::InitializeFramework()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3992
diff
changeset
|
53 #endif |
05a363186da6
ORTHANC_BUILDING_FRAMEWORK_LIBRARY, Orthanc::InitializeFramework()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3992
diff
changeset
|
54 |
2141 | 55 |
56 /** | |
57 * NOTE: GUID vs. UUID | |
58 * The simple answer is: no difference, they are the same thing. Treat | |
59 * them as a 16 byte (128 bits) value that is used as a unique | |
60 * value. In Microsoft-speak they are called GUIDs, but call them | |
61 * UUIDs when not using Microsoft-speak. | |
62 * http://stackoverflow.com/questions/246930/is-there-any-difference-between-a-guid-and-a-uuid | |
63 **/ | |
64 | |
65 | |
3203
810772486249
URI "/instances/.../file" can return DICOMweb JSON or XML, depending on Accept header
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
66 #if ORTHANC_ENABLE_PUGIXML == 1 |
810772486249
URI "/instances/.../file" can return DICOMweb JSON or XML, depending on Accept header
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
67 # include <pugixml.hpp> |
810772486249
URI "/instances/.../file" can return DICOMweb JSON or XML, depending on Accept header
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
68 #endif |
810772486249
URI "/instances/.../file" can return DICOMweb JSON or XML, depending on Accept header
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
69 |
5390
1c3b0cf341f0
Toolbox: added ElapsedTimeLogger debug tool
Alain Mazy <am@osimis.io>
parents:
5379
diff
changeset
|
70 #include <boost/date_time/posix_time/posix_time.hpp> |
1c3b0cf341f0
Toolbox: added ElapsedTimeLogger debug tool
Alain Mazy <am@osimis.io>
parents:
5379
diff
changeset
|
71 |
2141 | 72 |
59 | 73 namespace Orthanc |
0 | 74 { |
75 typedef std::vector<std::string> UriComponents; | |
76 | |
284
06aa7b7b6723
implementation of a single-threaded cache mechanism
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
77 class NullType |
06aa7b7b6723
implementation of a single-threaded cache mechanism
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
78 { |
06aa7b7b6723
implementation of a single-threaded cache mechanism
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
79 }; |
06aa7b7b6723
implementation of a single-threaded cache mechanism
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
247
diff
changeset
|
80 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
81 class ORTHANC_PUBLIC Toolbox |
0 | 82 { |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
83 public: |
4026
05a363186da6
ORTHANC_BUILDING_FRAMEWORK_LIBRARY, Orthanc::InitializeFramework()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3992
diff
changeset
|
84 class ORTHANC_PUBLIC LinesIterator |
2513
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
85 { |
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
86 private: |
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
87 const std::string& content_; |
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
88 size_t lineStart_; |
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
89 size_t lineEnd_; |
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
90 |
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
91 void FindEndOfLine(); |
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
92 |
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
93 public: |
4199 | 94 explicit LinesIterator(const std::string& content); |
2513
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
95 |
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
96 bool GetLine(std::string& target) const; |
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
97 |
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
98 void Next(); |
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
99 }; |
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
100 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
101 static void ToUpperCase(std::string& s); // Inplace version |
690
2e67366aab83
case-insensitive matching of Application Entity Titles
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
689
diff
changeset
|
102 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
103 static void ToLowerCase(std::string& s); // Inplace version |
0 | 104 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
105 static void ToUpperCase(std::string& result, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
106 const std::string& source); |
690
2e67366aab83
case-insensitive matching of Application Entity Titles
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
689
diff
changeset
|
107 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
108 static void ToLowerCase(std::string& result, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
109 const std::string& source); |
0 | 110 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
111 static void SplitUriComponents(UriComponents& components, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
112 const std::string& uri); |
0 | 113 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
114 static void TruncateUri(UriComponents& target, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
115 const UriComponents& source, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
116 size_t fromLevel); |
966
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
949
diff
changeset
|
117 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
118 static bool IsChildUri(const UriComponents& baseUri, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
119 const UriComponents& testedUri); |
0 | 120 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
121 static std::string FlattenUri(const UriComponents& components, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
122 size_t fromLevel = 0); |
0 | 123 |
5143
95d8e0540219
avoid double '/' in HttpClient uri
Alain Mazy <am@osimis.io>
parents:
4981
diff
changeset
|
124 static std::string JoinUri(const std::string& base, const std::string& uri); |
95d8e0540219
avoid double '/' in HttpClient uri
Alain Mazy <am@osimis.io>
parents:
4981
diff
changeset
|
125 |
2137
595cf22b3e7e
safety checks of macros
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2136
diff
changeset
|
126 #if ORTHANC_ENABLE_MD5 == 1 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
127 static void ComputeMD5(std::string& result, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
128 const std::string& data); |
24 | 129 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
130 static void ComputeMD5(std::string& result, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
131 const void* data, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
132 size_t size); |
5377 | 133 |
134 static void ComputeMD5(std::string& result, | |
135 const std::set<std::string>& data); | |
1479
8f28a1cd2354
possibility to disable md5 and base64 support in the toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1446
diff
changeset
|
136 #endif |
693
01d8611c4a60
md5 for attached files
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
690
diff
changeset
|
137 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
138 static void ComputeSHA1(std::string& result, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
139 const std::string& data); |
177 | 140 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
141 static void ComputeSHA1(std::string& result, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
142 const void* data, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
143 size_t size); |
1833
47d032c48818
"OrthancPluginComputeMd5()" and "OrthancPluginComputeSha1()" to compute MD5/SHA-1 hash
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1818
diff
changeset
|
144 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
145 static bool IsSHA1(const void* str, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
146 size_t size); |
1446
8dc80ba768aa
refactoring: IHttpHandler does not use std::string to hold the request body
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1430
diff
changeset
|
147 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
148 static bool IsSHA1(const std::string& s); |
402 | 149 |
2137
595cf22b3e7e
safety checks of macros
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2136
diff
changeset
|
150 #if ORTHANC_ENABLE_BASE64 == 1 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
151 static void DecodeBase64(std::string& result, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
152 const std::string& data); |
365 | 153 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
154 static void EncodeBase64(std::string& result, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
155 const std::string& data); |
1648 | 156 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
157 static bool DecodeDataUriScheme(std::string& mime, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
158 std::string& content, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
159 const std::string& source); |
1818
1065401501fb
ParsedDicomFile::CreateFromJson
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1648
diff
changeset
|
160 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
161 static void EncodeDataUriScheme(std::string& result, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
162 const std::string& mime, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
163 const std::string& content); |
1479
8f28a1cd2354
possibility to disable md5 and base64 support in the toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1446
diff
changeset
|
164 #endif |
87
8517e2c44283
path to configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
59
diff
changeset
|
165 |
2367
2aff870c2c58
refactoring of BoostConfiguration.cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2330
diff
changeset
|
166 #if ORTHANC_ENABLE_LOCALE == 1 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
167 static std::string ConvertToUtf8(const std::string& source, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
168 Encoding sourceEncoding, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
169 bool hasCodeExtensions); |
1557 | 170 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
171 static std::string ConvertFromUtf8(const std::string& source, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
172 Encoding targetEncoding); |
2367
2aff870c2c58
refactoring of BoostConfiguration.cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2330
diff
changeset
|
173 #endif |
107
3b45473c0a73
replace boost::locale with iconv for debian
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
87
diff
changeset
|
174 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
175 static bool IsAsciiString(const void* data, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
176 size_t size); |
2129
0c09d1af22f3
"/tools/invalidate-tags" to invalidate the JSON summary of all the DICOM files
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2077
diff
changeset
|
177 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
178 static bool IsAsciiString(const std::string& s); |
2442
330349d712f9
fix Toolbox::IsAsciiString
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2373
diff
changeset
|
179 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
180 static std::string ConvertToAscii(const std::string& source); |
187
8e673a65564d
refactoring of storing new instances
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
177
diff
changeset
|
181 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
182 static std::string StripSpaces(const std::string& source); |
247
c9b3ba0fd140
path management in zip files
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
187
diff
changeset
|
183 |
336 | 184 // In-place percent-decoding for URL |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
185 static void UrlDecode(std::string& s); |
453 | 186 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
187 static Endianness DetectEndianness(); |
608 | 188 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
189 static std::string WildcardToRegularExpression(const std::string& s); |
608 | 190 |
5373 | 191 // TokenizeString result might contain empty strings (not SplitString) |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
192 static void TokenizeString(std::vector<std::string>& result, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
193 const std::string& source, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
194 char separator); |
800
ecedd89055db
generation of DICOM images from PNG files
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
707
diff
changeset
|
195 |
5373 | 196 // SplitString result won't contain empty strings (compared to TokenizeString) |
197 static void SplitString(std::vector<std::string>& result, | |
198 const std::string& source, | |
199 char separator); | |
200 | |
201 // SplitString result won't contain empty strings (compared to TokenizeString) | |
202 static void SplitString(std::set<std::string>& result, | |
203 const std::string& source, | |
204 char separator); | |
205 | |
4938
f630796a59b1
ExpandResource now able to return computed tags (like ModalitiesInStudies)
Alain Mazy <am@osimis.io>
parents:
4936
diff
changeset
|
206 static void JoinStrings(std::string& result, |
5167 | 207 const std::set<std::string>& source, |
4938
f630796a59b1
ExpandResource now able to return computed tags (like ModalitiesInStudies)
Alain Mazy <am@osimis.io>
parents:
4936
diff
changeset
|
208 const char* separator); |
f630796a59b1
ExpandResource now able to return computed tags (like ModalitiesInStudies)
Alain Mazy <am@osimis.io>
parents:
4936
diff
changeset
|
209 |
f630796a59b1
ExpandResource now able to return computed tags (like ModalitiesInStudies)
Alain Mazy <am@osimis.io>
parents:
4936
diff
changeset
|
210 static void JoinStrings(std::string& result, |
5167 | 211 const std::vector<std::string>& source, |
4938
f630796a59b1
ExpandResource now able to return computed tags (like ModalitiesInStudies)
Alain Mazy <am@osimis.io>
parents:
4936
diff
changeset
|
212 const char* separator); |
f630796a59b1
ExpandResource now able to return computed tags (like ModalitiesInStudies)
Alain Mazy <am@osimis.io>
parents:
4936
diff
changeset
|
213 |
4936
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
214 // returns true if all element of 'needles' are found in 'haystack' |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
215 template <typename T> static bool IsSetInSet(const std::set<T>& needles, const std::set<T>& haystack) |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
216 { |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
217 for (typename std::set<T>::const_iterator it = needles.begin(); |
4981 | 218 it != needles.end(); ++it) |
4936
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
219 { |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
220 if (haystack.count(*it) == 0) |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
221 { |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
222 return false; |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
223 } |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
224 } |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
225 |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
226 return true; |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
227 } |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
228 |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
229 // returns the set of elements from 'needles' that are not in 'haystack' |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
230 template <typename T> static size_t GetMissingsFromSet(std::set<T>& missings, const std::set<T>& needles, const std::set<T>& haystack) |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
231 { |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
232 missings.clear(); |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
233 |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
234 for (typename std::set<T>::const_iterator it = needles.begin(); |
4981 | 235 it != needles.end(); ++it) |
4936
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
236 { |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
237 if (haystack.count(*it) == 0) |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
238 { |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
239 missings.insert(*it); |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
240 } |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
241 } |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
242 |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
243 return missings.size(); |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
244 } |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
245 |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
246 template <typename T> static void AppendSets(std::set<T>& target, const std::set<T>& toAppend) |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
247 { |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
248 for (typename std::set<T>::const_iterator it = toAppend.begin(); |
4981 | 249 it != toAppend.end(); ++it) |
4936
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
250 { |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
251 target.insert(*it); |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
252 } |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
253 } |
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
254 |
4941 | 255 template <typename T> static void RemoveSets(std::set<T>& target, const std::set<T>& toRemove) |
256 { | |
257 for (typename std::set<T>::const_iterator it = toRemove.begin(); | |
4981 | 258 it != toRemove.end(); ++it) |
4941 | 259 { |
260 target.erase(*it); | |
261 } | |
262 } | |
4936
8422e4f99a18
Handling RequestedTags in ExpandResource -> read parent main dicom tags if required. Not yet getting missing tags from file. Integration tests ok
Alain Mazy <am@osimis.io>
parents:
4870
diff
changeset
|
263 |
5379 | 264 // returns true if all element of 'needles' are found in 'haystack' |
265 template <typename T> static void GetIntersection(std::set<T>& target, const std::set<T>& a, const std::set<T>& b) | |
266 { | |
267 target.clear(); | |
268 | |
269 for (typename std::set<T>::const_iterator it = a.begin(); | |
270 it != a.end(); ++it) | |
271 { | |
272 if (b.count(*it) > 0) | |
273 { | |
274 target.insert(*it); | |
275 } | |
276 } | |
277 } | |
278 | |
279 | |
2136
dd609a99d39a
uniformization of the macro naming
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2129
diff
changeset
|
280 #if ORTHANC_ENABLE_PUGIXML == 1 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
281 static void JsonToXml(std::string& target, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
282 const Json::Value& source, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
283 const std::string& rootElement = "root", |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
284 const std::string& arrayElement = "item"); |
1045
0bfeeb6d340f
json to xml conversion with pugixml
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
971
diff
changeset
|
285 #endif |
1050
64f1842aae2e
Toolbox::ExecuteSystemCommand
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1045
diff
changeset
|
286 |
3203
810772486249
URI "/instances/.../file" can return DICOMweb JSON or XML, depending on Accept header
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
287 #if ORTHANC_ENABLE_PUGIXML == 1 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
288 static void XmlToString(std::string& target, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
289 const pugi::xml_document& source); |
3203
810772486249
URI "/instances/.../file" can return DICOMweb JSON or XML, depending on Accept header
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
290 #endif |
810772486249
URI "/instances/.../file" can return DICOMweb JSON or XML, depending on Accept header
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
291 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
292 static bool IsInteger(const std::string& str); |
1424
fe384a9d3b51
OrthancPluginGetConfiguration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1397
diff
changeset
|
293 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
294 static void CopyJsonWithoutComments(Json::Value& target, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
295 const Json::Value& source); |
1430
ad94a3583b07
Plugins can send answers as multipart messages
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1425
diff
changeset
|
296 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
297 static bool StartsWith(const std::string& str, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
298 const std::string& prefix); |
1490
596927722403
support of --logdir by the internal logger
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1479
diff
changeset
|
299 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
300 static void UriEncode(std::string& target, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
301 const std::string& source); |
2071 | 302 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
303 static std::string GetJsonStringField(const ::Json::Value& json, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
304 const std::string& key, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
305 const std::string& defaultValue); |
2071 | 306 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
307 static bool GetJsonBooleanField(const ::Json::Value& json, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
308 const std::string& key, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
309 bool defaultValue); |
2071 | 310 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
311 static int GetJsonIntegerField(const ::Json::Value& json, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
312 const std::string& key, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
313 int defaultValue); |
2071 | 314 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
315 static unsigned int GetJsonUnsignedIntegerField(const ::Json::Value& json, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
316 const std::string& key, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
317 unsigned int defaultValue); |
2141 | 318 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
319 static bool IsUuid(const std::string& str); |
2141 | 320 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
321 static bool StartsWithUuid(const std::string& str); |
2326
423d3b692bb9
Upgrade to Boost 1.64.0, and Toolbox::ToUpperCaseWithAccents
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2244
diff
changeset
|
322 |
2367
2aff870c2c58
refactoring of BoostConfiguration.cmake
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2330
diff
changeset
|
323 #if ORTHANC_ENABLE_LOCALE == 1 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
324 static void InitializeGlobalLocale(const char* locale); |
2326
423d3b692bb9
Upgrade to Boost 1.64.0, and Toolbox::ToUpperCaseWithAccents
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2244
diff
changeset
|
325 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
326 static void FinalizeGlobalLocale(); |
2326
423d3b692bb9
Upgrade to Boost 1.64.0, and Toolbox::ToUpperCaseWithAccents
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2244
diff
changeset
|
327 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
328 static std::string ToUpperCaseWithAccents(const std::string& source); |
2373 | 329 #endif |
2512
4dcafa8d6633
SystemToolbox::GenerateUuid moved to Toolbox::GenerateUuid
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
330 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
331 static void InitializeOpenSsl(); |
4026
05a363186da6
ORTHANC_BUILDING_FRAMEWORK_LIBRARY, Orthanc::InitializeFramework()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3992
diff
changeset
|
332 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
333 static void FinalizeOpenSsl(); |
2677
0196d07a900f
migrate OpenSSL initialization to Toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2513
diff
changeset
|
334 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
335 static std::string GenerateUuid(); |
2920
ad0e7def3338
Toolbox::SubstituteVariables and SystemToolbox::GetEnvironmentVariables
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2906
diff
changeset
|
336 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
337 static std::string SubstituteVariables(const std::string& source, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
338 const std::map<std::string, std::string>& dictionary); |
3217
cf8cbeb35f33
preliminary support of Korean character set
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3203
diff
changeset
|
339 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
340 static void RemoveIso2022EscapeSequences(std::string& dest, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
341 const std::string& src); |
3322
b32b7c44a223
Toolbox::Utf8ToUnicodeCharacter()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3217
diff
changeset
|
342 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
343 static void Utf8ToUnicodeCharacter(uint32_t& unicode, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
344 size_t& utf8Length, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
345 const std::string& utf8, |
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
346 size_t position); |
3608
7ae553d9c366
created DicomUserConnection::RequestStorageCommitment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3401
diff
changeset
|
347 |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
348 static std::string LargeHexadecimalToDecimal(const std::string& hex); |
3608
7ae553d9c366
created DicomUserConnection::RequestStorageCommitment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3401
diff
changeset
|
349 |
7ae553d9c366
created DicomUserConnection::RequestStorageCommitment()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3401
diff
changeset
|
350 // http://dicom.nema.org/medical/dicom/2019a/output/chtml/part05/sect_B.2.html |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
351 static std::string GenerateDicomPrivateUniqueIdentifier(); |
4055
9214e3a7b0a2
moving FromDcmtkTests.cpp from OrthancServer to OrthancFramework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4044
diff
changeset
|
352 |
9214e3a7b0a2
moving FromDcmtkTests.cpp from OrthancServer to OrthancFramework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4044
diff
changeset
|
353 static void SimplifyDicomAsJson(Json::Value& target, |
9214e3a7b0a2
moving FromDcmtkTests.cpp from OrthancServer to OrthancFramework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4044
diff
changeset
|
354 const Json::Value& source, |
9214e3a7b0a2
moving FromDcmtkTests.cpp from OrthancServer to OrthancFramework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4044
diff
changeset
|
355 DicomToJsonFormat format); |
4392
3af1d763763a
confining Json::Reader and Json::*Writer into Toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4199
diff
changeset
|
356 |
3af1d763763a
confining Json::Reader and Json::*Writer into Toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4199
diff
changeset
|
357 static bool ReadJson(Json::Value& target, |
3af1d763763a
confining Json::Reader and Json::*Writer into Toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4199
diff
changeset
|
358 const std::string& source); |
3af1d763763a
confining Json::Reader and Json::*Writer into Toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4199
diff
changeset
|
359 |
3af1d763763a
confining Json::Reader and Json::*Writer into Toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4199
diff
changeset
|
360 static bool ReadJson(Json::Value& target, |
3af1d763763a
confining Json::Reader and Json::*Writer into Toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4199
diff
changeset
|
361 const void* buffer, |
3af1d763763a
confining Json::Reader and Json::*Writer into Toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4199
diff
changeset
|
362 size_t size); |
3af1d763763a
confining Json::Reader and Json::*Writer into Toolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4199
diff
changeset
|
363 |
4397
3aeb5171fbd4
new function Toolbox::ReadJsonWithoutComments()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4394
diff
changeset
|
364 static bool ReadJsonWithoutComments(Json::Value& target, |
3aeb5171fbd4
new function Toolbox::ReadJsonWithoutComments()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4394
diff
changeset
|
365 const std::string& source); |
3aeb5171fbd4
new function Toolbox::ReadJsonWithoutComments()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4394
diff
changeset
|
366 |
3aeb5171fbd4
new function Toolbox::ReadJsonWithoutComments()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4394
diff
changeset
|
367 static bool ReadJsonWithoutComments(Json::Value& target, |
3aeb5171fbd4
new function Toolbox::ReadJsonWithoutComments()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4394
diff
changeset
|
368 const void* buffer, |
3aeb5171fbd4
new function Toolbox::ReadJsonWithoutComments()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4394
diff
changeset
|
369 size_t size); |
3aeb5171fbd4
new function Toolbox::ReadJsonWithoutComments()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4394
diff
changeset
|
370 |
4394
f7104e9d044c
functions to read/write JSON in OrthancPluginCppWrapper.h
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4392
diff
changeset
|
371 static void WriteFastJson(std::string& target, |
f7104e9d044c
functions to read/write JSON in OrthancPluginCppWrapper.h
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4392
diff
changeset
|
372 const Json::Value& source); |
f7104e9d044c
functions to read/write JSON in OrthancPluginCppWrapper.h
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4392
diff
changeset
|
373 |
f7104e9d044c
functions to read/write JSON in OrthancPluginCppWrapper.h
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4392
diff
changeset
|
374 static void WriteStyledJson(std::string& target, |
f7104e9d044c
functions to read/write JSON in OrthancPluginCppWrapper.h
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4392
diff
changeset
|
375 const Json::Value& source); |
4622
9086aeb9d9d2
RestApiCallDocumentation::SetAnswerHeader() and Toolbox::RemoveSurroundingQuotes()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4437
diff
changeset
|
376 |
9086aeb9d9d2
RestApiCallDocumentation::SetAnswerHeader() and Toolbox::RemoveSurroundingQuotes()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4437
diff
changeset
|
377 static void RemoveSurroundingQuotes(std::string& value); |
5390
1c3b0cf341f0
Toolbox: added ElapsedTimeLogger debug tool
Alain Mazy <am@osimis.io>
parents:
5379
diff
changeset
|
378 |
5430
b83192e7ad10
Now displaying timings when reading from/writing to disk in the verbose logs
Alain Mazy <am@osimis.io>
parents:
5390
diff
changeset
|
379 class ORTHANC_PUBLIC ElapsedTimer |
b83192e7ad10
Now displaying timings when reading from/writing to disk in the verbose logs
Alain Mazy <am@osimis.io>
parents:
5390
diff
changeset
|
380 { |
b83192e7ad10
Now displaying timings when reading from/writing to disk in the verbose logs
Alain Mazy <am@osimis.io>
parents:
5390
diff
changeset
|
381 boost::posix_time::ptime start_; |
b83192e7ad10
Now displaying timings when reading from/writing to disk in the verbose logs
Alain Mazy <am@osimis.io>
parents:
5390
diff
changeset
|
382 public: |
b83192e7ad10
Now displaying timings when reading from/writing to disk in the verbose logs
Alain Mazy <am@osimis.io>
parents:
5390
diff
changeset
|
383 explicit ElapsedTimer(); |
b83192e7ad10
Now displaying timings when reading from/writing to disk in the verbose logs
Alain Mazy <am@osimis.io>
parents:
5390
diff
changeset
|
384 |
b83192e7ad10
Now displaying timings when reading from/writing to disk in the verbose logs
Alain Mazy <am@osimis.io>
parents:
5390
diff
changeset
|
385 uint64_t GetElapsedMilliseconds(); |
b83192e7ad10
Now displaying timings when reading from/writing to disk in the verbose logs
Alain Mazy <am@osimis.io>
parents:
5390
diff
changeset
|
386 uint64_t GetElapsedMicroseconds(); |
b83192e7ad10
Now displaying timings when reading from/writing to disk in the verbose logs
Alain Mazy <am@osimis.io>
parents:
5390
diff
changeset
|
387 uint64_t GetElapsedNanoseconds(); |
b83192e7ad10
Now displaying timings when reading from/writing to disk in the verbose logs
Alain Mazy <am@osimis.io>
parents:
5390
diff
changeset
|
388 |
b83192e7ad10
Now displaying timings when reading from/writing to disk in the verbose logs
Alain Mazy <am@osimis.io>
parents:
5390
diff
changeset
|
389 std::string GetHumanElapsedDuration(); |
b83192e7ad10
Now displaying timings when reading from/writing to disk in the verbose logs
Alain Mazy <am@osimis.io>
parents:
5390
diff
changeset
|
390 std::string GetHumanTransferSpeed(bool full, uint64_t sizeInBytes); |
b83192e7ad10
Now displaying timings when reading from/writing to disk in the verbose logs
Alain Mazy <am@osimis.io>
parents:
5390
diff
changeset
|
391 |
b83192e7ad10
Now displaying timings when reading from/writing to disk in the verbose logs
Alain Mazy <am@osimis.io>
parents:
5390
diff
changeset
|
392 void Restart(); |
b83192e7ad10
Now displaying timings when reading from/writing to disk in the verbose logs
Alain Mazy <am@osimis.io>
parents:
5390
diff
changeset
|
393 }; |
b83192e7ad10
Now displaying timings when reading from/writing to disk in the verbose logs
Alain Mazy <am@osimis.io>
parents:
5390
diff
changeset
|
394 |
5390
1c3b0cf341f0
Toolbox: added ElapsedTimeLogger debug tool
Alain Mazy <am@osimis.io>
parents:
5379
diff
changeset
|
395 // This is a helper class to measure and log time spend e.g in a method. |
1c3b0cf341f0
Toolbox: added ElapsedTimeLogger debug tool
Alain Mazy <am@osimis.io>
parents:
5379
diff
changeset
|
396 // This should be used only during debugging and should likely not ever used in a release. |
1c3b0cf341f0
Toolbox: added ElapsedTimeLogger debug tool
Alain Mazy <am@osimis.io>
parents:
5379
diff
changeset
|
397 // By default, you should use it as a RAII but you may force Restart/StopAndLog manually if needed. |
1c3b0cf341f0
Toolbox: added ElapsedTimeLogger debug tool
Alain Mazy <am@osimis.io>
parents:
5379
diff
changeset
|
398 class ORTHANC_PUBLIC ElapsedTimeLogger |
1c3b0cf341f0
Toolbox: added ElapsedTimeLogger debug tool
Alain Mazy <am@osimis.io>
parents:
5379
diff
changeset
|
399 { |
1c3b0cf341f0
Toolbox: added ElapsedTimeLogger debug tool
Alain Mazy <am@osimis.io>
parents:
5379
diff
changeset
|
400 private: |
5430
b83192e7ad10
Now displaying timings when reading from/writing to disk in the verbose logs
Alain Mazy <am@osimis.io>
parents:
5390
diff
changeset
|
401 ElapsedTimer timer_; |
b83192e7ad10
Now displaying timings when reading from/writing to disk in the verbose logs
Alain Mazy <am@osimis.io>
parents:
5390
diff
changeset
|
402 const std::string message_; |
5390
1c3b0cf341f0
Toolbox: added ElapsedTimeLogger debug tool
Alain Mazy <am@osimis.io>
parents:
5379
diff
changeset
|
403 bool logged_; |
1c3b0cf341f0
Toolbox: added ElapsedTimeLogger debug tool
Alain Mazy <am@osimis.io>
parents:
5379
diff
changeset
|
404 |
1c3b0cf341f0
Toolbox: added ElapsedTimeLogger debug tool
Alain Mazy <am@osimis.io>
parents:
5379
diff
changeset
|
405 public: |
1c3b0cf341f0
Toolbox: added ElapsedTimeLogger debug tool
Alain Mazy <am@osimis.io>
parents:
5379
diff
changeset
|
406 explicit ElapsedTimeLogger(const std::string& message); |
1c3b0cf341f0
Toolbox: added ElapsedTimeLogger debug tool
Alain Mazy <am@osimis.io>
parents:
5379
diff
changeset
|
407 ~ElapsedTimeLogger(); |
1c3b0cf341f0
Toolbox: added ElapsedTimeLogger debug tool
Alain Mazy <am@osimis.io>
parents:
5379
diff
changeset
|
408 |
1c3b0cf341f0
Toolbox: added ElapsedTimeLogger debug tool
Alain Mazy <am@osimis.io>
parents:
5379
diff
changeset
|
409 void Restart(); |
1c3b0cf341f0
Toolbox: added ElapsedTimeLogger debug tool
Alain Mazy <am@osimis.io>
parents:
5379
diff
changeset
|
410 void StopAndLog(); |
1c3b0cf341f0
Toolbox: added ElapsedTimeLogger debug tool
Alain Mazy <am@osimis.io>
parents:
5379
diff
changeset
|
411 }; |
1c3b0cf341f0
Toolbox: added ElapsedTimeLogger debug tool
Alain Mazy <am@osimis.io>
parents:
5379
diff
changeset
|
412 |
5430
b83192e7ad10
Now displaying timings when reading from/writing to disk in the verbose logs
Alain Mazy <am@osimis.io>
parents:
5390
diff
changeset
|
413 static std::string GetHumanFileSize(uint64_t sizeInBytes); |
b83192e7ad10
Now displaying timings when reading from/writing to disk in the verbose logs
Alain Mazy <am@osimis.io>
parents:
5390
diff
changeset
|
414 |
b83192e7ad10
Now displaying timings when reading from/writing to disk in the verbose logs
Alain Mazy <am@osimis.io>
parents:
5390
diff
changeset
|
415 static std::string GetHumanDuration(uint64_t durationInNanoseconds); |
b83192e7ad10
Now displaying timings when reading from/writing to disk in the verbose logs
Alain Mazy <am@osimis.io>
parents:
5390
diff
changeset
|
416 |
b83192e7ad10
Now displaying timings when reading from/writing to disk in the verbose logs
Alain Mazy <am@osimis.io>
parents:
5390
diff
changeset
|
417 static std::string GetHumanTransferSpeed(bool full, uint64_t sizeInBytes, uint64_t durationInNanoseconds); |
b83192e7ad10
Now displaying timings when reading from/writing to disk in the verbose logs
Alain Mazy <am@osimis.io>
parents:
5390
diff
changeset
|
418 |
5575
d7eaa568da15
Orthanc::Logging automatically detects whether the Orthanc core supports OrthancPluginLogMessage()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5485
diff
changeset
|
419 static bool ParseVersion(unsigned int& major, |
d7eaa568da15
Orthanc::Logging automatically detects whether the Orthanc core supports OrthancPluginLogMessage()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5485
diff
changeset
|
420 unsigned int& minor, |
d7eaa568da15
Orthanc::Logging automatically detects whether the Orthanc core supports OrthancPluginLogMessage()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5485
diff
changeset
|
421 unsigned int& revision, |
d7eaa568da15
Orthanc::Logging automatically detects whether the Orthanc core supports OrthancPluginLogMessage()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5485
diff
changeset
|
422 const char* version); |
d7eaa568da15
Orthanc::Logging automatically detects whether the Orthanc core supports OrthancPluginLogMessage()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5485
diff
changeset
|
423 |
d7eaa568da15
Orthanc::Logging automatically detects whether the Orthanc core supports OrthancPluginLogMessage()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5485
diff
changeset
|
424 static bool IsVersionAbove(const char* version, |
d7eaa568da15
Orthanc::Logging automatically detects whether the Orthanc core supports OrthancPluginLogMessage()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5485
diff
changeset
|
425 unsigned int major, |
d7eaa568da15
Orthanc::Logging automatically detects whether the Orthanc core supports OrthancPluginLogMessage()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5485
diff
changeset
|
426 unsigned int minor, |
d7eaa568da15
Orthanc::Logging automatically detects whether the Orthanc core supports OrthancPluginLogMessage()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5485
diff
changeset
|
427 unsigned int revision); |
3991
5d2348b39392
turning toolbox namespaces into classes to control visibility in shared libraries
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3990
diff
changeset
|
428 }; |
0 | 429 } |
2513
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
430 |
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
431 |
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
432 |
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
433 |
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
434 /** |
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
435 * The plain C, opaque data structure "OrthancLinesIterator" is a thin |
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
436 * wrapper around Orthanc::Toolbox::LinesIterator, and is only used by |
4026
05a363186da6
ORTHANC_BUILDING_FRAMEWORK_LIBRARY, Orthanc::InitializeFramework()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3992
diff
changeset
|
437 * "../Resources/Patches/dcmtk-dcdict_orthanc.cc", in order to avoid |
05a363186da6
ORTHANC_BUILDING_FRAMEWORK_LIBRARY, Orthanc::InitializeFramework()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3992
diff
changeset
|
438 * code duplication |
2513
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
439 **/ |
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
440 |
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
441 struct OrthancLinesIterator; |
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
442 |
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
443 OrthancLinesIterator* OrthancLinesIterator_Create(const std::string& content); |
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
444 |
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
445 bool OrthancLinesIterator_GetLine(std::string& target, |
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
446 const OrthancLinesIterator* iterator); |
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
447 |
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
448 void OrthancLinesIterator_Next(OrthancLinesIterator* iterator); |
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
449 |
97a74f0eac7a
loading DICOM dictionaries in sandboxed environments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2512
diff
changeset
|
450 void OrthancLinesIterator_Free(OrthancLinesIterator* iterator); |