00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef _GL_WCTYPE_H
00033
00034 #if __GNUC__ >= 3
00035 #pragma GCC system_header
00036 #endif
00037
00038
00039 #if 1
00040
00041
00042
00043
00044
00045 # include <stddef.h>
00046 # include <stdio.h>
00047 # include <time.h>
00048 # include <wchar.h>
00049 #endif
00050
00051
00052
00053
00054 #if 1
00055 # include_next <wctype.h>
00056 #endif
00057
00058 #ifndef _GL_WCTYPE_H
00059 #define _GL_WCTYPE_H
00060
00061
00062 #ifndef _GL_CXXDEFS_H
00063 #define _GL_CXXDEFS_H
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126 #if defined __cplusplus
00127 # define _GL_EXTERN_C extern "C"
00128 #else
00129 # define _GL_EXTERN_C extern
00130 #endif
00131
00132
00133
00134
00135
00136
00137
00138
00139 #define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \
00140 _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes)
00141 #define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \
00142 _GL_EXTERN_C rettype rpl_func parameters_and_attributes
00143
00144
00145
00146
00147
00148
00149
00150
00151 #define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \
00152 _GL_EXTERN_C rettype func parameters_and_attributes
00153
00154
00155
00156
00157
00158
00159
00160 #define _GL_CXXALIAS_RPL(func,rettype,parameters) \
00161 _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters)
00162 #if defined __cplusplus && defined GNULIB_NAMESPACE
00163 # define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
00164 namespace GNULIB_NAMESPACE \
00165 { \
00166 rettype (*const func) parameters = ::rpl_func; \
00167 } \
00168 _GL_EXTERN_C int _gl_cxxalias_dummy
00169 #else
00170 # define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
00171 _GL_EXTERN_C int _gl_cxxalias_dummy
00172 #endif
00173
00174
00175
00176
00177
00178
00179 #if defined __cplusplus && defined GNULIB_NAMESPACE
00180 # define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
00181 namespace GNULIB_NAMESPACE \
00182 { \
00183 rettype (*const func) parameters = \
00184 reinterpret_cast<rettype(*)parameters>(::rpl_func); \
00185 } \
00186 _GL_EXTERN_C int _gl_cxxalias_dummy
00187 #else
00188 # define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
00189 _GL_EXTERN_C int _gl_cxxalias_dummy
00190 #endif
00191
00192
00193
00194
00195
00196
00197
00198
00199 #if defined __cplusplus && defined GNULIB_NAMESPACE
00200
00201
00202
00203
00204
00205
00206 # define _GL_CXXALIAS_SYS(func,rettype,parameters) \
00207 namespace GNULIB_NAMESPACE \
00208 { \
00209 static rettype (*func) parameters = ::func; \
00210 } \
00211 _GL_EXTERN_C int _gl_cxxalias_dummy
00212 #else
00213 # define _GL_CXXALIAS_SYS(func,rettype,parameters) \
00214 _GL_EXTERN_C int _gl_cxxalias_dummy
00215 #endif
00216
00217
00218
00219
00220
00221
00222 #if defined __cplusplus && defined GNULIB_NAMESPACE
00223 # define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
00224 namespace GNULIB_NAMESPACE \
00225 { \
00226 static rettype (*func) parameters = \
00227 reinterpret_cast<rettype(*)parameters>(::func); \
00228 } \
00229 _GL_EXTERN_C int _gl_cxxalias_dummy
00230 #else
00231 # define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
00232 _GL_EXTERN_C int _gl_cxxalias_dummy
00233 #endif
00234
00235
00236
00237
00238
00239
00240
00241 #if defined __cplusplus && defined GNULIB_NAMESPACE
00242
00243
00244
00245
00246
00247 # define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
00248 namespace GNULIB_NAMESPACE \
00249 { \
00250 static rettype (*func) parameters = \
00251 reinterpret_cast<rettype(*)parameters>( \
00252 (rettype2(*)parameters2)(::func)); \
00253 } \
00254 _GL_EXTERN_C int _gl_cxxalias_dummy
00255 #else
00256 # define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
00257 _GL_EXTERN_C int _gl_cxxalias_dummy
00258 #endif
00259
00260
00261
00262
00263
00264 #if defined __cplusplus && defined GNULIB_NAMESPACE
00265 # define _GL_CXXALIASWARN(func) \
00266 _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE)
00267 # define _GL_CXXALIASWARN_1(func,namespace) \
00268 _GL_CXXALIASWARN_2 (func, namespace)
00269
00270
00271 # if !__OPTIMIZE__
00272 # define _GL_CXXALIASWARN_2(func,namespace) \
00273 _GL_WARN_ON_USE (func, \
00274 "The symbol ::" #func " refers to the system function. " \
00275 "Use " #namespace "::" #func " instead.")
00276 # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
00277 # define _GL_CXXALIASWARN_2(func,namespace) \
00278 extern __typeof__ (func) func
00279 # else
00280 # define _GL_CXXALIASWARN_2(func,namespace) \
00281 _GL_EXTERN_C int _gl_cxxalias_dummy
00282 # endif
00283 #else
00284 # define _GL_CXXALIASWARN(func) \
00285 _GL_EXTERN_C int _gl_cxxalias_dummy
00286 #endif
00287
00288
00289
00290
00291 #if defined __cplusplus && defined GNULIB_NAMESPACE
00292 # define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
00293 _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \
00294 GNULIB_NAMESPACE)
00295 # define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \
00296 _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace)
00297
00298
00299 # if !__OPTIMIZE__
00300 # define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
00301 _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \
00302 "The symbol ::" #func " refers to the system function. " \
00303 "Use " #namespace "::" #func " instead.")
00304 # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
00305 # define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
00306 extern __typeof__ (func) func
00307 # else
00308 # define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
00309 _GL_EXTERN_C int _gl_cxxalias_dummy
00310 # endif
00311 #else
00312 # define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
00313 _GL_EXTERN_C int _gl_cxxalias_dummy
00314 #endif
00315
00316 #endif
00317
00318
00319 #ifndef _GL_WARN_ON_USE
00320
00321 # if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
00322
00323 # define _GL_WARN_ON_USE(function, message) \
00324 extern __typeof__ (function) function __attribute__ ((__warning__ (message)))
00325 # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
00326
00327 # define _GL_WARN_ON_USE(function, message) \
00328 extern __typeof__ (function) function
00329 # else
00330 # define _GL_WARN_ON_USE(function, message) \
00331 _GL_WARN_EXTERN_C int _gl_warn_on_use
00332 # endif
00333 #endif
00334
00335
00336
00337
00338
00339
00340
00341 #ifndef _GL_WARN_ON_USE_CXX
00342 # if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
00343 # define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
00344 extern rettype function parameters_and_attributes \
00345 __attribute__ ((__warning__ (msg)))
00346 # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
00347
00348 # define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
00349 extern rettype function parameters_and_attributes
00350 # else
00351 # define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
00352 _GL_WARN_EXTERN_C int _gl_warn_on_use
00353 # endif
00354 #endif
00355
00356
00357
00358 #ifndef _GL_WARN_EXTERN_C
00359 # if defined __cplusplus
00360 # define _GL_WARN_EXTERN_C extern "C"
00361 # else
00362 # define _GL_WARN_EXTERN_C extern
00363 # endif
00364 #endif
00365
00366
00367 #if !1 && !defined wint_t
00368 # define wint_t int
00369 # ifndef WEOF
00370 # define WEOF -1
00371 # endif
00372 #else
00373 # ifndef WEOF
00374 # define WEOF ((wint_t) -1)
00375 # endif
00376 #endif
00377
00378
00379 #if !GNULIB_defined_wctype_functions
00380
00381
00382
00383
00384
00385 # if ! 1 || 0
00386
00387
00388
00389
00390
00391
00392 # undef iswalnum
00393 # undef iswalpha
00394 # undef iswblank
00395 # undef iswcntrl
00396 # undef iswdigit
00397 # undef iswgraph
00398 # undef iswlower
00399 # undef iswprint
00400 # undef iswpunct
00401 # undef iswspace
00402 # undef iswupper
00403 # undef iswxdigit
00404 # undef towlower
00405 # undef towupper
00406
00407
00408 # if 0
00409 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
00410 # define iswalnum rpl_iswalnum
00411 # define iswalpha rpl_iswalpha
00412 # define iswblank rpl_iswblank
00413 # define iswcntrl rpl_iswcntrl
00414 # define iswdigit rpl_iswdigit
00415 # define iswgraph rpl_iswgraph
00416 # define iswlower rpl_iswlower
00417 # define iswprint rpl_iswprint
00418 # define iswpunct rpl_iswpunct
00419 # define iswspace rpl_iswspace
00420 # define iswupper rpl_iswupper
00421 # define iswxdigit rpl_iswxdigit
00422 # define towlower rpl_towlower
00423 # define towupper rpl_towupper
00424 # endif
00425 # endif
00426
00427 static inline int
00428 # if 0
00429 rpl_iswalnum
00430 # else
00431 iswalnum
00432 # endif
00433 (wint_t wc)
00434 {
00435 return ((wc >= '0' && wc <= '9')
00436 || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z'));
00437 }
00438
00439 static inline int
00440 # if 0
00441 rpl_iswalpha
00442 # else
00443 iswalpha
00444 # endif
00445 (wint_t wc)
00446 {
00447 return (wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z';
00448 }
00449
00450 static inline int
00451 # if 0
00452 rpl_iswblank
00453 # else
00454 iswblank
00455 # endif
00456 (wint_t wc)
00457 {
00458 return wc == ' ' || wc == '\t';
00459 }
00460
00461 static inline int
00462 # if 0
00463 rpl_iswcntrl
00464 # else
00465 iswcntrl
00466 # endif
00467 (wint_t wc)
00468 {
00469 return (wc & ~0x1f) == 0 || wc == 0x7f;
00470 }
00471
00472 static inline int
00473 # if 0
00474 rpl_iswdigit
00475 # else
00476 iswdigit
00477 # endif
00478 (wint_t wc)
00479 {
00480 return wc >= '0' && wc <= '9';
00481 }
00482
00483 static inline int
00484 # if 0
00485 rpl_iswgraph
00486 # else
00487 iswgraph
00488 # endif
00489 (wint_t wc)
00490 {
00491 return wc >= '!' && wc <= '~';
00492 }
00493
00494 static inline int
00495 # if 0
00496 rpl_iswlower
00497 # else
00498 iswlower
00499 # endif
00500 (wint_t wc)
00501 {
00502 return wc >= 'a' && wc <= 'z';
00503 }
00504
00505 static inline int
00506 # if 0
00507 rpl_iswprint
00508 # else
00509 iswprint
00510 # endif
00511 (wint_t wc)
00512 {
00513 return wc >= ' ' && wc <= '~';
00514 }
00515
00516 static inline int
00517 # if 0
00518 rpl_iswpunct
00519 # else
00520 iswpunct
00521 # endif
00522 (wint_t wc)
00523 {
00524 return (wc >= '!' && wc <= '~'
00525 && !((wc >= '0' && wc <= '9')
00526 || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z')));
00527 }
00528
00529 static inline int
00530 # if 0
00531 rpl_iswspace
00532 # else
00533 iswspace
00534 # endif
00535 (wint_t wc)
00536 {
00537 return (wc == ' ' || wc == '\t'
00538 || wc == '\n' || wc == '\v' || wc == '\f' || wc == '\r');
00539 }
00540
00541 static inline int
00542 # if 0
00543 rpl_iswupper
00544 # else
00545 iswupper
00546 # endif
00547 (wint_t wc)
00548 {
00549 return wc >= 'A' && wc <= 'Z';
00550 }
00551
00552 static inline int
00553 # if 0
00554 rpl_iswxdigit
00555 # else
00556 iswxdigit
00557 # endif
00558 (wint_t wc)
00559 {
00560 return ((wc >= '0' && wc <= '9')
00561 || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'F'));
00562 }
00563
00564 static inline wint_t
00565 # if 0
00566 rpl_towlower
00567 # else
00568 towlower
00569 # endif
00570 (wint_t wc)
00571 {
00572 return (wc >= 'A' && wc <= 'Z' ? wc - 'A' + 'a' : wc);
00573 }
00574
00575 static inline wint_t
00576 # if 0
00577 rpl_towupper
00578 # else
00579 towupper
00580 # endif
00581 (wint_t wc)
00582 {
00583 return (wc >= 'a' && wc <= 'z' ? wc - 'a' + 'A' : wc);
00584 }
00585
00586 # elif ! 1 || 0
00587
00588
00589 # if 0
00590 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
00591 # define iswblank rpl_iswblank
00592 # endif
00593 _GL_FUNCDECL_RPL (iswblank, int, (wint_t wc));
00594 # else
00595 _GL_FUNCDECL_SYS (iswblank, int, (wint_t wc));
00596 # endif
00597
00598 # endif
00599
00600 # if defined __MINGW32__
00601
00602
00603
00604
00605
00606
00607
00608
00609
00610
00611
00612
00613
00614
00615 static inline wint_t
00616 rpl_towlower (wint_t wc)
00617 {
00618 return (wint_t) (wchar_t) towlower (wc);
00619 }
00620 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
00621 # define towlower rpl_towlower
00622 # endif
00623
00624 static inline wint_t
00625 rpl_towupper (wint_t wc)
00626 {
00627 return (wint_t) (wchar_t) towupper (wc);
00628 }
00629 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
00630 # define towupper rpl_towupper
00631 # endif
00632
00633 # endif
00634
00635 # define GNULIB_defined_wctype_functions 1
00636 #endif
00637
00638 #if 0
00639 _GL_CXXALIAS_RPL (iswalnum, int, (wint_t wc));
00640 _GL_CXXALIAS_RPL (iswalpha, int, (wint_t wc));
00641 _GL_CXXALIAS_RPL (iswblank, int, (wint_t wc));
00642 _GL_CXXALIAS_RPL (iswcntrl, int, (wint_t wc));
00643 _GL_CXXALIAS_RPL (iswdigit, int, (wint_t wc));
00644 _GL_CXXALIAS_RPL (iswgraph, int, (wint_t wc));
00645 _GL_CXXALIAS_RPL (iswlower, int, (wint_t wc));
00646 _GL_CXXALIAS_RPL (iswprint, int, (wint_t wc));
00647 _GL_CXXALIAS_RPL (iswpunct, int, (wint_t wc));
00648 _GL_CXXALIAS_RPL (iswspace, int, (wint_t wc));
00649 _GL_CXXALIAS_RPL (iswupper, int, (wint_t wc));
00650 _GL_CXXALIAS_RPL (iswxdigit, int, (wint_t wc));
00651 #else
00652 _GL_CXXALIAS_SYS (iswalnum, int, (wint_t wc));
00653 _GL_CXXALIAS_SYS (iswalpha, int, (wint_t wc));
00654 # if 0
00655 _GL_CXXALIAS_RPL (iswblank, int, (wint_t wc));
00656 # else
00657 _GL_CXXALIAS_SYS (iswblank, int, (wint_t wc));
00658 # endif
00659 _GL_CXXALIAS_SYS (iswcntrl, int, (wint_t wc));
00660 _GL_CXXALIAS_SYS (iswdigit, int, (wint_t wc));
00661 _GL_CXXALIAS_SYS (iswgraph, int, (wint_t wc));
00662 _GL_CXXALIAS_SYS (iswlower, int, (wint_t wc));
00663 _GL_CXXALIAS_SYS (iswprint, int, (wint_t wc));
00664 _GL_CXXALIAS_SYS (iswpunct, int, (wint_t wc));
00665 _GL_CXXALIAS_SYS (iswspace, int, (wint_t wc));
00666 _GL_CXXALIAS_SYS (iswupper, int, (wint_t wc));
00667 _GL_CXXALIAS_SYS (iswxdigit, int, (wint_t wc));
00668 #endif
00669 _GL_CXXALIASWARN (iswalnum);
00670 _GL_CXXALIASWARN (iswalpha);
00671 _GL_CXXALIASWARN (iswblank);
00672 _GL_CXXALIASWARN (iswcntrl);
00673 _GL_CXXALIASWARN (iswdigit);
00674 _GL_CXXALIASWARN (iswgraph);
00675 _GL_CXXALIASWARN (iswlower);
00676 _GL_CXXALIASWARN (iswprint);
00677 _GL_CXXALIASWARN (iswpunct);
00678 _GL_CXXALIASWARN (iswspace);
00679 _GL_CXXALIASWARN (iswupper);
00680 _GL_CXXALIASWARN (iswxdigit);
00681
00682 #if 0 || defined __MINGW32__
00683 _GL_CXXALIAS_RPL (towlower, wint_t, (wint_t wc));
00684 _GL_CXXALIAS_RPL (towupper, wint_t, (wint_t wc));
00685 #else
00686 _GL_CXXALIAS_SYS (towlower, wint_t, (wint_t wc));
00687 _GL_CXXALIAS_SYS (towupper, wint_t, (wint_t wc));
00688 #endif
00689 _GL_CXXALIASWARN (towlower);
00690 _GL_CXXALIASWARN (towupper);
00691
00692
00693 #endif
00694 #endif