Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT > Class Template Reference

The valid represenation of pairs are: ("abc",123) or ("abc","def") Inner types of pair depends on KeyGrammarT and ValueGrammarT grammars. More...

#include </scratch/z5/marcocle/GaudiDocs/lhcb-release/825/GAUDI/GAUDI_v26r3/InstallArea/x86_64-slc6-gcc48-opt/include/GaudiKernel/Grammars.h>

Inheritance diagram for Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >:
Collaboration diagram for Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >:

Classes

struct  definition
 
struct  first
 
struct  second
 

Public Types

typedef KeyGrammarT::ResultT KeyT
 
typedef ValueGrammarT::ResultT ValueT
 
typedef std::pair< KeyT, ValueTResultT
 
typedef PairT ResultT
 
typedef PairT::first_type first_type
 
typedef PairT::second_type second_type
 
typedef KeyGrammarT::ResultT KeyT
 
typedef ValueGrammarT::ResultT ValueT
 
typedef std::pair< KeyT, ValueTResultT
 
typedef PairT ResultT
 
typedef PairT::first_type first_type
 
typedef PairT::second_type second_type
 

Public Member Functions

 PairGrammar (const std::string &delim=",")
 Constructor. More...
 
void matchFirst (const KeyT &first) const
 callback. Action when we match first value More...
 
void matchSecond (const ValueT &second) const
 callback. Action when we match second value More...
 
const std::string & delim () const
 
void setDelim (const std::string &delim)
 Set delimiters for pair values. More...
 
 PairGrammar ()
 
 PairGrammar (const std::string &delimeter)
 
void init (const std::string &delimeter)
 
 PairGrammar (const std::string &delim=",")
 Constructor. More...
 
void matchFirst (const KeyT &first) const
 callback. Action when we match first value More...
 
void matchSecond (const ValueT &second) const
 callback. Action when we match second value More...
 
const std::string & delim () const
 
void setDelim (const std::string &delim)
 Set delimiters for pair values. More...
 
 PairGrammar ()
 
 PairGrammar (const std::string &delimeter)
 
void init (const std::string &delimeter)
 

Public Attributes

Grammar_< Iterator, typename PairT::first_type, Skipper >::Grammar key
 
Grammar_< Iterator, typename PairT::second_type, Skipper >::Grammar value
 
qi::rule< Iterator, char()> begin
 
qi::rule< Iterator, void(char)> end
 
qi::rule< Iterator, ResultT(), qi::locals< char >, Skipperpair
 
qi::rule< Iterator, ResultT(), Skipperpair_in
 

Private Attributes

std::string m_delim
 

Detailed Description

template<typename KeyGrammarT, typename ValueGrammarT>
class Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >

The valid represenation of pairs are: ("abc",123) or ("abc","def") Inner types of pair depends on KeyGrammarT and ValueGrammarT grammars.

Author
Alexander MAZUROV Alexa.nosp@m.nder.nosp@m..Mazu.nosp@m.rov@.nosp@m.gmail.nosp@m..com
Vanya BELYAEV ibely.nosp@m.aev@.nosp@m.physi.nosp@m.cs.s.nosp@m.yr.ed.nosp@m.u
Date
2006-05-14

Definition at line 358 of file Grammars.h.

Member Typedef Documentation

template<typename KeyGrammarT , typename ValueGrammarT >
typedef PairT::first_type Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::first_type

Definition at line 369 of file GrammarsV2.h.

template<typename KeyGrammarT , typename ValueGrammarT >
typedef PairT::first_type Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::first_type

Definition at line 369 of file GrammarsV2.h.

template<typename KeyGrammarT , typename ValueGrammarT >
typedef KeyGrammarT::ResultT Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::KeyT

Definition at line 367 of file Grammars.h.

template<typename KeyGrammarT , typename ValueGrammarT >
typedef KeyGrammarT::ResultT Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::KeyT

Definition at line 367 of file Grammars.h.

template<typename KeyGrammarT , typename ValueGrammarT >
typedef PairT Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::ResultT

Definition at line 368 of file GrammarsV2.h.

template<typename KeyGrammarT , typename ValueGrammarT >
typedef PairT Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::ResultT

Definition at line 368 of file GrammarsV2.h.

template<typename KeyGrammarT , typename ValueGrammarT >
typedef std::pair<KeyT,ValueT> Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::ResultT

Definition at line 369 of file Grammars.h.

template<typename KeyGrammarT , typename ValueGrammarT >
typedef std::pair<KeyT,ValueT> Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::ResultT

