• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdesdk API Reference
  • KDE Home
  • Contact Us
 

umbrello/umbrello

  • sources
  • kde-4.12
  • kdesdk
  • umbrello
  • umbrello
  • codeimport
  • kdevcppparser
skip_rule.hpp
Go to the documentation of this file.
1 #ifndef SKIP_RULE_H
2 #define SKIP_RULE_H
3 
4 #include <boost/spirit/include/classic.hpp>
5 
9 namespace boost {
10 namespace spirit {
11 namespace classic {
12 namespace ext {
13 
14 template < typename RuleT, typename BaseT = iteration_policy >
15 class skip_rule_iteration_policy
16  : public skipper_iteration_policy<BaseT>
17 {
18 public:
19 
20  typedef skipper_iteration_policy<BaseT> base_t;
21  typedef typename RuleT::scanner_t skip_rule_scanner_t;
22  typedef typename skip_rule_scanner_t::policies_t skip_rule_policies_t;
23 
24  skip_rule_iteration_policy(RuleT const& skip_rule,
25  skip_rule_policies_t const& policies
26  = skip_rule_policies_t(),
27  base_t const& base = base_t())
28  : base_t(base), subject(skip_rule), _policies(policies) {}
29 
30  template <typename PolicyT>
31  skip_rule_iteration_policy(PolicyT const& other)
32  : base_t(other), subject(other.skipper()),
33  _policies(other.policies()) {}
34 
35  template <typename ScannerT>
36  void skip(ScannerT const& scan) const {
37  skip_rule_scanner_t skip_scanner(scan.first, scan.last, _policies);
38  impl::skipper_skip(subject, skip_scanner, skip_scanner);
39  }
40 
41  RuleT const& skipper() const {
42  return subject;
43  }
44 
45  skip_rule_policies_t const& policies() const {
46  return _policies;
47  }
48 
49 private:
50  RuleT const& subject;
51  skip_rule_policies_t const& _policies;
52 };
53 
54 template < typename SkipRuleT
55 , typename IteratorT = char const*
56 , typename SkipMatchPolicyT = match_policy
57 , typename SkipActionPolicyT = action_policy >
58 struct skip_rule_parser {
59  typedef IteratorT iterator_t;
60  typedef SkipRuleT skip_rule_t;
61  typedef
62  typename skip_rule_t::scanner_t::policies_t skip_rule_policies_t;
63  typedef skip_rule_iteration_policy<skip_rule_t> skip_iteration_policy_t;
64  typedef SkipMatchPolicyT skip_match_policy_t;
65  typedef SkipActionPolicyT skip_action_policy_t;
66  typedef scanner_policies <
67  skip_iteration_policy_t
68  , skip_match_policy_t
69  , skip_action_policy_t >
70  skip_scanner_policies_t;
71  typedef scanner<iterator_t, skip_scanner_policies_t>
72  skip_scanner_t;
73 
74  template<typename ParserT>
75  static parse_info<iterator_t>
76  parse(iterator_t const& first_,
77  iterator_t const& last,
78  parser<ParserT> const& p,
79  skip_rule_t const& skip,
80  skip_match_policy_t const& smp = match_policy(),
81  skip_action_policy_t const& sap = action_policy(),
82  skip_rule_policies_t const& srps = skip_rule_policies_t()) {
83  skip_iteration_policy_t sip(skip, srps);
84  skip_scanner_policies_t policies(sip, smp, sap);
85  iterator_t first = first_;
86  skip_scanner_t scan(first, last, policies);
87  match<nil_t> hit = p.derived().parse(scan);
88  scan.skip(scan);
89  return parse_info<iterator_t>
90  (first, hit, hit && (first == last), hit.length());
91  }
92 };
93 
94 } // end namespace ext
95 } // end namespace classic
96 } // end namespace spirit
97 } // end namespace boost
98 
99 #endif
Import_Rose::scan
QStringList scan(const QString &lin)
Split a line into lexemes.
Definition: import_rose.cpp:59
boost::spirit::classic::ext::skip_rule_parser::iterator_t
IteratorT iterator_t
Definition: skip_rule.hpp:59
boost::spirit::classic::ext::skip_rule_iteration_policy::base_t
skipper_iteration_policy< BaseT > base_t
Definition: skip_rule.hpp:20
boost::spirit::classic::ext::skip_rule_parser
Definition: skip_rule.hpp:58
boost::spirit::classic::ext::skip_rule_parser::skip_iteration_policy_t
skip_rule_iteration_policy< skip_rule_t > skip_iteration_policy_t
Definition: skip_rule.hpp:63
boost::spirit::classic::ext::skip_rule_iteration_policy::skip_rule_policies_t
skip_rule_scanner_t::policies_t skip_rule_policies_t
Definition: skip_rule.hpp:22
boost::spirit::classic::ext::skip_rule_iteration_policy::skip_rule_iteration_policy
skip_rule_iteration_policy(PolicyT const &other)
Definition: skip_rule.hpp:31
boost::spirit::classic::ext::skip_rule_iteration_policy::skipper
RuleT const & skipper() const
Definition: skip_rule.hpp:41
boost::spirit::classic::ext::skip_rule_parser::skip_scanner_t
scanner< iterator_t, skip_scanner_policies_t > skip_scanner_t
Definition: skip_rule.hpp:72
boost::spirit::classic::ext::skip_rule_parser::skip_rule_policies_t
skip_rule_t::scanner_t::policies_t skip_rule_policies_t
Definition: skip_rule.hpp:62
boost::spirit::classic::ext::skip_rule_parser::parse
static parse_info< iterator_t > parse(iterator_t const &first_, iterator_t const &last, parser< ParserT > const &p, skip_rule_t const &skip, skip_match_policy_t const &smp=match_policy(), skip_action_policy_t const &sap=action_policy(), skip_rule_policies_t const &srps=skip_rule_policies_t())
Definition: skip_rule.hpp:76
boost::spirit::classic::ext::skip_rule_parser::skip_rule_t
SkipRuleT skip_rule_t
Definition: skip_rule.hpp:60
boost::spirit::classic::ext::skip_rule_iteration_policy::skip_rule_scanner_t
RuleT::scanner_t skip_rule_scanner_t
Definition: skip_rule.hpp:21
skipper_iteration_policy
boost::spirit::classic::ext::skip_rule_parser::skip_scanner_policies_t
scanner_policies< skip_iteration_policy_t, skip_match_policy_t, skip_action_policy_t > skip_scanner_policies_t
Definition: skip_rule.hpp:70
boost::spirit::classic::ext::skip_rule_iteration_policy::policies
skip_rule_policies_t const & policies() const
Definition: skip_rule.hpp:45
boost::spirit::classic::ext::skip_rule_iteration_policy::skip_rule_iteration_policy
skip_rule_iteration_policy(RuleT const &skip_rule, skip_rule_policies_t const &policies=skip_rule_policies_t(), base_t const &base=base_t())
Definition: skip_rule.hpp:24
boost::spirit::classic::ext::skip_rule_parser::skip_match_policy_t
SkipMatchPolicyT skip_match_policy_t
Definition: skip_rule.hpp:64
boost::spirit::classic::ext::skip_rule_parser::skip_action_policy_t
SkipActionPolicyT skip_action_policy_t
Definition: skip_rule.hpp:65
boost::spirit::classic::ext::skip_rule_iteration_policy
Definition: skip_rule.hpp:15
boost::spirit::classic::ext::skip_rule_iteration_policy::skip
void skip(ScannerT const &scan) const
Definition: skip_rule.hpp:36
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 23:06:00 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

umbrello/umbrello

Skip menu "umbrello/umbrello"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Modules
  • Related Pages

kdesdk API Reference

Skip menu "kdesdk API Reference"
  • kapptemplate
  • kcachegrind
  • kompare
  • lokalize
  • okteta
  • umbrello
  •   umbrello

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal