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