MCPcopy Create free account
hub / github.com/InteractiveComputerGraphics/TriangleMeshDistance / parse

Method parse

tests/catch.hpp:7310–7344  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7308 using ParserBase::parse;
7309
7310 auto parse( std::string const&, TokenStream const &tokens ) const -> InternalParseResult override {
7311 auto validationResult = validate();
7312 if( !validationResult )
7313 return InternalParseResult( validationResult );
7314
7315 auto remainingTokens = tokens;
7316 if( remainingTokens && remainingTokens->type == TokenType::Option ) {
7317 auto const &token = *remainingTokens;
7318 if( isMatch(token.token ) ) {
7319 if( m_ref->isFlag() ) {
7320 auto flagRef = static_cast<detail::BoundFlagRefBase*>( m_ref.get() );
7321 auto result = flagRef->setFlag( true );
7322 if( !result )
7323 return InternalParseResult( result );
7324 if( result.value() == ParseResultType::ShortCircuitAll )
7325 return InternalParseResult::ok( ParseState( result.value(), remainingTokens ) );
7326 } else {
7327 auto valueRef = static_cast<detail::BoundValueRefBase*>( m_ref.get() );
7328 ++remainingTokens;
7329 if( !remainingTokens )
7330 return InternalParseResult::runtimeError( "Expected argument following " + token.token );
7331 auto const &argToken = *remainingTokens;
7332 if( argToken.type != TokenType::Argument )
7333 return InternalParseResult::runtimeError( "Expected argument following " + token.token );
7334 auto result = valueRef->setValue( argToken.token );
7335 if( !result )
7336 return InternalParseResult( result );
7337 if( result.value() == ParseResultType::ShortCircuitAll )
7338 return InternalParseResult::ok( ParseState( result.value(), remainingTokens ) );
7339 }
7340 return InternalParseResult::ok( ParseState( ParseResultType::Matched, ++remainingTokens ) );
7341 }
7342 }
7343 return InternalParseResult::ok( ParseState( ParseResultType::NoMatch, remainingTokens ) );
7344 }
7345
7346 auto validate() const -> Result override {
7347 if( m_optNames.empty() )

Callers

nothing calls this directly

Calls 6

ParseStateClass · 0.85
isFlagMethod · 0.45
getMethod · 0.45
setFlagMethod · 0.45
valueMethod · 0.45
setValueMethod · 0.45

Tested by

no test coverage detected