mummy  1.0.2
MummyLog.h
Go to the documentation of this file.
00001 //----------------------------------------------------------------------------
00002 // MummyLog.h
00003 //
00004 // Author(s) : David Cole
00005 //
00006 // Copyright (C) 2006-2009 Kitware, Inc.
00007 //----------------------------------------------------------------------------
00008 
00009 #ifndef MummyLog_h
00010 #define MummyLog_h
00011 
00012 #include "MummyUtilities.h" // first mummy include for root classes
00013 
00014 #include "gxsys/ios/iostream"
00015 
00020 #define LogFileLineLabelledMsg(os, file, line, label, n, m) \
00021   if (ShouldLogMsg(n)) \
00022     { \
00023     LogMsg(file, line, label, n); \
00024     os << file << "(" << line << "): " << label << ": m" << n << ": " m << gxsys_ios::endl; \
00025     }
00026 
00027 
00028 #define LogFileLineErrorMsg(file, line, n, m) \
00029   LogFileLineLabelledMsg(gxsys_ios::cerr, file, line, "error", n, m)
00030 
00031 #define LogFileLineWarningMsg(file, line, n, m) \
00032   LogFileLineLabelledMsg(gxsys_ios::cerr, file, line, "warning", n, m)
00033 
00034 #define LogFileLineInfoMsg(file, line, n, m) \
00035   LogFileLineLabelledMsg(gxsys_ios::cout, file, line, "info", n, m)
00036 
00037 
00038 // n == number
00039 // m == (C++ stream-able) message or string literal
00040 //
00041 #define LogError(n, m) \
00042   LogFileLineErrorMsg("# ", 0, n, m)
00043 
00044 #define LogWarning(n, m) \
00045   LogFileLineWarningMsg("# ", 0, n, m)
00046 
00047 #define LogInfo(n, m) \
00048   LogFileLineInfoMsg("# ", 0, n, m)
00049 
00050 
00051 #define LogVerboseInfo(m) \
00052   if (this->GetSettings()->GetVerbose()) \
00053     { \
00054     LogInfo(mi_VerboseInfo, m); \
00055     }
00056 
00057 
00058 // Error (me_), warning (mw_) and info (mi_) values.
00059 //
00060 // Add new error values to the end of the me_ segment, new warnings to the
00061 // end of the mw_ segment and new info values to the end of the mi_ segment.
00062 // That way, new builds of mummy will always have the same error and warning
00063 // values as previous builds...
00064 //
00065 // DO NOT be tempted to alphabetize this list. Or, if you are tempted, resist
00066 // it with all that is in you... Keep this list ordered the same within each
00067 // segment - always!
00068 //
00069 enum MummyLogMsgValues
00070 {
00071   // Error values segment:
00072   me_ErrorValueBase = 5000,
00073   me_InternalError,
00074   me_CouldNotOpen,
00075   me_CouldNotParse,
00076   me_CouldNotValidate,
00077   me_CouldNotWrap,
00078   me_MissingRequiredCommandLineArg,
00079   me_UnexpectedGccxmlInput,
00080   me_InvalidArg,
00081   me_MoreThanOneBaseClass,
00082   me_UnknownFundamentalType,
00083   me_NoClassWrappingSettings,
00084   me_EventMethodIncorrectReturnType,
00085   me_NoVirtualMethodsAllowed,
00086   me_UnknownMapToType,
00087   me_PureVirtualMethodNotAllowed,
00088 
00089   // Warning values segment:
00090   mw_WarningValueBase = 6000,
00091   mw_InternalWarning,
00092   mw_NoSuchLineNumber,
00093   mw_UndocumentedEntity,
00094   mw_DuplicateGeneratedName,
00095   mw_ReservedMethodName,
00096   mw_UnnamedEnum,
00097   mw_MultipleTargetInterfaces,
00098   mw_CouldNotWrap,
00099   mw_PropGetReturnsVoid,
00100   mw_PropGetNotConst,
00101   mw_PropSetReturnsNonVoid,
00102   mw_PropSetUnexpectedArgCount,
00103   mw_DefaultArgumentValuesIgnored,
00104   mw_WriteOnlyProperty,
00105   mw_MissingPropGetHint,
00106   mw_MissingPropSetHint,
00107   mw_PropGetHasArgs,
00108   mw_SeriousMissingPropGetHint,
00109   mw_SeriousMissingPropSetHint,
00110   mw_UnknownAttribute,
00111   mw_MultipleHints,
00112   mw_UnknownHintDataType,
00113 
00114   // Info values segment:
00115   mi_InfoValueBase = 7000,
00116   mi_Info,
00117   mi_VerboseInfo,
00118   mi_InfoRefArgEncountered,
00119 
00120   // Always keep this one last:
00121   //
00122   me_LastMummyLogMsgValue
00123 };
00124 
00125 #endif