2020-08-30 15:43:45 +02:00
|
|
|
|
|
|
|
|
// Copyright Catch2 Authors
|
|
|
|
|
// Distributed under the Boost Software License, Version 1.0.
|
2022-10-28 11:22:53 +02:00
|
|
|
// (See accompanying file LICENSE.txt or copy at
|
2020-08-30 15:43:45 +02:00
|
|
|
// https://www.boost.org/LICENSE_1_0.txt)
|
|
|
|
|
|
|
|
|
|
// SPDX-License-Identifier: BSL-1.0
|
2020-08-29 20:48:32 +02:00
|
|
|
#ifndef CATCH_CONTEXT_HPP_INCLUDED
|
|
|
|
|
#define CATCH_CONTEXT_HPP_INCLUDED
|
2012-05-10 07:58:48 +01:00
|
|
|
|
2022-09-17 14:58:52 +02:00
|
|
|
#include <catch2/internal/catch_compiler_capabilities.hpp>
|
|
|
|
|
|
2012-05-15 23:58:23 +01:00
|
|
|
namespace Catch {
|
|
|
|
|
|
2022-04-11 00:00:19 +02:00
|
|
|
class IResultCapture;
|
|
|
|
|
class IConfig;
|
2012-05-10 07:58:48 +01:00
|
|
|
|
2023-03-16 10:04:03 +01:00
|
|
|
class Context {
|
|
|
|
|
IConfig const* m_config = nullptr;
|
|
|
|
|
IResultCapture* m_resultCapture = nullptr;
|
2013-07-03 19:14:59 +01:00
|
|
|
|
2023-03-16 10:04:03 +01:00
|
|
|
CATCH_EXPORT static Context* currentContext;
|
|
|
|
|
friend Context& getCurrentMutableContext();
|
|
|
|
|
friend Context const& getCurrentContext();
|
2017-11-17 14:55:30 -06:00
|
|
|
static void createContext();
|
2023-03-16 10:04:03 +01:00
|
|
|
friend void cleanUpContext();
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
IResultCapture* getResultCapture() const { return m_resultCapture; }
|
|
|
|
|
IConfig const* getConfig() const { return m_config; }
|
|
|
|
|
void setResultCapture( IResultCapture* resultCapture );
|
|
|
|
|
void setConfig( IConfig const* config );
|
2012-05-21 18:52:09 +01:00
|
|
|
};
|
|
|
|
|
|
2023-03-16 10:04:03 +01:00
|
|
|
Context& getCurrentMutableContext();
|
2017-11-17 14:55:30 -06:00
|
|
|
|
2023-03-16 10:04:03 +01:00
|
|
|
inline Context const& getCurrentContext() {
|
|
|
|
|
// We duplicate the logic from `getCurrentMutableContext` here,
|
|
|
|
|
// to avoid paying the call overhead in debug mode.
|
|
|
|
|
if ( !Context::currentContext ) { Context::createContext(); }
|
|
|
|
|
// NOLINTNEXTLINE(clang-analyzer-core.uninitialized.UndefReturn)
|
|
|
|
|
return *Context::currentContext;
|
2017-11-17 14:55:30 -06:00
|
|
|
}
|
|
|
|
|
|
2012-08-08 08:33:54 +01:00
|
|
|
void cleanUpContext();
|
2019-10-06 21:47:54 +02:00
|
|
|
|
|
|
|
|
class SimplePcg32;
|
2022-05-17 15:37:14 +02:00
|
|
|
SimplePcg32& sharedRng();
|
2012-05-10 07:58:48 +01:00
|
|
|
}
|
|
|
|
|
|
2020-08-29 20:48:32 +02:00
|
|
|
#endif // CATCH_CONTEXT_HPP_INCLUDED
|