6#ifndef SPIRITCHARCHARTPARSER_HPP
7#define SPIRITCHARCHARTPARSER_HPP
9#include <boost/config/warning_disable.hpp>
10#include <boost/spirit/include/qi.hpp>
11#include <boost/spirit/include/phoenix_core.hpp>
12#include <boost/spirit/include/phoenix_operator.hpp>
13#include <boost/spirit/include/phoenix_object.hpp>
14#include <boost/fusion/include/adapt_struct.hpp>
15#include <boost/fusion/include/io.hpp>
16#include <boost/program_options.hpp>
18#include <boost/shared_ptr.hpp>
22namespace po = boost::program_options;
28#define skipper qi::space | '#' >> *(ascii::char_ - qi::eol) >> qi::eol
59 std::vector<charchart_char>
chars;
71 (boost::optional<std::string>, parent)
72 (std::string, comment)
79 (std::string, charclass)
80 (std::vector<modifierdef>, modifiers)
85 (std::vector<charchart_class>, classes)
86 (std::vector<charchart_char>, chars)
89namespace qi = boost::spirit::qi;
90namespace ascii = boost::spirit::ascii;
114template <
typename Iterator>
125 using ascii::space_type;
133 chars %= lit(
"chars") >>
'{' >> -(
chardef %
';') >>
'}';
143 qi::rule<Iterator, std::vector<charchart_class>(), skipper_type_>
classes;
144 qi::rule<Iterator, std::vector<charchart_char>(), skipper_type_>
chars;
typedef BOOST_TYPEOF(skipper) skipper_type_
BOOST_FUSION_ADAPT_STRUCT(modifierdef,(ModifierTypes, first)(int, second)) BOOST_FUSION_ADAPT_STRUCT(charchart_class
std::vector< modifierdef > modifiers
boost::optional< std::string > parent
qi::rule< Iterator, charchart(), skipper_type_ > start
qi::rule< Iterator, std::vector< charchart_class >(), skipper_type_ > classes
qi::rule< Iterator, std::string(), skipper_type_ > identifier
qi::rule< Iterator, modifierdef(), skipper_type_ > modifier
modifiersymbol_ mymodifiersymbol
qi::rule< Iterator, charchart_char(), skipper_type_ > chardef
qi::rule< Iterator, std::vector< charchart_char >(), skipper_type_ > chars
qi::rule< Iterator, charchart_class(), skipper_type_ > classdef
std::vector< charchart_char > chars
std::vector< charchart_class > classes