
----- Original Message ----- From: "Rob Stewart" <stewart@sig.com> To: <boost@lists.boost.org> Cc: <boost@lists.boost.org> 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