CppUnit project page FAQ CppUnit home page

Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

Portability.h

Go to the documentation of this file.
00001 #ifndef CPPUNIT_PORTABILITY_H 00002 #define CPPUNIT_PORTABILITY_H 00003 00004 /* include platform specific config */ 00005 #if defined(__BORLANDC__) 00006 # include <cppunit/config/config-bcb5.h> 00007 #elif defined (_MSC_VER) 00008 # include <cppunit/config/config-msvc6.h> 00009 #else 00010 # include <cppunit/config-auto.h> 00011 #endif 00012 00013 // Version number of package 00014 #ifndef CPPUNIT_VERSION 00015 #define CPPUNIT_VERSION "1.9.10" 00016 #endif 00017 00018 #include <cppunit/config/CppUnitApi.h> // define CPPUNIT_API & CPPUNIT_NEED_DLL_DECL 00019 #include <cppunit/config/SelectDllLoader.h> 00020 00021 00022 /* Options that the library user may switch on or off. 00023 * If the user has not done so, we chose default values. 00024 */ 00025 00026 00027 /* Define to 1 if you wish to have the old-style macros 00028 assert(), assertEqual(), assertDoublesEqual(), and assertLongsEqual() */ 00029 #if !defined(CPPUNIT_ENABLE_NAKED_ASSERT) 00030 # define CPPUNIT_ENABLE_NAKED_ASSERT 0 00031 #endif 00032 00033 /* Define to 1 if you wish to have the old-style CU_TEST family 00034 of macros. */ 00035 #if !defined(CPPUNIT_ENABLE_CU_TEST_MACROS) 00036 # define CPPUNIT_ENABLE_CU_TEST_MACROS 0 00037 #endif 00038 00039 /* Define to 1 if the preprocessor expands (#foo) to "foo" (quotes incl.) 00040 I don't think there is any C preprocess that does NOT support this! */ 00041 #if !defined(CPPUNIT_HAVE_CPP_SOURCE_ANNOTATION) 00042 # define CPPUNIT_HAVE_CPP_SOURCE_ANNOTATION 1 00043 #endif 00044 00045 /* Assumes that STL and CppUnit are in global space if the compiler does not 00046 support namespace. */ 00047 #if !defined(CPPUNIT_HAVE_NAMESPACES) 00048 # if !defined(CPPUNIT_NO_NAMESPACE) 00049 # define CPPUNIT_NO_NAMESPACE 1 00050 # endif // !defined(CPPUNIT_NO_NAMESPACE) 00051 # if !defined(CPPUNIT_NO_STD_NAMESPACE) 00052 # define CPPUNIT_NO_STD_NAMESPACE 1 00053 # endif // !defined(CPPUNIT_NO_STD_NAMESPACE) 00054 #endif // !defined(CPPUNIT_HAVE_NAMESPACES) 00055 00056 /* Define CPPUNIT_STD_NEED_ALLOCATOR to 1 if you need to specify 00057 * the allocator you used when instantiating STL container. Typically 00058 * used for compilers that do not support template default parameter. 00059 * CPPUNIT_STD_ALLOCATOR will be used as the allocator. Default is 00060 * std::allocator. On some compilers, you may need to change this to 00061 * std::allocator<T>. 00062 */ 00063 #if CPPUNIT_STD_NEED_ALLOCATOR 00064 # if !defined(CPPUNIT_STD_ALLOCATOR) 00065 # define CPPUNIT_STD_ALLOCATOR std::allocator 00066 # endif // !defined(CPPUNIT_STD_ALLOCATOR) 00067 #endif // defined(CPPUNIT_STD_NEED_ALLOCATOR) 00068 00069 00070 // Compiler error location format for CompilerOutputter 00071 // If not define, assumes that it's gcc 00072 // See class CompilerOutputter for format. 00073 #if !defined(CPPUNIT_COMPILER_LOCATION_FORMAT) 00074 # define CPPUNIT_COMPILER_LOCATION_FORMAT "%f:%l:" 00075 #endif 00076 00077 // If CPPUNIT_HAVE_CPP_CAST is defined, then c++ style cast will be used, 00078 // otherwise, C style cast are used. 00079 #if defined( CPPUNIT_HAVE_CPP_CAST ) 00080 # define CPPUNIT_CONST_CAST( TargetType, pointer ) \ 00081 const_cast<TargetType>( pointer ) 00082 00083 # define CPPUNIT_STATIC_CAST( TargetType, pointer ) \ 00084 static_cast<TargetType>( pointer ) 00085 #else // defined( CPPUNIT_HAVE_CPP_CAST ) 00086 # define CPPUNIT_CONST_CAST( TargetType, pointer ) \ 00087 ((TargetType)( pointer )) 00088 # define CPPUNIT_STATIC_CAST( TargetType, pointer ) \ 00089 ((TargetType)( pointer )) 00090 #endif // defined( CPPUNIT_HAVE_CPP_CAST ) 00091 00092 // If CPPUNIT_NO_STD_NAMESPACE is defined then STL are in the global space. 00093 // => Define macro 'std' to nothing 00094 #if defined(CPPUNIT_NO_STD_NAMESPACE) 00095 # undef std 00096 # define std 00097 #endif // defined(CPPUNIT_NO_STD_NAMESPACE) 00098 00099 // If CPPUNIT_NO_NAMESPACE is defined, then put CppUnit classes in the 00100 // global namespace: the compiler does not support namespace. 00101 #if defined(CPPUNIT_NO_NAMESPACE) 00102 # define CPPUNIT_NS_BEGIN 00103 # define CPPUNIT_NS_END 00104 # define CPPUNIT_NS 00105 #else // defined(CPPUNIT_NO_NAMESPACE) 00106 # define CPPUNIT_NS_BEGIN namespace CppUnit { 00107 # define CPPUNIT_NS_END } 00108 # define CPPUNIT_NS CppUnit 00109 #endif // defined(CPPUNIT_NO_NAMESPACE) 00110 00121 #define CPPUNIT_STRINGIZE( symbol ) _CPPUNIT_DO_STRINGIZE( symbol ) 00122 00124 #define _CPPUNIT_DO_STRINGIZE( symbol ) #symbol 00125 00144 #define CPPUNIT_JOIN( symbol1, symbol2 ) _CPPUNIT_DO_JOIN( symbol1, symbol2 ) 00145 00147 #define _CPPUNIT_DO_JOIN( symbol1, symbol2 ) _CPPUNIT_DO_JOIN2( symbol1, symbol2 ) 00148 00150 #define _CPPUNIT_DO_JOIN2( symbol1, symbol2 ) symbol1##symbol2 00151 00156 #define CPPUNIT_MAKE_UNIQUE_NAME( prefix ) CPPUNIT_JOIN( prefix, __LINE__ ) 00157 00160 #if !defined(CPPUNIT_WRAP_COLUMN) 00161 # define CPPUNIT_WRAP_COLUMN 79 00162 #endif 00163 00164 00165 /* perform portability hacks */ 00166 00167 00168 /* Define CPPUNIT_SSTREAM as a stream with a "std::string str()" 00169 * method. 00170 */ 00171 #if CPPUNIT_HAVE_SSTREAM 00172 # include <sstream> 00173 CPPUNIT_NS_BEGIN 00174 00175 typedef std::ostringstream OStringStream; 00176 00177 CPPUNIT_NS_END 00178 #elif CPPUNIT_HAVE_CLASS_STRSTREAM 00179 # include <string> 00180 # if CPPUNIT_HAVE_STRSTREAM 00181 # include <strstream> 00182 # else // CPPUNIT_HAVE_STRSTREAM 00183 # include <strstream.h> 00184 # endif // CPPUNIT_HAVE_CLASS_STRSTREAM 00185 00186 CPPUNIT_NS_BEGIN 00187 00188 class OStringStream : public std::ostrstream 00189 { 00190 public: 00191 std::string str() 00192 { 00193 // (*this) << '\0'; 00194 // std::string msg(std::ostrstream::str()); 00195 // std::ostrstream::freeze(false); 00196 // return msg; 00197 // Alternative implementation that don't rely on freeze which is not 00198 // available on some platforms: 00199 return std::string( std::ostrstream::str(), pcount() ); 00200 } 00201 }; 00202 00203 CPPUNIT_NS_END 00204 #else // CPPUNIT_HAVE_CLASS_STRSTREAM 00205 # error Cannot define CppUnit::OStringStream. 00206 #endif // CPPUNIT_HAVE_SSTREAM 00207 00208 00209 #endif // CPPUNIT_PORTABILITY_H

SourceForge Logo hosts this site. Send comments to:
CppUnit Developers