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); }