diff options
| author | Martin Hořeňovský | 2017-07-06 22:28:42 +0200 |
|---|---|---|
| committer | Martin Hořeňovský | 2017-07-06 22:28:42 +0200 |
| commit | fc32165d48f0a46a60ac02e0e52f8c89adafd8be (patch) | |
| tree | acf2c6dc020615db581ce425b7ce0a424d801f83 /include/internal/catch_context.cpp | |
| parent | 0016362f69804ae18953a0ec11d0c108e8402e1d (diff) | |
| download | catch3-fc32165d48f0a46a60ac02e0e52f8c89adafd8be.tar.gz | |
Started work on splitting out .cpp files from header files
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 |