Definition at line 369 of file Grammars.h.

template<typename KeyGrammarT , typename ValueGrammarT >
typedef PairT::second_type Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::second_type

Definition at line 370 of file GrammarsV2.h.

template<typename KeyGrammarT , typename ValueGrammarT >
typedef PairT::second_type Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::second_type

Definition at line 370 of file GrammarsV2.h.

template<typename KeyGrammarT , typename ValueGrammarT >
typedef ValueGrammarT::ResultT Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::ValueT

Definition at line 368 of file Grammars.h.

template<typename KeyGrammarT , typename ValueGrammarT >
typedef ValueGrammarT::ResultT Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::ValueT

Definition at line 368 of file Grammars.h.

Constructor & Destructor Documentation

template<typename KeyGrammarT , typename ValueGrammarT >
Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::PairGrammar ( const std::string &  delim = ",")
inline

Constructor.

Parameters
delimDelimiter for pair values

Definition at line 374 of file Grammars.h.

375  : m_delim(delim) {}
const std::string & delim() const
Definition: Grammars.h:403
template<typename KeyGrammarT , typename ValueGrammarT >
Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::PairGrammar ( )
inline

Definition at line 372 of file GrammarsV2.h.

372  : PairGrammar::base_type(pair) {
373  init(",");
374  }
void init(const std::string &delimeter)
Definition: GrammarsV2.h:382
qi::rule< Iterator, ResultT(), qi::locals< char >, Skipper > pair
Definition: GrammarsV2.h:398
template<typename KeyGrammarT , typename ValueGrammarT >
Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::PairGrammar ( const std::string &  delimeter)
inline

Definition at line 376 of file GrammarsV2.h.

376  : PairGrammar::base_type(pair) {
377  init(delimeter);
378  }
void init(const std::string &delimeter)
Definition: GrammarsV2.h:382
qi::rule< Iterator, ResultT(), qi::locals< char >, Skipper > pair
Definition: GrammarsV2.h:398
template<typename KeyGrammarT , typename ValueGrammarT >
Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::PairGrammar ( const std::string &  delim = ",")
inline

Constructor.

Parameters
delimDelimiter for pair values

Definition at line 374 of file Grammars.h.

375  : m_delim(delim) {}
const std::string & delim() const
Definition: Grammars.h:403
template<typename KeyGrammarT , typename ValueGrammarT >
Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::PairGrammar ( )
inline

Definition at line 372 of file GrammarsV2.h.

372  : PairGrammar::base_type(pair) {
373  init(",");
374  }
void init(const std::string &delimeter)
Definition: GrammarsV2.h:382
qi::rule< Iterator, ResultT(), qi::locals< char >, Skipper > pair
Definition: GrammarsV2.h:398
template<typename KeyGrammarT , typename ValueGrammarT >
Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::PairGrammar ( const std::string &  delimeter)
inline

Definition at line 376 of file GrammarsV2.h.

376  : PairGrammar::base_type(pair) {
377  init(delimeter);
378  }
void init(const std::string &delimeter)
Definition: GrammarsV2.h:382
qi::rule< Iterator, ResultT(), qi::locals< char >, Skipper > pair
Definition: GrammarsV2.h:398

Member Function Documentation

template<typename KeyGrammarT , typename ValueGrammarT >
const std::string& Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::delim ( ) const
inline
Returns
Delimiter for pair values

Definition at line 403 of file Grammars.h.

403 { return m_delim ; }
template<typename KeyGrammarT , typename ValueGrammarT >
const std::string& Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::delim ( ) const
inline
Returns
Delimiter for pair values

Definition at line 403 of file Grammars.h.

403 { return m_delim ; }
template<typename KeyGrammarT , typename ValueGrammarT >
void Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::init ( const std::string &  delimeter)
inline

Definition at line 382 of file GrammarsV2.h.

382  {
383  begin = enc::char_('(')[qi::_val=')']
384  |
385  enc::char_('[')[qi::_val=']'];
386  end = qi::char_(qi::_r1);
387  pair = begin[qi::_a = qi::_1] >> pair_in[qi::_val = qi::_1] >> end(qi::_a);
388  pair_in = key >> qi::lit(delimeter) >> value;
389  }
qi::rule< Iterator, char()> begin
Definition: GrammarsV2.h:396
Grammar_< Iterator, typename PairT::first_type, Skipper >::Grammar key
Definition: GrammarsV2.h:392
Grammar_< Iterator, typename PairT::second_type, Skipper >::Grammar value
Definition: GrammarsV2.h:395
qi::rule< Iterator, ResultT(), qi::locals< char >, Skipper > pair
Definition: GrammarsV2.h:398
qi::rule< Iterator, void(char)> end
Definition: GrammarsV2.h:397
qi::rule< Iterator, ResultT(), Skipper > pair_in
Definition: GrammarsV2.h:399
template<typename KeyGrammarT , typename ValueGrammarT >
void Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::init ( const std::string &  delimeter)
inline

