PCRE2 C++ Wrapper 1.2.4
pcre2cpp
Loading...
Searching...
No Matches
config.hpp
Go to the documentation of this file.
1/*
2 * pcre2cpp - PCRE2 cpp wrapper
3 *
4 * Licensed under the BSD 3-Clause License with Attribution Requirement.
5 * See the LICENSE file for details: https://github.com/MAIPA01/pcre2cpp/blob/main/LICENSE
6 *
7 * Copyright (c) 2025, Patryk Antosik (MAIPA01)
8 *
9 * PCRE2 library included in this project:
10 * Copyright (c) 2016-2024, University of Cambridge.
11 *
12 * See the LICENSE_PCRE2 file for details: https://github.com/MAIPA01/pcre2cpp/blob/main/LICENSE_PCRE2
13 */
14
15#pragma once
16#ifndef _PCRE2CPP_CONFIG_HPP_
17 #define _PCRE2CPP_CONFIG_HPP_
18
23
29
34
39
40 #pragma region VERSION
45 #define PCRE2CPP_VERSION_MAJOR 1
50 #define PCRE2CPP_VERSION_MINOR 2
55 #define PCRE2CPP_VERSION_PATCH 4
56
61 #define _PCRE2CPP_STRINGIFY_HELPER(x) #x
62
67 #define _PCRE2CPP_VERSION_TO_STRING(major, minor, patch) \
68 _PCRE2CPP_STRINGIFY_HELPER(major) "." _PCRE2CPP_STRINGIFY_HELPER(minor) "." _PCRE2CPP_STRINGIFY_HELPER(patch)
69
73 #define _PCRE2CPP_VERSION_TO_INT(major, minor, patch) (major * 100 + minor * 10 + patch)
74
79 #define PCRE2CPP_VERSION_STRING \
80 _PCRE2CPP_VERSION_TO_STRING(PCRE2CPP_VERSION_MAJOR, PCRE2CPP_VERSION_MINOR, PCRE2CPP_VERSION_PATCH)
81
85 #define PCRE2CPP_VERSION_INT _PCRE2CPP_VERSION_TO_INT(PCRE2CPP_VERSION_MAJOR, PCRE2CPP_VERSION_MINOR, PCRE2CPP_VERSION_PATCH)
90 #define PCRE2CPP_VERSION PCRE2CPP_VERSION_STRING
91 #pragma endregion
92
93 #pragma region LAST_UPDATE
98 #define PCRE2CPP_LAST_UPDATE_DAY 07
103 #define PCRE2CPP_LAST_UPDATE_MONTH 04
108 #define PCRE2CPP_LAST_UPDATE_YEAR 2026
109
114 #define _PCRE2CPP_LAST_UPDATE_DATE_HELPER(day, month, year) \
115 _PCRE2CPP_STRINGIFY_HELPER(day) "." _PCRE2CPP_STRINGIFY_HELPER(month) "." _PCRE2CPP_STRINGIFY_HELPER(year)
116
121 #define PCRE2CPP_LAST_UPDATE_DATE \
122 _PCRE2CPP_LAST_UPDATE_DATE_HELPER(PCRE2CPP_LAST_UPDATE_DAY, PCRE2CPP_LAST_UPDATE_MONTH, PCRE2CPP_LAST_UPDATE_YEAR)
123 #pragma endregion
124
125 #pragma region CXX_VERSIONS
131 #ifndef _HAS_CXX17
132 // clang-format off
133 #define _PCRE2CPP_HAS_CXX17 __cplusplus >= 201703l
134 // clang-format on
135 #else
136 #define _PCRE2CPP_HAS_CXX17 _HAS_CXX17
137 #endif
138
144 #ifndef PCRE2CPP_ENABLE_CXX20
145 #define _PCRE2CPP_HAS_CXX20 0
146 #elif !defined(_HAS_CXX20)
147 // clang-format off
148 #define _PCRE2CPP_HAS_CXX20 __cplusplus >= 202002l
149 // clang-format on
150 #else
151 #define _PCRE2CPP_HAS_CXX20 _HAS_CXX20
152 #endif
153 #pragma endregion
154
160
166
167 #ifdef PCRE2CPP_CHANGE_ASSERTS_TO_EXCEPTIONS
168 #define _PCRE2CPP_HAS_EXCEPTIONS _PCRE2CPP_HAS_CXX17
169 #define _PCRE2CPP_HAS_ASSERTS 0
170 #else
171 #define _PCRE2CPP_HAS_EXCEPTIONS 0
172 #define _PCRE2CPP_HAS_ASSERTS _PCRE2CPP_HAS_CXX17
173 #endif
174
175 #if _PCRE2CPP_HAS_EXCEPTIONS
176 #define _PCRE2CPP_NOEXCEPT noexcept
177 #else
178 #define _PCRE2CPP_NOEXCEPT
179 #endif
180
181 #pragma region UTFS_ENABLED
187
193
199
200 #ifdef PCRE2CPP_DISABLE_UTF8
201 #define _PCRE2CPP_HAS_UTF8 0
202 #else
203 #define _PCRE2CPP_HAS_UTF8 1
204 #define PCRE2_CODE_UNIT_WIDTH 8
205 #endif
206
207 #ifdef PCRE2CPP_DISABLE_UTF16
208 #define _PCRE2CPP_HAS_UTF16 0
209 #else
210 #define _PCRE2CPP_HAS_UTF16 1
211 #ifndef PCRE2_CODE_UNIT_WIDTH
212 #define PCRE2_CODE_UNIT_WIDTH 16
213 #else
214 #define PCRE2_CODE_UNIT_WIDTH 0
215 #endif
216 #endif
217
218 #ifdef PCRE2CPP_DISABLE_UTF32
219 #define _PCRE2CPP_HAS_UTF32 0
220 #else
221 #define _PCRE2CPP_HAS_UTF32 1
222 #ifndef PCRE2_CODE_UNIT_WIDTH
223 #define PCRE2_CODE_UNIT_WIDTH 32
224 #else
225 #define PCRE2_CODE_UNIT_WIDTH 0
226 #endif
227 #endif
228 #pragma endregion
229
230 #pragma region VERSION_SPECIFIC_VALUES
236 #if _PCRE2CPP_HAS_CXX17
237 #define _PCRE2CPP_CONSTEXPR17 constexpr
238 #else
239 #define _PCRE2CPP_CONSTEXPR17
240 #endif
241
247
253 #if _PCRE2CPP_HAS_CXX20
254 #define _PCRE2CPP_CONSTEXPR20 constexpr
255 #define _PCRE2CPP_REQUIRES(condition) requires (condition)
256 #else
257 #define _PCRE2CPP_CONSTEXPR20
258 #define _PCRE2CPP_REQUIRES(condition)
259 #endif
260 #pragma endregion
261
262 #include <mstd/mstd.hpp>
263
268 #define _PCRE2CPP_MESSAGE(MESSAGE) _MSTD_MESSAGE(MESSAGE)
273 #define _PCRE2CPP_WARNING(MESSAGE) _MSTD_WARNING(MESSAGE)
278 #define _PCRE2CPP_ERROR(MESSAGE) _MSTD_ERROR(MESSAGE)
279#endif