1#ifndef CPPUNIT_PORTABILITY_H
2#define CPPUNIT_PORTABILITY_H
3
4/* include platform specific config */
5#if defined(__BORLANDC__)
6#    include <cppunit/config-bcb5.h>
7#elif defined (_MSC_VER)
8#    include <cppunit/config-msvc6.h>
9#else
10#    include <cppunit/config-auto.h>
11#endif
12
13
14/* Options that the library user may switch on or off.
15 * If the user has not done so, we chose default values.
16 */
17
18
19#if defined(__POWERPC__) && (defined(__BEOS__) || defined(__HAIKU__))
20#define CPPUNIT_HAVE_SSTREAM 1
21#undef CPPUNIT_FUNC_STRING_COMPARE_STRING_FIRST
22#endif
23
24#if __GNUC__ > 2
25#undef CPPUNIT_FUNC_STRING_COMPARE_STRING_FIRST
26#endif
27
28/* Define to 1 if you wish to have the old-style macros
29   assert(), assertEqual(), assertDoublesEqual(), and assertLongsEqual() */
30#ifndef CPPUNIT_ENABLE_NAKED_ASSERT
31#define CPPUNIT_ENABLE_NAKED_ASSERT          0
32#endif
33
34/* Define to 1 if you wish to have the old-style CU_TEST family
35   of macros. */
36#ifndef CPPUNIT_ENABLE_CU_TEST_MACROS
37#define CPPUNIT_ENABLE_CU_TEST_MACROS        0
38#endif
39
40/* Define to 1 if the preprocessor expands (#foo) to "foo" (quotes incl.)
41   I don't think there is any C preprocess that does NOT support this! */
42#ifndef CPPUNIT_HAVE_CPP_SOURCE_ANNOTATION
43#define CPPUNIT_HAVE_CPP_SOURCE_ANNOTATION   1
44#endif
45
46// CPPUNIT_API is defined in <config_msvc6.h> if required (building or using as dll)
47#ifndef CPPUNIT_API
48#	ifdef BUILDING_CPPUNIT
49#		define CPPUNIT_API	_EXPORT
50#	else
51#		define CPPUNIT_API	_IMPORT
52#	endif
53#undef CPPUNIT_NEED_DLL_DECL
54#define CPPUNIT_NEED_DLL_DECL 0
55#endif
56
57
58/* perform portability hacks */
59
60
61/* Define CPPUNIT_SSTREAM as a stream with a "string str()"
62 * method.
63 */
64#if CPPUNIT_HAVE_SSTREAM
65#   include <sstream>
66    namespace CppUnit {
67      class OStringStream : public std::ostringstream
68      {
69      };
70    }
71#else
72#if CPPUNIT_HAVE_CLASS_STRSTREAM
73#   include <string>
74#   if CPPUNIT_HAVE_STRSTREAM
75#       include <strstream>
76#   else
77#       include <strstream.h>
78#   endif
79
80    namespace CppUnit {
81      class OStringStream : public std::ostrstream
82      {
83      public:
84          std::string str()
85          {
86            (*this) << '\0';
87            std::string msg(std::ostrstream::str());
88            std::ostrstream::freeze(false);
89            return msg;
90          }
91      };
92    }
93#else
94#   error Cannot define CppUnit::OStringStream.
95#endif
96#endif
97
98#endif // CPPUNIT_PORTABILITY_H
99