⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 object_8h-source.html

📁 pwlib开发文档
💻 HTML
📖 第 1 页 / 共 5 页
字号:
00555 <span class="preprocessor"></span><a name="l00565"></a><a class="code" href="object_8h.html#a8">00565</a> <span class="preprocessor">#define PAssertNULL(p) ((&amp;(p)&amp;&amp;(p)!=NULL)?(p): \</span>00566 <span class="preprocessor">                     (PAssertFunc(__FILE__,__LINE__, __CLASS__, PNullPointerReference),(p)))</span>00567 <span class="preprocessor"></span><a name="l00574"></a><a class="code" href="object_8h.html#a9">00574</a> <span class="preprocessor">#define PAssertAlways(m) PAssertFunc(__FILE__,__LINE__,__CLASS__,(m))</span>00575 <span class="preprocessor"></span><a name="l00582"></a><a class="code" href="object_8h.html#a10">00582</a> <span class="preprocessor">#define PAssertAlways2(c, m) PAssertFunc(__FILE__,__LINE__,(c),(m))</span>00583 <span class="preprocessor"></span>00584 <span class="preprocessor">#endif // P_USE_ASSERTS</span>00585 <span class="preprocessor"></span>00586 00591 ostream &amp; <a class="code" href="object_8h.html#a60">PGetErrorStream</a>();00592 00596 <span class="keywordtype">void</span> <a class="code" href="object_8h.html#a61">PSetErrorStream</a>(ostream * strm  );00597 <a name="l00612"></a><a class="code" href="object_8h.html#a11">00612</a> <span class="preprocessor">#define PError (PGetErrorStream())</span>00613 <span class="preprocessor"></span>00614 00615 00617 <span class="comment">// Debug and tracing</span>00618 00619 <span class="preprocessor">#ifndef PTRACING</span>00620 <span class="preprocessor"></span><span class="preprocessor">#ifndef _DEBUG</span><a name="l00621"></a><a class="code" href="object_8h.html#a12">00621</a> <span class="preprocessor"></span><span class="preprocessor">#define PTRACING 0</span>00622 <span class="preprocessor"></span><span class="preprocessor">#else</span>00623 <span class="preprocessor"></span><span class="preprocessor">#define PTRACING 1</span>00624 <span class="preprocessor"></span><span class="preprocessor">#endif</span>00625 <span class="preprocessor"></span><span class="preprocessor">#endif</span>00626 <span class="preprocessor"></span><a name="l00631"></a><a class="code" href="classPTrace.html">00631</a> <span class="keyword">class </span><a class="code" href="classPTrace.html">PTrace</a>00632 {00633 <span class="keyword">public</span>:<a name="l00635"></a><a class="code" href="classPTrace.html#s10">00635</a>   <span class="keyword">enum</span> <a class="code" href="classPTrace.html#s10">Options</a> {00641     <a class="code" href="classPTrace.html#s10s0">Blocks</a> = 1,00643     <a class="code" href="classPTrace.html#s10s1">DateAndTime</a> = 2,00645     <a class="code" href="classPTrace.html#s10s2">Timestamp</a> = 4,00647     <a class="code" href="classPTrace.html#s10s3">Thread</a> = 8,00649     <a class="code" href="classPTrace.html#s10s4">TraceLevel</a> = 16,00651     <a class="code" href="classPTrace.html#s10s5">FileAndLine</a> = 32,00653     <a class="code" href="classPTrace.html#s10s6">ThreadAddress</a> = 64,00655     <a class="code" href="classPTrace.html#s10s7">AppendToFile</a> = 128,00659     <a class="code" href="classPTrace.html#s10s8">GMTTime</a> = 256,00662     <a class="code" href="classPTrace.html#s10s9">SystemLogStream</a> = 3276800663   };00664 00672   <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classPTrace.html#d0">Initialise</a>(00673     <span class="keywordtype">unsigned</span> level,00674     <span class="keyword">const</span> <span class="keywordtype">char</span> * filename = NULL,00675     <span class="keywordtype">unsigned</span> options = <a class="code" href="classPTrace.html#s10s2">Timestamp</a> | <a class="code" href="classPTrace.html#s10s3">Thread</a> | <a class="code" href="classPTrace.html#s10s0">Blocks</a>00676   );00677 00684   <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classPTrace.html#d1">SetOptions</a>(<span class="keywordtype">unsigned</span> options  );00685 00693   <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classPTrace.html#d2">ClearOptions</a>(<span class="keywordtype">unsigned</span> options  );00694 00699   <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <a class="code" href="classPTrace.html#d3">GetOptions</a>();00700 00706   <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classPTrace.html#d4">SetLevel</a>(<span class="keywordtype">unsigned</span> level  );00707 00713   <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <a class="code" href="classPTrace.html#d5">GetLevel</a>();00714 00719   <span class="keyword">static</span> BOOL <a class="code" href="classPTrace.html#d6">CanTrace</a>(<span class="keywordtype">unsigned</span> level );00720 00725   <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classPTrace.html#d7">SetStream</a>(ostream * out  );00726 00742   <span class="keyword">static</span> ostream &amp; <a class="code" href="classPTrace.html#d8">Begin</a>(00743     <span class="keywordtype">unsigned</span> level,         00744     <span class="keyword">const</span> <span class="keywordtype">char</span> * fileName,  00745     <span class="keywordtype">int</span> lineNum             00746   );00747 00764   <span class="keyword">static</span> ostream &amp; <a class="code" href="classPTrace.html#d9">End</a>(ostream &amp; strm );00765 00766 <a name="l00772"></a><a class="code" href="classPTrace_1_1Block.html">00772</a>   <span class="keyword">class </span><a class="code" href="classPTrace_1_1Block.html">Block</a> {00773     <span class="keyword">public</span>:00775       <a class="code" href="classPTrace_1_1Block.html#a0">Block</a>(00776         <span class="keyword">const</span> <span class="keywordtype">char</span> * fileName, 00777         <span class="keywordtype">int</span> lineNum,           00778         <span class="keyword">const</span> <span class="keywordtype">char</span> * traceName00780        );00782       <a class="code" href="classPTrace_1_1Block.html#a1">~Block</a>();00783     <span class="keyword">private</span>:00784       <span class="keyword">const</span> <span class="keywordtype">char</span> * file;00785       <span class="keywordtype">int</span>          line;00786       <span class="keyword">const</span> <span class="keywordtype">char</span> * name;00787   };00788 };00789 00790 <span class="preprocessor">#if !PTRACING</span>00791 <span class="preprocessor"></span><a name="l00792"></a><a class="code" href="object_8h.html#a13">00792</a> <span class="preprocessor">#define PTRACE_PARAM(param)</span><a name="l00793"></a><a class="code" href="object_8h.html#a14">00793</a> <span class="preprocessor"></span><span class="preprocessor">#define PTRACE_BLOCK(n)</span><a name="l00794"></a><a class="code" href="object_8h.html#a15">00794</a> <span class="preprocessor"></span><span class="preprocessor">#define PTRACE_LINE()</span><a name="l00795"></a><a class="code" href="object_8h.html#a16">00795</a> <span class="preprocessor"></span><span class="preprocessor">#define PTRACE(level, arg)</span><a name="l00796"></a><a class="code" href="object_8h.html#a17">00796</a> <span class="preprocessor"></span><span class="preprocessor">#define PTRACE_IF(level, cond, args)</span>00797 <span class="preprocessor"></span>00798 <span class="preprocessor">#else</span>00799 <span class="preprocessor"></span>00800 <span class="comment">/* Macro to conditionally declare a parameter to a function to avoid compiler</span>00801 <span class="comment">   warning due that parameter only being used in a PTRACE */</span>00802 <span class="preprocessor">#define PTRACE_PARAM(param) param</span>00803 <span class="preprocessor"></span>00810 <span class="preprocessor">#define PTRACE_BLOCK(name) PTrace::Block __trace_block_instance(__FILE__, __LINE__, name)</span>00811 <span class="preprocessor"></span>00815 <span class="preprocessor">#define PTRACE_LINE() \</span>00816 <span class="preprocessor">    if (!PTrace::CanTrace(1)) ; else \</span>00817 <span class="preprocessor">      PTrace::Begin(1, __FILE__, __LINE__) &lt;&lt; __FILE__ &lt;&lt; '(' &lt;&lt; __LINE__ &lt;&lt; ')' &lt;&lt; PTrace::End</span>00818 <span class="preprocessor"></span>00824 <span class="preprocessor">#define PTRACE(level, args) \</span>00825 <span class="preprocessor">    if (!PTrace::CanTrace(level)) ; else \</span>00826 <span class="preprocessor">      PTrace::Begin(level, __FILE__, __LINE__) &lt;&lt; args &lt;&lt; PTrace::End</span>00827 <span class="preprocessor"></span>00835 <span class="preprocessor">#define PTRACE_IF(level, cond, args) \</span>00836 <span class="preprocessor">    if (!(PTrace::CanTrace(level)  &amp;&amp; (cond))) ; else \</span>00837 <span class="preprocessor">      PTrace::Begin(level, __FILE__, __LINE__) &lt;&lt; args &lt;&lt; PTrace::End</span>00838 <span class="preprocessor"></span>00839 <span class="preprocessor">#endif</span>00840 <span class="preprocessor"></span>00841 <span class="preprocessor">#if PMEMORY_CHECK</span>00842 <span class="preprocessor"></span>00849 <span class="keyword">class </span>PMemoryHeap {00850   <span class="keyword">protected</span>:00852     PMemoryHeap();00853 00854   <span class="keyword">public</span>:00855     <span class="comment">// Clear up the memory checking subsystem, dumping memory leaks.</span>00856     ~PMemoryHeap();00857 00864     <span class="keyword">static</span> <span class="keywordtype">void</span> * Allocate(00865       size_t nSize,           00866       <span class="keyword">const</span> <span class="keywordtype">char</span> * file,      00867       <span class="keywordtype">int</span> line,               00868       <span class="keyword">const</span> <span class="keywordtype">char</span> * className  00869     );00876     <span class="keyword">static</span> <span class="keywordtype">void</span> * Allocate(00877       size_t count,       00878       size_t iSize,       00879       <span class="keyword">const</span> <span class="keywordtype">char</span> * file,  00880       <span class="keywordtype">int</span> line            00881     );00882 00890     <span class="keyword">static</span> <span class="keywordtype">void</span> * Reallocate(00891       <span class="keywordtype">void</span> * ptr,         00892       size_t nSize,       00893       <span class="keyword">const</span> <span class="keywordtype">char</span> * file,  00894       <span class="keywordtype">int</span> line            00895     );00896 00902     <span class="keyword">static</span> <span class="keywordtype">void</span> Deallocate(00903       <span class="keywordtype">void</span> * ptr,             00904       <span class="keyword">const</span> <span class="keywordtype">char</span> * className  00905     );00906 00909     <span class="keyword">enum</span> Validation {00910       Ok, Bad, Trashed00911     };00919     <span class="keyword">static</span> Validation Validate(00920       <span class="keywordtype">void</span> * ptr,             00921       <span class="keyword">const</span> <span class="keywordtype">char</span> * className, 00922       ostream * error         00923     );00924 00929     <span class="keyword">static</span> BOOL ValidateHeap(00930       ostream * error = NULL  <span class="comment">// Stream to output, use default if NULL</span>00931     );00932 00938     <span class="keyword">static</span> BOOL SetIgnoreAllocations(00939       BOOL ignore  00940     );00941 00945     <span class="keyword">static</span> <span class="keywordtype">void</span> DumpStatistics();00949     <span class="keyword">static</span> <span class="keywordtype">void</span> DumpStatistics(ostream &amp; strm );00950 00951     <span class="comment">/* Get number of allocation.</span>00952 <span class="comment">      Each allocation is counted and if desired the next allocation request</span>00953 <span class="comment">      number may be obtained via this function.</span>00954 <span class="comment">      @return Allocation request number.</span>00955 <span class="comment">     */</span>00956     <span class="keyword">static</span> DWORD GetAllocationRequest();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -