12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- /*
- * 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)
- */
- #ifndef TWOBLUECUBES_CATCH_CONTEXT_H_INCLUDED
- #define TWOBLUECUBES_CATCH_CONTEXT_H_INCLUDED
- #include <memory>
- namespace Catch {
- struct IResultCapture;
- struct IRunner;
- struct IConfig;
- struct IMutableContext;
- using IConfigPtr = std::shared_ptr<IConfig const>;
- struct IContext
- {
- virtual ~IContext();
- virtual IResultCapture* getResultCapture() = 0;
- virtual IRunner* getRunner() = 0;
- virtual IConfigPtr const& getConfig() const = 0;
- };
- struct IMutableContext : IContext
- {
- virtual ~IMutableContext();
- virtual void setResultCapture( IResultCapture* resultCapture ) = 0;
- virtual void setRunner( IRunner* runner ) = 0;
- virtual void setConfig( IConfigPtr const& config ) = 0;
- private:
- static IMutableContext *currentContext;
- friend IMutableContext& getCurrentMutableContext();
- friend void cleanUpContext();
- static void createContext();
- };
- inline IMutableContext& getCurrentMutableContext()
- {
- if( !IMutableContext::currentContext )
- IMutableContext::createContext();
- // NOLINTNEXTLINE(clang-analyzer-core.uninitialized.UndefReturn)
- return *IMutableContext::currentContext;
- }
- inline IContext& getCurrentContext()
- {
- return getCurrentMutableContext();
- }
- void cleanUpContext();
- class SimplePcg32;
- SimplePcg32& rng();
- }
- #endif // TWOBLUECUBES_CATCH_CONTEXT_H_INCLUDED
|