23 enum Mode{ None, Name, QuotedName, Tag, EscapedName };
25 bool m_exclusion =
false;
26 std::size_t m_start = std::string::npos, m_pos = 0;
28 std::vector<std::size_t> m_escapeChars;
29 TestSpec::Filter m_currentFilter;
40 void visitChar(
char c );
41 void startNewMode( Mode mode, std::size_t start );
43 std::string subString()
const;
47 std::string token = subString();
48 for( std::size_t i = 0; i < m_escapeChars.size(); ++i )
49 token = token.substr( 0, m_escapeChars[i]-m_start-i ) + token.substr( m_escapeChars[i]-m_start-i+1 );
50 m_escapeChars.clear();
53 token = token.substr( 8 );
55 if( !token.empty() ) {
56 TestSpec::PatternPtr pattern = std::make_shared<T>( token );
58 pattern = std::make_shared<TestSpec::ExcludedPattern>( pattern );
59 m_currentFilter.m_patterns.push_back( pattern );