Read-only mirrors. Development, issues and pull requests are on GitHub.

summaryrefslogtreecommitdiffhomepage
path: root/include/internal/catch_context.cpp
diff options
context:
space:
mode:
authorBaruch Burstein2017-07-09 12:48:29 +0300
committerBaruch Burstein2017-07-09 12:48:29 +0300
commitaf05ccfe5d9096e203f63e5cde07e6767f532334 (patch)
treede302ee0ef9b1cb671ad81e4a19716e37f6e6f2b /include/internal/catch_context.cpp
parent058b21e604dd3486fe4f7957e4a4485104943905 (diff)
parentfc32165d48f0a46a60ac02e0e52f8c89adafd8be (diff)
downloadcatch3-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.cpp70
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