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:
00062 Warnings();
00063
00064 public:
00069 static void NoisyDestroy();
00070
00075 static void QuietDestroy();
00076
00085 void AddWarning(const std::string& rMessage, const std::string& rFilename, unsigned lineNumber, bool onlyOnce=false);
00086
00092 std::string PopWarning() const;
00093
00098 static Warnings* Instance();
00099
00103 unsigned GetNumWarnings();
00104
00108 std::string GetNextWarningMessage();
00109 };
00110
00111 #define WARNING(message) Warnings::Instance()->AddWarning(message, __FILE__, __LINE__)
00112
00130 #define WARN_ONCE_ONLY(message) Warnings::Instance()->AddWarning(message, __FILE__, __LINE__, true)
00131
00132 #endif // _WARNINGS_HPP_