1// © 2016 and later: Unicode, Inc. and others.
2// License & terms of use: http://www.unicode.org/copyright.html
3/*
4**********************************************************************
5*   Copyright (C) 2002-2016, International Business Machines
6*   Corporation and others.  All Rights Reserved.
7**********************************************************************
8*   file name:  uconfig.h
9*   encoding:   UTF-8
10*   tab size:   8 (not used)
11*   indentation:4
12*
13*   created on: 2002sep19
14*   created by: Markus W. Scherer
15*/
16
17#ifndef __UCONFIG_H__
18#define __UCONFIG_H__
19
20// ohos icu configs
21#define U_DISABLE_RENAMING 1
22#define U_HIDE_DRAFT_API 1
23#define U_HIDE_DEPRECATED_API 1
24#define U_SHOW_CPLUSPLUS_API 0
25#define U_HIDE_INTERNAL_API 1
26#define U_HIDE_OBSOLETE_UTF_OLD_H 1
27#define LIBICU_U_SHOW_CPLUSPLUS_API 0
28
29/*!
30 * \file
31 * \brief User-configurable settings
32 *
33 * Miscellaneous switches:
34 *
35 * A number of macros affect a variety of minor aspects of ICU.
36 * Most of them used to be defined elsewhere (e.g., in utypes.h or platform.h)
37 * and moved here to make them easier to find.
38 *
39 * Switches for excluding parts of ICU library code modules:
40 *
41 * Changing these macros allows building partial, smaller libraries for special purposes.
42 * By default, all modules are built.
43 * The switches are fairly coarse, controlling large modules.
44 * Basic services cannot be turned off.
45 *
46 * Building with any of these options does not guarantee that the
47 * ICU build process will completely work. It is recommended that
48 * the ICU libraries and data be built using the normal build.
49 * At that time you should remove the data used by those services.
50 * After building the ICU data library, you should rebuild the ICU
51 * libraries with these switches customized to your needs.
52 *
53 * @stable ICU 2.4
54 */
55
56/**
57 * If this switch is defined, ICU will attempt to load a header file named "uconfig_local.h"
58 * prior to determining default settings for uconfig variables.
59 *
60 * @internal ICU 4.0
61 */
62#if defined(UCONFIG_USE_LOCAL)
63#include "uconfig_local.h"
64#endif
65
66/**
67 * \def U_DEBUG
68 * Determines whether to include debugging code.
69 * Automatically set on Windows, but most compilers do not have
70 * related predefined macros.
71 * @internal
72 */
73#ifdef U_DEBUG
74    /* Use the predefined value. */
75#elif defined(_DEBUG)
76    /*
77     * _DEBUG is defined by Visual Studio debug compilation.
78     * Do *not* test for its NDEBUG macro: It is an orthogonal macro
79     * which disables assert().
80     */
81#   define U_DEBUG 1
82# else
83#   define U_DEBUG 0
84#endif
85
86/**
87 * Determines whether to enable auto cleanup of libraries.
88 * @internal
89 */
90#ifndef UCLN_NO_AUTO_CLEANUP
91#define UCLN_NO_AUTO_CLEANUP 1
92#endif
93
94/**
95 * \def U_NO_DEFAULT_INCLUDE_UTF_HEADERS
96 * Determines whether utypes.h includes utf.h, utf8.h, utf16.h and utf_old.h.
97 * utypes.h includes those headers if this macro is defined to 0.
98 * Otherwise, each those headers must be included explicitly when using one of their macros.
99 * Defaults to 0 for backward compatibility, except inside ICU.
100 * @stable ICU 49
101 */
102#define U_NO_DEFAULT_INCLUDE_UTF_HEADERS 0
103
104/**
105 * \def U_OVERRIDE_CXX_ALLOCATION
106 * Determines whether to override new and delete.
107 * ICU is normally built such that all of its C++ classes, via their UMemory base,
108 * override operators new and delete to use its internal, customizable,
109 * non-exception-throwing memory allocation functions. (Default value 1 for this macro.)
110 *
111 * This is especially important when the application and its libraries use multiple heaps.
112 * For example, on Windows, this allows the ICU DLL to be used by
113 * applications that statically link the C Runtime library.
114 *
115 * @stable ICU 2.2
116 */
117#ifndef U_OVERRIDE_CXX_ALLOCATION
118#define U_OVERRIDE_CXX_ALLOCATION 1
119#endif
120
121/**
122 * \def U_ENABLE_TRACING
123 * Determines whether to enable tracing.
124 * @internal
125 */
126#ifndef U_ENABLE_TRACING
127#define U_ENABLE_TRACING 0
128#endif
129
130/**
131 * \def UCONFIG_ENABLE_PLUGINS
132 * Determines whether to enable ICU plugins.
133 * @internal
134 */
135#ifndef UCONFIG_ENABLE_PLUGINS
136#define UCONFIG_ENABLE_PLUGINS 0
137#endif
138
139/**
140 * \def U_ENABLE_DYLOAD
141 * Whether to enable Dynamic loading in ICU.
142 * @internal
143 */
144#ifndef U_ENABLE_DYLOAD
145#define U_ENABLE_DYLOAD 1
146#endif
147
148/**
149 * \def U_CHECK_DYLOAD
150 * Whether to test Dynamic loading as an OS capability.
151 * @internal
152 */
153#ifndef U_CHECK_DYLOAD
154#define U_CHECK_DYLOAD 1
155#endif
156
157/**
158 * \def U_DEFAULT_SHOW_DRAFT
159 * Do we allow ICU users to use the draft APIs by default?
160 * @internal
161 */
162#ifndef U_DEFAULT_SHOW_DRAFT
163#define U_DEFAULT_SHOW_DRAFT 1
164#endif
165
166/*===========================================================================*/
167/* Custom icu entry point renaming                                           */
168/*===========================================================================*/
169
170/**
171 * \def U_HAVE_LIB_SUFFIX
172 * 1 if a custom library suffix is set.
173 * @internal
174 */
175#ifdef U_HAVE_LIB_SUFFIX
176    /* Use the predefined value. */
177#elif defined(U_LIB_SUFFIX_C_NAME) || defined(U_IN_DOXYGEN)
178#   define U_HAVE_LIB_SUFFIX 1
179#endif
180
181/**
182 * \def U_LIB_SUFFIX_C_NAME_STRING
183 * Defines the library suffix as a string with C syntax.
184 * @internal
185 */
186#ifdef U_LIB_SUFFIX_C_NAME_STRING
187    /* Use the predefined value. */
188#elif defined(U_LIB_SUFFIX_C_NAME)
189#   define CONVERT_TO_STRING(s) #s
190#   define U_LIB_SUFFIX_C_NAME_STRING CONVERT_TO_STRING(U_LIB_SUFFIX_C_NAME)
191#else
192#   define U_LIB_SUFFIX_C_NAME_STRING ""
193#endif
194
195/* common/i18n library switches --------------------------------------------- */
196
197/**
198 * \def UCONFIG_ONLY_COLLATION
199 * This switch turns off modules that are not needed for collation.
200 *
201 * It does not turn off legacy conversion because that is necessary
202 * for ICU to work on EBCDIC platforms (for the default converter).
203 * If you want "only collation" and do not build for EBCDIC,
204 * then you can define UCONFIG_NO_CONVERSION or UCONFIG_NO_LEGACY_CONVERSION to 1 as well.
205 *
206 * @stable ICU 2.4
207 */
208#ifndef UCONFIG_ONLY_COLLATION
209#   define UCONFIG_ONLY_COLLATION 0
210#endif
211
212#if UCONFIG_ONLY_COLLATION
213    /* common library */
214#   define UCONFIG_NO_BREAK_ITERATION 1
215#   define UCONFIG_NO_IDNA 1
216
217    /* i18n library */
218#   if UCONFIG_NO_COLLATION
219#       error Contradictory collation switches in uconfig.h.
220#   endif
221#   define UCONFIG_NO_FORMATTING 1
222#   define UCONFIG_NO_TRANSLITERATION 1
223#   define UCONFIG_NO_REGULAR_EXPRESSIONS 1
224#endif
225
226/* common library switches -------------------------------------------------- */
227
228/**
229 * \def UCONFIG_NO_FILE_IO
230 * This switch turns off all file access in the common library
231 * where file access is only used for data loading.
232 * ICU data must then be provided in the form of a data DLL (or with an
233 * equivalent way to link to the data residing in an executable,
234 * as in building a combined library with both the common library's code and
235 * the data), or via udata_setCommonData().
236 * Application data must be provided via udata_setAppData() or by using
237 * "open" functions that take pointers to data, for example ucol_openBinary().
238 *
239 * File access is not used at all in the i18n library.
240 *
241 * File access cannot be turned off for the icuio library or for the ICU
242 * test suites and ICU tools.
243 *
244 * @stable ICU 3.6
245 */
246#ifndef UCONFIG_NO_FILE_IO
247#   define UCONFIG_NO_FILE_IO 0
248#endif
249
250#if UCONFIG_NO_FILE_IO && defined(U_TIMEZONE_FILES_DIR)
251#   error Contradictory file io switches in uconfig.h.
252#endif
253
254/**
255 * \def UCONFIG_NO_CONVERSION
256 * ICU will not completely build (compiling the tools fails) with this
257 * switch turned on.
258 * This switch turns off all converters.
259 *
260 * You may want to use this together with U_CHARSET_IS_UTF8 defined to 1
261 * in utypes.h if char* strings in your environment are always in UTF-8.
262 *
263 * @stable ICU 3.2
264 * @see U_CHARSET_IS_UTF8
265 */
266#ifndef UCONFIG_NO_CONVERSION
267#   define UCONFIG_NO_CONVERSION 0
268#endif
269
270#if UCONFIG_NO_CONVERSION
271#   define UCONFIG_NO_LEGACY_CONVERSION 1
272#endif
273
274/**
275 * \def UCONFIG_ONLY_HTML_CONVERSION
276 * This switch turns off all of the converters NOT listed in
277 * the HTML encoding standard:
278 * http://www.w3.org/TR/encoding/#names-and-labels
279 *
280 * This is not possible on EBCDIC platforms
281 * because they need ibm-37 or ibm-1047 default converters.
282 *
283 * @stable ICU 55
284 */
285#ifndef UCONFIG_ONLY_HTML_CONVERSION
286#   define UCONFIG_ONLY_HTML_CONVERSION 0
287#endif
288
289/**
290 * \def UCONFIG_NO_LEGACY_CONVERSION
291 * This switch turns off all converters except for
292 * - Unicode charsets (UTF-7/8/16/32, CESU-8, SCSU, BOCU-1)
293 * - US-ASCII
294 * - ISO-8859-1
295 *
296 * Turning off legacy conversion is not possible on EBCDIC platforms
297 * because they need ibm-37 or ibm-1047 default converters.
298 *
299 * @stable ICU 2.4
300 */
301#ifndef UCONFIG_NO_LEGACY_CONVERSION
302#   define UCONFIG_NO_LEGACY_CONVERSION 0
303#endif
304
305/**
306 * \def UCONFIG_NO_NORMALIZATION
307 * This switch turns off normalization.
308 * It implies turning off several other services as well, for example
309 * collation and IDNA.
310 *
311 * @stable ICU 2.6
312 */
313#ifndef UCONFIG_NO_NORMALIZATION
314#   define UCONFIG_NO_NORMALIZATION 0
315#endif
316
317#if UCONFIG_NO_NORMALIZATION
318    /* common library */
319    /* ICU 50 CJK dictionary BreakIterator uses normalization */
320#   define UCONFIG_NO_BREAK_ITERATION 1
321    /* IDNA (UTS #46) is implemented via normalization */
322#   define UCONFIG_NO_IDNA 1
323
324    /* i18n library */
325#   if UCONFIG_ONLY_COLLATION
326#       error Contradictory collation switches in uconfig.h.
327#   endif
328#   define UCONFIG_NO_COLLATION 1
329#   define UCONFIG_NO_TRANSLITERATION 1
330#endif
331
332/**
333 * \def UCONFIG_NO_BREAK_ITERATION
334 * This switch turns off break iteration.
335 *
336 * @stable ICU 2.4
337 */
338#ifndef UCONFIG_NO_BREAK_ITERATION
339#   define UCONFIG_NO_BREAK_ITERATION 0
340#endif
341
342/**
343 * \def UCONFIG_NO_IDNA
344 * This switch turns off IDNA.
345 *
346 * @stable ICU 2.6
347 */
348#ifndef UCONFIG_NO_IDNA
349#   define UCONFIG_NO_IDNA 0
350#endif
351
352/**
353 * \def UCONFIG_MSGPAT_DEFAULT_APOSTROPHE_MODE
354 * Determines the default UMessagePatternApostropheMode.
355 * See the documentation for that enum.
356 *
357 * @stable ICU 4.8
358 */
359#ifndef UCONFIG_MSGPAT_DEFAULT_APOSTROPHE_MODE
360#   define UCONFIG_MSGPAT_DEFAULT_APOSTROPHE_MODE UMSGPAT_APOS_DOUBLE_OPTIONAL
361#endif
362
363/**
364 * \def UCONFIG_USE_WINDOWS_LCID_MAPPING_API
365 * On platforms where U_PLATFORM_HAS_WIN32_API is true, this switch determines
366 * if the Windows platform APIs are used for LCID<->Locale Name conversions.
367 * Otherwise, only the built-in ICU tables are used.
368 *
369 * @internal ICU 64
370 */
371#ifndef UCONFIG_USE_WINDOWS_LCID_MAPPING_API
372#   define UCONFIG_USE_WINDOWS_LCID_MAPPING_API 1
373#endif
374
375/* i18n library switches ---------------------------------------------------- */
376
377/**
378 * \def UCONFIG_NO_COLLATION
379 * This switch turns off collation and collation-based string search.
380 *
381 * @stable ICU 2.4
382 */
383#ifndef UCONFIG_NO_COLLATION
384#   define UCONFIG_NO_COLLATION 0
385#endif
386
387/**
388 * \def UCONFIG_NO_FORMATTING
389 * This switch turns off formatting and calendar/timezone services.
390 *
391 * @stable ICU 2.4
392 */
393#ifndef UCONFIG_NO_FORMATTING
394#   define UCONFIG_NO_FORMATTING 0
395#endif
396
397/**
398 * \def UCONFIG_NO_TRANSLITERATION
399 * This switch turns off transliteration.
400 *
401 * @stable ICU 2.4
402 */
403#ifndef UCONFIG_NO_TRANSLITERATION
404#   define UCONFIG_NO_TRANSLITERATION 0
405#endif
406
407/**
408 * \def UCONFIG_NO_REGULAR_EXPRESSIONS
409 * This switch turns off regular expressions.
410 *
411 * @stable ICU 2.4
412 */
413#ifndef UCONFIG_NO_REGULAR_EXPRESSIONS
414#   define UCONFIG_NO_REGULAR_EXPRESSIONS 0
415#endif
416
417/**
418 * \def UCONFIG_NO_SERVICE
419 * This switch turns off service registration.
420 *
421 * @stable ICU 3.2
422 */
423#ifndef UCONFIG_NO_SERVICE
424#   define UCONFIG_NO_SERVICE 0
425#endif
426
427/**
428 * \def UCONFIG_HAVE_PARSEALLINPUT
429 * This switch turns on the "parse all input" attribute. Binary incompatible.
430 *
431 * @internal
432 */
433#ifndef UCONFIG_HAVE_PARSEALLINPUT
434#   define UCONFIG_HAVE_PARSEALLINPUT 1
435#endif
436
437/**
438 * \def UCONFIG_NO_FILTERED_BREAK_ITERATION
439 * This switch turns off filtered break iteration code.
440 *
441 * @internal
442 */
443#ifndef UCONFIG_NO_FILTERED_BREAK_ITERATION
444#   define UCONFIG_NO_FILTERED_BREAK_ITERATION 0
445#endif
446
447#endif  // __UCONFIG_H__
448