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

📄 object_8h-source.html

📁 pwlib开发文档
💻 HTML
📖 第 1 页 / 共 5 页
字号:
00353 <span class="comment"> * Revision 1.9  1995/02/05  00:48:07  robertj</span>00354 <span class="comment"> * Fixed template version.</span>00355 <span class="comment"> *</span>00356 <span class="comment"> * Revision 1.8  1995/01/15  04:51:31  robertj</span>00357 <span class="comment"> * Mac compatibility.</span>00358 <span class="comment"> * Added levels of memory checking.</span>00359 <span class="comment"> *</span>00360 <span class="comment"> * Revision 1.7  1995/01/09  12:38:31  robertj</span>00361 <span class="comment"> * Changed variable names around during documentation run.</span>00362 <span class="comment"> * Fixed smart pointer comparison.</span>00363 <span class="comment"> * Fixed serialisation stuff.</span>00364 <span class="comment"> * Documentation.</span>00365 <span class="comment"> *</span>00366 <span class="comment"> * Revision 1.6  1995/01/03  09:39:06  robertj</span>00367 <span class="comment"> * Put standard malloc style memory allocation etc into memory check system.</span>00368 <span class="comment"> *</span>00369 <span class="comment"> * Revision 1.5  1994/12/12  10:08:30  robertj</span>00370 <span class="comment"> * Renamed PWrapper to PSmartPointer..</span>00371 <span class="comment"> *</span>00372 <span class="comment"> * Revision 1.4  1994/12/05  11:23:28  robertj</span>00373 <span class="comment"> * Fixed PWrapper macros.</span>00374 <span class="comment"> *</span>00375 <span class="comment"> * Revision 1.3  1994/11/19  00:22:55  robertj</span>00376 <span class="comment"> * Changed PInteger to be INT, ie standard type like BOOL/WORD etc.</span>00377 <span class="comment"> * Moved null object check in notifier to construction rather than use.</span>00378 <span class="comment"> * Added virtual to the callback function in notifier destination class.</span>00379 <span class="comment"> *</span>00380 <span class="comment"> * Revision 1.2  1994/11/03  09:25:30  robertj</span>00381 <span class="comment"> * Made notifier destination object not to be descendent of PObject.</span>00382 <span class="comment"> *</span>00383 <span class="comment"> * Revision 1.1  1994/10/30  12:01:37  robertj</span>00384 <span class="comment"> * Initial revision</span>00385 <span class="comment"> *</span>00386 <span class="comment"> */</span>00387 00388 <span class="preprocessor">#ifndef _POBJECT_H</span>00389 <span class="preprocessor"></span><span class="preprocessor">#define _POBJECT_H</span>00390 <span class="preprocessor"></span>00391 <span class="preprocessor">#ifdef P_USE_PRAGMA</span>00392 <span class="preprocessor"></span><span class="preprocessor">#pragma interface</span>00393 <span class="preprocessor"></span><span class="preprocessor">#endif</span>00394 <span class="preprocessor"></span>00395 <span class="preprocessor">#ifdef _WIN32</span>00396 <span class="preprocessor"></span><span class="preprocessor">#include "msos/ptlib/contain.h"</span>00397 <span class="preprocessor">#else</span>00398 <span class="preprocessor"></span><span class="preprocessor">#include "unix/ptlib/contain.h"</span>00399 <span class="preprocessor">#endif</span>00400 <span class="preprocessor"></span>00401 <span class="preprocessor">#if defined(P_VXWORKS)</span>00402 <span class="preprocessor"></span><span class="preprocessor">#include &lt;private/stdiop.h&gt;</span>00403 <span class="preprocessor">#endif</span>00404 <span class="preprocessor"></span>00405 <span class="preprocessor">#include &lt;stdio.h&gt;</span>00406 <span class="preprocessor">#include &lt;stdarg.h&gt;</span>00407 <span class="preprocessor">#include &lt;stdlib.h&gt;</span>00408 00409 <span class="preprocessor">#ifdef _WIN32</span>00410 <span class="preprocessor"></span><span class="preprocessor">  #include &lt;malloc.h&gt;</span>00411 <span class="preprocessor">#endif</span>00412 <span class="preprocessor"></span>00413 <span class="preprocessor">#include &lt;string.h&gt;</span>00414 00415 <span class="preprocessor">#ifdef __USE_STL__</span>00416 <span class="preprocessor"></span><span class="preprocessor">  #include &lt;string&gt;</span>00417 <span class="preprocessor">  #include &lt;iomanip&gt;</span>00418 <span class="preprocessor">  #include &lt;iostream&gt;</span>00419 <span class="preprocessor">  #if (__GNUC__ &gt;= 3)</span>00420 <span class="preprocessor"></span><span class="preprocessor">    #include &lt;sstream&gt;</span>00421     <span class="comment">//typedef std::ostringstream ostrstream;</span>00422 <span class="preprocessor">  #else</span>00423 <span class="preprocessor"></span><span class="preprocessor">    #include &lt;strstream&gt;</span>00424 <span class="preprocessor">  #endif</span>00425 <span class="preprocessor"></span>  <span class="comment">//using namespace std;</span>00426 <span class="preprocessor">#else</span>00427 <span class="preprocessor"></span><span class="preprocessor">  #if (__GNUC__ &gt;= 3)</span>00428 <span class="preprocessor"></span><span class="preprocessor">    #include &lt;iostream&gt;</span>00429 <span class="preprocessor">    #ifndef __MWERKS__</span>00430 <span class="preprocessor"></span><span class="preprocessor">      #include &lt;iomanip&gt;</span>00431 <span class="preprocessor">    #endif</span>00432 <span class="preprocessor"></span><span class="preprocessor">  #else</span>00433 <span class="preprocessor"></span><span class="preprocessor">    #include &lt;iostream.h&gt;</span>00434 <span class="preprocessor">    #ifdef __GNUC__</span>00435 <span class="preprocessor"></span><span class="preprocessor">      #include &lt;strstream.h&gt;</span>00436 <span class="preprocessor">    #else</span>00437 <span class="preprocessor"></span><span class="preprocessor">      #include &lt;strstrea.h&gt;</span>00438 <span class="preprocessor">    #endif</span>00439 <span class="preprocessor"></span><span class="preprocessor">    #ifndef __MWERKS__</span>00440 <span class="preprocessor"></span><span class="preprocessor">      #include &lt;iomanip.h&gt;</span>00441 <span class="preprocessor">    #endif</span>00442 <span class="preprocessor"></span><span class="preprocessor">  #endif</span>00443 <span class="preprocessor"></span><span class="preprocessor">#endif</span>00444 <span class="preprocessor"></span>00445 <span class="preprocessor">#ifdef _WIN32_WCE</span>00446 <span class="preprocessor"></span><span class="preprocessor">  #include &lt;stdlibx.h&gt;</span>00447 <span class="preprocessor">#endif</span>00448 <span class="preprocessor"></span>00449 <span class="preprocessor">#if (__GNUC__ &lt; 3)</span><a name="l00450"></a><a class="code" href="object_8h.html#a40">00450</a> <span class="preprocessor"></span><span class="keyword">typedef</span> <span class="keywordtype">long</span> <a class="code" href="object_8h.html#a40">_Ios_Fmtflags</a>;00451 <span class="preprocessor">#endif</span>00452 <span class="preprocessor"></span>00453 <span class="preprocessor">#if _MSC_VER&lt;1300</span><a name="l00454"></a><a class="code" href="object_8h.html#a0">00454</a> <span class="preprocessor"></span><span class="preprocessor">#define _BADOFF -1</span>00455 <span class="preprocessor"></span><span class="preprocessor">#endif</span>00456 <span class="preprocessor"></span>00458 <span class="comment">// Disable inlines when debugging for faster compiles (the compiler doesn't</span>00459 <span class="comment">// actually inline the function with debug on any way).</span>00460 00461 <span class="preprocessor">#ifndef P_USE_INLINES</span>00462 <span class="preprocessor"></span><span class="preprocessor">#ifdef _DEBUG</span>00463 <span class="preprocessor"></span><span class="preprocessor">#define P_USE_INLINES 0</span>00464 <span class="preprocessor"></span><span class="preprocessor">#else</span><a name="l00465"></a><a class="code" href="object_8h.html#a1">00465</a> <span class="preprocessor"></span><span class="preprocessor">#define P_USE_INLINES 0</span>00466 <span class="preprocessor"></span><span class="preprocessor">#endif</span>00467 <span class="preprocessor"></span><span class="preprocessor">#endif</span>00468 <span class="preprocessor"></span>00469 <span class="preprocessor">#if P_USE_INLINES</span>00470 <span class="preprocessor"></span><span class="preprocessor">#define PINLINE inline</span>00471 <span class="preprocessor"></span><span class="preprocessor">#else</span><a name="l00472"></a><a class="code" href="object_8h.html#a2">00472</a> <span class="preprocessor"></span><span class="preprocessor">#define PINLINE</span>00473 <span class="preprocessor"></span><span class="preprocessor">#endif</span>00474 <span class="preprocessor"></span>00475 00477 <span class="comment">// Declare the debugging support</span>00478 00479 <span class="preprocessor">#ifndef P_USE_ASSERTS</span><a name="l00480"></a><a class="code" href="object_8h.html#a3">00480</a> <span class="preprocessor"></span><span class="preprocessor">#define P_USE_ASSERTS 1</span>00481 <span class="preprocessor"></span><span class="preprocessor">#endif</span>00482 <span class="preprocessor"></span>00483 <span class="preprocessor">#if !P_USE_ASSERTS</span>00484 <span class="preprocessor"></span>00485 <span class="preprocessor">#define PAssert(b, m) (b)</span>00486 <span class="preprocessor"></span><span class="preprocessor">#define PAssert2(b, c, m) (b)</span>00487 <span class="preprocessor"></span><span class="preprocessor">#define PAssertOS(b) (b)</span>00488 <span class="preprocessor"></span><span class="preprocessor">#define PAssertNULL(p) (p)</span>00489 <span class="preprocessor"></span><span class="preprocessor">#define PAssertAlways(m)</span>00490 <span class="preprocessor"></span><span class="preprocessor">#define PAssertAlways2(c, m)</span>00491 <span class="preprocessor"></span>00492 <span class="preprocessor">#else // P_USE_ASSERTS</span>00493 <span class="preprocessor"></span><a name="l00495"></a><a class="code" href="object_8h.html#a70">00495</a> <span class="keyword">enum</span> <a class="code" href="object_8h.html#a70">PStandardAssertMessage</a> {00496   <a class="code" href="object_8h.html#a70a41">PLogicError</a>,              <span class="comment">// A logic error occurred.</span>00497   <a class="code" href="object_8h.html#a70a42">POutOfMemory</a>,             <span class="comment">// A new or malloc failed.</span>00498   <a class="code" href="object_8h.html#a70a43">PNullPointerReference</a>,    <span class="comment">// A reference was made through a NULL pointer.</span>00499   <a class="code" href="object_8h.html#a70a44">PInvalidCast</a>,             <span class="comment">// An invalid cast to descendant is required.</span>00500   <a class="code" href="object_8h.html#a70a45">PInvalidArrayIndex</a>,       <span class="comment">// An index into an array was negative.</span>00501   <a class="code" href="object_8h.html#a70a46">PInvalidArrayElement</a>,     <span class="comment">// A NULL array element object was accessed.</span>00502   <a class="code" href="object_8h.html#a70a47">PStackEmpty</a>,              <span class="comment">// A Pop() was made of a stack with no elements.</span>00503   <a class="code" href="object_8h.html#a70a48">PUnimplementedFunction</a>,   <span class="comment">// Funtion is not implemented.</span>00504   <a class="code" href="object_8h.html#a70a49">PInvalidParameter</a>,        <span class="comment">// Invalid parameter was passed to a function.</span>00505   <a class="code" href="object_8h.html#a70a50">POperatingSystemError</a>,    <span class="comment">// Error was returned by Operating System.</span>00506   <a class="code" href="object_8h.html#a70a51">PChannelNotOpen</a>,          <span class="comment">// Operation attempted when channel not open.</span>00507   <a class="code" href="object_8h.html#a70a52">PUnsupportedFeature</a>,      <span class="comment">// Feature is not supported.</span>00508   <a class="code" href="object_8h.html#a70a53">PInvalidWindow</a>,           <span class="comment">// Access through invalid window.</span>00509   <a class="code" href="object_8h.html#a70a54">PMaxStandardAssertMessage</a>00510 };00511 <a name="l00512"></a><a class="code" href="object_8h.html#a4">00512</a> <span class="preprocessor">#define __CLASS__ NULL</span>00513 <span class="preprocessor"></span>00514 <span class="keywordtype">void</span> <a class="code" href="object_8h.html#a57">PAssertFunc</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> * file, <span class="keywordtype">int</span> line, <span class="keyword">const</span> <span class="keywordtype">char</span> * className, <a class="code" href="object_8h.html#a70">PStandardAssertMessage</a> msg);00515 <span class="keywordtype">void</span> <a class="code" href="object_8h.html#a57">PAssertFunc</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> * file, <span class="keywordtype">int</span> line, <span class="keyword">const</span> <span class="keywordtype">char</span> * className, <span class="keyword">const</span> <span class="keywordtype">char</span> * msg);00516 <span class="keywordtype">void</span> <a class="code" href="object_8h.html#a57">PAssertFunc</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> * full_msg);00517 <a name="l00518"></a><a class="code" href="object_8h.html#a58">00518</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="object_8h.html#a59">PAssertFuncInline</a>(<span class="keywordtype">bool</span> b, <span class="keyword">const</span> <span class="keywordtype">char</span> * file, <span class="keywordtype">int</span> line, <span class="keyword">const</span> <span class="keywordtype">char</span> * className, <a class="code" href="object_8h.html#a70">PStandardAssertMessage</a> msg)00519 {00520   <span class="keywordflow">if</span> (!b) 00521     <a class="code" href="object_8h.html#a57">PAssertFunc</a>(file, line, className, msg);00522   <span class="keywordflow">return</span> b;00523 }<a name="l00524"></a><a class="code" href="object_8h.html#a59">00524</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="object_8h.html#a59">PAssertFuncInline</a>(<span class="keywordtype">bool</span> b, <span class="keyword">const</span> <span class="keywordtype">char</span> * file, <span class="keywordtype">int</span> line, <span class="keyword">const</span> <span class="keywordtype">char</span> * className, <span class="keyword">const</span> <span class="keywordtype">char</span> * msg)00525 {00526   <span class="keywordflow">if</span> (!b) 00527     <a class="code" href="object_8h.html#a57">PAssertFunc</a>(file, line, className, msg);00528   <span class="keywordflow">return</span> b;00529 }00530 <a name="l00537"></a><a class="code" href="object_8h.html#a5">00537</a> <span class="preprocessor">#define PAssert(b, m) PAssertFuncInline((b), __FILE__,__LINE__,__CLASS__,(m))</span>00538 <span class="preprocessor"></span><a name="l00546"></a><a class="code" href="object_8h.html#a6">00546</a> <span class="preprocessor">#define PAssert2(b, c, m) PAssertFuncInline((b), __FILE__,__LINE__,(c),(m))</span>00547 <span class="preprocessor"></span><a name="l00554"></a><a class="code" href="object_8h.html#a7">00554</a> <span class="preprocessor">#define PAssertOS(b) PAssertFuncInline((b), __FILE__,__LINE__,__CLASS__,POperatingSystemError)</span>

⌨️ 快捷键说明

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