migrated Pattern to std::shared_ptr

This commit is contained in:
Phil Nash 2017-04-25 21:01:40 +01:00
parent 0807a6910f
commit 851e40a4bb
2 changed files with 8 additions and 6 deletions

View File

@ -22,10 +22,12 @@
namespace Catch {
class TestSpec {
struct Pattern : SharedImpl<> {
struct Pattern {
virtual ~Pattern();
virtual bool matches( TestCaseInfo const& testCase ) const = 0;
};
using PatternPtr = std::shared_ptr<Pattern>;
class NamePattern : public Pattern {
public:
NamePattern( std::string const& name )
@ -52,15 +54,15 @@ namespace Catch {
class ExcludedPattern : public Pattern {
public:
ExcludedPattern( Ptr<Pattern> const& underlyingPattern ) : m_underlyingPattern( underlyingPattern ) {}
ExcludedPattern( PatternPtr const& underlyingPattern ) : m_underlyingPattern( underlyingPattern ) {}
virtual ~ExcludedPattern();
virtual bool matches( TestCaseInfo const& testCase ) const { return !m_underlyingPattern->matches( testCase ); }
private:
Ptr<Pattern> m_underlyingPattern;
PatternPtr m_underlyingPattern;
};
struct Filter {
std::vector<Ptr<Pattern> > m_patterns;
std::vector<PatternPtr> m_patterns;
bool matches( TestCaseInfo const& testCase ) const {
// All patterns in a filter must match for the filter to be a match

View File

@ -104,9 +104,9 @@ namespace Catch {
token = token.substr( 8 );
}
if( !token.empty() ) {
Ptr<TestSpec::Pattern> pattern = new T( token );
TestSpec::PatternPtr pattern = std::make_shared<T>( token );
if( m_exclusion )
pattern = new TestSpec::ExcludedPattern( pattern );
pattern = std::make_shared<TestSpec::ExcludedPattern>( pattern );
m_currentFilter.m_patterns.push_back( pattern );
}
m_exclusion = false;