libsmbios_c library
|
00001 // (C) Copyright John Maddock 2001. 00002 // (C) Copyright Jens Maurer 2001 - 2003. 00003 // (C) Copyright Peter Dimov 2002. 00004 // (C) Copyright Aleksey Gurtovoy 2002 - 2003. 00005 // (C) Copyright David Abrahams 2002. 00006 // Use, modification and distribution are subject to the 00007 // Boost Software License, Version 1.0. (See accompanying file 00008 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 00009 00010 // See http://www.boost.org for most recent version. 00011 00012 // Sun C++ compiler setup: 00013 00014 # if __SUNPRO_CC <= 0x500 00015 # define LIBSMBIOS_NO_MEMBER_TEMPLATES 00016 # define LIBSMBIOS_NO_FUNCTION_TEMPLATE_ORDERING 00017 # endif 00018 00019 # if (__SUNPRO_CC <= 0x520) 00020 // 00021 // Sunpro 5.2 and earler: 00022 // 00023 // although sunpro 5.2 supports the syntax for 00024 // inline initialization it often gets the value 00025 // wrong, especially where the value is computed 00026 // from other constants (J Maddock 6th May 2001) 00027 # define LIBSMBIOS_NO_INCLASS_MEMBER_INITIALIZATION 00028 00029 // Although sunpro 5.2 supports the syntax for 00030 // partial specialization, it often seems to 00031 // bind to the wrong specialization. Better 00032 // to disable it until suppport becomes more stable 00033 // (J Maddock 6th May 2001). 00034 # define LIBSMBIOS_NO_TEMPLATE_PARTIAL_SPECIALIZATION 00035 # endif 00036 00037 # if (__SUNPRO_CC <= 0x530) 00038 // Requesting debug info (-g) with Boost.Python results 00039 // in an internal compiler error for "static const" 00040 // initialized in-class. 00041 // >> Assertion: (../links/dbg_cstabs.cc, line 611) 00042 // while processing ../test.cpp at line 0. 00043 // (Jens Maurer according to Gottfried Ganssauge 04 Mar 2002) 00044 # define LIBSMBIOS_NO_INCLASS_MEMBER_INITIALIZATION 00045 00046 // SunPro 5.3 has better support for partial specialization, 00047 // but breaks when compiling std::less<shared_ptr<T> > 00048 // (Jens Maurer 4 Nov 2001). 00049 00050 // std::less specialization fixed as reported by George 00051 // Heintzelman; partial specialization re-enabled 00052 // (Peter Dimov 17 Jan 2002) 00053 00054 //# define LIBSMBIOS_NO_TEMPLATE_PARTIAL_SPECIALIZATION 00055 00056 // integral constant expressions with 64 bit numbers fail 00057 # define LIBSMBIOS_NO_INTEGRAL_INT64_T 00058 # endif 00059 00060 # if (__SUNPRO_CC < 0x570) 00061 # define LIBSMBIOS_NO_TEMPLATE_TEMPLATES 00062 // see http://lists.boost.org/MailArchives/boost/msg47184.php 00063 // and http://lists.boost.org/MailArchives/boost/msg47220.php 00064 # define LIBSMBIOS_NO_INCLASS_MEMBER_INITIALIZATION 00065 # define LIBSMBIOS_NO_SFINAE 00066 # define LIBSMBIOS_NO_ARRAY_TYPE_SPECIALIZATIONS 00067 # endif 00068 # if (__SUNPRO_CC <= 0x580) 00069 # define LIBSMBIOS_NO_IS_ABSTRACT 00070 # endif 00071 00072 // 00073 // Issues that effect all known versions: 00074 // 00075 #define LIBSMBIOS_NO_TWO_PHASE_NAME_LOOKUP 00076 #define LIBSMBIOS_NO_ADL_BARRIER 00077 00078 // 00079 // C++0x features 00080 // 00081 00082 #if(__SUNPRO_CC >= 0x590) 00083 # define LIBSMBIOS_HAS_LONG_LONG 00084 #else 00085 # define LIBSMBIOS_NO_LONG_LONG 00086 #endif 00087 00088 #define LIBSMBIOS_NO_AUTO_DECLARATIONS 00089 #define LIBSMBIOS_NO_AUTO_MULTIDECLARATIONS 00090 #define LIBSMBIOS_NO_CHAR16_T 00091 #define LIBSMBIOS_NO_CHAR32_T 00092 #define LIBSMBIOS_NO_CONCEPTS 00093 #define LIBSMBIOS_NO_CONSTEXPR 00094 #define LIBSMBIOS_NO_DECLTYPE 00095 #define LIBSMBIOS_NO_DEFAULTED_FUNCTIONS 00096 #define LIBSMBIOS_NO_DELETED_FUNCTIONS 00097 #define LIBSMBIOS_NO_EXPLICIT_CONVERSION_OPERATORS 00098 #define LIBSMBIOS_NO_EXTERN_TEMPLATE 00099 #define LIBSMBIOS_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS 00100 #define LIBSMBIOS_NO_INITIALIZER_LISTS 00101 #define LIBSMBIOS_NO_LAMBDAS 00102 #define LIBSMBIOS_NO_NULLPTR 00103 #define LIBSMBIOS_NO_RAW_LITERALS 00104 #define LIBSMBIOS_NO_RVALUE_REFERENCES 00105 #define LIBSMBIOS_NO_SCOPED_ENUMS 00106 #define LIBSMBIOS_NO_SFINAE_EXPR 00107 #define LIBSMBIOS_NO_STATIC_ASSERT 00108 #define LIBSMBIOS_NO_TEMPLATE_ALIASES 00109 #define LIBSMBIOS_NO_UNICODE_LITERALS 00110 #define LIBSMBIOS_NO_VARIADIC_TEMPLATES 00111 00112 // 00113 // Version 00114 // 00115 00116 #define LIBSMBIOS_COMPILER "Sun compiler version " LIBSMBIOS_STRINGIZE(__SUNPRO_CC) 00117 00118 // 00119 // versions check: 00120 // we don't support sunpro prior to version 4: 00121 #if __SUNPRO_CC < 0x400 00122 #error "Compiler not supported or configured - please reconfigure" 00123 #endif 00124 // 00125 // last known and checked version is 0x590: 00126 #if (__SUNPRO_CC > 0x590) 00127 # if defined(LIBSMBIOS_ASSERT_CONFIG) 00128 # error "Unknown compiler version - please run the configure tests and report the results" 00129 # endif 00130 #endif 00131 00132 #ifndef UNREFERENCED_PARAMETER 00133 #define UNREFERENCED_PARAMETER(P) ((void)(P)) 00134 #endif 00135 00136 #define LIBSMBIOS_PACKED_ATTR __attribute__ ((packed)) 00137 00138 #define _dbg_iostream_out(stream, line) do { stream << line; } while(0) 00139 #define _dbg_cout(line) _dbg_iostream_out(cout, line) 00140 #define _dbg_cerr(line) _dbg_iostream_out(cerr, line) 00141 #define _null_call( args...) do {} while(0) 00142 #ifdef DEBUG_OUTPUT_ALL 00143 #include <iostream> 00144 #define DCOUT _dbg_cout 00145 #define DCERR _dbg_cerr 00146 #else 00147 #define DCOUT _null_call 00148 #define DCERR _null_call 00149 #endif 00150 00151 #define MARK_UNUSED __attribute__((unused))