
From: "Jonathan Turkanis" <technews@kangaroologic.com>
Oops -- I forgot to finish my overview. Right now I have InputFilter, MulticharInputFilter, OutputFilter and MulticharOutputFilter. On top of these are built one_step_filter (a convenience class) and symmetric_filter_adapter (useful for converting C interfaces).
I'm thinking I'll promote symmetric_filter_adapter to a full-fledged concept SymmetricFilter, and recommend it as the filter concept to use for high-performance applications. I'll get rid of the Multichar filters, because I've found writing non-blocking Multichar filters to be extremely messy; it's just as easy to write a SymmetricFilter in that case.
So there will be three types of non-blocking filters: InputFilter (renamed PullFilter), OutputFilter (renamed PushFilter) and SymmetricFilter. There will also be two kinds of filters for beginners: one_step_filter, in which an entire document is presented in a vector, and filtered version must be appended to a second vector, and stdio_filter, in which the filter reads from std::cin and writes to std::cout.
In the tutorial, I'll analyze each of the current example filters in detail (except that the presidential one will just be called dictionary_filter). I'll start by showing how to implement the algorithm using a stdio_filter, then I'll show how to modify it to implement the more advanced filter concepts.
Sounds great. The reduction in the number of concepts is valuable. The tutorial progression is a good approach. -- Rob Stewart stewart@sig.com Software Engineer http://www.sig.com Susquehanna International Group, LLP using std::disclaimer;