The Gaudi Framework  master (e68eea06)
Loading...
Searching...
No Matches
Gaudi::Parsers::TupleGrammar< It, Skipper, Ts > Struct Template Reference

#include </builds/gaudi/Gaudi/GaudiKernel/include/Gaudi/Parsers/Grammars.h>

Inheritance diagram for Gaudi::Parsers::TupleGrammar< It, Skipper, Ts >:
Collaboration diagram for Gaudi::Parsers::TupleGrammar< It, Skipper, Ts >:

Public Member Functions

 TupleGrammar ()
 

Public Attributes

std::tuple< typename Grammar_< It, Ts, Skipper >::Grammar... > elems {}
 
qi::rule< It, std::tuple< Ts... >(), Skipperbody
 
qi::rule< It, std::tuple< Ts... >(), Skippertuple
 

Private Member Functions

template<std::size_t... Is>
void init (std::index_sequence< Is... >)
 

Detailed Description

template<typename It, typename Skipper, typename... Ts>
struct Gaudi::Parsers::TupleGrammar< It, Skipper, Ts >

Definition at line 145 of file Grammars.h.

Constructor & Destructor Documentation

◆ TupleGrammar()

template<typename It, typename Skipper, typename... Ts>
Gaudi::Parsers::TupleGrammar< It, Skipper, Ts >::TupleGrammar ( )
inline

Definition at line 150 of file Grammars.h.

150: TupleGrammar::base_type( tuple ) { init( std::make_index_sequence<sizeof...( Ts ) - 1>{} ); }
void init(std::index_sequence< Is... >)
Definition Grammars.h:154
qi::rule< It, std::tuple< Ts... >(), Skipper > tuple
Definition Grammars.h:149

Member Function Documentation

◆ init()

template<typename It, typename Skipper, typename... Ts>
template<std::size_t... Is>
void Gaudi::Parsers::TupleGrammar< It, Skipper, Ts >::init ( std::index_sequence< Is... > )
inlineprivate

Definition at line 154 of file Grammars.h.

154 {
155 if constexpr ( sizeof...( Is ) == 0 ) {
156 body = get<0>( elems ) >> -qi::lit( ',' );
157 } else {
158 body = get<0>( elems ) >> ( ( qi::lit( ',' ) >> get<Is + 1>( elems ) ) >> ... ) >> -qi::lit( ',' );
159 }
160 tuple = rep::confix( '(', ')' )[body] | rep::confix( '[', ']' )[body];
161 }
qi::rule< It, std::tuple< Ts... >(), Skipper > body
Definition Grammars.h:148
std::tuple< typename Grammar_< It, Ts, Skipper >::Grammar... > elems
Definition Grammars.h:147

Member Data Documentation

◆ body

template<typename It, typename Skipper, typename... Ts>
qi::rule<It, std::tuple<Ts...>(), Skipper> Gaudi::Parsers::TupleGrammar< It, Skipper, Ts >::body

Definition at line 148 of file Grammars.h.

◆ elems

template<typename It, typename Skipper, typename... Ts>
std::tuple<typename Grammar_<It, Ts, Skipper>::Grammar...> Gaudi::Parsers::TupleGrammar< It, Skipper, Ts >::elems {}

Definition at line 147 of file Grammars.h.

147{};

◆ tuple

template<typename It, typename Skipper, typename... Ts>
qi::rule<It, std::tuple<Ts...>(), Skipper> Gaudi::Parsers::TupleGrammar< It, Skipper, Ts >::tuple

Definition at line 149 of file Grammars.h.


The documentation for this struct was generated from the following file: