1 /*
2  *  Created by Phil on 31/12/2010.
3  *  Copyright 2010 Two Blue Cubes Ltd. All rights reserved.
4  *
5  *  Distributed under the Boost Software License, Version 1.0. (See accompanying
6  *  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7  */
8 #ifndef TWOBLUECUBES_CATCH_CONTEXT_H_INCLUDED
9 #define TWOBLUECUBES_CATCH_CONTEXT_H_INCLUDED
10 
11 #include "catch_interfaces_generators.h"
12 #include "catch_ptr.hpp"
13 
14 
15 namespace Catch {
16 
17     class TestCase;
18     class Stream;
19     struct IResultCapture;
20     struct IRunner;
21     struct IGeneratorsForTest;
22     struct IConfig;
23 
24     struct IContext
25     {
26         virtual ~IContext();
27 
28         virtual IResultCapture* getResultCapture() = 0;
29         virtual IRunner* getRunner() = 0;
30         virtual size_t getGeneratorIndex( std::string const& fileInfo, size_t totalSize ) = 0;
31         virtual bool advanceGeneratorsForCurrentTest() = 0;
32         virtual Ptr<IConfig const> getConfig() const = 0;
33     };
34 
35     struct IMutableContext : IContext
36     {
37         virtual ~IMutableContext();
38         virtual void setResultCapture( IResultCapture* resultCapture ) = 0;
39         virtual void setRunner( IRunner* runner ) = 0;
40         virtual void setConfig( Ptr<IConfig const> const& config ) = 0;
41     };
42 
43     IContext& getCurrentContext();
44     IMutableContext& getCurrentMutableContext();
45     void cleanUpContext();
46     Stream createStream( std::string const& streamName );
47 
48 }
49 
50 #endif // TWOBLUECUBES_CATCH_CONTEXT_H_INCLUDED
51