1 /*
2  *  Created by Phil on 5/8/2012.
3  *  Copyright 2012 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_INTERFACES_REGISTRY_HUB_H_INCLUDED
9 #define TWOBLUECUBES_CATCH_INTERFACES_REGISTRY_HUB_H_INCLUDED
10 
11 #include "catch_ptr.hpp"
12 
13 #include <string>
14 
15 namespace Catch {
16 
17     class TestCase;
18     struct ITestCaseRegistry;
19     struct IExceptionTranslatorRegistry;
20     struct IExceptionTranslator;
21     struct IReporterRegistry;
22     struct IReporterFactory;
23     struct ITagAliasRegistry;
24 
25     struct IRegistryHub {
26         virtual ~IRegistryHub();
27 
28         virtual IReporterRegistry const& getReporterRegistry() const = 0;
29         virtual ITestCaseRegistry const& getTestCaseRegistry() const = 0;
30         virtual ITagAliasRegistry const& getTagAliasRegistry() const = 0;
31 
32         virtual IExceptionTranslatorRegistry& getExceptionTranslatorRegistry() = 0;
33     };
34 
35     struct IMutableRegistryHub {
36         virtual ~IMutableRegistryHub();
37         virtual void registerReporter( std::string const& name, Ptr<IReporterFactory> const& factory ) = 0;
38         virtual void registerListener( Ptr<IReporterFactory> const& factory ) = 0;
39         virtual void registerTest( TestCase const& testInfo ) = 0;
40         virtual void registerTranslator( const IExceptionTranslator* translator ) = 0;
41         virtual void registerTagAlias( std::string const& alias, std::string const& tag, SourceLineInfo const& lineInfo ) = 0;
42     };
43 
44     IRegistryHub& getRegistryHub();
45     IMutableRegistryHub& getMutableRegistryHub();
46     void cleanUp();
47     std::string translateActiveException();
48 
49 }
50 
51 #endif // TWOBLUECUBES_CATCH_INTERFACES_REGISTRY_HUB_H_INCLUDED
52