Removed "singleton" method from context

There is now a global "currentContext" - but Context itself is not aware of it
This commit is contained in:
Phil Nash 2012-05-22 08:55:19 +01:00
parent 61319a9bc1
commit 9fa9d4279c
2 changed files with 17 additions and 24 deletions

View File

@ -51,10 +51,6 @@ namespace Catch {
Context( const Context& );
void operator=( const Context& );
public: // friends
friend IContext& getCurrentContext() { return Context::getCurrent(); }
friend IMutableContext& getCurrentMutableContext() { return Context::getCurrent(); }
public: // IContext
virtual IResultCapture& getResultCapture();
virtual IRunner& getRunner();
@ -72,9 +68,9 @@ namespace Catch {
static std::streambuf* createStreamBuf( const std::string& streamName );
static void cleanUp();
friend IMutableContext& getCurrentMutableContext();
private:
static Context& getCurrent();
static Context*& singleInstance();
GeneratorsForTest* findGeneratorsForCurrentTest();
GeneratorsForTest& getGeneratorsForCurrentTest();

View File

@ -17,7 +17,17 @@
namespace Catch {
namespace {
Context* currentHub = NULL;
}
IMutableContext& getCurrentMutableContext() {
if( !currentHub )
currentHub = new Context();
return *currentHub;
}
IContext& getCurrentContext() {
return getCurrentMutableContext();
}
Context::Context()
: m_reporterRegistry( new ReporterRegistry ),
@ -25,22 +35,9 @@ namespace Catch {
m_exceptionTranslatorRegistry( new ExceptionTranslatorRegistry )
{}
Context*& Context::singleInstance() {
static Context* hub = NULL;
return hub;
}
Context& Context::getCurrent() {
Context*& hub = singleInstance();
if( !hub )
hub = new Context();
return *hub;
}
void Context::cleanUp() {
Context*& hub = singleInstance();
delete hub;
hub = NULL;
delete currentHub;
currentHub = NULL;
}
void Context::setRunner( IRunner* runner ) {
@ -80,7 +77,7 @@ namespace Catch {
}
GeneratorsForTest* Context::findGeneratorsForCurrentTest() {
std::string testName = getCurrentContext().getResultCapture().getCurrentTestName();
std::string testName = getResultCapture().getCurrentTestName();
std::map<std::string, GeneratorsForTest*>::const_iterator it =
m_generatorsByTestName.find( testName );
@ -92,7 +89,7 @@ namespace Catch {
GeneratorsForTest& Context::getGeneratorsForCurrentTest() {
GeneratorsForTest* generators = findGeneratorsForCurrentTest();
if( !generators ) {
std::string testName = getCurrentContext().getResultCapture().getCurrentTestName();
std::string testName = getResultCapture().getCurrentTestName();
generators = new GeneratorsForTest();
m_generatorsByTestName.insert( std::make_pair( testName, generators ) );
}