Boost logo

Boost :

From: christopher diggins (cdiggins_at_[hidden])
Date: 2005-01-07 16:52:40


There has been some questions posed to me as to the difference between
Jonathan's iostreams library filter concept (
http://home.comcast.net/~jturkanis/iostreams/libs/iostreams/doc/ ). The
iostreams library and it is the correct choice if you are writing a
relatively simple filter, but writing an even more sophisticated program as
an iostreams filter, is non-trivial. For instance the following code would
require some significant rewriting in order to make it a single filter
object.

public Avg : Program {
  virtual void Main() {
    double dSum = 0;
    int nCnt = 0;
    while (!cin.eof()) {
      double d;
      std::cin >> d;
      dSum += d;
    }
    std::cout << dSum << std::endl;
  }
}

This is primarily because a filter involves a series of calls to a single
function such as put or get (see:
http://home.comcast.net/~jturkanis/iostreams/libs/iostreams/doc/tutorial.html#tutorial_output_filter )
.

The point of the Program class is that I want to be able to write a C++
programs as naturally as possible, and still redirect it, or chain them
together simply. The above program can be redirected to a stream, or to
another file by simply writing:

  Avg() > fstream("c:\\tmp.txt");

Just so I am clear. I am not at all suggesting that what I propose is
replacement for any part of the iostream library. It is designed as an
alternative to using main().

Christopher Diggins
http://www.cdiggins.com
http://www.heron-language.com


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk