/* * Created by Phil on 31/12/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) */ #include "catch_context.h" #include "catch_common.h" #include "catch_random_number_generator.h" namespace Catch { class Context : public IMutableContext, NonCopyable { public: // IContext IResultCapture* getResultCapture() override { return m_resultCapture; } IRunner* getRunner() override { return m_runner; } IConfigPtr const& getConfig() const override { return m_config; } ~Context() override; public: // IMutableContext void setResultCapture( IResultCapture* resultCapture ) override { m_resultCapture = resultCapture; } void setRunner( IRunner* runner ) override { m_runner = runner; } void setConfig( IConfigPtr const& config ) override { m_config = config; } friend IMutableContext& getCurrentMutableContext(); private: IConfigPtr m_config; IRunner* m_runner = nullptr; IResultCapture* m_resultCapture = nullptr; }; IMutableContext *IMutableContext::currentContext = nullptr; void IMutableContext::createContext() { currentContext = new Context(); } void cleanUpContext() { delete IMutableContext::currentContext; IMutableContext::currentContext = nullptr; } IContext::~IContext() = default; IMutableContext::~IMutableContext() = default; Context::~Context() = default; SimplePcg32& rng() { static SimplePcg32 s_rng; return s_rng; } }