Giriş
Şu satırı dahil ederiz.
Örnek
Şöyle yaparız.
Örnek
Elimizde bir karma grameri olsun
Gramer olarak bir struct'ı html'te iki tane yanyana sütun olacak şekilde çevirmek olsun. Şöyle yaparız.
Şöyle yaparız. Her employee nesnesinden sonra satır sonu yapılır. Her iki employee nesnesinden sonra nt_delimeter kelimesi eklenir.
Şu satırı dahil ederiz.
#include <boost/spirit/include/karma.hpp>namespace ka = boost::spirit::karma;Örnek
Şöyle yaparız.
#include <boost/spirit/include/karma.hpp>
struct Nil final {};
using FooVariant = boost::variant<Nil, std::string, int>;
template<typename OutputIt = boost::spirit::ostream_iterator>
struct FooGenerator : boost::spirit::karma::grammar<OutputIt, FooVariant()>
{
  FooGenerator()
    : FooGenerator::base_type(start_)
  {
    ...
    start_  = ...;
  }
  boost::spirit::karma::rule<OutputIt, FooVariant()> start_;
};
int main() {
  for (auto fo : { FooVariant{}, {FooVariant{42}}, {FooVariant{"Hello\r\nWorld!"}} }) {
    std::cout << boost::spirit::karma::format(FooGenerator<>(), fo) << std::endl;
  }
}Örnek
Elimizde bir karma grameri olsun
template<typename Iterator>
struct MyKarmaGrammar : ka::grammar<Iterator, MyStruct()> {
  ...
};auto request  MyStruct { ... };
std::string generated;
std::back_insert_iterator<std::string> sink(generated);
MyKarmaGrammar<std::back_insert_iterator<std::string>> serializer;
ka::generate(sink, serializer, request);Gramer olarak bir struct'ı html'te iki tane yanyana sütun olacak şekilde çevirmek olsun. Şöyle yaparız.
using Attr = client::employee;
rule<Sink, Attr()> small_box  = "<B>" << string << "<1>"
                                      << string << "<2>"
                                      << string << "<3>";
ka::generate(sink, columns(2, "<nth_delimiter>\n") [+small_box], employees);<B>int<1>f1.1<2>f1.2<3><B>float<1>f2.1<2>f2.3<3><nth_delimiter>Şöyle yaparız. Her employee nesnesinden sonra satır sonu yapılır. Her iki employee nesnesinden sonra nt_delimeter kelimesi eklenir.
generate(sink, columns(2, "<nth_delimiter>") [small_box % eol], employees); 
Hiç yorum yok:
Yorum Gönder