simple_columns_directive.cpp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // Copyright (c) 2001-2010 Hartmut Kaiser
  2. //
  3. // Distributed under the Boost Software License, Version 1.0. (See accompanying
  4. // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  5. // The purpose of this example is to show how a simple custom generator
  6. // directive can be written. We develop a custom generator allowing to wrap
  7. // the generated output after each 5th column.
  8. //
  9. // For more information see: http://boost-spirit.com/home/?page_id=659
  10. #include <boost/spirit/include/karma_generate_attr.hpp>
  11. #include <boost/spirit/include/karma_char.hpp>
  12. #include <boost/spirit/include/karma_operator.hpp>
  13. #include <boost/spirit/include/karma_numeric.hpp>
  14. #include <string>
  15. #include "simple_columns_directive.hpp"
  16. namespace karma = boost::spirit::karma;
  17. int main()
  18. {
  19. using custom_generator::columns;
  20. std::vector<int> v;
  21. for (int i = 0; i < 17; ++i)
  22. v.push_back(i);
  23. std::string generated;
  24. std::back_insert_iterator<std::string> sink(generated);
  25. bool result = karma::generate_delimited(
  26. sink, columns[*karma::int_], karma::space, v);
  27. if (result)
  28. {
  29. std::cout << "-------------------------------- \n";
  30. std::cout << "Generation succeeded\n";
  31. std::cout << "generated output: " << "\n" << generated << "\n";
  32. std::cout << "-------------------------------- \n";
  33. }
  34. else
  35. {
  36. std::cout << "-------------------------------- \n";
  37. std::cout << "Generation failed\n";
  38. std::cout << "-------------------------------- \n";
  39. }
  40. return 0;
  41. }