Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_34_1/libs/config/test/config_info.cpp @ 29

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

updated boost from 1_33_1 to 1_34_1

File size: 35.2 KB
Line 
1//  Boost config.hpp configuration test program file  -----------------------//
2
3//  (C) Copyright John Maddock 2001 - 2003.
4//  (C) Copyright Jens Maurer 2001.
5//  (C) Copyright Peter Dimov 2001.
6//  (C) Copyright Darin Adler 2001.
7//  (C) Copyright Beman Dawes 2002.
8//  Use, modification and distribution are subject to the
9//  Boost Software License, Version 1.0. (See accompanying file
10//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
11
12//  See http://www.boost.org/libs/config for most recent version.
13
14#include <boost/config.hpp>
15#include <boost/version.hpp>
16#include <iostream>
17#include <iomanip>
18#include <string.h>
19#include <limits.h>
20#include <stdlib.h>
21#include <stddef.h>
22
23#ifdef BOOST_HAS_UNISTD_H
24#include <unistd.h>
25#endif
26
27static unsigned int indent = 4;
28static unsigned int width = 40;
29
30using std::cout;
31using std::istream;
32
33void print_macro(const char* name, const char* value)
34{
35   // if name == value+1 then then macro is not defined,
36   // in which case we don't print anything:
37   if(0 != strcmp(name, value+1))
38   {
39      for(unsigned i = 0; i < indent; ++i) std::cout.put(' ');
40      std::cout << std::setw(width);
41      cout.setf(istream::left, istream::adjustfield);
42      std::cout << name;
43      if(value[1])
44      {
45         // macro has a value:
46         std::cout << value << "\n";
47      }
48      else
49      {
50         // macro is defined but has no value:
51         std::cout << " [no value]\n";
52      }
53   }
54}
55
56#define PRINT_MACRO(X) print_macro(#X, BOOST_STRINGIZE(=X))
57
58template <class T>
59void print_expression(const char* expression, T val)
60{
61   for(unsigned i = 0; i < indent; ++i) std::cout.put(' ');
62   std::cout << std::setw(width);
63   std::cout.setf(istream::left, istream::adjustfield);
64   std::cout << expression << "=" << val << std::endl;
65}
66
67#define PRINT_EXPRESSION(E) print_expression(#E, E);
68
69template <class T>
70void print_byte_order(const char* what, T /* t */ )
71{
72   T val = 0;
73   unsigned i;
74   for(i = 1; i < sizeof(T); ++i)
75   {
76      val |= (CHAR_BIT * static_cast<T>(i)) << (CHAR_BIT * static_cast<T>(i));
77   }
78   const char* p = reinterpret_cast<const char*>(&val);
79
80   for(i = 0; i < indent; ++i) std::cout.put(' ');
81   std::cout << std::setw(width);
82   std::cout.setf(istream::left, istream::adjustfield);
83   std::cout << what << "=";
84   for(i = 0; i < sizeof(T); ++i)
85   {
86      std::cout << (int)p[i] << " ";
87   }
88   std::cout << std::endl;
89}
90
91#define PRINT_ORDER(T) print_byte_order(BOOST_STRINGIZE(byte order for type T), T())
92
93template <class T>
94void print_sign(const char* what, T t)
95{
96   t = static_cast<T>(-1);  // cast suppresses warnings
97   for(unsigned i = 0; i < indent; ++i) std::cout.put(' ');
98   std::cout << "Type " << what << " is " << ((t > 0) ? "unsigned" : "signed") << std::endl;
99}
100
101#define PRINT_SIGN(T) print_sign(#T, T())
102
103
104void print_compiler_macros()
105{
106   std::cout << BOOST_COMPILER << "\n";
107   // Borland options:
108  PRINT_MACRO(__BORLANDC__);
109  PRINT_MACRO(__CDECL__);
110  PRINT_MACRO(_CHAR_UNSIGNED);
111  PRINT_MACRO(__CODEGUARD__);
112  PRINT_MACRO(__CONSOLE__);
113  PRINT_MACRO(_CPPUNWIND);
114  PRINT_MACRO(__cplusplus);
115  PRINT_MACRO(__FLAT__);
116  PRINT_MACRO(__FUNC__);
117  PRINT_MACRO(_M_IX86);
118  PRINT_MACRO(__MSDOS__);
119  PRINT_MACRO(__MT__ );
120  PRINT_MACRO(__PASCAL__);
121  PRINT_MACRO(__STDC__);
122  PRINT_MACRO(__TLS__);
123  PRINT_MACRO(_WCHAR_T);
124  PRINT_MACRO(_Windows);
125  PRINT_MACRO(__WIN32__);
126  PRINT_MACRO(_WIN32);
127  PRINT_MACRO(_WIN64);
128  PRINT_MACRO(WIN32);
129  PRINT_MACRO(_RTLDLL);
130  PRINT_MACRO(__DEBUG);
131
132// Internal MSVC 7 error workaround (Peter Dimov)
133
134#ifndef _NATIVE_WCHAR_T_DEFINED
135  PRINT_MACRO(_WCHAR_T_DEFINED);
136#endif
137  // MSVC macros:
138  PRINT_MACRO(_CPPRTTI);
139  PRINT_MACRO(_DLL);
140  PRINT_MACRO(_M_ALPHA);
141  PRINT_MACRO(_M_MPPC);
142  PRINT_MACRO(_M_MRX000);
143  PRINT_MACRO(_M_PPC);
144  PRINT_MACRO(_MFC_VER);
145  PRINT_MACRO(_MSC_EXTENSIONS);
146  PRINT_MACRO(_MSC_VER);
147  PRINT_MACRO(_MSC_FULL_VER);
148  PRINT_MACRO(_MT);
149  PRINT_MACRO(_NATIVE_WCHAR_T_DEFINED);
150  // GNUC options:
151  PRINT_MACRO(__GNUC__);
152  PRINT_MACRO(__GNUC_MINOR__);
153  PRINT_MACRO(__STDC_VERSION__);
154  PRINT_MACRO(__GNUG__);
155  PRINT_MACRO(__STRICT_ANSI__);
156  PRINT_MACRO(__VERSION__);
157  PRINT_MACRO(__OPTIMIZE__);
158  PRINT_MACRO(__CHAR_UNSIGNED__);
159  PRINT_MACRO(__REGISTER_PREFIX__);
160  PRINT_MACRO(__USER_LABEL_PREFIX__);
161  PRINT_MACRO(__GNUPRO__);
162  PRINT_MACRO(__EXCEPTIONS);
163  PRINT_MACRO(__FreeBSD__);
164  PRINT_MACRO(__FreeBSD_cc_version);
165  PRINT_MACRO(__ELF__);
166  PRINT_MACRO(__GNUPRO__);
167  PRINT_MACRO(unix);
168  PRINT_MACRO(bsd);
169  PRINT_MACRO(vax);
170  PRINT_MACRO(mc68000);
171  PRINT_MACRO(m68k);
172  PRINT_MACRO(M68020);
173  PRINT_MACRO(_AM29K);
174  PRINT_MACRO(ns32000);
175  PRINT_MACRO(sun);
176  PRINT_MACRO(pyr);
177  PRINT_MACRO(sequent);
178  PRINT_MACRO(__i386__);
179  PRINT_MACRO(__sparc);
180  PRINT_MACRO(__sparc__);
181  PRINT_MACRO(__powerpc__);
182  PRINT_MACRO(__hppa);
183  PRINT_MACRO(__CYGWIN__);
184  PRINT_MACRO(__MINGW32__);
185  // HP aCC:
186  PRINT_MACRO(__HP_aCC);
187  PRINT_MACRO(_HPACC_);
188  PRINT_MACRO(__LP64__);
189  PRINT_MACRO(__RISC2_0__);
190  PRINT_MACRO(__STDCPP__);
191  PRINT_MACRO(__hppa);
192  PRINT_MACRO(__hpux);
193  PRINT_MACRO(__hp9000s800);
194  PRINT_MACRO(__hp9000s700);
195  PRINT_MACRO(_PA_RISC1_1);
196  PRINT_MACRO(__HPUX_SOURCE);
197  // SGI IRIX:
198  PRINT_MACRO(__sgi);
199  PRINT_MACRO(_COMPILER_VERSION);
200  // Sunpro:
201  PRINT_MACRO(__SUNPRO_CC);
202  PRINT_MACRO(__SUNPRO_CC_COMPAT);
203  PRINT_MACRO(__BUILTIN_VA_ARG_INCR);
204  PRINT_MACRO(__sun);
205  PRINT_MACRO(__SVR4);
206  PRINT_MACRO(__unix);
207  PRINT_MACRO(__sparcv9);
208  PRINT_MACRO(__i386);
209  PRINT_MACRO(i386);
210  // Metrowerks
211  PRINT_MACRO(__MWERKS__);
212  PRINT_MACRO(__MSL__);
213  PRINT_MACRO(__MSL_CPP__);
214  PRINT_MACRO(__A5__);
215  PRINT_MACRO(__embedded_cplusplus);
216  PRINT_MACRO(__fourbyteints__);
217  PRINT_MACRO(__IEEEdoubles__);
218  PRINT_MACRO(__MC68K__);
219  PRINT_MACRO(__MC68020__);
220  PRINT_MACRO(__MC68881__);
221  PRINT_MACRO(__MIPS__);
222  PRINT_MACRO(__MIPS_ISA2__);
223  PRINT_MACRO(__MIPS_ISA3__);
224  PRINT_MACRO(__MIPS_ISA4__);
225  PRINT_MACRO(__MWBROWSER__);
226  PRINT_MACRO(__profile__);
227  PRINT_MACRO(__powerc);
228  PRINT_MACRO(_powerc);
229  PRINT_MACRO(__POWERPC__);
230  PRINT_MACRO(macintosh);
231  PRINT_MACRO(__MACH__);
232  PRINT_MACRO(__APPLE__);
233  PRINT_MACRO(__APPLE_CC__);
234  // MPW (MrCpp and SCpp)
235  PRINT_MACRO(__MRC__);
236  PRINT_MACRO(__SC__);
237  PRINT_MACRO(__FPCE__);
238  PRINT_MACRO(__FPCE_IEEE__);
239  PRINT_MACRO(MPW_CPLUS);
240  PRINT_MACRO(MPW_C);
241  PRINT_MACRO(__MC601);
242  PRINT_MACRO(__POWERPC);
243  PRINT_MACRO(__useAppleExts__);
244  PRINT_MACRO(powerc);
245  PRINT_MACRO(MC68000);
246  PRINT_MACRO(THINK_PLUS);
247  PRINT_MACRO(mc68881);
248  PRINT_MACRO(__FAR_CODE__);
249  PRINT_MACRO(__FAR_DATA__);
250  PRINT_MACRO(__CFM68K__);
251  // EDG
252  PRINT_MACRO(__EDG__);
253  PRINT_MACRO(__EDG_VERSION__);
254  PRINT_MACRO(c_plusplus);       // indication for strict mode
255  PRINT_MACRO(_BOOL);
256  PRINT_MACRO(_EXPLICIT);
257  PRINT_MACRO(__SIGNED_CHARS__);
258  PRINT_MACRO(_TYPENAME);
259  PRINT_MACRO(_WCHAR_T);
260  PRINT_MACRO(__ARRAY_OPERATORS);
261  PRINT_MACRO(__EDG_ABI_COMPATIBILITY_VERSION);
262  PRINT_MACRO(__EDG_IMPLICIT_USING_STD);
263  PRINT_MACRO(__EDG_RUNTIME_USES_NAMESPACES);
264  PRINT_MACRO(__BOOL_DEFINED);
265  PRINT_MACRO(__RTTI);
266  PRINT_MACRO(__PLACEMENT_DELETE);
267  PRINT_MACRO(__NO_LONG_LONG);
268
269  // Intel options:
270  PRINT_MACRO(__INTEL__);
271  PRINT_MACRO(__ICC);
272  PRINT_MACRO(__ICL);
273  PRINT_MACRO(__ECC);
274  PRINT_MACRO(__INTEL_COMPILER);
275  PRINT_MACRO(__INITIAL_POINTER_SIZE);
276  PRINT_MACRO(_INTEGRAL_MAX_BITS);
277  PRINT_MACRO(__INTEL_COMPILER_BUILD_DATE);
278  PRINT_MACRO(__INTEL_MS_COMPAT_LEVEL);
279  PRINT_MACRO(__LONG_DOUBLE_SIZE__);
280  PRINT_MACRO(_M_X64);
281  PRINT_MACRO(_OPENMP);
282  PRINT_MACRO(_OPENMPT);
283  PRINT_MACRO(_PGO_INSTRUMENT);
284  PRINT_MACRO(__QMSPP_); 
285
286  // misc compilers not covered so far:
287  PRINT_MACRO(__USLC__);
288  PRINT_MACRO(__DECCXX);
289  PRINT_MACRO(__IBMCPP__);
290  PRINT_MACRO(_REENTRANT);
291  PRINT_MACRO(_PTHREADS);
292  PRINT_MACRO(__STDC_HOSTED__);
293  PRINT_MACRO(__COMO__);
294  PRINT_MACRO(__COMO_VERSION__);
295  PRINT_MACRO(__DM__);
296  PRINT_MACRO(__osf__);
297  PRINT_MACRO(__OSF__);
298  PRINT_MACRO(__QNXNTO__);
299  PRINT_MACRO(__QNX__);
300  PRINT_MACRO(_NTO_VERSION);
301}
302
303void print_stdlib_macros()
304{
305   std::cout << BOOST_STDLIB << std::endl;
306   #ifdef _RWSTD_VER
307   // Rogue Wave 2.x config options:
308   PRINT_MACRO(__NO_EDG_EXCEPTION_CLASSES);
309   PRINT_MACRO(_RWSTD_ALLOCATOR);
310   PRINT_MACRO(_RWSTD_BAD_ALLOC_DEFINED);
311   PRINT_MACRO(_RWSTD_BAD_EXCEPTION_DEFINED);
312   PRINT_MACRO(_RWSTD_BOUNDS_CHECKING);
313   PRINT_MACRO(_RWSTD_COMPILE_INSTANTIATE);
314   PRINT_MACRO(_RWSTD_DEFAULT_PRECISION);
315   PRINT_MACRO(_RWSTD_EXCEPTION_DEFINED);
316   PRINT_MACRO(_RWSTD_EXCEPTION_HANDLER_IN_STD);
317   PRINT_MACRO(_RWSTD_EXCEPTION_PREDEFINED);
318   PRINT_MACRO(_RWSTD_FLT_ROUNDS_IS_CONSTANT);
319   PRINT_MACRO(_RWSTD_LOCALIZED_ERRORS);
320   PRINT_MACRO(_RWSTD_MESSAGE);
321   PRINT_MACRO(_RWSTD_MUTEXATTR_DEFAULT);
322   PRINT_MACRO(_RWSTD_NO_ANSI_SPRINTF);
323   PRINT_MACRO(_RWSTD_NO_ARG_MATCH);
324   PRINT_MACRO(_RWSTD_NO_BAD_CAST);
325   PRINT_MACRO(_RWSTD_NO_BASE_CLASS_MATCH);
326   PRINT_MACRO(_RWSTD_NO_BOOL);
327   PRINT_MACRO(_RWSTD_NO_BUILTIN_CTOR);
328   PRINT_MACRO(_RWSTD_NO_CATOPEN_CATGETS);
329   PRINT_MACRO(_RWSTD_NO_CLASS_PARTIAL_SPEC);
330   PRINT_MACRO(_RWSTD_NO_COMPLEX_DEFAULT_TEMPLATES);
331   PRINT_MACRO(_RWSTD_NO_COMPLICATED_EXCEPTIONS);
332   PRINT_MACRO(_RWSTD_NO_COMPLICATED_TYPEDEF);
333   PRINT_MACRO(_RWSTD_NO_CONST_INST);
334   PRINT_MACRO(_RWSTD_NO_CTOR_RETURN);
335   PRINT_MACRO(_RWSTD_NO_DEFAULT_FOR_TPARAM);
336   PRINT_MACRO(_RWSTD_NO_DEFAULT_TEMPLATE_ARGS);
337   PRINT_MACRO(_RWSTD_NO_DESTROY_BUILTIN);
338   PRINT_MACRO(_RWSTD_NO_DESTROY_NONBUILTIN);
339   PRINT_MACRO(_RWSTD_NO_EMBEDDED_TYPEDEF);
340   PRINT_MACRO(_RWSTD_NO_EX_SPEC);
341   PRINT_MACRO(_RWSTD_NO_EXCEPTIONS);
342   PRINT_MACRO(_RWSTD_NO_EXPLICIT);
343   PRINT_MACRO(_RWSTD_NO_EXPLICIT_ARG);
344   PRINT_MACRO(_RWSTD_NO_EXPLICIT_FUNC_INSTANTIATION);
345   PRINT_MACRO(_RWSTD_NO_EXPLICIT_INSTANTIATION);
346   PRINT_MACRO(_RWSTD_NO_EXTENSION);
347   PRINT_MACRO(_RWSTD_NO_FORWARD_SPECIALIZATIONS);
348   PRINT_MACRO(_RWSTD_NO_FPOS_T);
349   PRINT_MACRO(_RWSTD_NO_FRIEND_TEMPLATES);
350   PRINT_MACRO(_RWSTD_NO_FUNC_PARTIAL_SPEC);
351   PRINT_MACRO(_RWSTD_NO_GETTIMEOFDAY);
352   PRINT_MACRO(_RWSTD_NO_GLOBAL_TZ);
353   PRINT_MACRO(_RWSTD_NO_INHERITED_TYPEDEFS);
354   PRINT_MACRO(_RWSTD_NO_INIT_CONST_TEMPLATE_REF_ARG);
355   PRINT_MACRO(_RWSTD_NO_INT_TYPEDEF);
356   PRINT_MACRO(_RWSTD_NO_LDIV);
357   PRINT_MACRO(_RWSTD_NO_LEADING_UNDERSCORE);
358   PRINT_MACRO(_RWSTD_NO_LOCALE);
359   PRINT_MACRO(_RWSTD_NO_LONG_NAME);
360   PRINT_MACRO(_RWSTD_NO_LONGDOUBLE);
361   PRINT_MACRO(_RWSTD_NO_MBSTATE_T);
362   PRINT_MACRO(_RWSTD_NO_MEM_CLASS_TEMPLATES);
363   PRINT_MACRO(_RWSTD_NO_MEMBER_TEMPLATES);
364   PRINT_MACRO(_RWSTD_NO_MEMBER_TYPE_TPARAM);
365   PRINT_MACRO(_RWSTD_NO_MEMBER_WO_DEF_CTOR);
366   PRINT_MACRO(_RWSTD_NO_MEMMOVE);
367   PRINT_MACRO(_RWSTD_NO_MULTI_DIM_ARRAY);
368   PRINT_MACRO(_RWSTD_NO_MUTABLE);
369   PRINT_MACRO(_RWSTD_NO_NAME_INJECTION);
370   PRINT_MACRO(_RWSTD_NO_NAMESPACE);
371   PRINT_MACRO(_RWSTD_NO_NESTING_TEMPLATES);
372   PRINT_MACRO(_RWSTD_NO_NEW_BRACKETS);
373   PRINT_MACRO(_RWSTD_NO_NEW_DECL);
374   PRINT_MACRO(_RWSTD_NO_NEW_HEADER);
375   PRINT_MACRO(_RWSTD_NO_NEW_TEMPLATE_SYNTAX);
376   PRINT_MACRO(_RWSTD_NO_NONCLASS_ARROW_RETURN);
377   PRINT_MACRO(_RWSTD_NO_NONTYPE_ARGS);
378   PRINT_MACRO(_RWSTD_NO_ONLY_NEEDED_INSTANTIATION);
379   PRINT_MACRO(_RWSTD_NO_OVERLOAD_C_POW);
380   PRINT_MACRO(_RWSTD_NO_OVERLOAD_OF_TEMPLATE_FUNCTION);
381   PRINT_MACRO(_RWSTD_NO_OVERLOAD_WCHAR);
382   PRINT_MACRO(_RWSTD_NO_PART_SPEC_OVERLOAD);
383   PRINT_MACRO(_RWSTD_NO_RET_TEMPLATE);
384   PRINT_MACRO(_RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES);
385   PRINT_MACRO(_RWSTD_NO_STATIC_CAST);
386   PRINT_MACRO(_RWSTD_NO_STATIC_DEF);
387   PRINT_MACRO(_RWSTD_NO_STATIC_DEF2);
388   PRINT_MACRO(_RWSTD_NO_STATIC_DEF3);
389   PRINT_MACRO(_RWSTD_NO_STATIC_MEM_DEF);
390   PRINT_MACRO(_RWSTD_NO_STI_SIMPLE);
391   PRINT_MACRO(_RWSTD_NO_STI_TEMPLATE);
392   PRINT_MACRO(_RWSTD_NO_STREAM_LONG_DOUBLE);
393   PRINT_MACRO(_RWSTD_NO_STRFTIME_CAPC);
394   PRINT_MACRO(_RWSTD_NO_STRICT_TEMPLATE_INSTANTIATE);
395   PRINT_MACRO(_RWSTD_NO_SWPRINTF);
396   PRINT_MACRO(_RWSTD_NO_TEMPLATE_ON_RETURN_TYPE);
397   PRINT_MACRO(_RWSTD_NO_TEMPLATE_TEMPLATE);
398   PRINT_MACRO(_RWSTD_NO_THREADS);
399   PRINT_MACRO(_RWSTD_NO_THROW_SPEC_ON_NEW);
400   PRINT_MACRO(_RWSTD_NO_THROW_WITH_SHARED);
401   PRINT_MACRO(_RWSTD_NO_TYPEDEF_INST);
402   PRINT_MACRO(_RWSTD_NO_TYPEDEF_OVERLOAD);
403   PRINT_MACRO(_RWSTD_NO_TYPENAME);
404   PRINT_MACRO(_RWSTD_NO_UNDEFINED_FRIEND);
405   PRINT_MACRO(_RWSTD_NO_UNINITIALIZED_STATIC_DEF);
406   PRINT_MACRO(_RWSTD_NO_WCHAR_H);
407   PRINT_MACRO(_RWSTD_NO_WCTYPE_H);
408   PRINT_MACRO(_RWSTD_NO_WIDE_CHAR);
409   PRINT_MACRO(_RWSTD_NO_WINT_TYPE);
410   PRINT_MACRO(_RWSTD_NO_WSTR);
411   PRINT_MACRO(_RWSTD_NOT_ALL_WSTR_CFUNCTIONS);
412   PRINT_MACRO(_RWSTD_POSIX_D10_THREADS);
413   PRINT_MACRO(_RWSTD_POSIX_THREADS);
414   PRINT_MACRO(_RWSTD_REQUIRES_IEEEFP);
415   PRINT_MACRO(_RWSTD_SOLARIS_THREADS);
416   PRINT_MACRO(_RWSTD_STRUCT_TM_TZ);
417   PRINT_MACRO(_RWSTD_WIDE_STRING_NULL_PROBLEM);
418   #elif defined(__STD_RWCOMPILER_H__)
419   // Rogue Wave 1.x std lib:
420   PRINT_MACRO(__NO_EDG_EXCEPTION_CLASSES);
421   PRINT_MACRO(RWSTD_ALLOCATOR);
422   PRINT_MACRO(RWSTD_BAD_ALLOC_DEFINED);
423   PRINT_MACRO(RWSTD_BAD_EXCEPTION_DEFINED);
424   PRINT_MACRO(RWSTD_BOUNDS_CHECKING);
425   PRINT_MACRO(RWSTD_COMPILE_INSTANTIATE);
426   PRINT_MACRO(RWSTD_DEFAULT_PRECISION);
427   PRINT_MACRO(RWSTD_EXCEPTION_DEFINED);
428   PRINT_MACRO(RWSTD_EXCEPTION_HANDLER_IN_STD);
429   PRINT_MACRO(RWSTD_EXCEPTION_PREDEFINED);
430   PRINT_MACRO(RWSTD_FLT_ROUNDS_IS_CONSTANT);
431   PRINT_MACRO(RWSTD_LOCALIZED_ERRORS);
432   PRINT_MACRO(RWSTD_MESSAGE);
433   PRINT_MACRO(RWSTD_MUTEXATTR_DEFAULT);
434   PRINT_MACRO(RWSTD_NO_ANSI_SPRINTF);
435   PRINT_MACRO(RWSTD_NO_ARG_MATCH);
436   PRINT_MACRO(RWSTD_NO_BAD_CAST);
437   PRINT_MACRO(RWSTD_NO_BASE_CLASS_MATCH);
438   PRINT_MACRO(RWSTD_NO_BOOL);
439   PRINT_MACRO(RWSTD_NO_BUILTIN_CTOR);
440   PRINT_MACRO(RWSTD_NO_CATOPEN_CATGETS);
441   PRINT_MACRO(RWSTD_NO_CLASS_PARTIAL_SPEC);
442   PRINT_MACRO(RWSTD_NO_COMPLEX_DEFAULT_TEMPLATES);
443   PRINT_MACRO(RWSTD_NO_COMPLICATED_EXCEPTIONS);
444   PRINT_MACRO(RWSTD_NO_COMPLICATED_TYPEDEF);
445   PRINT_MACRO(RWSTD_NO_CONST_INST);
446   PRINT_MACRO(RWSTD_NO_CTOR_RETURN);
447   PRINT_MACRO(RWSTD_NO_DEFAULT_FOR_TPARAM);
448   PRINT_MACRO(RWSTD_NO_DEFAULT_TEMPLATE_ARGS);
449   PRINT_MACRO(RWSTD_NO_DESTROY_BUILTIN);
450   PRINT_MACRO(RWSTD_NO_DESTROY_NONBUILTIN);
451   PRINT_MACRO(RWSTD_NO_EMBEDDED_TYPEDEF);
452   PRINT_MACRO(RWSTD_NO_EX_SPEC);
453   PRINT_MACRO(RWSTD_NO_EXCEPTIONS);
454   PRINT_MACRO(RWSTD_NO_EXPLICIT);
455   PRINT_MACRO(RWSTD_NO_EXPLICIT_ARG);
456   PRINT_MACRO(RWSTD_NO_EXPLICIT_FUNC_INSTANTIATION);
457   PRINT_MACRO(RWSTD_NO_EXPLICIT_INSTANTIATION);
458   PRINT_MACRO(RWSTD_NO_EXTENSION);
459   PRINT_MACRO(RWSTD_NO_FORWARD_SPECIALIZATIONS);
460   PRINT_MACRO(RWSTD_NO_FPOS_T);
461   PRINT_MACRO(RWSTD_NO_FRIEND_TEMPLATES);
462   PRINT_MACRO(RWSTD_NO_FUNC_PARTIAL_SPEC);
463   PRINT_MACRO(RWSTD_NO_GETTIMEOFDAY);
464   PRINT_MACRO(RWSTD_NO_GLOBAL_TZ);
465   PRINT_MACRO(RWSTD_NO_INHERITED_TYPEDEFS);
466   PRINT_MACRO(RWSTD_NO_INIT_CONST_TEMPLATE_REF_ARG);
467   PRINT_MACRO(RWSTD_NO_INT_TYPEDEF);
468   PRINT_MACRO(RWSTD_NO_LDIV);
469   PRINT_MACRO(RWSTD_NO_LEADING_UNDERSCORE);
470   PRINT_MACRO(RWSTD_NO_LOCALE);
471   PRINT_MACRO(RWSTD_NO_LONG_NAME);
472   PRINT_MACRO(RWSTD_NO_LONGDOUBLE);
473   PRINT_MACRO(RWSTD_NO_MBSTATE_T);
474   PRINT_MACRO(RWSTD_NO_MEM_CLASS_TEMPLATES);
475   PRINT_MACRO(RWSTD_NO_MEMBER_TEMPLATES);
476   PRINT_MACRO(RWSTD_NO_MEMBER_TYPE_TPARAM);
477   PRINT_MACRO(RWSTD_NO_MEMBER_WO_DEF_CTOR);
478   PRINT_MACRO(RWSTD_NO_MEMMOVE);
479   PRINT_MACRO(RWSTD_NO_MULTI_DIM_ARRAY);
480   PRINT_MACRO(RWSTD_NO_MUTABLE);
481   PRINT_MACRO(RWSTD_NO_NAME_INJECTION);
482   PRINT_MACRO(RWSTD_NO_NAMESPACE);
483   PRINT_MACRO(RWSTD_NO_NESTING_TEMPLATES);
484   PRINT_MACRO(RWSTD_NO_NEW_BRACKETS);
485   PRINT_MACRO(RWSTD_NO_NEW_DECL);
486   PRINT_MACRO(RWSTD_NO_NEW_HEADER);
487   PRINT_MACRO(RWSTD_NO_NEW_TEMPLATE_SYNTAX);
488   PRINT_MACRO(RWSTD_NO_NONCLASS_ARROW_RETURN);
489   PRINT_MACRO(RWSTD_NO_NONTYPE_ARGS);
490   PRINT_MACRO(RWSTD_NO_ONLY_NEEDED_INSTANTIATION);
491   PRINT_MACRO(RWSTD_NO_OVERLOAD_C_POW);
492   PRINT_MACRO(RWSTD_NO_OVERLOAD_OF_TEMPLATE_FUNCTION);
493   PRINT_MACRO(RWSTD_NO_OVERLOAD_WCHAR);
494   PRINT_MACRO(RWSTD_NO_PART_SPEC_OVERLOAD);
495   PRINT_MACRO(RWSTD_NO_RET_TEMPLATE);
496   PRINT_MACRO(RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES);
497   PRINT_MACRO(RWSTD_NO_STATIC_CAST);
498   PRINT_MACRO(RWSTD_NO_STATIC_DEF);
499   PRINT_MACRO(RWSTD_NO_STATIC_DEF2);
500   PRINT_MACRO(RWSTD_NO_STATIC_DEF3);
501   PRINT_MACRO(RWSTD_NO_STATIC_MEM_DEF);
502   PRINT_MACRO(RWSTD_NO_STI_SIMPLE);
503   PRINT_MACRO(RWSTD_NO_STI_TEMPLATE);
504   PRINT_MACRO(RWSTD_NO_STREAM_LONG_DOUBLE);
505   PRINT_MACRO(RWSTD_NO_STRFTIME_CAPC);
506   PRINT_MACRO(RWSTD_NO_STRICT_TEMPLATE_INSTANTIATE);
507   PRINT_MACRO(RWSTD_NO_SWPRINTF);
508   PRINT_MACRO(RWSTD_NO_TEMPLATE_ON_RETURN_TYPE);
509   PRINT_MACRO(RWSTD_NO_TEMPLATE_TEMPLATE);
510   PRINT_MACRO(RWSTD_NO_THREADS);
511   PRINT_MACRO(RWSTD_NO_THROW_SPEC_ON_NEW);
512   PRINT_MACRO(RWSTD_NO_THROW_WITH_SHARED);
513   PRINT_MACRO(RWSTD_NO_TYPEDEF_INST);
514   PRINT_MACRO(RWSTD_NO_TYPEDEF_OVERLOAD);
515   PRINT_MACRO(RWSTD_NO_TYPENAME);
516   PRINT_MACRO(RWSTD_NO_UNDEFINED_FRIEND);
517   PRINT_MACRO(RWSTD_NO_UNINITIALIZED_STATIC_DEF);
518   PRINT_MACRO(RWSTD_NO_WCHAR_H);
519   PRINT_MACRO(RWSTD_NO_WCTYPE_H);
520   PRINT_MACRO(RWSTD_NO_WIDE_CHAR);
521   PRINT_MACRO(RWSTD_NO_WINT_TYPE);
522   PRINT_MACRO(RWSTD_NO_WSTR);
523   PRINT_MACRO(RWSTD_NOT_ALL_WSTR_CFUNCTIONS);
524   PRINT_MACRO(RWSTD_POSIX_D10_THREADS);
525   PRINT_MACRO(RWSTD_POSIX_THREADS);
526   PRINT_MACRO(RWSTD_REQUIRES_IEEEFP);
527   PRINT_MACRO(RWSTD_SOLARIS_THREADS);
528   PRINT_MACRO(RWSTD_STRUCT_TM_TZ);
529   PRINT_MACRO(RWSTD_WIDE_STRING_NULL_PROBLEM);
530   #endif
531   // Dinkumware options:
532   PRINT_MACRO(_CPPLIB_VER);
533   PRINT_MACRO(_GLOBAL_USING);
534   PRINT_MACRO(_HAS_EXCEPTIONS);
535   PRINT_MACRO(_HAS_MEMBER_TEMPLATES_REBIND);
536   PRINT_MACRO(_HAS_TEMPLATE_PARTIAL_ORDERING);
537   // STLPort and generic SGI STL options:
538   PRINT_MACRO(__SGI_STL_NO_ARROW_OPERATOR);
539   PRINT_MACRO(__SGI_STL_OWN_IOSTREAMS);
540   PRINT_MACRO(__SGI_STL_PORT);
541   PRINT_MACRO(__STL_AUTOMATIC_TYPE_TRAITS);
542   PRINT_MACRO(__STL_BASE_MATCH_BUG);
543   PRINT_MACRO(__STL_BASE_TYPEDEF_BUG);
544   PRINT_MACRO(__STL_BASE_TYPEDEF_OUTSIDE_BUG);
545   PRINT_MACRO(__STL_BROKEN_USING_DIRECTIVE);
546   PRINT_MACRO(__STL_CONST_CONSTRUCTOR_BUG);
547   PRINT_MACRO(__STL_DEBUG);
548   PRINT_MACRO(__STL_DEBUG_ALLOC);
549   PRINT_MACRO(__STL_DEFAULT_CONSTRUCTOR_BUG);
550   PRINT_MACRO(__STL_DEFAULT_TYPE_PARAM);
551   PRINT_MACRO(__STL_DONT_REDEFINE_STD);
552   PRINT_MACRO(__STL_DONT_USE_BOOL_TYPEDEF);
553   PRINT_MACRO(__STL_HAS_NO_EXCEPTIONS);
554   PRINT_MACRO(__STL_HAS_NO_NAMESPACES);
555   PRINT_MACRO(__STL_HAS_NO_NEW_C_HEADERS);
556   PRINT_MACRO(__STL_HAS_NO_NEW_IOSTREAMS);
557   PRINT_MACRO(__STL_IMPORT_VENDOR_CSTD);
558   PRINT_MACRO(__STL_LIMITED_DEFAULT_TEMPLATES);
559   PRINT_MACRO(__STL_LINK_TIME_INSTANTIATION);
560   PRINT_MACRO(__STL_LONG_LONG);
561   PRINT_MACRO(__STL_LOOP_INLINE_PROBLEMS);
562   PRINT_MACRO(__STL_MEMBER_POINTER_PARAM_BUG);
563   PRINT_MACRO(__STL_NEED_EXPLICIT);
564   PRINT_MACRO(__STL_NEED_MUTABLE);
565   PRINT_MACRO(__STL_NEED_TYPENAME);
566   PRINT_MACRO(__STL_NESTED_TYPE_PARAM_BUG);
567   PRINT_MACRO(__STL_NO_BAD_ALLOC);
568   PRINT_MACRO(__STL_NO_BOOL);
569   PRINT_MACRO(__STL_NO_CLASS_PARTIAL_SPECIALIZATION);
570   PRINT_MACRO(__STL_NO_CSTD_FUNCTION_IMPORTS);
571   PRINT_MACRO(__STL_NO_DEFAULT_NON_TYPE_PARAM);
572   PRINT_MACRO(__STL_NO_EXCEPTION_HEADER);
573   PRINT_MACRO(__STL_NO_EXCEPTION_SPEC);
574   PRINT_MACRO(__STL_NO_EXCEPTIONS);
575   PRINT_MACRO(__STL_NO_EXPLICIT_FUNCTION_TMPL_ARGS);
576   PRINT_MACRO(__STL_NO_FRIEND_TEMPLATES);
577   PRINT_MACRO(__STL_NO_FUNCTION_TMPL_PARTIAL_ORDER);
578   PRINT_MACRO(__STL_NO_IOSTREAMS);
579   PRINT_MACRO(__STL_NO_LONG_DOUBLE);
580   PRINT_MACRO(__STL_NO_MEMBER_TEMPLATE_CLASSES);
581   PRINT_MACRO(__STL_NO_MEMBER_TEMPLATE_KEYWORD);
582   PRINT_MACRO(__STL_NO_MEMBER_TEMPLATES);
583   PRINT_MACRO(__STL_NO_METHOD_SPECIALIZATION);
584   PRINT_MACRO(__STL_NO_NAMESPACES);
585   PRINT_MACRO(__STL_NO_NEW_IOSTREAMS);
586   PRINT_MACRO(__STL_NO_NEW_NEW_HEADER);
587   PRINT_MACRO(__STL_NO_NEW_STYLE_CASTS);
588   PRINT_MACRO(__STL_NO_PARTIAL_SPECIALIZATION_SYNTAX);
589   PRINT_MACRO(__STL_NO_QUALIFIED_FRIENDS);
590   PRINT_MACRO(__STL_NO_RELOPS_NAMESPACE);
591   PRINT_MACRO(__STL_NO_SGI_IOSTREAMS);
592   PRINT_MACRO(__STL_NO_STATIC_TEMPLATE_DATA);
593   PRINT_MACRO(__STL_NO_TEMPLATE_CONVERSIONS);
594   PRINT_MACRO(__STL_NO_WCHAR_T);
595   PRINT_MACRO(__STL_NON_TYPE_TMPL_PARAM_BUG);
596   PRINT_MACRO(__STL_NONTEMPL_BASE_MATCH_BUG);
597   PRINT_MACRO(__STL_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS);
598   PRINT_MACRO(__STL_RAND48);
599   PRINT_MACRO(__STL_STATIC_ARRAY_BUG);
600   PRINT_MACRO(__STL_STATIC_CONST_INIT_BUG);
601   PRINT_MACRO(__STL_STATIC_CONST_INIT_BUG);
602   PRINT_MACRO(__STL_THROW_RETURN_BUG);
603   PRINT_MACRO(__STL_TRIVIAL_CONSTRUCTOR_BUG);
604   PRINT_MACRO(__STL_TRIVIAL_DESTRUCTOR_BUG);
605   PRINT_MACRO(__STL_UNINITIALIZABLE_PRIVATE);
606   PRINT_MACRO(__STL_USE_ABBREVS);
607   PRINT_MACRO(__STL_USE_DEFALLOC);
608   PRINT_MACRO(__STL_USE_MALLOC);
609   PRINT_MACRO(__STL_USE_NEW_C_HEADERS);
610   PRINT_MACRO(__STL_USE_NEW_IOSTREAMS);
611   PRINT_MACRO(__STL_USE_NEWALLOC);
612   PRINT_MACRO(__STL_USE_OWN_NAMESPACE);
613   PRINT_MACRO(__STL_USE_SGI_ALLOCATORS);
614   PRINT_MACRO(__STL_WCHAR_T_IS_USHORT);
615   PRINT_MACRO(__STL_WEAK_ATTRIBUTE);
616   PRINT_MACRO(__STL_YVALS_H);
617   PRINT_MACRO(_NOTHREADS);
618   PRINT_MACRO(_PTHREADS);
619#if defined(__SGI_STL_PORT) && (__SGI_STL_PORT > 0x0400)
620   PRINT_MACRO(_STLP_AUTOMATIC_TYPE_TRAITS);
621   PRINT_MACRO(_STLP_BASE_MATCH_BUG);
622   PRINT_MACRO(_STLP_BASE_TYPEDEF_BUG);
623   PRINT_MACRO(_STLP_BASE_TYPEDEF_OUTSIDE_BUG);
624   PRINT_MACRO(_STLP_BROKEN_USING_DIRECTIVE);
625   PRINT_MACRO(_STLP_CONST_CONSTRUCTOR_BUG);
626   PRINT_MACRO(_STLP_DEBUG);
627   PRINT_MACRO(_STLP_DEBUG_ALLOC);
628   PRINT_MACRO(_STLP_DEFAULT_CONSTRUCTOR_BUG);
629   PRINT_MACRO(_STLP_DEFAULT_TYPE_PARAM);
630   PRINT_MACRO(_STLP_DONT_REDEFINE_STD);
631   PRINT_MACRO(_STLP_DONT_USE_BOOL_TYPEDEF);
632   PRINT_MACRO(_STLP_HAS_NO_EXCEPTIONS);
633   PRINT_MACRO(_STLP_HAS_NO_NAMESPACES);
634   PRINT_MACRO(_STLP_HAS_NO_NEW_C_HEADERS);
635   PRINT_MACRO(_STLP_HAS_NO_NEW_IOSTREAMS);
636   PRINT_MACRO(_STLP_IMPORT_VENDOR_CSTD);
637   PRINT_MACRO(_STLP_LIMITED_DEFAULT_TEMPLATES);
638   PRINT_MACRO(_STLP_LINK_TIME_INSTANTIATION);
639   PRINT_MACRO(_STLP_LONG_LONG);
640   PRINT_MACRO(_STLP_LOOP_INLINE_PROBLEMS);
641   PRINT_MACRO(_STLP_MEMBER_POINTER_PARAM_BUG);
642   PRINT_MACRO(_STLP_NEED_EXPLICIT);
643   PRINT_MACRO(_STLP_NEED_MUTABLE);
644   PRINT_MACRO(_STLP_NEED_TYPENAME);
645   PRINT_MACRO(_STLP_NESTED_TYPE_PARAM_BUG);
646   PRINT_MACRO(_STLP_NO_ARROW_OPERATOR);
647   PRINT_MACRO(_STLP_NO_BAD_ALLOC);
648   PRINT_MACRO(_STLP_NO_BOOL);
649   PRINT_MACRO(_STLP_NO_CLASS_PARTIAL_SPECIALIZATION);
650   PRINT_MACRO(_STLP_NO_CSTD_FUNCTION_IMPORTS);
651   PRINT_MACRO(_STLP_NO_DEFAULT_NON_TYPE_PARAM);
652   PRINT_MACRO(_STLP_NO_EXCEPTION_HEADER);
653   PRINT_MACRO(_STLP_NO_EXCEPTION_SPEC);
654   PRINT_MACRO(_STLP_NO_EXCEPTIONS);
655   PRINT_MACRO(_STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS);
656   PRINT_MACRO(_STLP_NO_FRIEND_TEMPLATES);
657   PRINT_MACRO(_STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER);
658   PRINT_MACRO(_STLP_NO_IOSTREAMS);
659   PRINT_MACRO(_STLP_NO_LONG_DOUBLE);
660   PRINT_MACRO(_STLP_NO_MEMBER_TEMPLATE_CLASSES);
661   PRINT_MACRO(_STLP_NO_MEMBER_TEMPLATE_KEYWORD);
662   PRINT_MACRO(_STLP_NO_MEMBER_TEMPLATES);
663   PRINT_MACRO(_STLP_NO_METHOD_SPECIALIZATION);
664   PRINT_MACRO(_STLP_NO_NAMESPACES);
665   PRINT_MACRO(_STLP_NO_NEW_IOSTREAMS);
666   PRINT_MACRO(_STLP_NO_NEW_NEW_HEADER);
667   PRINT_MACRO(_STLP_NO_NEW_STYLE_CASTS);
668   PRINT_MACRO(_STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX);
669   PRINT_MACRO(_STLP_NO_QUALIFIED_FRIENDS);
670   PRINT_MACRO(_STLP_NO_RELOPS_NAMESPACE);
671   PRINT_MACRO(_STLP_NO_SGI_IOSTREAMS);
672   PRINT_MACRO(_STLP_NO_STATIC_TEMPLATE_DATA);
673   PRINT_MACRO(_STLP_NO_TEMPLATE_CONVERSIONS);
674   PRINT_MACRO(_STLP_NO_WCHAR_T);
675   PRINT_MACRO(_STLP_NON_TYPE_TMPL_PARAM_BUG);
676   PRINT_MACRO(_STLP_NONTEMPL_BASE_MATCH_BUG);
677   PRINT_MACRO(_STLP_OWN_IOSTREAMS);
678   PRINT_MACRO(_STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS);
679   PRINT_MACRO(_STLP_RAND48);
680   PRINT_MACRO(_STLP_STATIC_ARRAY_BUG);
681   PRINT_MACRO(_STLP_STATIC_CONST_INIT_BUG);
682   PRINT_MACRO(_STLP_STATIC_CONST_INIT_BUG);
683   PRINT_MACRO(_STLP_THROW_RETURN_BUG);
684   PRINT_MACRO(_STLP_TRIVIAL_CONSTRUCTOR_BUG);
685   PRINT_MACRO(_STLP_TRIVIAL_DESTRUCTOR_BUG);
686   PRINT_MACRO(_STLP_UNINITIALIZABLE_PRIVATE);
687   PRINT_MACRO(_STLP_USE_ABBREVS);
688   PRINT_MACRO(_STLP_USE_DEFALLOC);
689   PRINT_MACRO(_STLP_USE_MALLOC);
690   PRINT_MACRO(_STLP_USE_NEW_C_HEADERS);
691   PRINT_MACRO(_STLP_USE_NEWALLOC);
692   PRINT_MACRO(_STLP_USE_OWN_NAMESPACE);
693   PRINT_MACRO(_STLP_USE_SGI_ALLOCATORS);
694   PRINT_MACRO(_STLP_WCHAR_T_IS_USHORT);
695   PRINT_MACRO(_STLP_WEAK_ATTRIBUTE);
696   PRINT_MACRO(_STLP_YVALS_H);
697#endif
698   PRINT_MACRO(__GLIBCPP__);
699   PRINT_MACRO(_GLIBCPP_USE_WCHAR_T);
700   PRINT_MACRO(_GLIBCPP_VERSION);
701   PRINT_MACRO(__GLIBCXX__);
702   PRINT_MACRO(_GLIBCXX_USE_WCHAR_T);
703   PRINT_MACRO(_GLIBCXX_VERSION);
704   PRINT_MACRO(_GLIBCXX_USE_LONG_LONG);
705   PRINT_MACRO(_GLIBCXX_USE_NLS);
706   PRINT_MACRO(_GLIBCXX_USE_C99_MATH);
707   PRINT_MACRO(_GLIBCXX_USE_C99);
708   PRINT_MACRO(_GLIBCXX_CONCEPT_CHECKS);
709   PRINT_MACRO(_GLIBCXX_USE_LFS);
710   PRINT_MACRO(_GLIBCXX_SYMVER);
711   PRINT_MACRO(_GLIBCXX_MEM_LIMITS);
712   PRINT_MACRO(_GLIBCXX_HOSTED);
713   PRINT_MACRO(_GLIBCXX_SJLJ_EXCEPTIONS);
714
715   // Modena C++ standard library
716   PRINT_MACRO(MSIPL_ANSI_HEADER);
717   PRINT_MACRO(MSIPL_BOOL_BUILTIN);
718   PRINT_MACRO(MSIPL_DEF_EXPLICIT);
719   PRINT_MACRO(MSIPL_DEF_TEMPARG);
720   PRINT_MACRO(MSIPL_EXPINST_ALLOWED);
721   PRINT_MACRO(MSIPL_EXPLICIT_FUNC_TEMPLATE_ARG);
722   PRINT_MACRO(MISPL_EXPLICIT_TEMPLATE_ARGUMENT);
723   PRINT_MACRO(MSIPL_FUNC_TEMPLATE_DEFARG);
724   PRINT_MACRO(MSIPL_MEMBER_TEMPLATE);
725   PRINT_MACRO(MSIPL_MULTITHREAD);
726   PRINT_MACRO(MSIPL_NON_TYPE_TEMPARG);
727   PRINT_MACRO(MSIPL_PARTIAL_TEMPL);
728   PRINT_MACRO(MSIPL_STATIC_CONST_INIT);
729   PRINT_MACRO(MSIPL_TEMPL_NEWSPEC);
730   PRINT_MACRO(MSIPL_TYPENAME);
731   PRINT_MACRO(MSIPL_USING_NAMESPACE);
732   PRINT_MACRO(MSIPL_WCHART);
733}
734
735void print_platform_macros()
736{
737   std::cout << "Detected Platform: " << BOOST_PLATFORM << std::endl;
738   // signedness:
739   PRINT_SIGN(char);
740   PRINT_SIGN(wchar_t);
741   // byte ordering:
742   PRINT_ORDER(short);
743   PRINT_ORDER(int);
744   PRINT_ORDER(long);
745   // sizes:
746   PRINT_EXPRESSION(sizeof(wchar_t));
747   PRINT_EXPRESSION(sizeof(short));
748   PRINT_EXPRESSION(sizeof(int));
749   PRINT_EXPRESSION(sizeof(long));
750   PRINT_EXPRESSION(sizeof(size_t));
751   PRINT_EXPRESSION(sizeof(ptrdiff_t));
752   PRINT_EXPRESSION(sizeof(void*));
753   PRINT_EXPRESSION(sizeof(void(*)(void)));
754   PRINT_EXPRESSION(sizeof(float));
755   PRINT_EXPRESSION(sizeof(double));
756   PRINT_EXPRESSION(sizeof(long double));
757   // limits:
758   PRINT_MACRO(CHAR_BIT);
759   PRINT_MACRO(CHAR_MAX);
760   PRINT_MACRO(WCHAR_MAX);
761   PRINT_MACRO(SHRT_MAX);
762   PRINT_MACRO(INT_MAX);
763   PRINT_MACRO(LONG_MAX);
764   PRINT_MACRO(LLONG_MAX);
765   PRINT_MACRO(LONG_LONG_MAX);
766   PRINT_MACRO(LONGLONG_MAX);
767   PRINT_MACRO(ULLONG_MAX); // <boost/cstdint.hpp> uses these, so we need to know them
768   PRINT_MACRO(ULONG_LONG_MAX);
769   PRINT_MACRO(ULONGLONG_MAX);
770   // general C99:
771   PRINT_MACRO(__STDC_IEC_559__);
772   PRINT_MACRO(__STDC_IEC_559_COMPLEX__);
773   PRINT_MACRO(__STDC_ISO_10646__);
774   // GNU:
775   PRINT_MACRO(__GLIBC__);
776   PRINT_MACRO(__GLIBC_MINOR__);
777   PRINT_MACRO(__GNU_LIBRARY__);
778   PRINT_MACRO(_BSD_SOURCE);
779   PRINT_MACRO(_GNU_SOURCE);
780   PRINT_MACRO(_ISOC99_SOURCE);
781   PRINT_MACRO(_ISOC9X_SOURCE);
782   PRINT_MACRO(_LARGEFILE_SOURCE);
783   PRINT_MACRO(_LARGEFILE64_SOURCE);
784   PRINT_MACRO(_SVID_SOURCE);
785   PRINT_MACRO(_THREAD_SAFE);
786   PRINT_MACRO(_XOPEN_SOURCE_EXTENDED);
787   PRINT_MACRO(XPG);
788   // POSIX:
789   PRINT_MACRO(_POSIX_ADVISORY_INFO);
790   PRINT_MACRO(_POSIX_ASYNCHRONOUS_IO);
791   PRINT_MACRO(_POSIX_BARRIERS);
792   PRINT_MACRO(_POSIX_C_SOURCE);
793   PRINT_MACRO(_POSIX_CHOWN_RESTRICTED);
794   PRINT_MACRO(_POSIX_CLOCK_SELECTION);
795   PRINT_MACRO(_POSIX_CPUTIME);
796   PRINT_MACRO(_POSIX_FSYNC);
797   PRINT_MACRO(_POSIX_JOB_CONTROL);
798   PRINT_MACRO(_POSIX_MAPPED_FILES);
799   PRINT_MACRO(_POSIX_MEMLOCK);
800   PRINT_MACRO(_POSIX_MEMLOCK_RANGE);
801   PRINT_MACRO(_POSIX_MEMORY_PROTECTION);
802   PRINT_MACRO(_POSIX_MESSAGE_PASSING);
803   PRINT_MACRO(_POSIX_MONOTONIC_CLOCK);
804   PRINT_MACRO(_POSIX_NO_TRUNC);
805   PRINT_MACRO(_POSIX_PRIORITIZED_IO);
806   PRINT_MACRO(_POSIX_PRIORITY_SCHEDULING);
807   PRINT_MACRO(_POSIX_RAW_SOCKETS);
808   PRINT_MACRO(_POSIX_READER_WRITER_LOCKS);
809   PRINT_MACRO(_POSIX_REALTIME_SIGNALS);
810   PRINT_MACRO(_POSIX_REGEXP);
811   PRINT_MACRO(_POSIX_SAVED_IDS);
812   PRINT_MACRO(_POSIX_SEMAPHORES);
813   PRINT_MACRO(_POSIX_SHARED_MEMORY_OBJECTS);
814   PRINT_MACRO(_POSIX_SHELL);
815   PRINT_MACRO(_POSIX_SOURCE);
816   PRINT_MACRO(_POSIX_SPAWN);
817   PRINT_MACRO(_POSIX_SPIN_LOCKS);
818   PRINT_MACRO(_POSIX_SPORADIC_SERVER);
819   PRINT_MACRO(_POSIX_SYNCHRONIZED_IO);
820   PRINT_MACRO(_POSIX_THREAD_ATTR_STACKADDR);
821   PRINT_MACRO(_POSIX_THREAD_ATTR_STACKSIZE);
822   PRINT_MACRO(_POSIX_THREAD_CPUTIME);
823   PRINT_MACRO(_POSIX_THREAD_PRIO_INHERIT);
824   PRINT_MACRO(_POSIX_THREAD_PRIO_PROTECT);
825   PRINT_MACRO(_POSIX_THREAD_PRIORITY_SCHEDULING);
826   PRINT_MACRO(_POSIX_THREAD_PROCESS_SHARED);
827   PRINT_MACRO(_POSIX_THREAD_SAFE_FUNCTIONS);
828   PRINT_MACRO(_POSIX_THREAD_SPORADIC_SERVER);
829   PRINT_MACRO(_POSIX_THREADS);
830   PRINT_MACRO(_POSIX_TIMEOUTS);
831   PRINT_MACRO(_POSIX_TIMERS);
832   PRINT_MACRO(_POSIX_TRACE);
833   PRINT_MACRO(_POSIX_TRACE_EVENT_FILTER);
834   PRINT_MACRO(_POSIX_TRACE_INHERIT);
835   PRINT_MACRO(_POSIX_TRACE_LOG);
836   PRINT_MACRO(_POSIX_TYPED_MEMORY_OBJECTS);
837   PRINT_MACRO(_POSIX_VDISABLE);
838   PRINT_MACRO(_POSIX_VERSION);
839   PRINT_MACRO(_POSIX2_C_BIND);
840   PRINT_MACRO(_POSIX2_C_DEV);
841   PRINT_MACRO(_POSIX2_CHAR_TERM);
842   PRINT_MACRO(_POSIX2_FORT_DEV);
843   PRINT_MACRO(_POSIX2_FORT_RUN);
844   PRINT_MACRO(_POSIX2_LOCALEDEF);
845   PRINT_MACRO(_POSIX2_PBS);
846   PRINT_MACRO(_POSIX2_PBS_ACCOUNTING);
847   PRINT_MACRO(_POSIX2_PBS_CHECKPOINT);
848   PRINT_MACRO(_POSIX2_PBS_LOCATE);
849   PRINT_MACRO(_POSIX2_PBS_MESSAGE);
850   PRINT_MACRO(_POSIX2_PBS_TRACK);
851   PRINT_MACRO(_POSIX2_SW_DEV);
852   PRINT_MACRO(_POSIX2_UPE);
853   PRINT_MACRO(_POSIX2_VERSION);
854   PRINT_MACRO(_V6_ILP32_OFF32);
855   PRINT_MACRO(_V6_ILP32_OFFBIG);
856   PRINT_MACRO(_V6_LP64_OFF64);
857   PRINT_MACRO(_V6_LPBIG_OFFBIG);
858   PRINT_MACRO(_XBS5_ILP32_OFF32);
859   PRINT_MACRO(_XBS5_ILP32_OFFBIG);
860   PRINT_MACRO(_XBS5_LP64_OFF64);
861   PRINT_MACRO(_XBS5_LPBIG_OFFBIG);
862   PRINT_MACRO(_XOPEN_CRYPT);
863   PRINT_MACRO(_XOPEN_ENH_I18N);
864   PRINT_MACRO(_XOPEN_LEGACY);
865   PRINT_MACRO(_XOPEN_REALTIME);
866   PRINT_MACRO(_XOPEN_REALTIME_THREADS);
867   PRINT_MACRO(_XOPEN_SHM);
868   PRINT_MACRO(_XOPEN_SOURCE);
869   PRINT_MACRO(_XOPEN_STREAMS);
870   PRINT_MACRO(_XOPEN_UNIX);
871   PRINT_MACRO(_XOPEN_VERSION);
872   // Misc:
873   PRINT_MACRO(__USE_BSD);
874   PRINT_MACRO(_FILE_OFFSET_BITS);
875}
876
877void print_boost_macros()
878{
879   std::cout << "Boost version " << BOOST_STRINGIZE(BOOST_VERSION) << std::endl;
880   // config setup macros first:
881   PRINT_MACRO(BOOST_USER_CONFIG);
882   PRINT_MACRO(BOOST_COMPILER_CONFIG);
883   PRINT_MACRO(BOOST_STDLIB_CONFIG);
884   PRINT_MACRO(BOOST_PLATFORM_CONFIG);
885   PRINT_MACRO(BOOST_NO_CONFIG);
886   PRINT_MACRO(BOOST_NO_USER_CONFIG);
887   PRINT_MACRO(BOOST_NO_COMPILER_CONFIG);
888   PRINT_MACRO(BOOST_NO_STDLIB_CONFIG);
889   PRINT_MACRO(BOOST_NO_PLATFORM_CONFIG);
890   // then defect and feature macros:
891   PRINT_MACRO(BOOST_DISABLE_THREADS);
892   PRINT_MACRO(BOOST_DISABLE_WIN32);
893   PRINT_MACRO(BOOST_HAS_THREADS);
894
895   // BEGIN GENERATED BLOCK DO NOT EDIT THIS!!!!!!
896   PRINT_MACRO(BOOST_BCB_PARTIAL_SPECIALIZATION_BUG);
897   PRINT_MACRO(BOOST_DEDUCED_TYPENAME);
898   PRINT_MACRO(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL);
899   PRINT_MACRO(BOOST_HAS_BETHREADS);
900   PRINT_MACRO(BOOST_HAS_CLOCK_GETTIME);
901   PRINT_MACRO(BOOST_HAS_DIRENT_H);
902   PRINT_MACRO(BOOST_HAS_EXPM1);
903   PRINT_MACRO(BOOST_HAS_FTIME);
904   PRINT_MACRO(BOOST_HAS_GETTIMEOFDAY);
905   PRINT_MACRO(BOOST_HAS_HASH);
906   PRINT_MACRO(BOOST_HAS_LOG1P);
907   PRINT_MACRO(BOOST_HAS_LONG_LONG);
908   PRINT_MACRO(BOOST_HAS_MACRO_USE_FACET);
909   PRINT_MACRO(BOOST_HAS_MS_INT64);
910   PRINT_MACRO(BOOST_HAS_NANOSLEEP);
911   PRINT_MACRO(BOOST_HAS_NL_TYPES_H);
912   PRINT_MACRO(BOOST_HAS_NRVO);
913   PRINT_MACRO(BOOST_HAS_PARTIAL_STD_ALLOCATOR);
914   PRINT_MACRO(BOOST_HAS_PTHREADS);
915   PRINT_MACRO(BOOST_HAS_PTHREAD_DELAY_NP);
916   PRINT_MACRO(BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE);
917   PRINT_MACRO(BOOST_HAS_PTHREAD_YIELD);
918   PRINT_MACRO(BOOST_HAS_SCHED_YIELD);
919   PRINT_MACRO(BOOST_HAS_SGI_TYPE_TRAITS);
920   PRINT_MACRO(BOOST_HAS_SIGACTION);
921   PRINT_MACRO(BOOST_HAS_SLIST);
922   PRINT_MACRO(BOOST_HAS_STDINT_H);
923   PRINT_MACRO(BOOST_HAS_STLP_USE_FACET);
924   PRINT_MACRO(BOOST_HAS_TR1_ARRAY);
925   PRINT_MACRO(BOOST_HAS_TR1_BIND);
926   PRINT_MACRO(BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG);
927   PRINT_MACRO(BOOST_HAS_TR1_COMPLEX_OVERLOADS);
928   PRINT_MACRO(BOOST_HAS_TR1_FUNCTION);
929   PRINT_MACRO(BOOST_HAS_TR1_HASH);
930   PRINT_MACRO(BOOST_HAS_TR1_MEM_FN);
931   PRINT_MACRO(BOOST_HAS_TR1_RANDOM);
932   PRINT_MACRO(BOOST_HAS_TR1_REFERENCE_WRAPPER);
933   PRINT_MACRO(BOOST_HAS_TR1_REGEX);
934   PRINT_MACRO(BOOST_HAS_TR1_RESULT_OF);
935   PRINT_MACRO(BOOST_HAS_TR1_SHARED_PTR);
936   PRINT_MACRO(BOOST_HAS_TR1_TUPLE);
937   PRINT_MACRO(BOOST_HAS_TR1_TYPE_TRAITS);
938   PRINT_MACRO(BOOST_HAS_TR1_UNORDERED_MAP);
939   PRINT_MACRO(BOOST_HAS_TR1_UNORDERED_SET);
940   PRINT_MACRO(BOOST_HAS_TR1_UTILITY);
941   PRINT_MACRO(BOOST_HAS_TWO_ARG_USE_FACET);
942   PRINT_MACRO(BOOST_HAS_UNISTD_H);
943   PRINT_MACRO(BOOST_HAS_WINTHREADS);
944   PRINT_MACRO(BOOST_MSVC6_MEMBER_TEMPLATES);
945   PRINT_MACRO(BOOST_MSVC_STD_ITERATOR);
946   PRINT_MACRO(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP);
947   PRINT_MACRO(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS);
948   PRINT_MACRO(BOOST_NO_AUTO_PTR);
949   PRINT_MACRO(BOOST_NO_CTYPE_FUNCTIONS);
950   PRINT_MACRO(BOOST_NO_CV_SPECIALIZATIONS);
951   PRINT_MACRO(BOOST_NO_CV_VOID_SPECIALIZATIONS);
952   PRINT_MACRO(BOOST_NO_CWCHAR);
953   PRINT_MACRO(BOOST_NO_CWCTYPE);
954   PRINT_MACRO(BOOST_NO_DEPENDENT_NESTED_DERIVATIONS);
955   PRINT_MACRO(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS);
956   PRINT_MACRO(BOOST_NO_EXCEPTIONS);
957   PRINT_MACRO(BOOST_NO_EXCEPTION_STD_NAMESPACE);
958   PRINT_MACRO(BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS);
959   PRINT_MACRO(BOOST_NO_FUNCTION_TEMPLATE_ORDERING);
960   PRINT_MACRO(BOOST_NO_INCLASS_MEMBER_INITIALIZATION);
961   PRINT_MACRO(BOOST_NO_INTEGRAL_INT64_T);
962   PRINT_MACRO(BOOST_NO_INTRINSIC_WCHAR_T);
963   PRINT_MACRO(BOOST_NO_IS_ABSTRACT);
964   PRINT_MACRO(BOOST_NO_LIMITS);
965   PRINT_MACRO(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS);
966   PRINT_MACRO(BOOST_NO_LONG_LONG_NUMERIC_LIMITS);
967   PRINT_MACRO(BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS);
968   PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATES);
969   PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATE_FRIENDS);
970   PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATE_KEYWORD);
971   PRINT_MACRO(BOOST_NO_MS_INT64_NUMERIC_LIMITS);
972   PRINT_MACRO(BOOST_NO_OPERATORS_IN_NAMESPACE);
973   PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_CONST);
974   PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS);
975   PRINT_MACRO(BOOST_NO_PRIVATE_IN_AGGREGATE);
976   PRINT_MACRO(BOOST_NO_SFINAE);
977   PRINT_MACRO(BOOST_NO_STDC_NAMESPACE);
978   PRINT_MACRO(BOOST_NO_STD_ALLOCATOR);
979   PRINT_MACRO(BOOST_NO_STD_DISTANCE);
980   PRINT_MACRO(BOOST_NO_STD_ITERATOR);
981   PRINT_MACRO(BOOST_NO_STD_ITERATOR_TRAITS);
982   PRINT_MACRO(BOOST_NO_STD_LOCALE);
983   PRINT_MACRO(BOOST_NO_STD_MESSAGES);
984   PRINT_MACRO(BOOST_NO_STD_MIN_MAX);
985   PRINT_MACRO(BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN);
986   PRINT_MACRO(BOOST_NO_STD_USE_FACET);
987   PRINT_MACRO(BOOST_NO_STD_WSTREAMBUF);
988   PRINT_MACRO(BOOST_NO_STD_WSTRING);
989   PRINT_MACRO(BOOST_NO_STRINGSTREAM);
990   PRINT_MACRO(BOOST_NO_SWPRINTF);
991   PRINT_MACRO(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS);
992   PRINT_MACRO(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION);
993   PRINT_MACRO(BOOST_NO_TEMPLATE_TEMPLATES);
994   PRINT_MACRO(BOOST_NO_UNREACHABLE_RETURN_DETECTION);
995   PRINT_MACRO(BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE);
996   PRINT_MACRO(BOOST_NO_USING_TEMPLATE);
997   PRINT_MACRO(BOOST_NO_VOID_RETURNS);
998
999
1000
1001
1002
1003   // END GENERATED BLOCK
1004
1005   PRINT_MACRO(BOOST_INTEL);
1006   PRINT_MACRO(BOOST_MSVC);
1007   PRINT_MACRO(BOOST_STD_EXTENSION_NAMESPACE);
1008   PRINT_MACRO(BOOST_UNREACHABLE_RETURN(0));
1009}
1010
1011void print_separator()
1012{
1013   std::cout <<
1014"\n\n*********************************************************************\n\n";
1015}
1016
1017int main()
1018{
1019
1020  // boost compiler workaround defines
1021  print_compiler_macros();
1022  print_separator();
1023  print_stdlib_macros();
1024  print_separator();
1025  print_platform_macros();
1026  print_separator();
1027  print_boost_macros();
1028
1029  return 0;
1030}
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
Note: See TracBrowser for help on using the repository browser.