33 #ifndef _uhal_grammars_URIGrammar_hpp_ 34 #define _uhal_grammars_URIGrammar_hpp_ 42 #include <boost/fusion/adapted/std_pair.hpp> 43 #include <boost/fusion/adapted/struct/adapt_struct.hpp> 44 #include <boost/spirit/include/qi_char.hpp> 45 #include <boost/spirit/include/qi_grammar.hpp> 54 ( std::string , mProtocol )
55 ( std::string , mHostname )
56 ( std::string , mPort )
57 ( std::string , mPath )
58 ( std::string , mExtension )
66 struct URIGrammar : boost::spirit::qi::grammar<std::string::const_iterator, uhal::URI(), boost::spirit::ascii::space_type>
71 boost::spirit::qi::rule< std::string::const_iterator, uhal::URI(), boost::spirit::ascii::space_type > start;
74 boost::spirit::qi::rule< std::string::const_iterator, uhal::URI(), boost::spirit::ascii::space_type > EthernetURI;
75 boost::spirit::qi::rule< std::string::const_iterator, uhal::URI(), boost::spirit::ascii::space_type > PCIeURI;
79 boost::spirit::qi::rule< std::string::const_iterator, std::string(), boost::spirit::ascii::space_type > protocol;
81 boost::spirit::qi::rule< std::string::const_iterator, std::string(), boost::spirit::ascii::space_type > hostname;
83 boost::spirit::qi::rule< std::string::const_iterator, std::string(), boost::spirit::ascii::space_type > port;
85 boost::spirit::qi::rule< std::string::const_iterator, std::string(), boost::spirit::ascii::space_type > path;
87 boost::spirit::qi::rule< std::string::const_iterator, std::string(), boost::spirit::ascii::space_type > extension;
89 boost::spirit::qi::rule< std::string::const_iterator, std::vector< std::pair<std::string, std::string> > (), boost::spirit::ascii::space_type > data_pairs_vector;
91 boost::spirit::qi::rule< std::string::const_iterator, std::pair<std::string, std::string>(), boost::spirit::ascii::space_type > data_pairs;
93 boost::spirit::qi::rule< std::string::const_iterator, std::string(), boost::spirit::ascii::space_type > data_pairs_1;
95 boost::spirit::qi::rule< std::string::const_iterator, std::string(), boost::spirit::ascii::space_type > data_pairs_2;
98 boost::spirit::qi::rule< std::string::const_iterator, std::string(), boost::spirit::ascii::space_type > empty_string;
std::vector< std::pair< std::string, std::string > > NameValuePairVectorType
boost::fusion requires us to typedef our template types, so typedef a container which can hold key/va...
BOOST_FUSION_ADAPT_STRUCT(uhal::URI,(std::string, mProtocol)(std::string, mHostname)(std::string, mPort)(std::string, mPath)(std::string, mExtension)(uhal::NameValuePairVectorType, mArguments)) namespace grammars
A boost::fusion adaptive struct used by the boost::qi parser.
The log_inserter function to add an HttpResponseType object to a log entry.
Struct to store a URI when parsed by boost spirit.