summaryrefslogtreecommitdiff
path: root/Build/source/libs/graphite/include/graphite/GrDebug.h
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/graphite/include/graphite/GrDebug.h')
-rw-r--r--Build/source/libs/graphite/include/graphite/GrDebug.h200
1 files changed, 200 insertions, 0 deletions
diff --git a/Build/source/libs/graphite/include/graphite/GrDebug.h b/Build/source/libs/graphite/include/graphite/GrDebug.h
new file mode 100644
index 00000000000..dc02fac0134
--- /dev/null
+++ b/Build/source/libs/graphite/include/graphite/GrDebug.h
@@ -0,0 +1,200 @@
+/*--------------------------------------------------------------------*//*:Ignore this sentence.
+Copyright (C) 1999, 2001 SIL International. All rights reserved.
+
+Distributable under the terms of either the Common Public License or the
+GNU Lesser General Public License, as specified in the LICENSING.txt file.
+
+File: debug.h
+Responsibility:
+Last reviewed:
+
+Description:
+ Assert and debug definitions.
+----------------------------------------------------------------------------------------------*/
+
+#ifndef __DEBUG_H__
+#define __DEBUG_H__
+
+#include <cassert>
+
+namespace gr
+{
+
+#ifdef _DEBUG
+ #undef DEBUG
+ #define DEBUG 1
+ #undef NDEBUG
+ #define DEFINE_THIS_FILE static char THIS_FILE[] = __FILE__;
+ #undef THIS_FILE
+ #define THIS_FILE __FILE__
+#else //!_DEBUG
+ #undef DEBUG
+ #define DEFINE_THIS_FILE
+
+ //#define Debug(foo)
+#endif //!_DEBUG
+
+#if 0
+//#ifdef DEBUG
+
+//#include <windows.h>
+
+ typedef void (WINAPI * Pfn_Assert)(const char * pszExp, const char * pszFile, int nLine,
+ HMODULE hmod);
+ typedef Pfn_Assert Pfn_Warn;
+
+ /*__declspec(dllimport)*/ void WINAPI WarnProc(const char * pszExp, const char * pszFile,
+ int nLine, bool fCritical, HMODULE hmod);
+ /*__declspec(dllimport)*/ void WINAPI AssertProc(const char * pszExp, const char * pszFile,
+ int nLine, bool fCritical, HMODULE hmod);
+
+ __declspec(dllimport) Pfn_Assert WINAPI SetAssertProc(Pfn_Assert pfnAssert);
+ __declspec(dllimport) Pfn_Warn WINAPI SetWarnProc(Pfn_Warn pfnWarn);
+ __declspec(dllimport) int WINAPI HideWarnings(bool f);
+ __declspec(dllimport) int WINAPI HideAsserts(bool f);
+ __declspec(dllimport) int WINAPI HideErrors(bool f);
+
+ void WINAPI WarnHrProc(HRESULT hr, const char * pszFile, int nLine, bool fCritical);
+ void WINAPI WarnProcLocal(const char * pszExp, const char * pszFile, int nLine,
+ bool fCritical);
+ void WINAPI AssertProcLocal(const char * pszExp, const char * pszFile, int nLine,
+ bool fCritical);
+
+ #define Assert(exp) ((exp) || (AssertProcLocal(#exp, THIS_FILE, __LINE__, false), 0))
+ #define AssertC(exp) ((exp) || (AssertProcLocal(#exp, THIS_FILE, __LINE__, true), 0))
+ #define AssertMsg(exp, msg) ((exp) || (AssertProcLocal(msg, THIS_FILE, __LINE__, false), 0))
+ #define AssertMsgC(exp, msg) ((exp) || (AssertProcLocal(msg, THIS_FILE, __LINE__, true), 0))
+
+ #undef Warn
+ #define Warn(psz) (void)(WarnProcLocal(psz, THIS_FILE, __LINE__, false))
+ #define WarnC(psz) (void)(WarnProcLocal(psz, THIS_FILE, __LINE__, true))
+
+ #undef WarnIf
+ #define WarnIf(exp) (void)(!(exp) || (WarnProcLocal("(" #exp ") is true", THIS_FILE, \
+ __LINE__, false), 0))
+ #define WarnIfC(exp) (void)(!(exp) || (WarnProcLocal("(" #exp ") is true", THIS_FILE, \
+ __LINE__, true), 0))
+
+ #undef WarnUnless
+ #define WarnUnless(exp) (void)((exp) || (WarnProcLocal("(" #exp ") is false", \
+ THIS_FILE, __LINE__, false), 0))
+ #define WarnUnlessC(exp) (void)((exp) || (WarnProcLocal("(" #exp ") is false", \
+ THIS_FILE, __LINE__, true), 0))
+
+ #undef WarnHr
+ #define WarnHr(hr) ((SUCCEEDED(hr) || (WarnHrProc(hr, THIS_FILE, __LINE__, false), 0)), \
+ (hr))
+ #define WarnHrC(hr) ((SUCCEEDED(hr) || (WarnHrProc(hr, THIS_FILE, __LINE__, true), 0)), \
+ (hr))
+
+ class IgnoreWarnings
+ {
+ public:
+ IgnoreWarnings()
+ { HideWarnings(true); }
+ ~IgnoreWarnings()
+ { HideWarnings(false); }
+ };
+
+ class IgnoreAsserts
+ {
+ public:
+ IgnoreAsserts()
+ { HideAsserts(true); }
+ ~IgnoreAsserts()
+ { HideAsserts(false); }
+ };
+
+ class IgnoreErrors
+ {
+ private:
+ IgnoreWarnings iw;
+ IgnoreAsserts ia;
+ };
+
+ #define Debug(exp) exp
+ #define DoAssert(exp) Assert(exp)
+ #define DoAssertC(exp) AssertC(exp)
+ #define DoAssertHr(hr) Assert(SUCCEEDED(hr))
+ #define DoAssertHrC(hr) AssertC(SUCCEEDED(hr))
+#else
+ #define Assert(exp) assert(exp)
+ #define AssertC(exp)
+ #define AssertMsg(exp, msg)
+ #define AssertMsgC(exp, msg)
+ #define Warn(psz)
+ #define WarnC(psz)
+ #define WarnIf(exp)
+ #define WarnIfC(exp)
+ #define WarnUnless(exp)
+ #define WarnUnlessC(exp)
+ #define WarnHr(hr) (hr)
+ #define WarnHrC(hr) (hr)
+ #define Debug(exp)
+ #define DoAssert(exp) (exp)
+ #define DoAssertC(exp) (exp)
+ #define DoAssertHr(hr) (hr)
+ #define DoAssertHrC(hr) (hr)
+#endif //DEBUG
+
+#define AssertPtr(pv) Assert(ValidReadPtr(pv))
+#define AssertPtrN(pv) Assert(!(pv) || ValidReadPtr(pv))
+#define AssertArray(pv, cv) Assert((cv) >= 0 && ValidReadPtrSize((pv), isizeof(*(pv)) * (cv)))
+#define AssertArrayN(pv, cv) Assert((cv) >= 0 && (!(pv) || ValidReadPtrSize((pv), isizeof(*(pv)) * (cv))))
+#define AssertPtrSize(pv, cb) Assert((cb) >= 0 && ValidReadPtrSize((pv), cb))
+
+#define AssertPfn(pfn) Assert(!IsBadCodePtr((FARPROC)(pfn)))
+#define AssertPfnN(pfn) Assert(!(pfn) || !IsBadCodePtr((FARPROC)(pfn)))
+
+#define AssertPsz(psz) Assert(ValidPsz(psz))
+#define AssertPszN(psz) Assert(!(psz) || ValidPsz(psz))
+
+#define AssertBstr(bstr) Assert(ValidBstr(bstr))
+#define AssertBstrN(bstr) Assert(!(bstr) || ValidBstr(bstr))
+
+#define AssertObj(pv) Assert(ValidReadPtr(pv) && (pv)->AssertValid())
+#define AssertObjN(pv) Assert(!(pv) || ValidReadPtr(pv) && (pv)->AssertValid())
+
+/*----------------------------------------------------------------------------------------------
+ This class implements custom output to the debugger. The results of Watch() can be
+ viewed on a line in the Watch window. Output() writes to the Debugger Output window.
+ Calls to Output() should be included in the Watch() function as needed. Watch()
+ is executed every time the debugger displays this class in the Watch window.
+ To use it:
+
+ 1) Put the following line in:
+ \program files\Microsoft Visual Studio\Common\MSDev98\bin\AutoExp.dat
+ in the [AutoExpand] section:
+ DebugWatch=<WatchNV(),su>
+
+ 2) In the class from which you want custom debug output, add the equivalent of:
+ #ifdef DEBUG
+ class Dbw1 : public DebugWatch { virtual OLECHAR * Watch(); ... };
+ Dbw1 m_dbw1;
+ #endif //DEBUG
+
+ 3) Implement the Watch() function to display the data you want to see, bracketed by
+ #ifdef DEBUG / #endif. Note that Output() is LIMITED to 10 pointer-sized arguments.
+ If you must have more, then call _CrtDbgReport() directly. Note also that
+ _CrtDbgReport() is not implemented for wide characters, so neither is Output().
+----------------------------------------------------------------------------------------------*/
+#if 0
+//#ifdef DEBUG
+class DebugWatch
+{
+public:
+ int m_nSerial; // increment and display this for positive affirmation of refresh
+ DebugWatch() { m_nSerial = 0; }
+ OLECHAR * WatchNV(); // debugger won't find it if it is virtual or inline.
+ virtual OLECHAR * Watch() { return L"No DebugWatch string implemented"; }
+ void Output (char *fmt, ...); // LIMITED to 10 pointer-sized arguments
+};
+#endif //DEBUG
+
+} // namespace gr
+
+#if defined(GR_NO_NAMESPACE)
+using namespace gr;
+#endif
+
+#endif