arabica/XPath/impl/xpath_ast.hpp

44 lines
1,006 B
C++
Raw Normal View History

2005-08-04 22:42:30 +02:00
#ifndef ARABICA_XPATHIC_XPATH_AST_HPP
#define ARABICA_XPATHIC_XPATH_AST_HPP
#include <boost/spirit/core.hpp>
#include <boost/spirit/tree/ast.hpp>
2005-08-17 14:28:20 +02:00
#include "xpath_ast_ids.hpp"
2005-08-04 22:42:30 +02:00
namespace Arabica
{
namespace XPath
{
2005-08-19 19:20:06 +02:00
template<class string_type>
class types
{
public:
typedef typename string_type::const_iterator str_iter_t;
typedef boost::spirit::tree_match<str_iter_t> tree_match_t;
typedef typename tree_match_t::tree_iterator node_iter_t;
typedef boost::spirit::tree_parse_info<str_iter_t> tree_info_t;
private:
~types();
}; // types
template<class string_type>
long getNodeId(typename types<string_type>::node_iter_t const& node)
2005-08-17 14:28:20 +02:00
{
return static_cast<long>(node->value.id().to_long());
} // getNodeId
2005-08-19 19:20:06 +02:00
template<class string_type>
typename types<string_type>::node_iter_t& skipWhitespace(typename types<string_type>::node_iter_t& node)
2005-08-17 14:28:20 +02:00
{
2005-08-19 19:20:06 +02:00
while(getNodeId<string_type>(node) == impl::S_id)
2005-08-17 14:28:20 +02:00
++node;
return node;
} // skipWhitespace
2005-08-04 22:42:30 +02:00
} // namespace XPath
} // namespace Arabica
#endif