123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267 |
- # This Python script creates a full set of C++ C header files that
- # are missing on some platforms.
- #
- # Usage:
- # mkdir cpp_c_headers
- # cd cpp_c_headers
- # python generate_cpp_c_headers.py
- #
- # The files created by this script are in the directory:
- # root/boost/compatibility/cpp_c_headers
- #
- # Supported platforms:
- # Compaq Alpha, RedHat 6.2 Linux, Compaq C++ V6.3 (cxx)
- # Compaq Alpha, Tru64 Unix V5.0, Compaq C++ V6.2 (cxx)
- # Silicon Graphics, IRIX 6.5, MIPSpro Compilers: Version 7.3.1.1m (CC)
- #
- # Support for additional platforms can be added by extending the
- # "defines" Python dictionary below.
- #
- # Python is available at:
- # http://www.python.org/
- #
- # Copyright (c) 2001 Ralf W. Grosse-Kunstleve.
- # Distributed under the Boost Software License, Version 1.0. (See accompany-
- # ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- #
- # Revision history:
- # 16 Apr 01 moved to boost CVS tree (R.W. Grosse-Kunstleve)
- # 17 Jan 01 Alpha Linux cxx V6.3 support (R.W. Grosse-Kunstleve)
- # 15 Dec 00 posted to boost e-group file upload area (R.W. Grosse-Kunstleve)
- # Definition of platform specific exclusion of identifiers.
- defines = {
- 'defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 740': (
- 'btowc', 'fwide', 'fwprintf', 'fwscanf', 'mbrlen', 'mbrtowc',
- 'mbsinit', 'mbsrtowcs', 'swprintf', 'swscanf', 'towctrans', 'vfwprintf',
- 'vswprintf', 'vwprintf', 'wcrtomb', 'wcsrtombs', 'wctob', 'wctrans',
- 'wctrans_t', 'wmemchr', 'wmemcmp', 'wmemcpy', 'wmemmove', 'wmemset',
- 'wprintf', 'wscanf',
- ),
- 'defined(__DECCXX_VER) && __DECCXX_VER <= 60290024': (
- 'fwide',
- ),
- 'defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005': (
- 'getwchar', 'ungetwc', 'fgetwc', 'vfwprintf', 'fgetws', 'vswprintf',
- 'wcsftime', 'fputwc', 'vwprintf', 'fputws', 'fwide', 'putwc',
- 'wprintf', 'fwprintf', 'putwchar', 'wscanf', 'fwscanf', 'swprintf',
- 'getwc', 'swscanf',
- ),
- }
- # The information below was copied directly from the file:
- # ISO+IEC+14882-1998.pdf
- # The exact source of the information is given in the format
- # PDF #, p. #, Table #
- # Where
- # PDF # = page number as shown by the Acrobat Reader
- # p. # = page number printed at the bottom of the page
- # Table # = number printed in caption of table
- hfiles = {
- 'cassert': ( # PDF 378, p. 352, Table 25
- # Macro: assert
- ),
- 'cctype': ( # PDF 431, p. 405, Table 45
- # Functions:
- 'isalnum', 'isdigit', 'isprint', 'isupper', 'tolower',
- 'isalpha', 'isgraph', 'ispunct', 'isxdigit', 'toupper',
- 'iscntrl', 'islower', 'isspace',
- ),
- 'cerrno': ( # PDF 378, p. 352, Table 26
- # Macros: EDOM ERANGE errno
- ),
- 'cfloat': ( # PDF 361, p. 335, Table 17
- # Macros: DBL_DIG DBL_MIN_EXP FLT_MIN_10_EXP LDBL_MAX_10_EXP
- # DBL_EPSILON FLT_DIG FLT_MIN_EXP LDBL_MAX_EXP
- # DBL_MANT_DIG FLT_EPSILON FLT_RADIX LDBL_MIN
- # DBL_MAX FLT_MANT_DIG FLT_ROUNDS LDBL_MIN_10_EXP
- # DBL_MAX_10_EXP FLT_MAX LDBL_DIG LDBL_MIN_EXP
- # DBL_MAX_EXP FLT_MAX_10_EXP LDBL_EPSILON
- # DBL_MIN FLT_MAX_EXP LDBL_MANT_DIG
- # DBL_MIN_10_EXP FLT_MIN LDBL_MAX
- ),
- #'ciso646': (
- #),
- 'climits': ( # PDF 361, p. 335, Table 16
- # Macros: CHAR_BIT INT_MAX LONG_MIN SCHAR_MIN UCHAR_MAX USHRT_MAX
- # CHAR_MAX INT_MIN MB_LEN_MAX SHRT_MAX UINT_MAX
- # CHAR_MIN LONG_MAX SCHAR_MAX SHRT_MIN ULONG_MAX
- ),
- 'clocale': ( # PDF 483, p. 457, Table 62
- # Macros: LC_ALL LC_COLLATE LC_CTYPE
- # LC_MONETARY LC_NUMERIC LC_TIME
- # NULL
- # Struct:
- 'lconv',
- # Functions:
- 'localeconv', 'setlocale',
- ),
- 'cmath': ( # PDF 622, p. 596, Table 80
- # Macro: HUGE_VAL
- # Functions:
- 'acos', 'cos', 'fmod', 'modf', 'tan',
- 'asin', 'cosh', 'frexp', 'pow', 'tanh',
- 'atan', 'exp', 'ldexp', 'sin',
- 'atan2', 'fabs', 'log', 'sinh',
- 'ceil', 'floor', 'log10', 'sqrt',
- ),
- 'csetjmp': ( # PDF 372, p. 346, Table 20
- # Macro: setjmp
- # Type:
- 'jmp_buf',
- # Function:
- 'longjmp',
- ),
- 'csignal': ( # PDF 372, p. 346, Table 22
- # Macros: SIGABRT SIGILL SIGSEGV SIG_DFL
- # SIG_IGN SIGFPE SIGINT SIGTERM SIG_ERR
- # Type:
- 'sig_atomic_t',
- # Functions:
- 'raise', 'signal',
- ),
- 'cstdarg': ( # PDF 372, p. 346, Table 19
- # Macros: va_arg va_end va_start
- # Type:
- 'va_list',
- ),
- 'cstddef': ( # PDF 353, p. 327, Table 15
- # Macros: NULL offsetof
- # Types:
- 'ptrdiff_t', 'size_t',
- ),
- 'cstdio': ( # PDF 692, p. 666, Table 94
- # Macros: BUFSIZ FOPEN_MAX SEEK_CUR TMP_MAX _IONBF stdout
- # EOF L_tmpnam SEEK_END _IOFBF stderr
- # FILENAME_MAX NULL <cstdio> SEEK_SET _IOLBF stdin
- # Types:
- 'FILE', 'fpos_t', 'size_t',
- # Functions:
- 'clearerr', 'fgets', 'fscanf', 'gets', 'rename', 'tmpfile',
- 'fclose', 'fopen', 'fseek', 'perror', 'rewind', 'tmpnam',
- 'feof', 'fprintf', 'fsetpos', 'printf', 'scanf', 'ungetc',
- 'ferror', 'fputc', 'ftell', 'putc', 'setbuf', 'vfprintf',
- 'fflush', 'fputs', 'fwrite', 'putchar', 'setvbuf', 'vprintf',
- 'fgetc', 'fread', 'getc', 'puts', 'sprintf', 'vsprintf',
- 'fgetpos', 'freopen', 'getchar', 'remove', 'sscanf',
- ),
- 'cstdlib': ( # PDF 362, p. 336, Table 18
- # Macros: EXIT_FAILURE EXIT_SUCCESS
- # Functions:
- 'abort', 'atexit', 'exit',
- # PDF 373, p. 347, Table 23
- # Functions:
- 'getenv', 'system',
- # PDF 400, p. 374, Table 33
- # Functions:
- 'calloc', 'malloc',
- 'free', 'realloc',
- # PDF 433, p. 417, Table 49
- # Macros: MB_CUR_MAX
- # Functions:
- 'atol', 'mblen', 'strtod', 'wctomb',
- 'atof', 'mbstowcs', 'strtol', 'wcstombs',
- 'atoi', 'mbtowc', 'strtoul',
- # PDF 589, p. 563, Table 78
- # Functions:
- 'bsearch', 'qsort',
- # PDF 622, p. 596, Table 81
- # Macros: RAND_MAX
- # Types:
- 'div_t', 'ldiv_t',
- # Functions:
- 'abs', 'labs', 'srand',
- 'div', 'ldiv', 'rand',
- ),
- 'cstring': ( # PDF 401, p. 375, Table 34
- # Macro: NULL
- # Type: size_t
- # Functions:
- # 'memchr', 'memcmp',
- # 'memcpy', 'memmove', 'memset',
- # PDF 432, p. 406, Table 47
- # Macro: NULL
- # Type:
- 'size_t',
- # Functions:
- 'memchr', 'strcat', 'strcspn', 'strncpy', 'strtok',
- 'memcmp', 'strchr', 'strerror', 'strpbrk', 'strxfrm',
- 'memcpy', 'strcmp', 'strlen', 'strrchr',
- 'memmove', 'strcoll', 'strncat', 'strspn',
- 'memset', 'strcpy', 'strncmp', 'strstr',
- ),
- 'ctime': ( # PDF 372, p. 346, Table 21
- # Macros: CLOCKS_PER_SEC
- # Types:
- # 'clock_t',
- # Functions:
- # 'clock',
- # PDF 401, p. 375, Table 35
- # Macros: NULL
- # Types:
- 'size_t', 'clock_t', 'time_t',
- # Struct:
- 'tm',
- # Functions:
- 'asctime', 'clock', 'difftime', 'localtime', 'strftime',
- 'ctime', 'gmtime', 'mktime', 'time',
- ),
- 'cwchar': ( # PDF 432, p. 406, Table 48
- # Macros: NULL WCHAR_MAX WCHAR_MIN WEOF
- # Types:
- 'mbstate_t', 'wint_t', 'size_t',
- # Functions:
- 'btowc', 'getwchar', 'ungetwc', 'wcscpy', 'wcsrtombs', 'wmemchr',
- 'fgetwc', 'mbrlen', 'vfwprintf', 'wcscspn', 'wcsspn', 'wmemcmp',
- 'fgetws', 'mbrtowc', 'vswprintf', 'wcsftime', 'wcsstr', 'wmemcpy',
- 'fputwc', 'mbsinit', 'vwprintf', 'wcslen', 'wcstod', 'wmemmove',
- 'fputws', 'mbsrtowcs', 'wcrtomb', 'wcsncat', 'wcstok', 'wmemset',
- 'fwide', 'putwc', 'wcscat', 'wcsncmp', 'wcstol', 'wprintf',
- 'fwprintf', 'putwchar', 'wcschr', 'wcsncpy', 'wcstoul', 'wscanf',
- 'fwscanf', 'swprintf', 'wcscmp', 'wcspbrk', 'wcsxfrm',
- 'getwc', 'swscanf', 'wcscoll', 'wcsrchr', 'wctob',
- ),
- 'cwctype': ( # PDF 432, p. 406, Table 46
- # Macro: WEOF
- # Types:
- 'wctrans_t', 'wctype_t', 'wint_t',
- # Functions:
- 'iswalnum', 'iswctype', 'iswlower', 'iswspace', 'towctrans', 'wctrans',
- 'iswalpha', 'iswdigit', 'iswprint', 'iswupper', 'towlower', 'wctype',
- 'iswcntrl', 'iswgraph', 'iswpunct', 'iswxdigit', 'towupper',
- ),
- }
- if (__name__ == "__main__"):
- import sys, string, time
- now = time.asctime(time.localtime(time.time())) + ' ' + str(time.tzname)
- for hfile in hfiles.keys():
- HFILE = string.upper(hfile)
- f = open(hfile, 'w')
- sys.stdout = f
- print '// This file is automatically generated. Do not edit.'
- print '//', sys.argv
- print '//', now
- print
- print '#ifndef __' + HFILE + '_HEADER'
- print '#define __' + HFILE + '_HEADER'
- print ''
- print '#include <' + hfile[1:] + '.h>'
- print ''
- if (len(hfiles[hfile]) > 0):
- print 'namespace std {'
- for s in hfiles[hfile]:
- n_endif = 0
- for d in defines.keys():
- if (s in defines[d]):
- print '#if !(' + d + ')'
- n_endif = n_endif + 1
- print ' using ::' + s + ';'
- for i in xrange(n_endif): print '#endif'
- print '}'
- print ''
- print '#endif // ' + HFILE + '_HEADER'
- sys.stdout = sys.__stdout__
|