$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: christopher diggins (cdiggins_at_[hidden])
Date: 2005-01-07 14:42:23
----- Original Message -----
From: "Rob Stewart" <stewart_at_[hidden]>
To: <boost_at_[hidden]>
Cc: <boost_at_[hidden]>
Sent: Friday, January 07, 2005 2:00 PM
Subject: Re: [boost] Any interest in a library for supporting program reuse?
>> What would you suggest the name of the class be instead? It is intended
>> to
>> provide the main entry point for a program, so that the program can be
>> easily reused separately.
>
>>From what I see, you're packaging functions, not system() calls
> to executables or separate processes connected by some IPC.
I am trying to describe a way to write a C++ program by packaging the entire
thing (entry point, global functions, global variable) in a single object.
So what I propose is that rather than write a program in a single cpp file
as follows:
/////////////////
// my_prog.cpp
#include <iostream>
char const* s = "hello world\n"
int main() {
std::cout << s << std::endl;
return 0;
}
Instead what I propose is that instead you write the programs in two files
as:
/////////////////
// my_prog.hpp
#include "programs.hpp"
#include <iostream>
class MyProgram : Program {
const char* s;
protected:
virtual void Main() {
std::cout << s << std::endl;
}
};
char const* MyProgram::s = "hello world\n";
/////////////////
// my_prog.cpp
#include "my_prog.hpp"
int main() {
MyProgram().Run();
return 0;
}
Now having done that, the entire program can now be treated as a single
object which can be redirected or piped.
/////////////////
// my_prog3.hpp
#include <fstream>
#include "programs.hpp"
#include "my_prog.hpp"
#include "my_prog2.hpp"
class MyProgram3 : Program {
protected:
virtual void Main() {
MyProgram() > MyProgram2() > filestream("c:\\tmp.txt");
}
};
My desire is to make it trivial to reuse the entire source code from
programs, using a simple syntax as if they were shell scripts, and in a
completely portable manner from within C++. This foregoes any kind of
process call or whatever, because in C++ the notion of threads or process
doesn't exist. I have written a small blog entry on the subject as well at
http://www.artima.com/weblogs/viewpost.jsp?thread=87459
Is it more clear what I am trying to get at? Am I missing something about
Jonathan's iostreams library, that makes it trivial to achieve the same
thing?
CD