Main Page   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members  

manipulators.h

00001 #ifndef EDG_WORKLOAD_COMMON_LOGGER_MANIPULATORS_H
00002 #define EDG_WORKLOAD_COMMON_LOGGER_MANIPULATORS_H
00003 
00004 #include <iostream>
00005 #include <string>
00006 
00007 #include "edg/workload/common/common_namespace.h"
00008 
00009 #include "common.h"
00010 
00011 COMMON_NAMESPACE_BEGIN {
00012 
00013 namespace logger {
00014 
00015 class Logbuf;
00016 namespace threadsafe { class logstream; };
00017 
00018 class StatePusher {
00019 public:
00020   StatePusher( std::ostream &os, const char *func = NULL );
00021   StatePusher( std::ostream &os, const std::string &func );
00022   StatePusher( threadsafe::logstream &os, const char *func = NULL );
00023   StatePusher( threadsafe::logstream &os, const std::string &func );
00024   ~StatePusher( void );
00025 
00026 private:
00027   void setState( const char *func );
00028 
00029   StatePusher( const StatePusher &fp ); // Not implemented
00030   StatePusher &operator=( const StatePusher &fp ); // Not implemented
00031 
00032   Logbuf                *fp_buffer;
00033   DataContainerSingle    fp_data;
00034 };
00035 
00036 #ifndef LOGGER_FUTURE_IMPLEMENTATION
00037 class setfunction {
00038   friend std::ostream &operator<<( std::ostream &os, const setfunction &sf );
00039   friend threadsafe::logstream &operator<<( threadsafe::logstream &os, const setfunction &sf );
00040 
00041 public:
00042   setfunction( const char *func );
00043   setfunction( const std::string &func );
00044 
00045 private:
00046   std::string   sf_function;
00047 };
00048 #endif /* !LOGGER_FUTURE_IMPLEMENTATION */
00049 
00050 class settimeformat {
00051   friend std::ostream &operator<<( std::ostream &os, const settimeformat &sf );
00052   friend threadsafe::logstream &operator<<( threadsafe::logstream &os, const settimeformat &sf );
00053 
00054 public:
00055   settimeformat( const char *format );
00056   settimeformat( const std::string &func );
00057 
00058 private:
00059   std::string   stf_format;
00060 };
00061 
00062 class setlevel {
00063   friend std::ostream &operator<<( std::ostream &os, const setlevel &sf );
00064   friend threadsafe::logstream &operator<<( threadsafe::logstream &os, const setlevel &sf );
00065 
00066 public:
00067   setlevel( level_t lev );
00068 
00069 private:
00070   level_t      sl_level;
00071 };
00072 
00073 class setcurrent {
00074   friend std::ostream &operator<<( std::ostream &os, const setcurrent &sf );
00075   friend threadsafe::logstream &operator<<( threadsafe::logstream &os, const setcurrent &sf );
00076 
00077 public:
00078   setcurrent( level_t lev );
00079 
00080 private:
00081   level_t      sc_level;
00082 };
00083 
00084 class setmultiline {
00085   friend std::ostream &operator<<( std::ostream &os, const setmultiline &sm );
00086   friend threadsafe::logstream &operator<<( threadsafe::logstream &os, const setmultiline &sm );
00087 
00088 public:
00089   setmultiline( bool multi, const char *prefix = NULL );
00090 
00091 private:
00092   bool         sm_multi;
00093   const char  *sm_prefix;
00094 };
00095 
00096 class setshowseverity {
00097   friend std::ostream &operator<<( std::ostream &os, const setshowseverity &ss );
00098   friend threadsafe::logstream &operator<<( threadsafe::logstream &os, const setshowseverity &ss );
00099 
00100 public:
00101   setshowseverity( bool show );
00102 
00103 private:
00104   bool     ss_show;
00105 };
00106 
00107 #ifndef LOGGER_FUTURE_IMPLEMENTATION
00108 std::ostream &operator<<( std::ostream &os, const setfunction &sf );
00109 #endif /* !LOGGER_FUTURE_IMPLEMENTATION */
00110 std::ostream &operator<<( std::ostream &os, const settimeformat &stf );
00111 std::ostream &operator<<( std::ostream &os, const setlevel &sl );
00112 std::ostream &operator<<( std::ostream &os, const setcurrent &sc );
00113 std::ostream &operator<<( std::ostream &os, const setmultiline &sc );
00114 
00115 #ifndef LOGGER_FUTURE_IMPLEMENTATION
00116 threadsafe::logstream &operator<<( threadsafe::logstream &os, const setfunction &sf );
00117 #endif /* !LOGGER_FUTURE_IMPLEMENTATION */
00118 threadsafe::logstream &operator<<( threadsafe::logstream &os, const settimeformat &sf );
00119 threadsafe::logstream &operator<<( threadsafe::logstream &os, const setlevel &sf );
00120 threadsafe::logstream &operator<<( threadsafe::logstream &os, const setcurrent &sf );
00121 threadsafe::logstream &operator<<( threadsafe::logstream &os, const setmultiline &sf );
00122 
00123 }; // Namespace logger
00124 
00125 } COMMON_NAMESPACE_END;
00126 
00127 #endif /* EDG_WORKLOAD_COMMON_LOGGER_MANIPULATORS_H */
00128 
00129 // Local Variables:
00130 // mode: c++
00131 // End:

Generated on Fri May 14 14:18:26 2004 for COMMON API - configuration, jobid, ldif2classadi, logger, process, requestad, socket++i, task, utilities by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002