Skip to content

Commit 65d2e03

Browse files
committed
Adapt MemoryOutStream for VC6 __int64 type
1 parent 424918c commit 65d2e03

File tree

3 files changed

+67
-8
lines changed

3 files changed

+67
-8
lines changed

UnitTest++/MemoryOutStream.cpp

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,33 @@ void MemoryOutStream::Clear()
1616
m_text = this->str();
1717
}
1818

19+
#ifdef UNITTEST_COMPILER_IS_MSVC6
20+
21+
#define snprintf _snprintf
22+
23+
template<typename ValueType>
24+
std::ostream& FormatToStream(std::ostream& stream, char const* format, ValueType const& value)
25+
{
26+
using namespace std;
27+
28+
const size_t BUFFER_SIZE=32;
29+
char txt[BUFFER_SIZE];
30+
snprintf(txt, BUFFER_SIZE, format, value);
31+
return stream << txt;
32+
}
33+
34+
std::ostream& operator<<(std::ostream& stream, __int64 const n)
35+
{
36+
return FormatToStream(stream, "%I64d", n);
37+
}
38+
39+
std::ostream& operator<<(std::ostream& stream, unsigned __int64 const n)
40+
{
41+
return FormatToStream(stream, "%I64u", n);
42+
}
43+
44+
#endif
45+
1946
}
2047

2148
#else
@@ -108,7 +135,11 @@ MemoryOutStream& MemoryOutStream::operator <<(unsigned long const n)
108135
return *this;
109136
}
110137

138+
#ifdef UNITTEST_COMPILER_IS_MSVC6
139+
MemoryOutStream& MemoryOutStream::operator <<(__int64 const n)
140+
#else
111141
MemoryOutStream& MemoryOutStream::operator <<(long long const n)
142+
#endif
112143
{
113144
#ifdef UNITTEST_WIN32
114145
FormatToStream(*this, "%I64d", n);
@@ -119,7 +150,11 @@ MemoryOutStream& MemoryOutStream::operator <<(long long const n)
119150
return *this;
120151
}
121152

153+
#ifdef UNITTEST_COMPILER_IS_MSVC6
154+
MemoryOutStream& MemoryOutStream::operator <<(unsigned __int64 const n)
155+
#else
122156
MemoryOutStream& MemoryOutStream::operator <<(unsigned long long const n)
157+
#endif
123158
{
124159
#ifdef UNITTEST_WIN32
125160
FormatToStream(*this, "%I64u", n);

UnitTest++/MemoryOutStream.h

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,21 @@ class UNITTEST_LINKAGE MemoryOutStream : public std::ostringstream
2626
mutable std::string m_text;
2727
};
2828

29+
#ifdef UNITTEST_COMPILER_IS_MSVC6
30+
std::ostream& operator<<(std::ostream& stream, __int64 const n);
31+
std::ostream& operator<<(std::ostream& stream, unsigned __int64 const n);
32+
#endif
33+
2934
}
3035

3136
#else
3237

3338
#include <cstddef>
3439

40+
#ifdef UNITTEST_COMPILER_IS_MSVC6
41+
namespace std {}
42+
#endif
43+
3544
namespace UnitTest
3645
{
3746

@@ -47,10 +56,15 @@ class UNITTEST_LINKAGE MemoryOutStream
4756
MemoryOutStream& operator <<(char const* txt);
4857
MemoryOutStream& operator <<(int n);
4958
MemoryOutStream& operator <<(long n);
50-
MemoryOutStream& operator <<(long long n);
5159
MemoryOutStream& operator <<(unsigned long n);
52-
MemoryOutStream& operator <<(unsigned long long n);
53-
MemoryOutStream& operator <<(float f);
60+
#ifdef UNITTEST_COMPILER_IS_MSVC6
61+
MemoryOutStream& operator <<(__int64 n);
62+
MemoryOutStream& operator <<(unsigned __int64 n);
63+
#else
64+
MemoryOutStream& operator <<(long long n);
65+
MemoryOutStream& operator <<(unsigned long long n);
66+
#endif
67+
MemoryOutStream& operator <<(float f);
5468
MemoryOutStream& operator <<(double d);
5569
MemoryOutStream& operator <<(void const* p);
5670
MemoryOutStream& operator <<(unsigned int s);

tests/TestMemoryOutStream.cpp

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -167,12 +167,15 @@ TEST(StreamingMinUnsignedLongWritesCorrectCharacters)
167167
CHECK_EQUAL("0", stream.GetText());
168168
}
169169

170-
#ifndef UNITTEST_COMPILER_IS_MSVC6
171170
TEST(StreamingLongLongWritesCorrectCharacters)
172171
{
173172
MemoryOutStream stream;
173+
#ifdef UNITTEST_COMPILER_IS_MSVC6
174+
stream << (__int64)-12345i64;
175+
#else
174176
stream << (long long)-12345ll;
175-
CHECK_EQUAL("-12345", stream.GetText());
177+
#endif
178+
CHECK_EQUAL("-12345", stream.GetText());
176179
}
177180

178181
#ifdef LLONG_MAX
@@ -196,8 +199,12 @@ TEST(StreamingMinLongLongWritesCorrectCharacters)
196199
TEST(StreamingUnsignedLongLongWritesCorrectCharacters)
197200
{
198201
MemoryOutStream stream;
199-
stream << (unsigned long long)85899ull;
200-
CHECK_EQUAL("85899", stream.GetText());
202+
#ifdef UNITTEST_COMPILER_IS_MSVC6
203+
stream << (unsigned __int64)85899ui64;
204+
#else
205+
stream << (unsigned long long)85899ull;
206+
#endif
207+
CHECK_EQUAL("85899", stream.GetText());
201208
}
202209

203210
#ifdef ULLONG_MAX
@@ -212,10 +219,13 @@ TEST(StreamingMaxUnsignedLongLongWritesCorrectCharacters)
212219
TEST(StreamingMinUnsignedLongLongWritesCorrectCharacters)
213220
{
214221
MemoryOutStream stream;
222+
#ifdef UNITTEST_COMPILER_IS_MSVC6
223+
stream << (unsigned __int64)0ui64;
224+
#else
215225
stream << (unsigned long long)0ull;
226+
#endif
216227
CHECK_EQUAL("0", stream.GetText());
217228
}
218-
#endif
219229

220230
TEST(StreamingFloatWritesCorrectCharacters)
221231
{

0 commit comments

Comments
 (0)