2. Query System, Part 1

2.1. Meta & Child

2.1.1. Meta Class

2.1.2. Child Class

2.2. Operators

2.3. Query Metadata

2.3.1. Node.meta(string)

1
2
const string &meta ( const string &key ) const;
      string &meta ( const string &key );

2.3.2. Node.meta(Meta)

1
2
3
4
5
6
const   string  &meta ( const Meta<          void            > &kwd ) const;
        string  &meta ( const Meta<          void            > &kwd );
          TYPE   meta ( const Meta<          TYPE,  CONVERTER> &kwd ) const;
optional <TYPE>  meta ( const Meta<optional <TYPE>, CONVERTER> &kwd ) const;
Defaulted<TYPE>  meta ( const Meta<Defaulted<TYPE>, CONVERTER> &kwd ) const;
          TYPE   meta ( const Meta<variant  <Ts...>,CONVERTER> &kwd ) const;

2.3.3. Node(Meta)

1
2
decltype(auto) operator()( const Meta<TYPE,CONVERTER> &kwd ) const;
decltype(auto) operator()( const Meta<TYPE,CONVERTER> &kwd );

2.4. Query Child Nodes

2.4.1. Node.one(string)

1
2
3
4
const Node &one( const string &key, const FILTER &filter ) const;
      Node &one( const string &key, const FILTER &filter );
const Node &one( const string &key                       ) const;
      Node &one( const string &key                       );

2.4.2. Node.many(string)

1
2
CONTAINER<Node> many( const string &key, const FILTER &filter ) const;
CONTAINER<Node> many( const string &key                       ) const;

2.4.3. Node.child(Child)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
    const Node &child( const Child<void,             one,  void,      FILTER> &kwd ) const;
          Node &child( const Child<void,             one,  void,      FILTER> &kwd );
CONTAINER<Node> child( const Child<void,             many, void,      FILTER> &kwd ) const;
          TYPE  child( const Child<TYPE,             one,  CONVERTER, FILTER> &kwd ) const;
 optional<TYPE> child( const Child<optional <TYPE>,  one,  CONVERTER, FILTER> &kwd ) const;
Defaulted<TYPE> child( const Child<Defaulted<TYPE>,  one,  CONVERTER, FILTER> &kwd ) const;
          TYPE  child( const Child<variant  <Ts...>, one,  CONVERTER, FILTER> &kwd ) const;
CONTAINER<TYPE> child( const Child<TYPE,             many, CONVERTER, FILTER> &kwd ) const;
CONTAINER<TYPE> child( const Child<optional <TYPE>,  many, CONVERTER, FILTER> &kwd ) const;
CONTAINER<TYPE> child( const Child<Defaulted<TYPE>,  many, CONVERTER, FILTER> &kwd ) const;
CONTAINER<TYPE> child( const Child<variant  <Ts...>, many, CONVERTER, FILTER> &kwd ) const;

2.4.4. Node(Child)

1
2
3
4
5
6
decltype(auto) operator()( const Child<TYPE,ALLOW,CONVERTER,FILTER> &kwd                          ) const;
decltype(auto) operator()( const Child<TYPE,ALLOW,CONVERTER,FILTER> &kwd                          );
decltype(auto) operator()( const Child<TYPE,ALLOW,CONVERTER,FILTER> &kwd, const string label      ) const;
decltype(auto) operator()( const Child<TYPE,ALLOW,CONVERTER,FILTER> &kwd, const string label      );
decltype(auto) operator()( const Child<TYPE,ALLOW,CONVERTER,FILTER> &kwd, const regex  labelRegex ) const;
decltype(auto) operator()( const Child<TYPE,ALLOW,CONVERTER,FILTER> &kwd, const regex  labelRegex );