// Copyright (c) 2001-2010 Hartmut Kaiser // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #if !defined(SCHEME_OUTPUT_GENERATE_SEXPR_IMPL_MAR_29_2010_1210PM) #define SCHEME_OUTPUT_GENERATE_SEXPR_MAR_IMPL_29_2010_1210PM #include #include #include #include #include #include namespace scheme { namespace output { /////////////////////////////////////////////////////////////////////////// template bool generate_sexpr(std::basic_ostream& os, utree const& tree) { typedef boost::spirit::ostream_iterator output_iterator_type; using boost::spirit::karma::space; using boost::spirit::karma::generate_delimited; scheme::output::sexpr g; return generate_delimited(output_iterator_type(os), g, space, tree); } /////////////////////////////////////////////////////////////////////////// template bool generate_sexpr_list(std::basic_ostream& os, utree const& tree) { typedef boost::spirit::ostream_iterator output_iterator_type; using boost::spirit::karma::space; using boost::spirit::karma::eol; using boost::spirit::karma::generate_delimited; scheme::output::sexpr g; return generate_delimited(output_iterator_type(os), g % eol, space, tree); } /////////////////////////////////////////////////////////////////////////// template bool generate_sexpr(std::basic_string& os, utree const& tree) { typedef std::basic_string string_type; typedef std::back_insert_iterator output_iterator_type; using boost::spirit::karma::space; using boost::spirit::karma::generate_delimited; scheme::output::sexpr g; return generate_delimited(output_iterator_type(os), g, space, tree); } /////////////////////////////////////////////////////////////////////////// template bool generate_sexpr_list(std::basic_string& os, utree const& tree) { typedef std::basic_string string_type; typedef std::back_insert_iterator output_iterator_type; using boost::spirit::karma::space; using boost::spirit::karma::eol; using boost::spirit::karma::generate_delimited; scheme::output::sexpr g; return generate_delimited(output_iterator_type(os), g % eol, space, tree); } }} #endif