| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | 
							- /*
 
-  *  Created by Phil on 15/5/2013.
 
-  *  Copyright 2014 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_TEST_SPEC_PARSER_HPP_INCLUDED
 
- #define TWOBLUECUBES_CATCH_TEST_SPEC_PARSER_HPP_INCLUDED
 
- #ifdef __clang__
 
- #pragma clang diagnostic push
 
- #pragma clang diagnostic ignored "-Wpadded"
 
- #endif
 
- #include "catch_test_spec.h"
 
- #include "catch_string_manip.h"
 
- #include "catch_interfaces_tag_alias_registry.h"
 
- namespace Catch {
 
-     class TestSpecParser {
 
-         enum Mode{ None, Name, QuotedName, Tag, EscapedName };
 
-         Mode m_mode = None;
 
-         Mode lastMode = None;
 
-         bool m_exclusion = false;
 
-         std::size_t m_pos = 0;
 
-         std::size_t m_realPatternPos = 0;
 
-         std::string m_arg;
 
-         std::string m_substring;
 
-         std::string m_patternName;
 
-         std::vector<std::size_t> m_escapeChars;
 
-         TestSpec::Filter m_currentFilter;
 
-         TestSpec m_testSpec;
 
-         ITagAliasRegistry const* m_tagAliases = nullptr;
 
-     public:
 
-         TestSpecParser( ITagAliasRegistry const& tagAliases );
 
-         TestSpecParser& parse( std::string const& arg );
 
-         TestSpec testSpec();
 
-     private:
 
-         bool visitChar( char c );
 
-         void startNewMode( Mode mode );
 
-         bool processNoneChar( char c );
 
-         void processNameChar( char c );
 
-         bool processOtherChar( char c );
 
-         void endMode();
 
-         void escape();
 
-         bool isControlChar( char c ) const;
 
-         void saveLastMode();
 
-         void revertBackToLastMode();
 
-         void addFilter();
 
-         bool separate();
 
-         // Handles common preprocessing of the pattern for name/tag patterns
 
-         std::string preprocessPattern();
 
-         // Adds the current pattern as a test name
 
-         void addNamePattern();
 
-         // Adds the current pattern as a tag
 
-         void addTagPattern();
 
-         inline void addCharToPattern(char c) {
 
-             m_substring += c;
 
-             m_patternName += c;
 
-             m_realPatternPos++;
 
-         }
 
-     };
 
-     TestSpec parseTestSpec( std::string const& arg );
 
- } // namespace Catch
 
- #ifdef __clang__
 
- #pragma clang diagnostic pop
 
- #endif
 
- #endif // TWOBLUECUBES_CATCH_TEST_SPEC_PARSER_HPP_INCLUDED
 
 
  |