Read-only mirrors. Development, issues and pull requests are on GitHub.

summaryrefslogtreecommitdiffhomepage
path: root/single_include
diff options
context:
space:
mode:
authorPhil Nash2015-06-30 18:26:09 +0100
committerPhil Nash2015-06-30 18:26:09 +0100
commit3b18d9e962835100d7e12ac80d22882e408e40dc (patch)
tree518c1d380fa91498660db4549c198f56c0856ab2 /single_include
parent6d5797231c8d362c94282dd4cc85b0264fc6bec8 (diff)
downloadcatch3-1.2.1.tar.gz
build for v1.2.1v1.2.1
Diffstat (limited to 'single_include')
-rw-r--r--single_include/catch.hpp219
1 files changed, 79 insertions, 140 deletions
diff --git a/single_include/catch.hpp b/single_include/catch.hpp
index 24d677fc..de61226c 100644
--- a/single_include/catch.hpp
+++ b/single_include/catch.hpp
@@ -1,6 +1,6 @@
/*
- * Catch v1.2.0
- * Generated: 2015-06-29 08:12:52.943445
+ * Catch v1.2.1
+ * Generated: 2015-06-30 18:23:27.961086
* ----------------------------------------------------------
* This file has been merged from multiple headers. Please don't edit it directly
* Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved.
@@ -87,19 +87,23 @@
// CATCH_CONFIG_CPP11_OR_GREATER : Is C++11 supported?
-// CATCH_CONFIG_SFINAE : is basic (C++03) SFINAE supported?
// CATCH_CONFIG_VARIADIC_MACROS : are variadic macros supported?
-// A lot of this code is based on Boost (1.53)
+// In general each macro has a _NO_<feature name> form
+// (e.g. CATCH_CONFIG_CPP11_NO_NULLPTR) which disables the feature.
+// Many features, at point of detection, define an _INTERNAL_ macro, so they
+// can be combined, en-mass, with the _NO_ forms later.
+
+// All the C++11 features can be disabled with CATCH_CONFIG_NO_CPP11
#ifdef __clang__
# if __has_feature(cxx_nullptr)
-# define CATCH_CONFIG_CPP11_NULLPTR
+# define CATCH_INTERNAL_CONFIG_CPP11_NULLPTR
# endif
# if __has_feature(cxx_noexcept)
-# define CATCH_CONFIG_CPP11_NOEXCEPT
+# define CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT
# endif
#endif // __clang__
@@ -108,51 +112,26 @@
// Borland
#ifdef __BORLANDC__
-#if (__BORLANDC__ > 0x582 )
-//#define CATCH_CONFIG_SFINAE // Not confirmed
-#endif
-
#endif // __BORLANDC__
////////////////////////////////////////////////////////////////////////////////
// EDG
#ifdef __EDG_VERSION__
-#if (__EDG_VERSION__ > 238 )
-//#define CATCH_CONFIG_SFINAE // Not confirmed
-#endif
-
#endif // __EDG_VERSION__
////////////////////////////////////////////////////////////////////////////////
// Digital Mars
#ifdef __DMC__
-#if (__DMC__ > 0x840 )
-//#define CATCH_CONFIG_SFINAE // Not confirmed
-#endif
-
#endif // __DMC__
////////////////////////////////////////////////////////////////////////////////
// GCC
#ifdef __GNUC__
-#if __GNUC__ < 3
-
-#if (__GNUC_MINOR__ >= 96 )
-//#define CATCH_CONFIG_SFINAE
-#endif
-
-#elif __GNUC__ >= 3
-
-// #define CATCH_CONFIG_SFINAE // Taking this out completely for now
-
-#endif // __GNUC__ < 3
-
#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6 && defined(__GXX_EXPERIMENTAL_CXX0X__) )
-
-#define CATCH_CONFIG_CPP11_NULLPTR
+# define CATCH_INTERNAL_CONFIG_CPP11_NULLPTR
#endif
#endif // __GNUC__
@@ -161,17 +140,13 @@
// Visual C++
#ifdef _MSC_VER
-#if (_MSC_VER >= 1310 ) // (VC++ 7.0+)
-//#define CATCH_CONFIG_SFINAE // Not confirmed
-#endif
-
#if (_MSC_VER >= 1600)
-#define CATCH_CONFIG_CPP11_NULLPTR
+# define CATCH_INTERNAL_CONFIG_CPP11_NULLPTR
#endif
#if (_MSC_VER >= 1900 ) // (VC++ 13 (VS2015))
-#define CATCH_CONFIG_CPP11_NOEXCEPT
-#define CATCH_CONFIG_CPP11_GENERATED_METHODS
+#define CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT
+#define CATCH_INTERNAL_CONFIG_CPP11_GENERATED_METHODS
#endif
#endif // _MSC_VER
@@ -182,9 +157,7 @@
( defined __GNUC__ && __GNUC__ >= 3 ) || \
( !defined __cplusplus && __STDC_VERSION__ >= 199901L || __cplusplus >= 201103L )
-#ifndef CATCH_CONFIG_NO_VARIADIC_MACROS
-#define CATCH_CONFIG_VARIADIC_MACROS
-#endif
+#define CATCH_INTERNAL_CONFIG_VARIADIC_MACROS
#endif
@@ -196,36 +169,52 @@
# define CATCH_CPP11_OR_GREATER
-# ifndef CATCH_CONFIG_CPP11_NULLPTR
-# define CATCH_CONFIG_CPP11_NULLPTR
-# endif
-
-# ifndef CATCH_CONFIG_CPP11_NOEXCEPT
-# define CATCH_CONFIG_CPP11_NOEXCEPT
+# if !defined(CATCH_INTERNAL_CONFIG_CPP11_NULLPTR)
+# define CATCH_INTERNAL_CONFIG_CPP11_NULLPTR
# endif
-# ifndef CATCH_CONFIG_CPP11_GENERATED_METHODS
-# define CATCH_CONFIG_CPP11_GENERATED_METHODS
+# ifndef CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT
+# define CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT
# endif
-# ifndef CATCH_CONFIG_CPP11_IS_ENUM
-# define CATCH_CONFIG_CPP11_IS_ENUM
+# ifndef CATCH_INTERNAL_CONFIG_CPP11_GENERATED_METHODS
+# define CATCH_INTERNAL_CONFIG_CPP11_GENERATED_METHODS
# endif
-# ifndef CATCH_CONFIG_CPP11_TUPLE
-# define CATCH_CONFIG_CPP11_TUPLE
+# ifndef CATCH_INTERNAL_CONFIG_CPP11_IS_ENUM
+# define CATCH_INTERNAL_CONFIG_CPP11_IS_ENUM
# endif
-# ifndef CATCH_CONFIG_SFINAE
-//# define CATCH_CONFIG_SFINAE // Don't use, for now
+# ifndef CATCH_INTERNAL_CONFIG_CPP11_TUPLE
+# define CATCH_INTERNAL_CONFIG_CPP11_TUPLE
# endif
-# ifndef CATCH_CONFIG_VARIADIC_MACROS
-# define CATCH_CONFIG_VARIADIC_MACROS
+# ifndef CATCH_INTERNAL_CONFIG_VARIADIC_MACROS
+# define CATCH_INTERNAL_CONFIG_VARIADIC_MACROS
# endif
#endif // __cplusplus >= 201103L
+// Now set the actual defines based on the above + anything the user has configured
+#if defined(CATCH_INTERNAL_CONFIG_CPP11_NULLPTR) && !defined(CATCH_CONFIG_CPP11_NO_NULLPTR) && !defined(CATCH_CONFIG_CPP11_NULLPTR) && !defined(CATCH_CONFIG_NO_CPP11)
+# define CATCH_CONFIG_CPP11_NULLPTR
+#endif
+#if defined(CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT) && !defined(CATCH_CONFIG_CPP11_NO_NOEXCEPT) && !defined(CATCH_CONFIG_CPP11_NOEXCEPT) && !defined(CATCH_CONFIG_NO_CPP11)
+# define CATCH_CONFIG_CPP11_NOEXCEPT
+#endif
+#if defined(CATCH_INTERNAL_CONFIG_CPP11_GENERATED_METHODS) && !defined(CATCH_CONFIG_CPP11_NO_GENERATED_METHODS) && !defined(CATCH_CONFIG_CPP11_GENERATED_METHODS) && !defined(CATCH_CONFIG_NO_CPP11)
+# define CATCH_CONFIG_CPP11_GENERATED_METHODS
+#endif
+#if defined(CATCH_INTERNAL_CONFIG_CPP11_IS_ENUM) && !defined(CATCH_CONFIG_CPP11_NO_IS_ENUM) && !defined(CATCH_CONFIG_CPP11_IS_ENUM) && !defined(CATCH_CONFIG_NO_CPP11)
+# define CATCH_CONFIG_CPP11_IS_ENUM
+#endif
+#if defined(CATCH_INTERNAL_CONFIG_CPP11_TUPLE) && !defined(CATCH_CONFIG_CPP11_NO_TUPLE) && !defined(CATCH_CONFIG_CPP11_TUPLE) && !defined(CATCH_CONFIG_NO_CPP11)
+# define CATCH_CONFIG_CPP11_TUPLE
+#endif
+#if defined(CATCH_INTERNAL_CONFIG_VARIADIC_MACROS) && !defined(CATCH_CONFIG_NO_VARIADIC_MACROS) && !defined(CATCH_CONFIG_VARIADIC_MACROS)
+#define CATCH_CONFIG_VARIADIC_MACROS
+#endif
+
// noexcept support:
#if defined(CATCH_CONFIG_CPP11_NOEXCEPT) && !defined(CATCH_NOEXCEPT)
# define CATCH_NOEXCEPT noexcept
@@ -1022,40 +1011,6 @@ namespace Internal {
// #included from: catch_tostring.h
#define TWOBLUECUBES_CATCH_TOSTRING_H_INCLUDED
-// #included from: catch_sfinae.hpp
-#define TWOBLUECUBES_CATCH_SFINAE_HPP_INCLUDED
-
-// Try to detect if the current compiler supports SFINAE
-
-namespace Catch {
-
- struct TrueType {
- static const bool value = true;
- typedef void Enable;
- char sizer[1];
- };
- struct FalseType {
- static const bool value = false;
- typedef void Disable;
- char sizer[2];
- };
-
-#ifdef CATCH_CONFIG_SFINAE
-
- template<bool> struct NotABooleanExpression;
-
- template<bool c> struct If : NotABooleanExpression<c> {};
- template<> struct If<true> : TrueType {};
- template<> struct If<false> : FalseType {};
-
- template<int size> struct SizedIf;
- template<> struct SizedIf<sizeof(TrueType)> : TrueType {};
- template<> struct SizedIf<sizeof(FalseType)> : FalseType {};
-
-#endif // CATCH_CONFIG_SFINAE
-
-} // end namespace Catch
-
#include <sstream>
#include <iomanip>
#include <limits>
@@ -1154,32 +1109,13 @@ namespace Detail {
extern std::string unprintableString;
-// SFINAE is currently disabled by default for all compilers.
-// If the non SFINAE version of IsStreamInsertable is ambiguous for you
-// and your compiler supports SFINAE, try #defining CATCH_CONFIG_SFINAE
-#ifdef CATCH_CONFIG_SFINAE
-
- template<typename T>
- class IsStreamInsertableHelper {
- template<int N> struct TrueIfSizeable : TrueType {};
-
- template<typename T2>
- static TrueIfSizeable<sizeof((*(std::ostream*)0) << *((T2 const*)0))> dummy(T2*);
- static FalseType dummy(...);
-
- public:
- typedef SizedIf<sizeof(dummy((T*)0))> type;
- };
-
- template<typename T>
- struct IsStreamInsertable : IsStreamInsertableHelper<T>::type {};
-
-#else
-
struct BorgType {
template<typename T> BorgType( T const& );
};
+ struct TrueType { char sizer[1]; };
+ struct FalseType { char sizer[2]; };
+
TrueType& testStreamable( std::ostream& );
FalseType testStreamable( FalseType );
@@ -1192,8 +1128,6 @@ namespace Detail {
enum { value = sizeof( testStreamable(s << t) ) == sizeof( TrueType ) };
};
-#endif
-
#if defined(CATCH_CONFIG_CPP11_IS_ENUM)
template<typename T,
bool IsEnum = std::is_enum<T>::value
@@ -5016,32 +4950,15 @@ namespace SectionTracking {
RunState runState() const { return m_runState; }
- TrackedSection* findChild( std::string const& childName ) {
- TrackedSections::iterator it = m_children.find( childName );
- return it != m_children.end()
- ? &it->second
- : NULL;
- }
- TrackedSection* acquireChild( std::string const& childName ) {
- if( TrackedSection* child = findChild( childName ) )
- return child;
- m_children.insert( std::make_pair( childName, TrackedSection( childName, this ) ) );
- return findChild( childName );
- }
+ TrackedSection* findChild( std::string const& childName );
+ TrackedSection* acquireChild( std::string const& childName );
+
void enter() {
if( m_runState == NotStarted )
m_runState = Executing;
}
- void leave() {
- for( TrackedSections::const_iterator it = m_children.begin(), itEnd = m_children.end();
- it != itEnd;
- ++it )
- if( it->second.runState() != Completed ) {
- m_runState = ExecutingChildren;
- return;
- }
- m_runState = Completed;
- }
+ void leave();
+
TrackedSection* getParent() {
return m_parent;
}
@@ -5054,9 +4971,31 @@ namespace SectionTracking {
RunState m_runState;
TrackedSections m_children;
TrackedSection* m_parent;
-
};
+ inline TrackedSection* TrackedSection::findChild( std::string const& childName ) {
+ TrackedSections::iterator it = m_children.find( childName );
+ return it != m_children.end()
+ ? &it->second
+ : NULL;
+ }
+ inline TrackedSection* TrackedSection::acquireChild( std::string const& childName ) {
+ if( TrackedSection* child = findChild( childName ) )
+ return child;
+ m_children.insert( std::make_pair( childName, TrackedSection( childName, this ) ) );
+ return findChild( childName );
+ }
+ inline void TrackedSection::leave() {
+ for( TrackedSections::const_iterator it = m_children.begin(), itEnd = m_children.end();
+ it != itEnd;
+ ++it )
+ if( it->second.runState() != Completed ) {
+ m_runState = ExecutingChildren;
+ return;
+ }
+ m_runState = Completed;
+ }
+
class TestCaseTracker {
public:
TestCaseTracker( std::string const& testCaseName )
@@ -6828,7 +6767,7 @@ namespace Catch {
return os;
}
- Version libraryVersion( 1, 2, 0, "", 0 );
+ Version libraryVersion( 1, 2, 1, "", 0 );
}