$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
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