Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_33_1/libs/compatibility/generate_cpp_c_headers.py @ 14

Last change on this file since 14 was 12, checked in by landauf, 17 years ago

added boost

File size: 9.0 KB
Line 
1# This Python script creates a full set of C++ C header files that
2# are missing on some platforms.
3#
4# Usage:
5#   mkdir cpp_c_headers
6#   cd cpp_c_headers
7#   python generate_cpp_c_headers.py
8#
9# The files created by this script are in the directory:
10#   root/boost/compatibility/cpp_c_headers
11#
12# Supported platforms:
13#   Compaq Alpha, RedHat 6.2 Linux, Compaq C++ V6.3 (cxx)
14#   Compaq Alpha, Tru64 Unix V5.0, Compaq C++ V6.2 (cxx)
15#   Silicon Graphics, IRIX 6.5, MIPSpro Compilers: Version 7.3.1.1m (CC)
16#
17# Support for additional platforms can be added by extending the
18# "defines" Python dictionary below.
19#
20# Python is available at:
21#   http://www.python.org/
22#
23# Copyright (c) 2001 Ralf W. Grosse-Kunstleve. Permission to copy,
24# use, modify, sell and distribute this script is granted provided this
25# copyright notice appears in all copies. This document is provided "as
26# is" without express or implied warranty, and with no claim as to its
27# suitability for any purpose.
28#
29# Revision history:
30#   16 Apr 01 moved to boost CVS tree (R.W. Grosse-Kunstleve)
31#   17 Jan 01 Alpha Linux cxx V6.3 support (R.W. Grosse-Kunstleve)
32#   15 Dec 00 posted to boost e-group file upload area (R.W. Grosse-Kunstleve)
33
34# Definition of platform specific exclusion of identifiers.
35defines = {
36  'defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 740': (
37    'btowc', 'fwide', 'fwprintf', 'fwscanf', 'mbrlen', 'mbrtowc',
38    'mbsinit', 'mbsrtowcs', 'swprintf', 'swscanf', 'towctrans', 'vfwprintf',
39    'vswprintf', 'vwprintf', 'wcrtomb', 'wcsrtombs', 'wctob', 'wctrans',
40    'wctrans_t', 'wmemchr', 'wmemcmp', 'wmemcpy', 'wmemmove', 'wmemset',
41    'wprintf', 'wscanf',
42  ),
43  'defined(__DECCXX_VER) && __DECCXX_VER <= 60290024': (
44    'fwide',
45  ),
46  'defined(__linux) && defined(__DECCXX_VER) && __DECCXX_VER <= 60390005': (
47    'getwchar', 'ungetwc', 'fgetwc', 'vfwprintf', 'fgetws', 'vswprintf',
48    'wcsftime', 'fputwc', 'vwprintf', 'fputws', 'fwide', 'putwc',
49    'wprintf', 'fwprintf', 'putwchar', 'wscanf', 'fwscanf', 'swprintf',
50    'getwc', 'swscanf',
51  ),
52}
53
54# The information below was copied directly from the file:
55#   ISO+IEC+14882-1998.pdf
56# The exact source of the information is given in the format
57#   PDF #, p. #, Table #
58# Where
59#   PDF # = page number as shown by the Acrobat Reader
60#   p. # = page number printed at the bottom of the page
61#   Table # = number printed in caption of table
62hfiles = {
63  'cassert': ( # PDF 378, p. 352, Table 25
64    # Macro: assert
65  ),
66  'cctype': ( # PDF 431, p. 405, Table 45
67    # Functions:
68      'isalnum', 'isdigit', 'isprint', 'isupper', 'tolower',
69      'isalpha', 'isgraph', 'ispunct', 'isxdigit', 'toupper',
70      'iscntrl', 'islower', 'isspace',
71  ),
72  'cerrno': ( # PDF 378, p. 352, Table 26
73    # Macros: EDOM ERANGE errno
74  ),
75  'cfloat': ( # PDF 361, p. 335, Table 17
76    # Macros: DBL_DIG DBL_MIN_EXP FLT_MIN_10_EXP LDBL_MAX_10_EXP
77    #         DBL_EPSILON FLT_DIG FLT_MIN_EXP LDBL_MAX_EXP
78    #         DBL_MANT_DIG FLT_EPSILON FLT_RADIX LDBL_MIN
79    #         DBL_MAX FLT_MANT_DIG FLT_ROUNDS LDBL_MIN_10_EXP
80    #         DBL_MAX_10_EXP FLT_MAX LDBL_DIG LDBL_MIN_EXP
81    #         DBL_MAX_EXP FLT_MAX_10_EXP LDBL_EPSILON
82    #         DBL_MIN FLT_MAX_EXP LDBL_MANT_DIG
83    #         DBL_MIN_10_EXP FLT_MIN LDBL_MAX
84  ),
85  #'ciso646': (
86  #),
87  'climits': ( # PDF 361, p. 335, Table 16
88    # Macros: CHAR_BIT INT_MAX LONG_MIN SCHAR_MIN UCHAR_MAX USHRT_MAX
89    #         CHAR_MAX INT_MIN MB_LEN_MAX SHRT_MAX UINT_MAX
90    #         CHAR_MIN LONG_MAX SCHAR_MAX SHRT_MIN ULONG_MAX
91  ),
92  'clocale': ( # PDF 483, p. 457, Table 62
93    # Macros: LC_ALL LC_COLLATE LC_CTYPE
94    #         LC_MONETARY LC_NUMERIC LC_TIME
95    #         NULL
96    # Struct:
97      'lconv',
98    # Functions:
99      'localeconv', 'setlocale',
100  ),
101  'cmath': ( # PDF 622, p. 596, Table 80
102    # Macro: HUGE_VAL
103    # Functions:
104      'acos', 'cos', 'fmod', 'modf', 'tan',
105      'asin', 'cosh', 'frexp', 'pow', 'tanh',
106      'atan', 'exp', 'ldexp', 'sin',
107      'atan2', 'fabs', 'log', 'sinh',
108      'ceil', 'floor', 'log10', 'sqrt',
109  ),
110  'csetjmp': ( # PDF 372, p. 346, Table 20
111    # Macro: setjmp
112    # Type:
113      'jmp_buf',
114    # Function:
115      'longjmp',
116  ),
117  'csignal': ( # PDF 372, p. 346, Table 22
118    # Macros: SIGABRT SIGILL SIGSEGV SIG_DFL
119    #         SIG_IGN SIGFPE SIGINT SIGTERM SIG_ERR
120    # Type:
121      'sig_atomic_t',
122    # Functions:
123      'raise', 'signal',
124  ),
125  'cstdarg': ( # PDF 372, p. 346, Table 19
126    # Macros: va_arg va_end va_start
127    # Type:
128      'va_list',
129  ),
130  'cstddef': ( # PDF 353, p. 327, Table 15
131    # Macros: NULL offsetof
132    # Types:
133      'ptrdiff_t', 'size_t',
134  ),
135  'cstdio': ( # PDF 692, p. 666, Table 94
136    # Macros: BUFSIZ FOPEN_MAX SEEK_CUR TMP_MAX _IONBF stdout
137    #         EOF L_tmpnam SEEK_END _IOFBF stderr
138    #         FILENAME_MAX NULL <cstdio> SEEK_SET _IOLBF stdin
139    # Types:
140      'FILE', 'fpos_t', 'size_t',
141    # Functions:
142      'clearerr', 'fgets', 'fscanf', 'gets', 'rename', 'tmpfile',
143      'fclose', 'fopen', 'fseek', 'perror', 'rewind', 'tmpnam',
144      'feof', 'fprintf', 'fsetpos', 'printf', 'scanf', 'ungetc',
145      'ferror', 'fputc', 'ftell', 'putc', 'setbuf', 'vfprintf',
146      'fflush', 'fputs', 'fwrite', 'putchar', 'setvbuf', 'vprintf',
147      'fgetc', 'fread', 'getc', 'puts', 'sprintf', 'vsprintf',
148      'fgetpos', 'freopen', 'getchar', 'remove', 'sscanf',
149  ),
150  'cstdlib': ( # PDF 362, p. 336, Table 18
151    # Macros: EXIT_FAILURE EXIT_SUCCESS
152    # Functions:
153      'abort', 'atexit', 'exit',
154               # PDF 373, p. 347, Table 23
155    # Functions:
156      'getenv', 'system',
157               # PDF 400, p. 374, Table 33
158    # Functions:
159      'calloc', 'malloc',
160      'free', 'realloc',
161               # PDF 433, p. 417, Table 49
162    # Macros: MB_CUR_MAX
163    # Functions:
164      'atol', 'mblen', 'strtod', 'wctomb',
165      'atof', 'mbstowcs', 'strtol', 'wcstombs',
166      'atoi', 'mbtowc', 'strtoul',
167               # PDF 589, p. 563, Table 78
168    # Functions:
169      'bsearch', 'qsort',
170               # PDF 622, p. 596, Table 81
171    # Macros: RAND_MAX
172    # Types:
173      'div_t', 'ldiv_t',
174    # Functions:
175      'abs', 'labs', 'srand',
176      'div', 'ldiv', 'rand',
177  ),
178  'cstring': ( # PDF 401, p. 375, Table 34
179    # Macro: NULL
180    # Type: size_t
181    # Functions:
182    # 'memchr', 'memcmp',
183    # 'memcpy', 'memmove', 'memset',
184               # PDF 432, p. 406, Table 47
185    # Macro: NULL
186    # Type:
187      'size_t',
188    # Functions:
189      'memchr', 'strcat', 'strcspn', 'strncpy', 'strtok',
190      'memcmp', 'strchr', 'strerror', 'strpbrk', 'strxfrm',
191      'memcpy', 'strcmp', 'strlen', 'strrchr',
192      'memmove', 'strcoll', 'strncat', 'strspn',
193      'memset', 'strcpy', 'strncmp', 'strstr',
194  ),
195  'ctime': ( # PDF 372, p. 346, Table 21
196    # Macros: CLOCKS_PER_SEC
197    # Types:
198    # 'clock_t',
199    # Functions:
200    # 'clock',
201             # PDF 401, p. 375, Table 35
202    # Macros: NULL
203    # Types:
204      'size_t', 'clock_t', 'time_t',
205    # Struct:
206      'tm',
207    # Functions:
208      'asctime', 'clock', 'difftime', 'localtime', 'strftime',
209      'ctime', 'gmtime', 'mktime', 'time',
210  ),
211  'cwchar': ( # PDF 432, p. 406, Table 48
212    # Macros: NULL WCHAR_MAX WCHAR_MIN WEOF
213    # Types:
214      'mbstate_t', 'wint_t', 'size_t',
215    # Functions:
216      'btowc', 'getwchar', 'ungetwc', 'wcscpy', 'wcsrtombs', 'wmemchr',
217      'fgetwc', 'mbrlen', 'vfwprintf', 'wcscspn', 'wcsspn', 'wmemcmp',
218      'fgetws', 'mbrtowc', 'vswprintf', 'wcsftime', 'wcsstr', 'wmemcpy',
219      'fputwc', 'mbsinit', 'vwprintf', 'wcslen', 'wcstod', 'wmemmove',
220      'fputws', 'mbsrtowcs', 'wcrtomb', 'wcsncat', 'wcstok', 'wmemset',
221      'fwide', 'putwc', 'wcscat', 'wcsncmp', 'wcstol', 'wprintf',
222      'fwprintf', 'putwchar', 'wcschr', 'wcsncpy', 'wcstoul', 'wscanf',
223      'fwscanf', 'swprintf', 'wcscmp', 'wcspbrk', 'wcsxfrm',
224      'getwc', 'swscanf', 'wcscoll', 'wcsrchr', 'wctob',
225  ),
226  'cwctype': ( # PDF 432, p. 406, Table 46
227    # Macro: WEOF
228    # Types:
229      'wctrans_t', 'wctype_t', 'wint_t',
230    # Functions:
231      'iswalnum', 'iswctype', 'iswlower', 'iswspace', 'towctrans', 'wctrans',
232      'iswalpha', 'iswdigit', 'iswprint', 'iswupper', 'towlower', 'wctype',
233      'iswcntrl', 'iswgraph', 'iswpunct', 'iswxdigit', 'towupper',
234  ),
235}
236
237if (__name__ == "__main__"):
238
239  import sys, string, time
240
241  now = time.asctime(time.localtime(time.time())) + ' ' + str(time.tzname)
242
243  for hfile in hfiles.keys():
244    HFILE = string.upper(hfile)
245    f = open(hfile, 'w')
246    sys.stdout = f
247    print '// This file is automatically generated. Do not edit.'
248    print '//', sys.argv
249    print '//', now
250    print
251    print '#ifndef __' + HFILE + '_HEADER'
252    print '#define __' + HFILE + '_HEADER'
253    print ''
254    print '#include <' + hfile[1:] + '.h>'
255    print ''
256    if (len(hfiles[hfile]) > 0):
257      print 'namespace std {'
258      for s in hfiles[hfile]:
259        n_endif = 0
260        for d in defines.keys():
261          if (s in defines[d]):
262            print '#if !(' + d + ')'
263            n_endif = n_endif + 1
264        print '  using ::' + s + ';'
265        for i in xrange(n_endif): print '#endif'
266      print '}'
267      print ''
268    print '#endif // ' + HFILE + '_HEADER'
269    sys.stdout = sys.__stdout__
Note: See TracBrowser for help on using the repository browser.