~ubuntu-branches/ubuntu/vivid/mozjs24/vivid

« back to all changes in this revision

Viewing changes to intl/icu/source/common/unicode/uconfig.h

  • Committer: Package Import Robot
  • Author(s): Tim Lunn
  • Date: 2014-02-11 21:55:34 UTC
  • Revision ID: package-import@ubuntu.com-20140211215534-m1zyq5aj59md3y07
Tags: upstream-24.2.0
ImportĀ upstreamĀ versionĀ 24.2.0

Show diffs side-by-side

added added

removed removed

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