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
00029
00030 #ifndef _WARNINGS_HPP_
00031 #define _WARNINGS_HPP_
00032
00033 #include <string>
00034 #include <deque>
00035
00047 class Warnings
00048 {
00049 private:
00050 static Warnings* mpInstance;
00053 typedef std::deque<std::pair<std::string, std::string> > WarningsContainerType;
00054
00055 WarningsContainerType mWarningMessages;
00057 protected:
00058
00063 Warnings();
00064
00068 static void NoisyDestroy();
00069
00070 public:
00071
00076 static void QuietDestroy();
00077
00086 void AddWarning(const std::string& rMessage, const std::string& rFilename, unsigned lineNumber, bool onlyOnce=false);
00087
00093 std::string PopWarning() const;
00094
00099 static Warnings* Instance();
00100
00104 unsigned GetNumWarnings();
00105
00109 std::string GetNextWarningMessage();
00110 };
00111
00112 #define WARNING(message) Warnings::Instance()->AddWarning(message, __FILE__, __LINE__)
00113
00131 #define WARN_ONCE_ONLY(message) Warnings::Instance()->AddWarning(message, __FILE__, __LINE__, true)
00132
00133 #endif // _WARNINGS_HPP_