Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_33_1/libs/config/test/config_info.cpp @ 12

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

added boost

File size: 34.0 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(WIN32);
128  PRINT_MACRO(_RTLDLL);
129  PRINT_MACRO(__DEBUG);
130
131// Internal MSVC 7 error workaround (Peter Dimov)
132
133#ifndef _NATIVE_WCHAR_T_DEFINED
134  PRINT_MACRO(_WCHAR_T_DEFINED);
135#endif
136  // MSVC macros:
137  PRINT_MACRO(_CPPRTTI);
138  PRINT_MACRO(_DLL);
139  PRINT_MACRO(_M_ALPHA);
140  PRINT_MACRO(_M_MPPC);
141  PRINT_MACRO(_M_MRX000);
142  PRINT_MACRO(_M_PPC);
143  PRINT_MACRO(_MFC_VER);
144  PRINT_MACRO(_MSC_EXTENSIONS);
145  PRINT_MACRO(_MSC_VER);
146  PRINT_MACRO(_MSC_FULL_VER);
147  PRINT_MACRO(_MT);
148  PRINT_MACRO(_NATIVE_WCHAR_T_DEFINED);
149  // GNUC options:
150  PRINT_MACRO(__GNUC__);
151  PRINT_MACRO(__GNUC_MINOR__);
152  PRINT_MACRO(__STDC_VERSION__);
153  PRINT_MACRO(__GNUG__);
154  PRINT_MACRO(__STRICT_ANSI__);
155  PRINT_MACRO(__VERSION__);
156  PRINT_MACRO(__OPTIMIZE__);
157  PRINT_MACRO(__CHAR_UNSIGNED__);
158  PRINT_MACRO(__REGISTER_PREFIX__);
159  PRINT_MACRO(__USER_LABEL_PREFIX__);
160  PRINT_MACRO(__INTEL__);
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  // misc compilers not covered so far:
270  PRINT_MACRO(__ICC);
271  PRINT_MACRO(__ICL);
272  PRINT_MACRO(__ECC);
273  PRINT_MACRO(__INTEL_COMPILER);
274  PRINT_MACRO(__USLC__);
275  PRINT_MACRO(__DECCXX);
276  PRINT_MACRO(__IBMCPP__);
277  PRINT_MACRO(_REENTRANT);
278  PRINT_MACRO(_PTHREADS);
279  PRINT_MACRO(__STDC_HOSTED__);
280  PRINT_MACRO(__COMO__);
281  PRINT_MACRO(__COMO_VERSION__);
282  PRINT_MACRO(__DM__);
283  PRINT_MACRO(__osf__);
284  PRINT_MACRO(__OSF__);
285}
286
287void print_stdlib_macros()
288{
289   std::cout << BOOST_STDLIB << std::endl;
290   #ifdef _RWSTD_VER
291   // Rogue Wave 2.x config options:
292   PRINT_MACRO(__NO_EDG_EXCEPTION_CLASSES);
293   PRINT_MACRO(_RWSTD_ALLOCATOR);
294   PRINT_MACRO(_RWSTD_BAD_ALLOC_DEFINED);
295   PRINT_MACRO(_RWSTD_BAD_EXCEPTION_DEFINED);
296   PRINT_MACRO(_RWSTD_BOUNDS_CHECKING);
297   PRINT_MACRO(_RWSTD_COMPILE_INSTANTIATE);
298   PRINT_MACRO(_RWSTD_DEFAULT_PRECISION);
299   PRINT_MACRO(_RWSTD_EXCEPTION_DEFINED);
300   PRINT_MACRO(_RWSTD_EXCEPTION_HANDLER_IN_STD);
301   PRINT_MACRO(_RWSTD_EXCEPTION_PREDEFINED);
302   PRINT_MACRO(_RWSTD_FLT_ROUNDS_IS_CONSTANT);
303   PRINT_MACRO(_RWSTD_LOCALIZED_ERRORS);
304   PRINT_MACRO(_RWSTD_MESSAGE);
305   PRINT_MACRO(_RWSTD_MUTEXATTR_DEFAULT);
306   PRINT_MACRO(_RWSTD_NO_ANSI_SPRINTF);
307   PRINT_MACRO(_RWSTD_NO_ARG_MATCH);
308   PRINT_MACRO(_RWSTD_NO_BAD_CAST);
309   PRINT_MACRO(_RWSTD_NO_BASE_CLASS_MATCH);
310   PRINT_MACRO(_RWSTD_NO_BOOL);
311   PRINT_MACRO(_RWSTD_NO_BUILTIN_CTOR);
312   PRINT_MACRO(_RWSTD_NO_CATOPEN_CATGETS);
313   PRINT_MACRO(_RWSTD_NO_CLASS_PARTIAL_SPEC);
314   PRINT_MACRO(_RWSTD_NO_COMPLEX_DEFAULT_TEMPLATES);
315   PRINT_MACRO(_RWSTD_NO_COMPLICATED_EXCEPTIONS);
316   PRINT_MACRO(_RWSTD_NO_COMPLICATED_TYPEDEF);
317   PRINT_MACRO(_RWSTD_NO_CONST_INST);
318   PRINT_MACRO(_RWSTD_NO_CTOR_RETURN);
319   PRINT_MACRO(_RWSTD_NO_DEFAULT_FOR_TPARAM);
320   PRINT_MACRO(_RWSTD_NO_DEFAULT_TEMPLATE_ARGS);
321   PRINT_MACRO(_RWSTD_NO_DESTROY_BUILTIN);
322   PRINT_MACRO(_RWSTD_NO_DESTROY_NONBUILTIN);
323   PRINT_MACRO(_RWSTD_NO_EMBEDDED_TYPEDEF);
324   PRINT_MACRO(_RWSTD_NO_EX_SPEC);
325   PRINT_MACRO(_RWSTD_NO_EXCEPTIONS);
326   PRINT_MACRO(_RWSTD_NO_EXPLICIT);
327   PRINT_MACRO(_RWSTD_NO_EXPLICIT_ARG);
328   PRINT_MACRO(_RWSTD_NO_EXPLICIT_FUNC_INSTANTIATION);
329   PRINT_MACRO(_RWSTD_NO_EXPLICIT_INSTANTIATION);
330   PRINT_MACRO(_RWSTD_NO_EXTENSION);
331   PRINT_MACRO(_RWSTD_NO_FORWARD_SPECIALIZATIONS);
332   PRINT_MACRO(_RWSTD_NO_FPOS_T);
333   PRINT_MACRO(_RWSTD_NO_FRIEND_TEMPLATES);
334   PRINT_MACRO(_RWSTD_NO_FUNC_PARTIAL_SPEC);
335   PRINT_MACRO(_RWSTD_NO_GETTIMEOFDAY);
336   PRINT_MACRO(_RWSTD_NO_GLOBAL_TZ);
337   PRINT_MACRO(_RWSTD_NO_INHERITED_TYPEDEFS);
338   PRINT_MACRO(_RWSTD_NO_INIT_CONST_TEMPLATE_REF_ARG);
339   PRINT_MACRO(_RWSTD_NO_INT_TYPEDEF);
340   PRINT_MACRO(_RWSTD_NO_LDIV);
341   PRINT_MACRO(_RWSTD_NO_LEADING_UNDERSCORE);
342   PRINT_MACRO(_RWSTD_NO_LOCALE);
343   PRINT_MACRO(_RWSTD_NO_LONG_NAME);
344   PRINT_MACRO(_RWSTD_NO_LONGDOUBLE);
345   PRINT_MACRO(_RWSTD_NO_MBSTATE_T);
346   PRINT_MACRO(_RWSTD_NO_MEM_CLASS_TEMPLATES);
347   PRINT_MACRO(_RWSTD_NO_MEMBER_TEMPLATES);
348   PRINT_MACRO(_RWSTD_NO_MEMBER_TYPE_TPARAM);
349   PRINT_MACRO(_RWSTD_NO_MEMBER_WO_DEF_CTOR);
350   PRINT_MACRO(_RWSTD_NO_MEMMOVE);
351   PRINT_MACRO(_RWSTD_NO_MULTI_DIM_ARRAY);
352   PRINT_MACRO(_RWSTD_NO_MUTABLE);
353   PRINT_MACRO(_RWSTD_NO_NAME_INJECTION);
354   PRINT_MACRO(_RWSTD_NO_NAMESPACE);
355   PRINT_MACRO(_RWSTD_NO_NESTING_TEMPLATES);
356   PRINT_MACRO(_RWSTD_NO_NEW_BRACKETS);
357   PRINT_MACRO(_RWSTD_NO_NEW_DECL);
358   PRINT_MACRO(_RWSTD_NO_NEW_HEADER);
359   PRINT_MACRO(_RWSTD_NO_NEW_TEMPLATE_SYNTAX);
360   PRINT_MACRO(_RWSTD_NO_NONCLASS_ARROW_RETURN);
361   PRINT_MACRO(_RWSTD_NO_NONTYPE_ARGS);
362   PRINT_MACRO(_RWSTD_NO_ONLY_NEEDED_INSTANTIATION);
363   PRINT_MACRO(_RWSTD_NO_OVERLOAD_C_POW);
364   PRINT_MACRO(_RWSTD_NO_OVERLOAD_OF_TEMPLATE_FUNCTION);
365   PRINT_MACRO(_RWSTD_NO_OVERLOAD_WCHAR);
366   PRINT_MACRO(_RWSTD_NO_PART_SPEC_OVERLOAD);
367   PRINT_MACRO(_RWSTD_NO_RET_TEMPLATE);
368   PRINT_MACRO(_RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES);
369   PRINT_MACRO(_RWSTD_NO_STATIC_CAST);
370   PRINT_MACRO(_RWSTD_NO_STATIC_DEF);
371   PRINT_MACRO(_RWSTD_NO_STATIC_DEF2);
372   PRINT_MACRO(_RWSTD_NO_STATIC_DEF3);
373   PRINT_MACRO(_RWSTD_NO_STATIC_MEM_DEF);
374   PRINT_MACRO(_RWSTD_NO_STI_SIMPLE);
375   PRINT_MACRO(_RWSTD_NO_STI_TEMPLATE);
376   PRINT_MACRO(_RWSTD_NO_STREAM_LONG_DOUBLE);
377   PRINT_MACRO(_RWSTD_NO_STRFTIME_CAPC);
378   PRINT_MACRO(_RWSTD_NO_STRICT_TEMPLATE_INSTANTIATE);
379   PRINT_MACRO(_RWSTD_NO_SWPRINTF);
380   PRINT_MACRO(_RWSTD_NO_TEMPLATE_ON_RETURN_TYPE);
381   PRINT_MACRO(_RWSTD_NO_TEMPLATE_TEMPLATE);
382   PRINT_MACRO(_RWSTD_NO_THREADS);
383   PRINT_MACRO(_RWSTD_NO_THROW_SPEC_ON_NEW);
384   PRINT_MACRO(_RWSTD_NO_THROW_WITH_SHARED);
385   PRINT_MACRO(_RWSTD_NO_TYPEDEF_INST);
386   PRINT_MACRO(_RWSTD_NO_TYPEDEF_OVERLOAD);
387   PRINT_MACRO(_RWSTD_NO_TYPENAME);
388   PRINT_MACRO(_RWSTD_NO_UNDEFINED_FRIEND);
389   PRINT_MACRO(_RWSTD_NO_UNINITIALIZED_STATIC_DEF);
390   PRINT_MACRO(_RWSTD_NO_WCHAR_H);
391   PRINT_MACRO(_RWSTD_NO_WCTYPE_H);
392   PRINT_MACRO(_RWSTD_NO_WIDE_CHAR);
393   PRINT_MACRO(_RWSTD_NO_WINT_TYPE);
394   PRINT_MACRO(_RWSTD_NO_WSTR);
395   PRINT_MACRO(_RWSTD_NOT_ALL_WSTR_CFUNCTIONS);
396   PRINT_MACRO(_RWSTD_POSIX_D10_THREADS);
397   PRINT_MACRO(_RWSTD_POSIX_THREADS);
398   PRINT_MACRO(_RWSTD_REQUIRES_IEEEFP);
399   PRINT_MACRO(_RWSTD_SOLARIS_THREADS);
400   PRINT_MACRO(_RWSTD_STRUCT_TM_TZ);
401   PRINT_MACRO(_RWSTD_WIDE_STRING_NULL_PROBLEM);
402   #elif defined(__STD_RWCOMPILER_H__)
403   // Rogue Wave 1.x std lib:
404   PRINT_MACRO(__NO_EDG_EXCEPTION_CLASSES);
405   PRINT_MACRO(RWSTD_ALLOCATOR);
406   PRINT_MACRO(RWSTD_BAD_ALLOC_DEFINED);
407   PRINT_MACRO(RWSTD_BAD_EXCEPTION_DEFINED);
408   PRINT_MACRO(RWSTD_BOUNDS_CHECKING);
409   PRINT_MACRO(RWSTD_COMPILE_INSTANTIATE);
410   PRINT_MACRO(RWSTD_DEFAULT_PRECISION);
411   PRINT_MACRO(RWSTD_EXCEPTION_DEFINED);
412   PRINT_MACRO(RWSTD_EXCEPTION_HANDLER_IN_STD);
413   PRINT_MACRO(RWSTD_EXCEPTION_PREDEFINED);
414   PRINT_MACRO(RWSTD_FLT_ROUNDS_IS_CONSTANT);
415   PRINT_MACRO(RWSTD_LOCALIZED_ERRORS);
416   PRINT_MACRO(RWSTD_MESSAGE);
417   PRINT_MACRO(RWSTD_MUTEXATTR_DEFAULT);
418   PRINT_MACRO(RWSTD_NO_ANSI_SPRINTF);
419   PRINT_MACRO(RWSTD_NO_ARG_MATCH);
420   PRINT_MACRO(RWSTD_NO_BAD_CAST);
421   PRINT_MACRO(RWSTD_NO_BASE_CLASS_MATCH);
422   PRINT_MACRO(RWSTD_NO_BOOL);
423   PRINT_MACRO(RWSTD_NO_BUILTIN_CTOR);
424   PRINT_MACRO(RWSTD_NO_CATOPEN_CATGETS);
425   PRINT_MACRO(RWSTD_NO_CLASS_PARTIAL_SPEC);
426   PRINT_MACRO(RWSTD_NO_COMPLEX_DEFAULT_TEMPLATES);
427   PRINT_MACRO(RWSTD_NO_COMPLICATED_EXCEPTIONS);
428   PRINT_MACRO(RWSTD_NO_COMPLICATED_TYPEDEF);
429   PRINT_MACRO(RWSTD_NO_CONST_INST);
430   PRINT_MACRO(RWSTD_NO_CTOR_RETURN);
431   PRINT_MACRO(RWSTD_NO_DEFAULT_FOR_TPARAM);
432   PRINT_MACRO(RWSTD_NO_DEFAULT_TEMPLATE_ARGS);
433   PRINT_MACRO(RWSTD_NO_DESTROY_BUILTIN);
434   PRINT_MACRO(RWSTD_NO_DESTROY_NONBUILTIN);
435   PRINT_MACRO(RWSTD_NO_EMBEDDED_TYPEDEF);
436   PRINT_MACRO(RWSTD_NO_EX_SPEC);
437   PRINT_MACRO(RWSTD_NO_EXCEPTIONS);
438   PRINT_MACRO(RWSTD_NO_EXPLICIT);
439   PRINT_MACRO(RWSTD_NO_EXPLICIT_ARG);
440   PRINT_MACRO(RWSTD_NO_EXPLICIT_FUNC_INSTANTIATION);
441   PRINT_MACRO(RWSTD_NO_EXPLICIT_INSTANTIATION);
442   PRINT_MACRO(RWSTD_NO_EXTENSION);
443   PRINT_MACRO(RWSTD_NO_FORWARD_SPECIALIZATIONS);
444   PRINT_MACRO(RWSTD_NO_FPOS_T);
445   PRINT_MACRO(RWSTD_NO_FRIEND_TEMPLATES);
446   PRINT_MACRO(RWSTD_NO_FUNC_PARTIAL_SPEC);
447   PRINT_MACRO(RWSTD_NO_GETTIMEOFDAY);
448   PRINT_MACRO(RWSTD_NO_GLOBAL_TZ);
449   PRINT_MACRO(RWSTD_NO_INHERITED_TYPEDEFS);
450   PRINT_MACRO(RWSTD_NO_INIT_CONST_TEMPLATE_REF_ARG);
451   PRINT_MACRO(RWSTD_NO_INT_TYPEDEF);
452   PRINT_MACRO(RWSTD_NO_LDIV);
453   PRINT_MACRO(RWSTD_NO_LEADING_UNDERSCORE);
454   PRINT_MACRO(RWSTD_NO_LOCALE);
455   PRINT_MACRO(RWSTD_NO_LONG_NAME);
456   PRINT_MACRO(RWSTD_NO_LONGDOUBLE);
457   PRINT_MACRO(RWSTD_NO_MBSTATE_T);
458   PRINT_MACRO(RWSTD_NO_MEM_CLASS_TEMPLATES);
459   PRINT_MACRO(RWSTD_NO_MEMBER_TEMPLATES);
460   PRINT_MACRO(RWSTD_NO_MEMBER_TYPE_TPARAM);
461   PRINT_MACRO(RWSTD_NO_MEMBER_WO_DEF_CTOR);
462   PRINT_MACRO(RWSTD_NO_MEMMOVE);
463   PRINT_MACRO(RWSTD_NO_MULTI_DIM_ARRAY);
464   PRINT_MACRO(RWSTD_NO_MUTABLE);
465   PRINT_MACRO(RWSTD_NO_NAME_INJECTION);
466   PRINT_MACRO(RWSTD_NO_NAMESPACE);
467   PRINT_MACRO(RWSTD_NO_NESTING_TEMPLATES);
468   PRINT_MACRO(RWSTD_NO_NEW_BRACKETS);
469   PRINT_MACRO(RWSTD_NO_NEW_DECL);
470   PRINT_MACRO(RWSTD_NO_NEW_HEADER);
471   PRINT_MACRO(RWSTD_NO_NEW_TEMPLATE_SYNTAX);
472   PRINT_MACRO(RWSTD_NO_NONCLASS_ARROW_RETURN);
473   PRINT_MACRO(RWSTD_NO_NONTYPE_ARGS);
474   PRINT_MACRO(RWSTD_NO_ONLY_NEEDED_INSTANTIATION);
475   PRINT_MACRO(RWSTD_NO_OVERLOAD_C_POW);
476   PRINT_MACRO(RWSTD_NO_OVERLOAD_OF_TEMPLATE_FUNCTION);
477   PRINT_MACRO(RWSTD_NO_OVERLOAD_WCHAR);
478   PRINT_MACRO(RWSTD_NO_PART_SPEC_OVERLOAD);
479   PRINT_MACRO(RWSTD_NO_RET_TEMPLATE);
480   PRINT_MACRO(RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES);
481   PRINT_MACRO(RWSTD_NO_STATIC_CAST);
482   PRINT_MACRO(RWSTD_NO_STATIC_DEF);
483   PRINT_MACRO(RWSTD_NO_STATIC_DEF2);
484   PRINT_MACRO(RWSTD_NO_STATIC_DEF3);
485   PRINT_MACRO(RWSTD_NO_STATIC_MEM_DEF);
486   PRINT_MACRO(RWSTD_NO_STI_SIMPLE);
487   PRINT_MACRO(RWSTD_NO_STI_TEMPLATE);
488   PRINT_MACRO(RWSTD_NO_STREAM_LONG_DOUBLE);
489   PRINT_MACRO(RWSTD_NO_STRFTIME_CAPC);
490   PRINT_MACRO(RWSTD_NO_STRICT_TEMPLATE_INSTANTIATE);
491   PRINT_MACRO(RWSTD_NO_SWPRINTF);
492   PRINT_MACRO(RWSTD_NO_TEMPLATE_ON_RETURN_TYPE);
493   PRINT_MACRO(RWSTD_NO_TEMPLATE_TEMPLATE);
494   PRINT_MACRO(RWSTD_NO_THREADS);
495   PRINT_MACRO(RWSTD_NO_THROW_SPEC_ON_NEW);
496   PRINT_MACRO(RWSTD_NO_THROW_WITH_SHARED);
497   PRINT_MACRO(RWSTD_NO_TYPEDEF_INST);
498   PRINT_MACRO(RWSTD_NO_TYPEDEF_OVERLOAD);
499   PRINT_MACRO(RWSTD_NO_TYPENAME);
500   PRINT_MACRO(RWSTD_NO_UNDEFINED_FRIEND);
501   PRINT_MACRO(RWSTD_NO_UNINITIALIZED_STATIC_DEF);
502   PRINT_MACRO(RWSTD_NO_WCHAR_H);
503   PRINT_MACRO(RWSTD_NO_WCTYPE_H);
504   PRINT_MACRO(RWSTD_NO_WIDE_CHAR);
505   PRINT_MACRO(RWSTD_NO_WINT_TYPE);
506   PRINT_MACRO(RWSTD_NO_WSTR);
507   PRINT_MACRO(RWSTD_NOT_ALL_WSTR_CFUNCTIONS);
508   PRINT_MACRO(RWSTD_POSIX_D10_THREADS);
509   PRINT_MACRO(RWSTD_POSIX_THREADS);
510   PRINT_MACRO(RWSTD_REQUIRES_IEEEFP);
511   PRINT_MACRO(RWSTD_SOLARIS_THREADS);
512   PRINT_MACRO(RWSTD_STRUCT_TM_TZ);
513   PRINT_MACRO(RWSTD_WIDE_STRING_NULL_PROBLEM);
514   #endif
515   // Dinkumware options:
516   PRINT_MACRO(_CPPLIB_VER);
517   PRINT_MACRO(_GLOBAL_USING);
518   PRINT_MACRO(_HAS_EXCEPTIONS);
519   PRINT_MACRO(_HAS_MEMBER_TEMPLATES_REBIND);
520   PRINT_MACRO(_HAS_TEMPLATE_PARTIAL_ORDERING);
521   // STLPort and generic SGI STL options:
522   PRINT_MACRO(__SGI_STL_NO_ARROW_OPERATOR);
523   PRINT_MACRO(__SGI_STL_OWN_IOSTREAMS);
524   PRINT_MACRO(__SGI_STL_PORT);
525   PRINT_MACRO(__STL_AUTOMATIC_TYPE_TRAITS);
526   PRINT_MACRO(__STL_BASE_MATCH_BUG);
527   PRINT_MACRO(__STL_BASE_TYPEDEF_BUG);
528   PRINT_MACRO(__STL_BASE_TYPEDEF_OUTSIDE_BUG);
529   PRINT_MACRO(__STL_BROKEN_USING_DIRECTIVE);
530   PRINT_MACRO(__STL_CONST_CONSTRUCTOR_BUG);
531   PRINT_MACRO(__STL_DEBUG);
532   PRINT_MACRO(__STL_DEBUG_ALLOC);
533   PRINT_MACRO(__STL_DEFAULT_CONSTRUCTOR_BUG);
534   PRINT_MACRO(__STL_DEFAULT_TYPE_PARAM);
535   PRINT_MACRO(__STL_DONT_REDEFINE_STD);
536   PRINT_MACRO(__STL_DONT_USE_BOOL_TYPEDEF);
537   PRINT_MACRO(__STL_HAS_NO_EXCEPTIONS);
538   PRINT_MACRO(__STL_HAS_NO_NAMESPACES);
539   PRINT_MACRO(__STL_HAS_NO_NEW_C_HEADERS);
540   PRINT_MACRO(__STL_HAS_NO_NEW_IOSTREAMS);
541   PRINT_MACRO(__STL_IMPORT_VENDOR_CSTD);
542   PRINT_MACRO(__STL_LIMITED_DEFAULT_TEMPLATES);
543   PRINT_MACRO(__STL_LINK_TIME_INSTANTIATION);
544   PRINT_MACRO(__STL_LONG_LONG);
545   PRINT_MACRO(__STL_LOOP_INLINE_PROBLEMS);
546   PRINT_MACRO(__STL_MEMBER_POINTER_PARAM_BUG);
547   PRINT_MACRO(__STL_NEED_EXPLICIT);
548   PRINT_MACRO(__STL_NEED_MUTABLE);
549   PRINT_MACRO(__STL_NEED_TYPENAME);
550   PRINT_MACRO(__STL_NESTED_TYPE_PARAM_BUG);
551   PRINT_MACRO(__STL_NO_BAD_ALLOC);
552   PRINT_MACRO(__STL_NO_BOOL);
553   PRINT_MACRO(__STL_NO_CLASS_PARTIAL_SPECIALIZATION);
554   PRINT_MACRO(__STL_NO_CSTD_FUNCTION_IMPORTS);
555   PRINT_MACRO(__STL_NO_DEFAULT_NON_TYPE_PARAM);
556   PRINT_MACRO(__STL_NO_EXCEPTION_HEADER);
557   PRINT_MACRO(__STL_NO_EXCEPTION_SPEC);
558   PRINT_MACRO(__STL_NO_EXCEPTIONS);
559   PRINT_MACRO(__STL_NO_EXPLICIT_FUNCTION_TMPL_ARGS);
560   PRINT_MACRO(__STL_NO_FRIEND_TEMPLATES);
561   PRINT_MACRO(__STL_NO_FUNCTION_TMPL_PARTIAL_ORDER);
562   PRINT_MACRO(__STL_NO_IOSTREAMS);
563   PRINT_MACRO(__STL_NO_LONG_DOUBLE);
564   PRINT_MACRO(__STL_NO_MEMBER_TEMPLATE_CLASSES);
565   PRINT_MACRO(__STL_NO_MEMBER_TEMPLATE_KEYWORD);
566   PRINT_MACRO(__STL_NO_MEMBER_TEMPLATES);
567   PRINT_MACRO(__STL_NO_METHOD_SPECIALIZATION);
568   PRINT_MACRO(__STL_NO_NAMESPACES);
569   PRINT_MACRO(__STL_NO_NEW_IOSTREAMS);
570   PRINT_MACRO(__STL_NO_NEW_NEW_HEADER);
571   PRINT_MACRO(__STL_NO_NEW_STYLE_CASTS);
572   PRINT_MACRO(__STL_NO_PARTIAL_SPECIALIZATION_SYNTAX);
573   PRINT_MACRO(__STL_NO_QUALIFIED_FRIENDS);
574   PRINT_MACRO(__STL_NO_RELOPS_NAMESPACE);
575   PRINT_MACRO(__STL_NO_SGI_IOSTREAMS);
576   PRINT_MACRO(__STL_NO_STATIC_TEMPLATE_DATA);
577   PRINT_MACRO(__STL_NO_TEMPLATE_CONVERSIONS);
578   PRINT_MACRO(__STL_NO_WCHAR_T);
579   PRINT_MACRO(__STL_NON_TYPE_TMPL_PARAM_BUG);
580   PRINT_MACRO(__STL_NONTEMPL_BASE_MATCH_BUG);
581   PRINT_MACRO(__STL_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS);
582   PRINT_MACRO(__STL_RAND48);
583   PRINT_MACRO(__STL_STATIC_ARRAY_BUG);
584   PRINT_MACRO(__STL_STATIC_CONST_INIT_BUG);
585   PRINT_MACRO(__STL_STATIC_CONST_INIT_BUG);
586   PRINT_MACRO(__STL_THROW_RETURN_BUG);
587   PRINT_MACRO(__STL_TRIVIAL_CONSTRUCTOR_BUG);
588   PRINT_MACRO(__STL_TRIVIAL_DESTRUCTOR_BUG);
589   PRINT_MACRO(__STL_UNINITIALIZABLE_PRIVATE);
590   PRINT_MACRO(__STL_USE_ABBREVS);
591   PRINT_MACRO(__STL_USE_DEFALLOC);
592   PRINT_MACRO(__STL_USE_MALLOC);
593   PRINT_MACRO(__STL_USE_NEW_C_HEADERS);
594   PRINT_MACRO(__STL_USE_NEW_IOSTREAMS);
595   PRINT_MACRO(__STL_USE_NEWALLOC);
596   PRINT_MACRO(__STL_USE_OWN_NAMESPACE);
597   PRINT_MACRO(__STL_USE_SGI_ALLOCATORS);
598   PRINT_MACRO(__STL_WCHAR_T_IS_USHORT);
599   PRINT_MACRO(__STL_WEAK_ATTRIBUTE);
600   PRINT_MACRO(__STL_YVALS_H);
601   PRINT_MACRO(_NOTHREADS);
602   PRINT_MACRO(_PTHREADS);
603#if defined(__SGI_STL_PORT) && (__SGI_STL_PORT > 0x0400)
604   PRINT_MACRO(_STLP_AUTOMATIC_TYPE_TRAITS);
605   PRINT_MACRO(_STLP_BASE_MATCH_BUG);
606   PRINT_MACRO(_STLP_BASE_TYPEDEF_BUG);
607   PRINT_MACRO(_STLP_BASE_TYPEDEF_OUTSIDE_BUG);
608   PRINT_MACRO(_STLP_BROKEN_USING_DIRECTIVE);
609   PRINT_MACRO(_STLP_CONST_CONSTRUCTOR_BUG);
610   PRINT_MACRO(_STLP_DEBUG);
611   PRINT_MACRO(_STLP_DEBUG_ALLOC);
612   PRINT_MACRO(_STLP_DEFAULT_CONSTRUCTOR_BUG);
613   PRINT_MACRO(_STLP_DEFAULT_TYPE_PARAM);
614   PRINT_MACRO(_STLP_DONT_REDEFINE_STD);
615   PRINT_MACRO(_STLP_DONT_USE_BOOL_TYPEDEF);
616   PRINT_MACRO(_STLP_HAS_NO_EXCEPTIONS);
617   PRINT_MACRO(_STLP_HAS_NO_NAMESPACES);
618   PRINT_MACRO(_STLP_HAS_NO_NEW_C_HEADERS);
619   PRINT_MACRO(_STLP_HAS_NO_NEW_IOSTREAMS);
620   PRINT_MACRO(_STLP_IMPORT_VENDOR_CSTD);
621   PRINT_MACRO(_STLP_LIMITED_DEFAULT_TEMPLATES);
622   PRINT_MACRO(_STLP_LINK_TIME_INSTANTIATION);
623   PRINT_MACRO(_STLP_LONG_LONG);
624   PRINT_MACRO(_STLP_LOOP_INLINE_PROBLEMS);
625   PRINT_MACRO(_STLP_MEMBER_POINTER_PARAM_BUG);
626   PRINT_MACRO(_STLP_NEED_EXPLICIT);
627   PRINT_MACRO(_STLP_NEED_MUTABLE);
628   PRINT_MACRO(_STLP_NEED_TYPENAME);
629   PRINT_MACRO(_STLP_NESTED_TYPE_PARAM_BUG);
630   PRINT_MACRO(_STLP_NO_ARROW_OPERATOR);
631   PRINT_MACRO(_STLP_NO_BAD_ALLOC);
632   PRINT_MACRO(_STLP_NO_BOOL);
633   PRINT_MACRO(_STLP_NO_CLASS_PARTIAL_SPECIALIZATION);
634   PRINT_MACRO(_STLP_NO_CSTD_FUNCTION_IMPORTS);
635   PRINT_MACRO(_STLP_NO_DEFAULT_NON_TYPE_PARAM);
636   PRINT_MACRO(_STLP_NO_EXCEPTION_HEADER);
637   PRINT_MACRO(_STLP_NO_EXCEPTION_SPEC);
638   PRINT_MACRO(_STLP_NO_EXCEPTIONS);
639   PRINT_MACRO(_STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS);
640   PRINT_MACRO(_STLP_NO_FRIEND_TEMPLATES);
641   PRINT_MACRO(_STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER);
642   PRINT_MACRO(_STLP_NO_IOSTREAMS);
643   PRINT_MACRO(_STLP_NO_LONG_DOUBLE);
644   PRINT_MACRO(_STLP_NO_MEMBER_TEMPLATE_CLASSES);
645   PRINT_MACRO(_STLP_NO_MEMBER_TEMPLATE_KEYWORD);
646   PRINT_MACRO(_STLP_NO_MEMBER_TEMPLATES);
647   PRINT_MACRO(_STLP_NO_METHOD_SPECIALIZATION);
648   PRINT_MACRO(_STLP_NO_NAMESPACES);
649   PRINT_MACRO(_STLP_NO_NEW_IOSTREAMS);
650   PRINT_MACRO(_STLP_NO_NEW_NEW_HEADER);
651   PRINT_MACRO(_STLP_NO_NEW_STYLE_CASTS);
652   PRINT_MACRO(_STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX);
653   PRINT_MACRO(_STLP_NO_QUALIFIED_FRIENDS);
654   PRINT_MACRO(_STLP_NO_RELOPS_NAMESPACE);
655   PRINT_MACRO(_STLP_NO_SGI_IOSTREAMS);
656   PRINT_MACRO(_STLP_NO_STATIC_TEMPLATE_DATA);
657   PRINT_MACRO(_STLP_NO_TEMPLATE_CONVERSIONS);
658   PRINT_MACRO(_STLP_NO_WCHAR_T);
659   PRINT_MACRO(_STLP_NON_TYPE_TMPL_PARAM_BUG);
660   PRINT_MACRO(_STLP_NONTEMPL_BASE_MATCH_BUG);
661   PRINT_MACRO(_STLP_OWN_IOSTREAMS);
662   PRINT_MACRO(_STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS);
663   PRINT_MACRO(_STLP_RAND48);
664   PRINT_MACRO(_STLP_STATIC_ARRAY_BUG);
665   PRINT_MACRO(_STLP_STATIC_CONST_INIT_BUG);
666   PRINT_MACRO(_STLP_STATIC_CONST_INIT_BUG);
667   PRINT_MACRO(_STLP_THROW_RETURN_BUG);
668   PRINT_MACRO(_STLP_TRIVIAL_CONSTRUCTOR_BUG);
669   PRINT_MACRO(_STLP_TRIVIAL_DESTRUCTOR_BUG);
670   PRINT_MACRO(_STLP_UNINITIALIZABLE_PRIVATE);
671   PRINT_MACRO(_STLP_USE_ABBREVS);
672   PRINT_MACRO(_STLP_USE_DEFALLOC);
673   PRINT_MACRO(_STLP_USE_MALLOC);
674   PRINT_MACRO(_STLP_USE_NEW_C_HEADERS);
675   PRINT_MACRO(_STLP_USE_NEWALLOC);
676   PRINT_MACRO(_STLP_USE_OWN_NAMESPACE);
677   PRINT_MACRO(_STLP_USE_SGI_ALLOCATORS);
678   PRINT_MACRO(_STLP_WCHAR_T_IS_USHORT);
679   PRINT_MACRO(_STLP_WEAK_ATTRIBUTE);
680   PRINT_MACRO(_STLP_YVALS_H);
681#endif
682   PRINT_MACRO(__GLIBCPP__);
683   PRINT_MACRO(_GLIBCPP_USE_WCHAR_T);
684   PRINT_MACRO(_GLIBCPP_VERSION);
685   PRINT_MACRO(__GLIBCXX__);
686   PRINT_MACRO(_GLIBCXX_USE_WCHAR_T);
687   PRINT_MACRO(_GLIBCXX_VERSION);
688   PRINT_MACRO(_GLIBCXX_USE_LONG_LONG);
689   PRINT_MACRO(_GLIBCXX_USE_NLS);
690   PRINT_MACRO(_GLIBCXX_USE_C99_MATH);
691   PRINT_MACRO(_GLIBCXX_USE_C99);
692   PRINT_MACRO(_GLIBCXX_CONCEPT_CHECKS);
693   PRINT_MACRO(_GLIBCXX_USE_LFS);
694   PRINT_MACRO(_GLIBCXX_SYMVER);
695   PRINT_MACRO(_GLIBCXX_MEM_LIMITS);
696   PRINT_MACRO(_GLIBCXX_HOSTED);
697   PRINT_MACRO(_GLIBCXX_SJLJ_EXCEPTIONS);
698
699   // Modena C++ standard library
700   PRINT_MACRO(MSIPL_ANSI_HEADER);
701   PRINT_MACRO(MSIPL_BOOL_BUILTIN);
702   PRINT_MACRO(MSIPL_DEF_EXPLICIT);
703   PRINT_MACRO(MSIPL_DEF_TEMPARG);
704   PRINT_MACRO(MSIPL_EXPINST_ALLOWED);
705   PRINT_MACRO(MSIPL_EXPLICIT_FUNC_TEMPLATE_ARG);
706   PRINT_MACRO(MISPL_EXPLICIT_TEMPLATE_ARGUMENT);
707   PRINT_MACRO(MSIPL_FUNC_TEMPLATE_DEFARG);
708   PRINT_MACRO(MSIPL_MEMBER_TEMPLATE);
709   PRINT_MACRO(MSIPL_MULTITHREAD);
710   PRINT_MACRO(MSIPL_NON_TYPE_TEMPARG);
711   PRINT_MACRO(MSIPL_PARTIAL_TEMPL);
712   PRINT_MACRO(MSIPL_STATIC_CONST_INIT);
713   PRINT_MACRO(MSIPL_TEMPL_NEWSPEC);
714   PRINT_MACRO(MSIPL_TYPENAME);
715   PRINT_MACRO(MSIPL_USING_NAMESPACE);
716   PRINT_MACRO(MSIPL_WCHART);
717}
718
719void print_platform_macros()
720{
721   std::cout << "Detected Platform: " << BOOST_PLATFORM << std::endl;
722   // signedness:
723   PRINT_SIGN(char);
724   PRINT_SIGN(wchar_t);
725   // byte ordering:
726   PRINT_ORDER(short);
727   PRINT_ORDER(int);
728   PRINT_ORDER(long);
729   // sizes:
730   PRINT_EXPRESSION(sizeof(wchar_t));
731   PRINT_EXPRESSION(sizeof(short));
732   PRINT_EXPRESSION(sizeof(int));
733   PRINT_EXPRESSION(sizeof(long));
734   PRINT_EXPRESSION(sizeof(size_t));
735   PRINT_EXPRESSION(sizeof(ptrdiff_t));
736   PRINT_EXPRESSION(sizeof(void*));
737   PRINT_EXPRESSION(sizeof(void(*)(void)));
738   PRINT_EXPRESSION(sizeof(float));
739   PRINT_EXPRESSION(sizeof(double));
740   PRINT_EXPRESSION(sizeof(long double));
741   // limits:
742   PRINT_MACRO(CHAR_BIT);
743   PRINT_MACRO(CHAR_MAX);
744   PRINT_MACRO(WCHAR_MAX);
745   PRINT_MACRO(SHRT_MAX);
746   PRINT_MACRO(INT_MAX);
747   PRINT_MACRO(LONG_MAX);
748   PRINT_MACRO(LLONG_MAX);
749   PRINT_MACRO(LONG_LONG_MAX);
750   PRINT_MACRO(LONGLONG_MAX);
751   PRINT_MACRO(ULLONG_MAX); // <boost/cstdint.hpp> uses these, so we need to know them
752   PRINT_MACRO(ULONG_LONG_MAX);
753   PRINT_MACRO(ULONGLONG_MAX);
754   // general C99:
755   PRINT_MACRO(__STDC_IEC_559__);
756   PRINT_MACRO(__STDC_IEC_559_COMPLEX__);
757   PRINT_MACRO(__STDC_ISO_10646__);
758   // GNU:
759   PRINT_MACRO(__GLIBC__);
760   PRINT_MACRO(__GLIBC_MINOR__);
761   PRINT_MACRO(__GNU_LIBRARY__);
762   PRINT_MACRO(_BSD_SOURCE);
763   PRINT_MACRO(_FILE_OFFSET_BITS);
764   PRINT_MACRO(_GNU_SOURCE);
765   PRINT_MACRO(_ISOC99_SOURCE);
766   PRINT_MACRO(_ISOC9X_SOURCE);
767   PRINT_MACRO(_LARGEFILE_SOURCE);
768   PRINT_MACRO(_LARGEFILE64_SOURCE);
769   PRINT_MACRO(_SVID_SOURCE);
770   PRINT_MACRO(_THREAD_SAFE);
771   PRINT_MACRO(_XOPEN_SOURCE_EXTENDED);
772   PRINT_MACRO(XPG);
773   // POSIX:
774   PRINT_MACRO(_POSIX_ADVISORY_INFO);
775   PRINT_MACRO(_POSIX_ASYNCHRONOUS_IO);
776   PRINT_MACRO(_POSIX_BARRIERS);
777   PRINT_MACRO(_POSIX_C_SOURCE);
778   PRINT_MACRO(_POSIX_CHOWN_RESTRICTED);
779   PRINT_MACRO(_POSIX_CLOCK_SELECTION);
780   PRINT_MACRO(_POSIX_CPUTIME);
781   PRINT_MACRO(_POSIX_FSYNC);
782   PRINT_MACRO(_POSIX_JOB_CONTROL);
783   PRINT_MACRO(_POSIX_MAPPED_FILES);
784   PRINT_MACRO(_POSIX_MEMLOCK);
785   PRINT_MACRO(_POSIX_MEMLOCK_RANGE);
786   PRINT_MACRO(_POSIX_MEMORY_PROTECTION);
787   PRINT_MACRO(_POSIX_MESSAGE_PASSING);
788   PRINT_MACRO(_POSIX_MONOTONIC_CLOCK);
789   PRINT_MACRO(_POSIX_NO_TRUNC);
790   PRINT_MACRO(_POSIX_PRIORITIZED_IO);
791   PRINT_MACRO(_POSIX_PRIORITY_SCHEDULING);
792   PRINT_MACRO(_POSIX_RAW_SOCKETS);
793   PRINT_MACRO(_POSIX_READER_WRITER_LOCKS);
794   PRINT_MACRO(_POSIX_REALTIME_SIGNALS);
795   PRINT_MACRO(_POSIX_REGEXP);
796   PRINT_MACRO(_POSIX_SAVED_IDS);
797   PRINT_MACRO(_POSIX_SEMAPHORES);
798   PRINT_MACRO(_POSIX_SHARED_MEMORY_OBJECTS);
799   PRINT_MACRO(_POSIX_SHELL);
800   PRINT_MACRO(_POSIX_SOURCE);
801   PRINT_MACRO(_POSIX_SPAWN);
802   PRINT_MACRO(_POSIX_SPIN_LOCKS);
803   PRINT_MACRO(_POSIX_SPORADIC_SERVER);
804   PRINT_MACRO(_POSIX_SYNCHRONIZED_IO);
805   PRINT_MACRO(_POSIX_THREAD_ATTR_STACKADDR);
806   PRINT_MACRO(_POSIX_THREAD_ATTR_STACKSIZE);
807   PRINT_MACRO(_POSIX_THREAD_CPUTIME);
808   PRINT_MACRO(_POSIX_THREAD_PRIO_INHERIT);
809   PRINT_MACRO(_POSIX_THREAD_PRIO_PROTECT);
810   PRINT_MACRO(_POSIX_THREAD_PRIORITY_SCHEDULING);
811   PRINT_MACRO(_POSIX_THREAD_PROCESS_SHARED);
812   PRINT_MACRO(_POSIX_THREAD_SAFE_FUNCTIONS);
813   PRINT_MACRO(_POSIX_THREAD_SPORADIC_SERVER);
814   PRINT_MACRO(_POSIX_THREADS);
815   PRINT_MACRO(_POSIX_TIMEOUTS);
816   PRINT_MACRO(_POSIX_TIMERS);
817   PRINT_MACRO(_POSIX_TRACE);
818   PRINT_MACRO(_POSIX_TRACE_EVENT_FILTER);
819   PRINT_MACRO(_POSIX_TRACE_INHERIT);
820   PRINT_MACRO(_POSIX_TRACE_LOG);
821   PRINT_MACRO(_POSIX_TYPED_MEMORY_OBJECTS);
822   PRINT_MACRO(_POSIX_VDISABLE);
823   PRINT_MACRO(_POSIX_VERSION);
824   PRINT_MACRO(_POSIX2_C_BIND);
825   PRINT_MACRO(_POSIX2_C_DEV);
826   PRINT_MACRO(_POSIX2_CHAR_TERM);
827   PRINT_MACRO(_POSIX2_FORT_DEV);
828   PRINT_MACRO(_POSIX2_FORT_RUN);
829   PRINT_MACRO(_POSIX2_LOCALEDEF);
830   PRINT_MACRO(_POSIX2_PBS);
831   PRINT_MACRO(_POSIX2_PBS_ACCOUNTING);
832   PRINT_MACRO(_POSIX2_PBS_CHECKPOINT);
833   PRINT_MACRO(_POSIX2_PBS_LOCATE);
834   PRINT_MACRO(_POSIX2_PBS_MESSAGE);
835   PRINT_MACRO(_POSIX2_PBS_TRACK);
836   PRINT_MACRO(_POSIX2_SW_DEV);
837   PRINT_MACRO(_POSIX2_UPE);
838   PRINT_MACRO(_POSIX2_VERSION);
839   PRINT_MACRO(_V6_ILP32_OFF32);
840   PRINT_MACRO(_V6_ILP32_OFFBIG);
841   PRINT_MACRO(_V6_LP64_OFF64);
842   PRINT_MACRO(_V6_LPBIG_OFFBIG);
843   PRINT_MACRO(_XBS5_ILP32_OFF32);
844   PRINT_MACRO(_XBS5_ILP32_OFFBIG);
845   PRINT_MACRO(_XBS5_LP64_OFF64);
846   PRINT_MACRO(_XBS5_LPBIG_OFFBIG);
847   PRINT_MACRO(_XOPEN_CRYPT);
848   PRINT_MACRO(_XOPEN_ENH_I18N);
849   PRINT_MACRO(_XOPEN_LEGACY);
850   PRINT_MACRO(_XOPEN_REALTIME);
851   PRINT_MACRO(_XOPEN_REALTIME_THREADS);
852   PRINT_MACRO(_XOPEN_SHM);
853   PRINT_MACRO(_XOPEN_SOURCE);
854   PRINT_MACRO(_XOPEN_STREAMS);
855   PRINT_MACRO(_XOPEN_UNIX);
856   PRINT_MACRO(_XOPEN_VERSION);
857}
858
859void print_boost_macros()
860{
861   std::cout << "Boost version " << BOOST_STRINGIZE(BOOST_VERSION) << std::endl;
862   // config setup macros first:
863   PRINT_MACRO(BOOST_USER_CONFIG);
864   PRINT_MACRO(BOOST_COMPILER_CONFIG);
865   PRINT_MACRO(BOOST_STDLIB_CONFIG);
866   PRINT_MACRO(BOOST_PLATFORM_CONFIG);
867   PRINT_MACRO(BOOST_NO_CONFIG);
868   PRINT_MACRO(BOOST_NO_USER_CONFIG);
869   PRINT_MACRO(BOOST_NO_COMPILER_CONFIG);
870   PRINT_MACRO(BOOST_NO_STDLIB_CONFIG);
871   PRINT_MACRO(BOOST_NO_PLATFORM_CONFIG);
872   // then defect and feature macros:
873   PRINT_MACRO(BOOST_BCB_PARTIAL_SPECIALIZATION_BUG);
874   PRINT_MACRO(BOOST_DEDUCED_TYPENAME);
875   PRINT_MACRO(BOOST_DISABLE_THREADS);
876   PRINT_MACRO(BOOST_DISABLE_WIN32);
877   PRINT_MACRO(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL);
878   PRINT_MACRO(BOOST_HAS_BETHREADS);
879   PRINT_MACRO(BOOST_HAS_CLOCK_GETTIME);
880   PRINT_MACRO(BOOST_HAS_DECLSPEC);
881   PRINT_MACRO(BOOST_HAS_DIRENT_H);
882   PRINT_MACRO(BOOST_HAS_FTIME);
883   PRINT_MACRO(BOOST_HAS_GETTIMEOFDAY);
884   PRINT_MACRO(BOOST_HAS_HASH);
885   PRINT_MACRO(BOOST_HAS_LONG_LONG);
886   PRINT_MACRO(BOOST_HAS_MACRO_USE_FACET);
887   PRINT_MACRO(BOOST_HAS_MS_INT64);
888   PRINT_MACRO(BOOST_HAS_NANOSLEEP);
889   PRINT_MACRO(BOOST_HAS_NL_TYPES_H);
890   PRINT_MACRO(BOOST_HAS_NRVO);
891   PRINT_MACRO(BOOST_HAS_PARTIAL_STD_ALLOCATOR);
892   PRINT_MACRO(BOOST_HAS_PTHREAD_DELAY_NP);
893   PRINT_MACRO(BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE);
894   PRINT_MACRO(BOOST_HAS_PTHREAD_YIELD);
895   PRINT_MACRO(BOOST_HAS_PTHREADS);
896   PRINT_MACRO(BOOST_HAS_SCHED_YIELD);
897   PRINT_MACRO(BOOST_HAS_SIGACTION);
898   PRINT_MACRO(BOOST_HAS_SGI_TYPE_TRAITS);
899   PRINT_MACRO(BOOST_HAS_STDINT_H);
900   PRINT_MACRO(BOOST_HAS_SLIST);
901   PRINT_MACRO(BOOST_HAS_STLP_USE_FACET);
902   PRINT_MACRO(BOOST_HAS_THREADS);
903   PRINT_MACRO(BOOST_HAS_TWO_ARG_USE_FACET);
904   PRINT_MACRO(BOOST_HAS_UNISTD_H);
905   PRINT_MACRO(BOOST_HAS_WINTHREADS);
906   PRINT_MACRO(BOOST_INTEL);
907   PRINT_MACRO(BOOST_MSVC);
908   PRINT_MACRO(BOOST_MSVC_STD_ITERATOR);
909   PRINT_MACRO(BOOST_MSVC6_MEMBER_TEMPLATES);
910   PRINT_MACRO(BOOST_NESTED_TEMPLATE);
911   PRINT_MACRO(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP);
912   PRINT_MACRO(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS);
913   PRINT_MACRO(BOOST_NO_AUTO_PTR);
914   PRINT_MACRO(BOOST_NO_CTYPE_FUNCTIONS);
915   PRINT_MACRO(BOOST_NO_CV_SPECIALIZATIONS);
916   PRINT_MACRO(BOOST_NO_CV_VOID_SPECIALIZATIONS);
917   PRINT_MACRO(BOOST_NO_CWCHAR);
918   PRINT_MACRO(BOOST_NO_CWCTYPE);
919   PRINT_MACRO(BOOST_NO_DEDUCED_TYPENAME);
920   PRINT_MACRO(BOOST_NO_DEPENDENT_NESTED_DERIVATIONS);
921   PRINT_MACRO(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS);
922   PRINT_MACRO(BOOST_NO_EXCEPTIONS);
923   PRINT_MACRO(BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS);
924   PRINT_MACRO(BOOST_NO_FUNCTION_TEMPLATE_ORDERING);
925   PRINT_MACRO(BOOST_NO_HASH);
926   PRINT_MACRO(BOOST_NO_INCLASS_MEMBER_INITIALIZATION);
927   PRINT_MACRO(BOOST_NO_INT64_T);
928   PRINT_MACRO(BOOST_NO_INTEGRAL_INT64_T);
929   PRINT_MACRO(BOOST_NO_INTRINSIC_WCHAR_T);
930   PRINT_MACRO(BOOST_NO_IS_ABSTRACT);
931   PRINT_MACRO(BOOST_NO_LIMITS);
932   PRINT_MACRO(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS);
933   PRINT_MACRO(BOOST_NO_LONG_LONG_NUMERIC_LIMITS);
934   PRINT_MACRO(BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS);
935   PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATE_KEYWORD);
936   PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATE_FRIENDS);
937   PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATES);
938   PRINT_MACRO(BOOST_NO_MS_INT64_NUMERIC_LIMITS);
939   PRINT_MACRO(BOOST_NO_OPERATORS_IN_NAMESPACE);
940   PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_CONST);
941   PRINT_MACRO(BOOST_NO_PRIVATE_IN_AGGREGATE);
942   PRINT_MACRO(BOOST_NO_SFINAE);
943   PRINT_MACRO(BOOST_NO_SLIST);
944   PRINT_MACRO(BOOST_NO_STD_ALLOCATOR);
945   PRINT_MACRO(BOOST_NO_STD_DISTANCE);
946   PRINT_MACRO(BOOST_NO_STD_ITERATOR);
947   PRINT_MACRO(BOOST_NO_STD_ITERATOR_TRAITS);
948   PRINT_MACRO(BOOST_NO_STD_LOCALE);
949   PRINT_MACRO(BOOST_NO_STD_MESSAGES);
950   PRINT_MACRO(BOOST_NO_STD_MIN_MAX);
951   PRINT_MACRO(BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN);
952   PRINT_MACRO(BOOST_NO_STD_USE_FACET);
953   PRINT_MACRO(BOOST_NO_STD_WSTREAMBUF);
954   PRINT_MACRO(BOOST_NO_STD_WSTRING);
955   PRINT_MACRO(BOOST_NO_STDC_NAMESPACE);
956   PRINT_MACRO(BOOST_NO_STRINGSTREAM);
957   PRINT_MACRO(BOOST_NO_SWPRINTF);
958   PRINT_MACRO(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION);
959   PRINT_MACRO(BOOST_NO_TEMPLATE_TEMPLATES);
960   PRINT_MACRO(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS);
961   PRINT_MACRO(BOOST_NO_UNREACHABLE_RETURN_DETECTION);
962   PRINT_MACRO(BOOST_NO_USING_TEMPLATE);
963   PRINT_MACRO(BOOST_NO_VOID_RETURNS);
964   PRINT_MACRO(BOOST_STD_EXTENSION_NAMESPACE);
965   PRINT_MACRO(BOOST_UNREACHABLE_RETURN(0));
966}
967
968void print_separator()
969{
970   std::cout <<
971"\n\n*********************************************************************\n\n";
972}
973
974int main()
975{
976
977  // boost compiler workaround defines
978  print_compiler_macros();
979  print_separator();
980  print_stdlib_macros();
981  print_separator();
982  print_platform_macros();
983  print_separator();
984  print_boost_macros();
985
986  return 0;
987}
988
989
990
991
992
993
994
995
996
Note: See TracBrowser for help on using the repository browser.