00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifdef __GNUG__
00029 #pragma interface
00030 #endif
00031
00032 #ifndef _util_misc_exenv_h
00033 #define _util_misc_exenv_h
00034
00035 #include <stdlib.h>
00036
00037 #include <scconfig.h>
00038
00039 #include <iostream>
00040
00041 #include <util/misc/formio.h>
00042
00043 namespace sc {
00044
00047 class ExEnv {
00048 protected:
00049 static int initialized_;
00050 static int *argc_;
00051 static char ***argv_;
00052 static char hostname_[256];
00053 static char username_[9];
00054
00055 static size_t mem_;
00056 static int nproc_;
00057
00058 static std::ostream *out_;
00059 static std::ostream *nullstream_;
00060 public:
00062 static void init(int &argcref, char **&argvref);
00064 static int initialized() { return argc_ != 0; }
00066 static int &argc() { return *argc_; }
00068 static char **&argv() { return *argv_; }
00070 static const char *program_name();
00072 static const char *hostname() { return hostname_; }
00074 static const char *username() { return username_; }
00075
00076 static void set_out(std::ostream *o) { SCFormIO::init_ostream(*o);out_=o; }
00078 static std::ostream &outn() { if (!out_)set_out(&std::cout);return *out_; }
00080 static std::ostream &errn() { return outn(); }
00082 static std::ostream &out0();
00084 static std::ostream &err0() { return out0(); }
00085
00087 static size_t memory() { return mem_; }
00089 static int nproc() { return nproc_; }
00090 };
00091
00092 }
00093
00094 #endif
00095
00096
00097
00098
00099