mirror of
https://github.com/catchorg/Catch2.git
synced 2025-11-02 04:59:32 +01:00
Re-org
This commit is contained in:
63
include/internal/catch_exception_translator_registry.hpp
Normal file
63
include/internal/catch_exception_translator_registry.hpp
Normal file
@@ -0,0 +1,63 @@
|
||||
/*
|
||||
* catch_exception_translator_registry.hpp
|
||||
* Catch
|
||||
*
|
||||
* Created by Phil on 20/04/2011.
|
||||
* Copyright 2011 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_EXCEPTION_TRANSLATOR_HPP_INCLUDED
|
||||
#define TWOBLUECUBES_CATCH_EXCEPTION_TRANSLATOR_HPP_INCLUDED
|
||||
|
||||
#include "catch_interfaces_exception.h"
|
||||
|
||||
namespace Catch
|
||||
{
|
||||
class ExceptionTranslatorRegistry : public IExceptionTranslatorRegistry
|
||||
{
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
virtual void registerTranslator
|
||||
(
|
||||
IExceptionTranslator* translator
|
||||
)
|
||||
{
|
||||
m_translators.push_back( translator );
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
virtual std::string translateActiveException
|
||||
()
|
||||
const
|
||||
{
|
||||
return tryTranslators( m_translators.begin() );
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
std::string tryTranslators
|
||||
(
|
||||
std::vector<IExceptionTranslator*>::const_iterator it
|
||||
)
|
||||
const
|
||||
{
|
||||
if( it == m_translators.end() )
|
||||
return "Unknown exception";
|
||||
|
||||
try
|
||||
{
|
||||
return (*it)->translate();
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
return tryTranslators( it+1 );
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
std::vector<IExceptionTranslator*> m_translators;
|
||||
};
|
||||
}
|
||||
|
||||
#endif // TWOBLUECUBES_CATCH_EXCEPTION_TRANSLATOR_HPP_INCLUDED
|
||||
Reference in New Issue
Block a user