void visit(rule_type const& r) { const symbolizers& symbols = r.get_symbolizers(); symbolizers::const_iterator symIter=symbols.begin(); symbolizer_attributes attr(names_); while (symIter != symbols.end()) { boost::apply_visitor(attr,*symIter++); } filter_ptr const& filter = r.get_filter(); filter->accept(*this); }
static boost::python::tuple getstate(const rule_type& r) { boost::python::list syms; rule_type::symbolizers::const_iterator begin = r.get_symbolizers().begin(); rule_type::symbolizers::const_iterator end = r.get_symbolizers().end(); pickle_symbolizer serializer( syms ); std::for_each( begin, end , boost::apply_visitor( serializer )); // We serialize filter expressions AST as strings std::string filter_expr = to_expression_string(*r.get_filter()); return boost::python::make_tuple(r.get_abstract(),filter_expr,r.has_else_filter(),syms); }