| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 | /* *  Created by Phil on 29/10/2010. *  Copyright 2010 Two Blue Cubes Ltd. All rights reserved. * *  Distributed under the Boost Software License, Version 1.0. (See accompanying *  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) */#ifndef TWOBLUECUBES_CATCH_COMMON_H_INCLUDED#define TWOBLUECUBES_CATCH_COMMON_H_INCLUDED#include "catch_compiler_capabilities.h"#define INTERNAL_CATCH_UNIQUE_NAME_LINE2( name, line ) name##line#define INTERNAL_CATCH_UNIQUE_NAME_LINE( name, line ) INTERNAL_CATCH_UNIQUE_NAME_LINE2( name, line )#ifdef CATCH_CONFIG_COUNTER#  define INTERNAL_CATCH_UNIQUE_NAME( name ) INTERNAL_CATCH_UNIQUE_NAME_LINE( name, __COUNTER__ )#else#  define INTERNAL_CATCH_UNIQUE_NAME( name ) INTERNAL_CATCH_UNIQUE_NAME_LINE( name, __LINE__ )#endif#include <iosfwd>#include <string>#include <cstdint>// We need a dummy global operator<< so we can bring it into Catch namespace laterstruct Catch_global_namespace_dummy {};std::ostream& operator<<(std::ostream&, Catch_global_namespace_dummy);namespace Catch {    struct CaseSensitive { enum Choice {        Yes,        No    }; };    class NonCopyable {        NonCopyable( NonCopyable const& )              = delete;        NonCopyable( NonCopyable && )                  = delete;        NonCopyable& operator = ( NonCopyable const& ) = delete;        NonCopyable& operator = ( NonCopyable && )     = delete;    protected:        NonCopyable();        virtual ~NonCopyable();    };    struct SourceLineInfo {        SourceLineInfo() = delete;        SourceLineInfo( char const* _file, std::size_t _line ) noexcept        :   file( _file ),            line( _line )        {}        SourceLineInfo( SourceLineInfo const& other )            = default;        SourceLineInfo& operator = ( SourceLineInfo const& )     = default;        SourceLineInfo( SourceLineInfo&& )              noexcept = default;        SourceLineInfo& operator = ( SourceLineInfo&& ) noexcept = default;        bool empty() const noexcept { return file[0] == '\0'; }        bool operator == ( SourceLineInfo const& other ) const noexcept;        bool operator < ( SourceLineInfo const& other ) const noexcept;        char const* file;        std::size_t line;    };    std::ostream& operator << ( std::ostream& os, SourceLineInfo const& info );    // Bring in operator<< from global namespace into Catch namespace    // This is necessary because the overload of operator<< above makes    // lookup stop at namespace Catch    using ::operator<<;    // Use this in variadic streaming macros to allow    //    >> +StreamEndStop    // as well as    //    >> stuff +StreamEndStop    struct StreamEndStop {        std::string operator+() const;    };    template<typename T>    T const& operator + ( T const& value, StreamEndStop ) {        return value;    }}#define CATCH_INTERNAL_LINEINFO \    ::Catch::SourceLineInfo( __FILE__, static_cast<std::size_t>( __LINE__ ) )#endif // TWOBLUECUBES_CATCH_COMMON_H_INCLUDED
 |