// 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) // The purpose of this example is to demonstrate different use cases for the // confix generator. #include <iostream> #include <string> #include <vector> //[karma_confix_includes #include <boost/spirit/include/karma.hpp> #include <boost/spirit/repository/include/karma_confix.hpp> //] //[karma_confix_namespace using namespace boost::spirit; using namespace boost::spirit::ascii; using boost::spirit::repository::confix; //] int main() { //[karma_confix_cpp_comment // C++ comment std::cout << karma::format_delimited( confix("//", eol)[string], // format description space, // delimiter "This is a comment" // data ) << std::endl; //] //[karma_confix_c_comment // C comment std::cout << karma::format_delimited( confix("/*", "*/")[string], // format description space, // delimiter "This is a comment" // data ) << std::endl; //] //[karma_confix_function // Generate a function call with an arbitrary parameter list std::vector<std::string> parameters; parameters.push_back("par1"); parameters.push_back("par2"); parameters.push_back("par3"); std::cout << karma::format( string << confix('(', ')')[string % ','], // format description "func", // function name parameters // parameter names ) << std::endl; //] return 0; }