3#include <boost/spirit/include/qi.hpp>
5#include <boost/bind.hpp>
7#include "../MeshGenerator.hpp"
11namespace qi = boost::spirit::qi;
12namespace spirit = boost::spirit;
16 std::cerr <<
"Hey there!" << c++ << std::endl;
19template <
typename Iterator>
23 netgen_grammar::base_type(content),
24 generator_(_generator)
30 using Rule = qi::rule<Iterator>;
32 Rule space {spirit::ascii::space - spirit::eol};
33 Rule node_section_header {qi::int_ >> spirit::eol};
34 Rule element_section_header {qi::int_[
boost::bind(&MeshGenerator::set_num_cells, &generator_, ::_1)] >> spirit::eol};
35 Rule face_section_header {qi::int_ >> spirit::eol};
36 Rule node {*space >> qi::double_[
boost::bind(&MeshGenerator::add_vertex_component, &generator_, ::_1)] >>
37 *space >> qi::double_[
boost::bind(&MeshGenerator::add_vertex_component, &generator_, ::_1)] >>
38 *space >> qi::double_[
boost::bind(&MeshGenerator::add_vertex_component, &generator_, ::_1)] >> spirit::eol};
39 Rule element {*space >> qi::int_ >>
40 *space >> qi::int_[
boost::bind(&MeshGenerator::add_cell_vertex, &generator_, ::_1)] >>
41 *space >> qi::int_[
boost::bind(&MeshGenerator::add_cell_vertex, &generator_, ::_1)] >>
42 *space >> qi::int_[
boost::bind(&MeshGenerator::add_cell_vertex, &generator_, ::_1)] >>
43 *space >> qi::int_[
boost::bind(&MeshGenerator::add_cell_vertex, &generator_, ::_1)] >>
45 Rule face {*space >> qi::int_ >>
50 Rule content {node_section_header >> *node >>
51 element_section_header >> *element >>
52 face_section_header >> *face};
bool bind(osg::GeometryPtr &_geo, Mesh &_mesh)