summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoronqtam <vik.kirilov@gmail.com>2017-03-26 23:12:26 +0300
committeronqtam <vik.kirilov@gmail.com>2017-05-16 00:22:16 +0300
commitd096dc26fe355195127cc1aa19d905d702368be4 (patch)
treeff03706c69ce959647083d0ecdbb92633c886263
parenta369a98ea4c34bf1e1fde65c23bea6e9bced7261 (diff)
moving from references to pointers when using a forward-declared std::ostream - trying to fix builds for VS 2008/2010/2012/2013 - oddly enough 2015/2017 pass (also all gcc/clang versions under linux/osx pass as well...) - relates #23 relates #48
-rw-r--r--doctest/doctest.h29
-rw-r--r--doctest/parts/doctest_fwd.h27
-rw-r--r--doctest/parts/doctest_impl.h2
3 files changed, 26 insertions, 32 deletions
diff --git a/doctest/doctest.h b/doctest/doctest.h
index 04e3c4b..ec0f46b 100644
--- a/doctest/doctest.h
+++ b/doctest/doctest.h
@@ -1272,9 +1272,8 @@ namespace detail
struct StringStreamBase
{
template <typename T>
- static std::ostream& convert(std::ostream& stream, const T& in) {
- stream << toString(in);
- return stream;
+ static void convert(std::ostream* stream, const T& in) {
+ *stream << toString(in);
}
};
@@ -1282,9 +1281,8 @@ namespace detail
struct StringStreamBase<true>
{
template <typename T>
- static std::ostream& convert(std::ostream& stream, const T& in) {
- stream << in;
- return stream;
+ static void convert(std::ostream* stream, const T& in) {
+ *stream << in;
}
};
@@ -1293,12 +1291,12 @@ namespace detail
{};
template <typename T>
- std::ostream& toStream(std::ostream& stream, const DOCTEST_REF_WRAP(T) value) {
- return StringStream<T>::convert(stream, value);
+ void toStream(std::ostream* stream, const DOCTEST_REF_WRAP(T) value) {
+ StringStream<T>::convert(stream, value);
}
struct IContextScope {
- virtual void build(std::ostream&) const = 0;
+ virtual void build(std::ostream*) const = 0;
};
DOCTEST_INTERFACE void addToContexts(IContextScope* ptr);
@@ -1308,7 +1306,7 @@ namespace detail
friend class ContextScope;
struct ICapture {
- virtual std::ostream& toStream(std::ostream&) const = 0;
+ virtual void toStream(std::ostream*) const = 0;
};
template<typename T>
@@ -1318,9 +1316,8 @@ namespace detail
Capture(const T* in)
: capture(in)
{}
- virtual std::ostream& toStream(std::ostream& stream) const { // override
+ virtual void toStream(std::ostream* stream) const { // override
doctest::detail::toStream(stream, *capture);
- return stream;
}
};
@@ -1338,7 +1335,7 @@ namespace detail
Node* head;
Node* tail;
- void build(std::ostream& stream) const {
+ void build(std::ostream* stream) const {
int curr = 0;
// iterate over small buffer
while(curr < numCaptures && curr < DOCTEST_CONFIG_NUM_CAPTURES_ON_STACK)
@@ -1361,7 +1358,7 @@ namespace detail
other.numCaptures = 0;
other.head = 0;
other.tail = 0;
- my_memcpy(stackChunks, other.stackChunks, sizeof(Chunk) * DOCTEST_CONFIG_NUM_CAPTURES_ON_STACK);
+ my_memcpy(stackChunks, other.stackChunks, sizeof(Chunk) * unsigned(DOCTEST_CONFIG_NUM_CAPTURES_ON_STACK));
}
public:
@@ -1432,7 +1429,7 @@ namespace detail
popFromContexts();
}
- void build(std::ostream& stream) const {
+ void build(std::ostream* stream) const {
contextBuilder.build(stream);
}
};
@@ -3392,7 +3389,7 @@ namespace detail
stream << "with context:\n";
for(size_t i = 0; i < contexts.size(); ++i) {
stream << " ";
- contexts[i]->build(stream);
+ contexts[i]->build(&stream);
stream << "\n";
}
return stream.str().c_str();
diff --git a/doctest/parts/doctest_fwd.h b/doctest/parts/doctest_fwd.h
index c57f40a..661c060 100644
--- a/doctest/parts/doctest_fwd.h
+++ b/doctest/parts/doctest_fwd.h
@@ -1269,9 +1269,8 @@ namespace detail
struct StringStreamBase
{
template <typename T>
- static std::ostream& convert(std::ostream& stream, const T& in) {
- stream << toString(in);
- return stream;
+ static void convert(std::ostream* stream, const T& in) {
+ *stream << toString(in);
}
};
@@ -1279,9 +1278,8 @@ namespace detail
struct StringStreamBase<true>
{
template <typename T>
- static std::ostream& convert(std::ostream& stream, const T& in) {
- stream << in;
- return stream;
+ static void convert(std::ostream* stream, const T& in) {
+ *stream << in;
}
};
@@ -1290,12 +1288,12 @@ namespace detail
{};
template <typename T>
- std::ostream& toStream(std::ostream& stream, const DOCTEST_REF_WRAP(T) value) {
- return StringStream<T>::convert(stream, value);
+ void toStream(std::ostream* stream, const DOCTEST_REF_WRAP(T) value) {
+ StringStream<T>::convert(stream, value);
}
struct IContextScope {
- virtual void build(std::ostream&) const = 0;
+ virtual void build(std::ostream*) const = 0;
};
DOCTEST_INTERFACE void addToContexts(IContextScope* ptr);
@@ -1305,7 +1303,7 @@ namespace detail
friend class ContextScope;
struct ICapture {
- virtual std::ostream& toStream(std::ostream&) const = 0;
+ virtual void toStream(std::ostream*) const = 0;
};
template<typename T>
@@ -1315,9 +1313,8 @@ namespace detail
Capture(const T* in)
: capture(in)
{}
- virtual std::ostream& toStream(std::ostream& stream) const { // override
+ virtual void toStream(std::ostream* stream) const { // override
doctest::detail::toStream(stream, *capture);
- return stream;
}
};
@@ -1335,7 +1332,7 @@ namespace detail
Node* head;
Node* tail;
- void build(std::ostream& stream) const {
+ void build(std::ostream* stream) const {
int curr = 0;
// iterate over small buffer
while(curr < numCaptures && curr < DOCTEST_CONFIG_NUM_CAPTURES_ON_STACK)
@@ -1358,7 +1355,7 @@ namespace detail
other.numCaptures = 0;
other.head = 0;
other.tail = 0;
- my_memcpy(stackChunks, other.stackChunks, sizeof(Chunk) * DOCTEST_CONFIG_NUM_CAPTURES_ON_STACK);
+ my_memcpy(stackChunks, other.stackChunks, sizeof(Chunk) * unsigned(DOCTEST_CONFIG_NUM_CAPTURES_ON_STACK));
}
public:
@@ -1429,7 +1426,7 @@ namespace detail
popFromContexts();
}
- void build(std::ostream& stream) const {
+ void build(std::ostream* stream) const {
contextBuilder.build(stream);
}
};
diff --git a/doctest/parts/doctest_impl.h b/doctest/parts/doctest_impl.h
index 84163cc..e0e4429 100644
--- a/doctest/parts/doctest_impl.h
+++ b/doctest/parts/doctest_impl.h
@@ -1133,7 +1133,7 @@ namespace detail
stream << "with context:\n";
for(size_t i = 0; i < contexts.size(); ++i) {
stream << " ";
- contexts[i]->build(stream);
+ contexts[i]->build(&stream);
stream << "\n";
}
return stream.str().c_str();