Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Spirit V2.2
PrevUpHomeNext
What's changed in Spirit.Qi and Spirit.Karma from V2.1 (Boost V1.41.0) to V2.2 (Boost V1.42.0)
New Features
  • Added auto_ component in Spirit.Qi and Spirit.Karma, added API functions qi::create_parser and karma::create_generator.
  • Added auto_ based overloads for all API functions taking no attributes (see Qi API and Karma API).
  • Added karma::columns directive.
  • Added karma::symbols<Attr, T> generator.
  • The Spirit.Qi customization point traits::push_back_container now returns a bool to report whether the item has been added to the container.
  • Added an overload for karma::maxwidth directive allowing to specify an additional parameter (any compatible output iterator) receiving the 'overspilled' output (output not fitting into the maxwidth limit).
  • It is now possible to use Phoenix expressions as Spirit.Karma attributes.
  • Added basic_istream_iterator<Char, Traits> usable as an equivalent for std::istream_iterator except its a ForwardIterator allowing to parse directly from any std::basic_istream.
  • Added qi::matches directive.
Bug Fixes
  • Fixed karma::alternatives to work with embedded containers of hold_any (i.e. constructs like *stream | "empty" (which fixes the Karma example basic_facilities.cpp).
  • Fixed numeric Spirit.Karma generators for character types.
  • Fixed qi::repeat[] for unused attributes.
  • Fixed rare compilation problem in karma::repeat[].
  • Fixed sequences in Spirit.Qi and Spirit.Karma to compile properly if the attribute is a (STL) container of (STL) containers.
  • Fixed a problem in lex::token_def::what.
  • Fixed Spirit.Qi symbols not to match substrings anymore. Added qi::symbols::prefix_find to allow matching of (prefix-) substrings.
  • Inherited parameters for rule's usually have to be wrapped in function objects (i.e. phoenix::val), for integral values this was not necessary. Now all string types can be passed without being wrapped as well (i.e. std::string, char const*, etc.).
  • Added concept checks to all relevant Spirit.Qi API functions enforcing the iterator to be at least of the type std::forward_iterator_tag.
  • Fixed the qi::match and qi::phrase_match set of API functions not to internally utilize a std::stream_iterator anymore as this iterator is of the type std::input_iterator_tag only, which is not sufficient for Spirit.Qi.

PrevUpHomeNext