1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>paintlib: pldebug.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3.2 -->
<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Compound List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Compound Members</a></div>
<h1>pldebug.h</h1><div class="fragment"><pre>00001 <span class="comment">/*</span>
00002 <span class="comment">/--------------------------------------------------------------------</span>
00003 <span class="comment">|</span>
00004 <span class="comment">| $Id: pldebug_8h-source.html,v 1.4 2004/09/15 15:26:29 uzadow Exp $</span>
00005 <span class="comment">|</span>
00006 <span class="comment">| Plattform-independent support for PLASSERT_VALID, PLTRACE and</span>
00007 <span class="comment">| PLASSERT.</span>
00008 <span class="comment">|</span>
00009 <span class="comment">| Copyright (c) 1996-2002 Ulrich von Zadow</span>
00010 <span class="comment">|</span>
00011 <span class="comment">\--------------------------------------------------------------------</span>
00012 <span class="comment">*/</span>
00013 <span class="preprocessor">#ifndef INCL_PLDEBUG</span>
00014 <span class="preprocessor"></span><span class="preprocessor">#define INCL_PLDEBUG</span>
00015 <span class="preprocessor"></span>
00016 <span class="preprocessor">#ifdef _DEBUG</span>
00017 <span class="preprocessor"></span><span class="preprocessor">#include <stdarg.h></span>
00018 <span class="preprocessor">#include <stdio.h></span>
00019 <span class="preprocessor">#include <stdlib.h></span>
00020 <span class="preprocessor">#ifdef _WINDOWS</span>
00021 <span class="preprocessor"></span><span class="preprocessor">#define WIN32_LEAN_AND_MEAN </span><span class="comment">/* Prevent including <winsock*.h> in <windows.h> */</span>
00022 <span class="preprocessor">#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers</span>
00023 <span class="preprocessor"></span><span class="preprocessor">#include <windows.h></span> <span class="comment">// For OutputDebugString</span>
00024 <span class="preprocessor">#endif</span>
00025 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00026 <span class="preprocessor"></span>
00027 <span class="comment">//------------- PLASSERT_VALID</span>
00028 <span class="preprocessor">#ifdef _DEBUG</span>
00029 <span class="preprocessor"></span><span class="preprocessor"> #define PLASSERT_VALID(pOb) (pOb)->AssertValid()</span>
00030 <span class="preprocessor"></span><span class="preprocessor">#else</span>
00031 <span class="preprocessor"></span><span class="preprocessor"> #define PLASSERT_VALID(pOb) do{} while (0)</span>
00032 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00033 <span class="preprocessor"></span>
00034 <span class="comment">//------------- TRACE</span>
00035 <span class="preprocessor">#ifdef _DEBUG</span>
00036 <span class="preprocessor"></span> <span class="comment">// Inlined to avoid differing linker signatures for debug and release</span>
00037 <span class="comment">// versions of paintlib.</span>
00038 <span class="keywordtype">void</span> PLTrace(<span class="keyword">const</span> <span class="keywordtype">char</span> * pszFormat, ...);
00039 <span class="preprocessor"> #define PLTRACE ::PLTrace</span>
00040 <span class="preprocessor"></span><span class="preprocessor">#else</span>
00041 <span class="preprocessor"></span> <span class="comment">// This will be optimized away in release mode and still allow TRACE</span>
00042 <span class="comment">// to take a variable amount of arguments :-).</span>
00043 <span class="keyword">inline</span> <span class="keywordtype">void</span> PLTrace (<span class="keyword">const</span> <span class="keywordtype">char</span> *, ...) { }
00044 <span class="preprocessor"> #define PLTRACE 1 ? (void)0 : ::PLTrace</span>
00045 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00046 <span class="preprocessor"></span>
00047 <span class="comment">//------------- ASSERT</span>
00048
00049 <span class="preprocessor">#ifdef _DEBUG</span>
00050 <span class="preprocessor"></span><span class="preprocessor"> #ifdef _WINDOWS</span>
00051 <span class="preprocessor"></span><span class="preprocessor"> #define PLASSERT(f) \</span>
00052 <span class="preprocessor"> if (!(f)) \</span>
00053 <span class="preprocessor"> { \</span>
00054 <span class="preprocessor"> PLTRACE ("Assertion failed at %s, %i\n", __FILE__, __LINE__); \</span>
00055 <span class="preprocessor"> __asm { int 3 } \</span>
00056 <span class="preprocessor"> }</span>
00057 <span class="preprocessor"></span><span class="preprocessor"> #else</span>
00058 <span class="preprocessor"></span><span class="preprocessor"> #define PLASSERT(f) \</span>
00059 <span class="preprocessor"> if (!(f)) \</span>
00060 <span class="preprocessor"> { \</span>
00061 <span class="preprocessor"> PLTRACE ("Assertion failed at %s, %i\n", __FILE__, __LINE__); \</span>
00062 <span class="preprocessor"> abort(); \</span>
00063 <span class="preprocessor"> }</span>
00064 <span class="preprocessor"></span><span class="preprocessor"> #endif</span>
00065 <span class="preprocessor"></span><span class="preprocessor">#else</span>
00066 <span class="preprocessor"></span><span class="preprocessor"> #define PLASSERT(f) do{}while (0)</span>
00067 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00068 <span class="preprocessor"></span>
00069 <span class="preprocessor">#ifdef _DEBUG</span>
00070 <span class="preprocessor"></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> PLTrace(<span class="keyword">const</span> <span class="keywordtype">char</span> * pszFormat, ...)
00071 {
00072 va_list args;
00073 va_start(args, pszFormat);
00074
00075 <span class="keywordtype">int</span> nBuf;
00076 <span class="keywordtype">char</span> szBuffer[4096];
00077
00078 nBuf = vsprintf(szBuffer, pszFormat, args);
00079 PLASSERT(nBuf < 4096);
00080
00081 <span class="preprocessor">#ifndef _WINDOWS</span>
00082 <span class="preprocessor"></span> fprintf (stderr, szBuffer);
00083 <span class="preprocessor">#else</span>
00084 <span class="preprocessor"></span> ::OutputDebugString (szBuffer);
00085 <span class="preprocessor">#endif //_WINDOWS</span>
00086 <span class="preprocessor"></span>
00087 va_end(args);
00088 }
00089 <span class="preprocessor">#endif</span>
00090 <span class="preprocessor"></span>
00091 <span class="comment">//------------- CompilerAssert template for conditional</span>
00092 <span class="comment">// compile time error generation.</span>
00093
00094 <span class="preprocessor">#define PLCOMPILER_ASSERT(cond) (void)sizeof(int[bool(cond)?1:-1]);</span>
00095 <span class="preprocessor"></span>
00096
00097 <span class="preprocessor">#endif // INCL_PLDEBUG</span>
00098 <span class="preprocessor"></span>
00099 <span class="comment">/*</span>
00100 <span class="comment">/--------------------------------------------------------------------</span>
00101 <span class="comment">|</span>
00102 <span class="comment">| $Log: pldebug_8h-source.html,v $
00102 <span class="comment">| Revision 1.4 2004/09/15 15:26:29 uzadow
00102 <span class="comment">| Linux compatibility changes, doc update.
00102 <span class="comment">|</span>
00103 <span class="comment">| Revision 1.7 2004/09/11 12:41:35 uzadow</span>
00104 <span class="comment">| removed plstdpch.h</span>
00105 <span class="comment">|</span>
00106 <span class="comment">| Revision 1.6 2004/06/13 20:19:27 uzadow</span>
00107 <span class="comment">| no message</span>
00108 <span class="comment">|</span>
00109 <span class="comment">| Revision 1.5 2004/06/06 12:56:38 uzadow</span>
00110 <span class="comment">| Doxygenified documentation.</span>
00111 <span class="comment">|</span>
00112 <span class="comment">| Revision 1.4 2004/03/10 21:36:43 uzadow</span>
00113 <span class="comment">| pltester now has sensible output in non-debug mode.</span>
00114 <span class="comment">|</span>
00115 <span class="comment">| Revision 1.3 2002/03/31 13:36:41 uzadow</span>
00116 <span class="comment">| Updated copyright.</span>
00117 <span class="comment">|</span>
00118 <span class="comment">| Revision 1.2 2001/10/21 17:12:39 uzadow</span>
00119 <span class="comment">| Added PSD decoder beta, removed BPPWanted from all decoders, added PLFilterPixel.</span>
00120 <span class="comment">|</span>
00121 <span class="comment">| Revision 1.1 2001/09/16 19:03:22 uzadow</span>
00122 <span class="comment">| Added global name prefix PL, changed most filenames.</span>
00123 <span class="comment">|</span>
00124 <span class="comment">| Revision 1.3 2000/12/04 23:55:40 uzadow</span>
00125 <span class="comment">| no message</span>
00126 <span class="comment">|</span>
00127 <span class="comment">| Revision 1.2 2000/12/04 13:28:17 uzadow</span>
00128 <span class="comment">| Changed PLASSERT to use int 3 in windows builds.</span>
00129 <span class="comment">|</span>
00130 <span class="comment">| Revision 1.1 2000/01/17 23:45:07 Ulrich von Zadow</span>
00131 <span class="comment">| MFC-Free version.</span>
00132 <span class="comment">|</span>
00133 <span class="comment">|</span>
00134 <span class="comment">\--------------------------------------------------------------------</span>
00135 <span class="comment">*/</span>
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Sep 13 16:16:40 2004 for paintlib by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
</a>1.3.2 </small></address>
</body>
</html>
|