diff options
author | onqtam <vik.kirilov@gmail.com> | 2017-03-26 23:12:26 +0300 |
---|---|---|
committer | onqtam <vik.kirilov@gmail.com> | 2017-05-16 00:22:16 +0300 |
commit | d096dc26fe355195127cc1aa19d905d702368be4 (patch) | |
tree | ff03706c69ce959647083d0ecdbb92633c886263 | |
parent | a369a98ea4c34bf1e1fde65c23bea6e9bced7261 (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.h | 29 | ||||
-rw-r--r-- | doctest/parts/doctest_fwd.h | 27 | ||||
-rw-r--r-- | doctest/parts/doctest_impl.h | 2 |
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(); |