diff options
Diffstat (limited to 'lib/common/Logging.h')
-rw-r--r-- | lib/common/Logging.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/lib/common/Logging.h b/lib/common/Logging.h index 1fcbe59e..2318e142 100644 --- a/lib/common/Logging.h +++ b/lib/common/Logging.h @@ -10,6 +10,8 @@ #ifndef LOGGING__H #define LOGGING__H +#include <assert.h> + #include <cerrno> #include <cstring> #include <iomanip> @@ -389,6 +391,30 @@ class HideExceptionMessageGuard bool mOldHiddenState; }; +class HideSpecificExceptionGuard +{ + private: + std::pair<int, int> mExceptionCode; + + public: + typedef std::vector<std::pair<int, int> > SuppressedExceptions_t; + static SuppressedExceptions_t sSuppressedExceptions; + + HideSpecificExceptionGuard(int type, int subtype) + : mExceptionCode(std::pair<int, int>(type, subtype)) + { + sSuppressedExceptions.push_back(mExceptionCode); + } + ~HideSpecificExceptionGuard() + { + SuppressedExceptions_t::reverse_iterator i = + sSuppressedExceptions.rbegin(); + assert(*i == mExceptionCode); + sSuppressedExceptions.pop_back(); + } + static bool IsHidden(int type, int subtype); +}; + std::string PrintEscapedBinaryData(const std::string& rInput); #endif // LOGGING__H |