00001 #ifndef _ots_Cout_Macros_h_
00002 #define _ots_Cout_Macros_h_
00003
00004
00005 #include <string.h>
00006 #include <iostream>
00007 #include <sstream>
00008
00009
00010 #define __SHORTFILE__ (strstr(&__FILE__[0], "/srcs/") ? strstr(&__FILE__[0], "/srcs/") + 6 : __FILE__)
00011
00012
00013 #define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
00014
00015 #define __E__ std::endl
00016
00017
00018 #define __COUT_HDR_FL__ __SHORTFILE__ << " [" << std::dec << __LINE__ << "]\t"
00019 #define __COUT_HDR_FP__ __SHORTFILE__ << " : " << __PRETTY_FUNCTION__ << "\t"
00020 #define __COUT_HDR_PL__ __PRETTY_FUNCTION__ << " [" << std::dec << __LINE__ << "]\t"
00021 #define __COUT_HDR_F__ __SHORTFILE__ << "\t"
00022 #define __COUT_HDR_L__ std::dec << __LINE__ << "\t"
00023 #define __COUT_HDR_P__ __PRETTY_FUNCTION__ << "\t"
00024 #define __COUT_HDR__ __COUT_HDR_FL__
00025
00026
00027 #define __COUT_TYPE__(X) std::cout << QUOTE(X) << ":" << __MF_SUBJECT__ << ":"
00028
00029 #define __COUT_ERR__ __COUT_TYPE__(LogError) << __COUT_HDR__
00030 #define __COUT_WARN__ __COUT_TYPE__(LogWarning) << __COUT_HDR__
00031 #define __COUT_INFO__ __COUT_TYPE__(LogInfo) << __COUT_HDR__
00032 #define __COUT__ __COUT_TYPE__(LogDebug) << __COUT_HDR__
00033 #define __COUTV__(X) __COUT__ << QUOTE(X) << " = " << X << __E__
00034
00035
00039
00040 #define __MF_SUBJECT__ "ots" //default subject.. others can #undef and re-#define
00041
00042
00043 #define Q(X) #X
00044 #define QUOTE(X) Q(X)
00045
00046 #define __MF_TYPE__(X) mf::X (__MF_SUBJECT__)
00047
00048
00049
00050 #define __MF_HDR__ __COUT_HDR_FL__
00051 #define __MOUT_ERR__ __MF_TYPE__(LogError) << __MF_HDR__
00052 #define __MOUT_WARN__ __MF_TYPE__(LogWarning) << __MF_HDR__
00053 #define __MOUT_INFO__ __MF_TYPE__(LogInfo) << __MF_HDR__
00054 #define __MOUT__ __MF_TYPE__(LogDebug) << __MF_HDR__
00055 #define __MOUTV__(X) __MOUT__ << QUOTE(X) << " = " << X << _E__
00056
00057
00061 #define __MCOUT_ERR__(X) {__MOUT_ERR__ << X; __COUT_ERR__ << X;}
00062 #define __MCOUT_WARN__(X) {__MOUT_WARN__ << X; __COUT_WARN__ << X;}
00063 #define __MCOUT_INFO__(X) {__MOUT_INFO__ << X; __COUT_INFO__ << X;}
00064 #define __MCOUT__(X) {__MOUT__ << X; __COUT__ << X;}
00065 #define __MCOUTV__(X) {__MOUTV__(X); __COUTV__(X);}
00066
00067
00069
00070 #define __SS__ std::stringstream ss; ss << ":" << __MF_SUBJECT__ << ":" << __COUT_HDR__
00071 #define __SS_THROW__ __COUT_ERR__ << "\n" << ss.str(); throw std::runtime_error(ss.str())
00072
00074
00075
00076 #define __CFG_COUT_TYPE__(X) std::cout << QUOTE(X) << ":" << __MF_SUBJECT__ << "-" << theConfigurationRecordName_ << ":"
00077 #define __CFG_MF_TYPE__(X) mf::X (std::string(__MF_SUBJECT__) + theConfigurationRecordName_)
00078
00079 #define __CFG_MOUT_ERR__ __CFG_MF_TYPE__(LogError) << __MF_HDR__
00080 #define __CFG_MOUT_WARN__ __CFG_MF_TYPE__(LogWarning) << __MF_HDR__
00081 #define __CFG_MOUT_INFO__ __CFG_MF_TYPE__(LogInfo) << __MF_HDR__
00082 #define __CFG_MOUT__ __CFG_MF_TYPE__(LogDebug) << __MF_HDR__
00083 #define __CFG_MOUTV__(X) __CFG_MOUT__ << QUOTE(X) << " = " << X
00084 #define __CFG_COUT_ERR__ __CFG_COUT_TYPE__(LogError) << __COUT_HDR__
00085 #define __CFG_COUT_WARN__ __CFG_COUT_TYPE__(LogWarning) << __COUT_HDR__
00086 #define __CFG_COUT_INFO__ __CFG_COUT_TYPE__(LogInfo) << __COUT_HDR__
00087 #define __CFG_COUT__ __CFG_COUT_TYPE__(LogDebug) << __COUT_HDR__
00088 #define __CFG_COUTV__(X) __CFG_COUT__ << QUOTE(X) << " = " << X << __E__
00089
00090 #define __CFG_MCOUT_ERR__(X) {__CFG_MOUT_ERR__ << X; __CFG_COUT_ERR__ << X;}
00091 #define __CFG_MCOUT_WARN__(X) {__CFG_MOUT_WARN__ << X; __CFG_COUT_WARN__ << X;}
00092 #define __CFG_MCOUT_INFO__(X) {__CFG_MOUT_INFO__ << X; __CFG_COUT_INFO__ << X;}
00093 #define __CFG_MCOUT__(X) {__CFG_MOUT__ << X; __CFG_COUT__ << X;}
00094 #define __CFG_MCOUTV__(X) {__CFG_MOUTV__(X); __CFG_COUTV__(X);}
00095
00096 #define __CFG_SS__ std::stringstream ss; ss << ":" << __MF_SUBJECT__ << "-" << theConfigurationRecordName_ << ":" << __COUT_HDR__
00097 #define __CFG_SS_THROW__ __CFG_COUT_ERR__ << "\n" << ss.str(); throw std::runtime_error(ss.str())
00098
00099
00101
00102
00103 #define __SUP_COUT_TYPE__(X) std::cout << QUOTE(X) << ":" << __MF_SUBJECT__ << "-" << supervisorClassNoNamespace_ << ":"
00104 #define __SUP_MF_TYPE__(X) mf::X (std::string(__MF_SUBJECT__) + supervisorClassNoNamespace_)
00105
00106 #define __SUP_MOUT_ERR__ __SUP_MF_TYPE__(LogError) << __MF_HDR__
00107 #define __SUP_MOUT_WARN__ __SUP_MF_TYPE__(LogWarning) << __MF_HDR__
00108 #define __SUP_MOUT_INFO__ __SUP_MF_TYPE__(LogInfo) << __MF_HDR__
00109 #define __SUP_MOUT__ __SUP_MF_TYPE__(LogDebug) << __MF_HDR__
00110 #define __SUP_MOUTV__(X) __SUP_MOUT__ << QUOTE(X) << " = " << X
00111 #define __SUP_COUT_ERR__ __SUP_COUT_TYPE__(LogError) << __COUT_HDR__
00112 #define __SUP_COUT_WARN__ __SUP_COUT_TYPE__(LogWarning) << __COUT_HDR__
00113 #define __SUP_COUT_INFO__ __SUP_COUT_TYPE__(LogInfo) << __COUT_HDR__
00114 #define __SUP_COUT__ __SUP_COUT_TYPE__(LogDebug) << __COUT_HDR__
00115 #define __SUP_COUTV__(X) __SUP_COUT__ << QUOTE(X) << " = " << X << __E__
00116
00117 #define __SUP_MCOUT_ERR__(X) {__SUP_MOUT_ERR__ << X; __SUP_COUT_ERR__ << X;}
00118 #define __SUP_MCOUT_WARN__(X) {__SUP_MOUT_WARN__ << X; __SUP_COUT_WARN__ << X;}
00119 #define __SUP_MCOUT_INFO__(X) {__SUP_MOUT_INFO__ << X; __SUP_COUT_INFO__ << X;}
00120 #define __SUP_MCOUT__(X) {__SUP_MOUT__ << X; __SUP_COUT__ << X;}
00121 #define __SUP_MCOUTV__(X) {__SUP_MOUTV__(X); __SUP_COUTV__(X);}
00122
00123 #define __SUP_SS__ std::stringstream ss; ss << ":" << __MF_SUBJECT__ << "-" << supervisorClassNoNamespace_ << ":" << __COUT_HDR__
00124 #define __SUP_SS_THROW__ __SUP_COUT_ERR__ << "\n" << ss.str(); throw std::runtime_error(ss.str())
00125
00126
00127
00128
00129
00130
00131
00132 #ifdef XDAQ_NOCONST
00133 #define XDAQ_CONST_CALL
00134 #else
00135 #define XDAQ_CONST_CALL const
00136 #endif
00137
00138
00139
00140
00141
00142 #endif