Definition at line 382 of file GrammarsV2.h.

382  {
383  begin = enc::char_('(')[qi::_val=')']
384  |
385  enc::char_('[')[qi::_val=']'];
386  end = qi::char_(qi::_r1);
387  pair = begin[qi::_a = qi::_1] >> pair_in[qi::_val = qi::_1] >> end(qi::_a);
388  pair_in = key >> qi::lit(delimeter) >> value;
389  }
qi::rule< Iterator, char()> begin
Definition: GrammarsV2.h:396
Grammar_< Iterator, typename PairT::first_type, Skipper >::Grammar key
Definition: GrammarsV2.h:392
Grammar_< Iterator, typename PairT::second_type, Skipper >::Grammar value
Definition: GrammarsV2.h:395
qi::rule< Iterator, ResultT(), qi::locals< char >, Skipper > pair
Definition: GrammarsV2.h:398
qi::rule< Iterator, void(char)> end
Definition: GrammarsV2.h:397
qi::rule< Iterator, ResultT(), Skipper > pair_in
Definition: GrammarsV2.h:399
template<typename KeyGrammarT , typename ValueGrammarT >
void Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::matchFirst ( const KeyT first) const
inline

callback. Action when we match first value

Definition at line 378 of file Grammars.h.

378 { this->val().first = first; }
template<typename KeyGrammarT , typename ValueGrammarT >
void Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::matchFirst ( const KeyT first) const
inline

callback. Action when we match first value

Definition at line 378 of file Grammars.h.

378 { this->val().first = first; }
template<typename KeyGrammarT , typename ValueGrammarT >
void Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::matchSecond ( const ValueT second) const
inline

callback. Action when we match second value

Definition at line 380 of file Grammars.h.

380 { this->val().second = second; }
constexpr double second
template<typename KeyGrammarT , typename ValueGrammarT >
void Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::matchSecond ( const ValueT second) const
inline

callback. Action when we match second value

Definition at line 380 of file Grammars.h.

380 { this->val().second = second; }
constexpr double second
template<typename KeyGrammarT , typename ValueGrammarT >
void Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::setDelim ( const std::string &  delim)
inline

Set delimiters for pair values.

Parameters
delimDelimiter

Definition at line 407 of file Grammars.h.

407 { m_delim = delim;}
const std::string & delim() const
Definition: Grammars.h:403
template<typename KeyGrammarT , typename ValueGrammarT >
void Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::setDelim ( const std::string &  delim)
inline

Set delimiters for pair values.

Parameters
delimDelimiter

Definition at line 407 of file Grammars.h.

407 { m_delim = delim;}
const std::string & delim() const
Definition: Grammars.h:403

Member Data Documentation

template<typename KeyGrammarT , typename ValueGrammarT >
qi::rule< Iterator, char()> Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::begin

Definition at line 396 of file GrammarsV2.h.

template<typename KeyGrammarT , typename ValueGrammarT >
qi::rule< Iterator, void(char)> Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::end

Definition at line 397 of file GrammarsV2.h.

template<typename KeyGrammarT , typename ValueGrammarT >
Grammar_< Iterator, typename PairT::first_type, Skipper >::Grammar Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::key

Definition at line 392 of file GrammarsV2.h.

template<typename KeyGrammarT , typename ValueGrammarT >
std::string Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::m_delim
private

Definition at line 409 of file Grammars.h.

template<typename KeyGrammarT , typename ValueGrammarT >
qi::rule< Iterator, ResultT(), qi::locals< char >, Skipper > Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::pair

Definition at line 398 of file GrammarsV2.h.

template<typename KeyGrammarT , typename ValueGrammarT >
qi::rule< Iterator, ResultT(), Skipper > Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::pair_in

Definition at line 399 of file GrammarsV2.h.

template<typename KeyGrammarT , typename ValueGrammarT >
Grammar_< Iterator, typename PairT::second_type, Skipper >::Grammar Gaudi::Parsers::PairGrammar< KeyGrammarT, ValueGrammarT >::value

Definition at line 395 of file GrammarsV2.h.


The documentation for this class was generated from the following files: