diff options
| author | Baruch Burstein | 2017-07-09 12:48:29 +0300 |
|---|---|---|
| committer | Baruch Burstein | 2017-07-09 12:48:29 +0300 |
| commit | af05ccfe5d9096e203f63e5cde07e6767f532334 (patch) | |
| tree | de302ee0ef9b1cb671ad81e4a19716e37f6e6f2b /include/internal/catch_context.cpp | |
| parent | 058b21e604dd3486fe4f7957e4a4485104943905 (diff) | |
| parent | fc32165d48f0a46a60ac02e0e52f8c89adafd8be (diff) | |
| download | catch3-af05ccfe5d9096e203f63e5cde07e6767f532334.tar.gz | |
Merge remote-tracking branch 'upstream/dev-modernize' into dev-better-verbosity
Diffstat (limited to 'include/internal/catch_context.cpp')
| -rw-r--r-- | include/internal/catch_context.cpp | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/include/internal/catch_context.cpp b/include/internal/catch_context.cpp new file mode 100644 index 00000000..44d8a99e --- /dev/null +++ b/include/internal/catch_context.cpp @@ -0,0 +1,70 @@ +/* + * 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_IMPL_HPP_INCLUDED +#define TWOBLUECUBES_CATCH_CONTEXT_IMPL_HPP_INCLUDED + +#include "catch_stream.h" +#include "catch_context.h" +#include "catch_common.h" + +namespace Catch { + + class Context : public IMutableContext, NonCopyable { + + public: // IContext + virtual IResultCapture* getResultCapture() { + return m_resultCapture; + } + virtual IRunner* getRunner() { + return m_runner; + } + + virtual IConfigPtr getConfig() const { + return m_config; + } + + public: // IMutableContext + virtual void setResultCapture( IResultCapture* resultCapture ) { + m_resultCapture = resultCapture; + } + virtual void setRunner( IRunner* runner ) { + m_runner = runner; + } + virtual void setConfig( IConfigPtr const& config ) { + m_config = config; + } + + friend IMutableContext& getCurrentMutableContext(); + + private: + + private: + IConfigPtr m_config; + IRunner* m_runner = nullptr; + IResultCapture* m_resultCapture = nullptr; + }; + + namespace { + Context* currentContext = nullptr; + } + IMutableContext& getCurrentMutableContext() { + if( !currentContext ) + currentContext = new Context(); + return *currentContext; + } + IContext& getCurrentContext() { + return getCurrentMutableContext(); + } + + void cleanUpContext() { + delete currentContext; + currentContext = nullptr; + } +} + +#endif // TWOBLUECUBES_CATCH_CONTEXT_IMPL_HPP_INCLUDED |