hxhpbase.h
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:8k
源码类别:

Symbian

开发平台:

C/C++

  1. /* ***** BEGIN LICENSE BLOCK ***** 
  2.  * Version: RCSL 1.0/RPSL 1.0 
  3.  *  
  4.  * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
  5.  *      
  6.  * The contents of this file, and the files included with this file, are 
  7.  * subject to the current version of the RealNetworks Public Source License 
  8.  * Version 1.0 (the "RPSL") available at 
  9.  * http://www.helixcommunity.org/content/rpsl unless you have licensed 
  10.  * the file under the RealNetworks Community Source License Version 1.0 
  11.  * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
  12.  * in which case the RCSL will apply. You may also obtain the license terms 
  13.  * directly from RealNetworks.  You may not use this file except in 
  14.  * compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
  15.  * applicable to this file, the RCSL.  Please see the applicable RPSL or 
  16.  * RCSL for the rights, obligations and limitations governing use of the 
  17.  * contents of the file.  
  18.  *  
  19.  * This file is part of the Helix DNA Technology. RealNetworks is the 
  20.  * developer of the Original Code and owns the copyrights in the portions 
  21.  * it created. 
  22.  *  
  23.  * This file, and the files included with this file, is distributed and made 
  24.  * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  25.  * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  26.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
  27.  * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  28.  * 
  29.  * Technology Compatibility Kit Test Suite(s) Location: 
  30.  *    http://www.helixcommunity.org/content/tck 
  31.  * 
  32.  * Contributor(s): 
  33.  *  
  34.  * ***** END LICENSE BLOCK ***** */ 
  35. #ifndef _INC_HXHPBASE_
  36. #define _INC_HXHPBASE_
  37.     /*
  38.     //////////////////////////////////////////////////////////////////
  39.     // HX_THIS_FILE
  40.     //
  41.     // this macro must be redefined in EVERY source module where new,
  42.     // malloc, etc., are called as the following:
  43.     //
  44.     // #ifdef _DEBUG
  45.     // #undef HX_THIS_FILE
  46.     // static const char HX_THIS_FILE[] = __FILE__;
  47.     // #endif
  48.     //
  49.     // making this definition enables tracing of memory allocations to
  50.     // module/line where allocation was performed
  51.     */
  52. #ifndef HX_THIS_FILE
  53. #   define HX_THIS_FILE "no file defined"
  54. #endif
  55.     /*
  56.     /////////////////////////////////////////////////////////////////
  57.     // HX_SET_HEAP_OPTION, HX_CLEAR_HEAP_OPTION
  58.     //
  59.     // Use these macros to change heap checking options.  They are
  60.     // given null definitions here for cross platform support.
  61.     // Platforms supporting these options should #undef, then #define
  62.     // the supported options and flags.
  63.     //
  64.     // Typically, options will be set only once at the program entry point
  65.     //
  66.     // To set/clear heap options, pass in combinations of the
  67.     // HX_HEAP_* flags OR'd together as follows:
  68.     //
  69.     // HX_CLEAR_HEAP_OPTION(HX_HEAP_NO_HEAP_CHECKS)
  70.     // HX_SET_HEAP_OPTION(HX_HEAP_CHECK_ON_EXIT | HX_HEAP_DELAY_FREE_MEM)
  71.     //
  72.     // note that these macros are intended to OR the given option w/
  73.     // the current state of heap options
  74.     //
  75.     //#define  HX_SET_HEAP_OPTION(a)
  76.     //#define  HX_CLEAR_HEAP_OPTION(a)
  77.     */
  78.     /*
  79.     ///////////////////////////////////////////////////////////////////
  80.     // HX_HEAP_*
  81.     //
  82.     // These definitions include common options for heap debugging.
  83.     // See platform specific sections for implementation details.  They
  84.     // are all defined as 0 here for cross platform support.  Platforms
  85.     // supporting these options should #undef, then #define the flags
  86.     // using appropriate values.
  87.     //
  88.     //#define HX_HEAP_ENABLE_HEAP_CHECKS 0
  89.     //#define HX_HEAP_CHECK_EVERY_TIME 0
  90.     //#define HX_HEAP_DELAY_FREE_MEM 0
  91.     //#define HX_HEAP_LEAK_CHECK_ON_EXIT 0
  92.     */
  93.     /*
  94.     ///////////////////////////////////////////////////////////////////
  95.     // HX_CHECK_MEMORY()
  96.     //
  97.     // Calls the runtime function triggering a heap check
  98.     // #define HX_CHECK_MEMORY()
  99.     */
  100.     /*
  101.     ///////////////////////////////////////////////////////////////////
  102.     // HX_DUMP_LEAKS()
  103.     //
  104.     // Calls the runtime function triggering a dump of all the objects 
  105.     // still in heap. 
  106.     // #define HX_DUMP_LEAKS()
  107.     */
  108. #   ifdef _DEBUG /* DEBUG definitions */
  109. #if !defined(_WIN32) || defined(WIN32_PLATFORM_PSPC)
  110. #     define HX_SET_HEAP_OPTION(a)
  111. #     define HX_CLEAR_HEAP_OPTION(a)
  112. #     define HX_HEAP_ENABLE_HEAP_CHECKS 0
  113. #     define HX_HEAP_CHECK_EVERY_TIME 0
  114. #     define HX_HEAP_DELAY_FREE_MEM 0
  115. #     define HX_HEAP_LEAK_CHECK_ON_EXIT 0
  116. #     define HX_CHECK_MEMORY()
  117. #     define HX_DUMP_LEAKS()
  118. #     define HX_SET_BREAK_ALLOC(a)
  119. # endif
  120. /*
  121. // ------------------------ _WIN32 -------------------------
  122. */
  123. #if defined(_WIN32) && !defined(WIN32_PLATFORM_PSPC)
  124. #     include <crtdbg.h>
  125. #     define HX_DEBUG_NEW_PARAMS
  126. unsigned int size,
  127. int block,
  128. const char * szfile,
  129. int line
  130. #     define HX_DEBUG_NEW
  131. new(_NORMAL_BLOCK, HX_THIS_FILE, __LINE__)
  132. #     define HX_DEBUG_MALLOC(n)
  133. _malloc_dbg(n,_NORMAL_BLOCK,HX_THIS_FILE, __LINE__)
  134. #     define HX_DEBUG_CALLOC(n,s)
  135. _calloc_dbg(n,s,_NORMAL_BLOCK,HX_THIS_FILE, __LINE__)
  136. #     define HX_DEBUG_REALLOC(p,s)
  137. _realloc_dbg(p,s,_NORMAL_BLOCK,HX_THIS_FILE, __LINE__)
  138. #     undef HX_CHECK_MEMORY
  139. #     define HX_CHECK_MEMORY()     _ASSERT(_CrtCheckMemory())
  140. #     undef  HX_DUMP_LEAKS
  141. #     define HX_DUMP_LEAKS() _CrtDumpMemoryLeaks()
  142. #     define HX_SET_BREAK_ALLOC(a)    _CrtSetBreakAlloc(a)
  143. #     define HX_SET_HEAP_OPTION(a) 
  144. _CrtSetDbgFlag((a) | _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG))
  145. #     define HX_CLEAR_HEAP_OPTION(a) 
  146. _CrtSetDbgFlag(~(a) & _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG))
  147.     /*
  148.     // HX_HEAP_ENABLE_HEAP_CHECKS
  149.     // ON by default.  If this option is turned off, subsequent
  150.     // memory allocations will not be subject to standard heap checks
  151.     */
  152. #     define HX_HEAP_ENABLE_HEAP_CHECKS _CRTDBG_ALLOC_MEM_DF
  153.     /*
  154.     // HX_HEAP_CHECK_EVERY_TIME
  155.     // OFF by default.  If this option is turned on, every allocation
  156.     // and release of memory will cause the entire heap to be checked
  157.     // for integrity
  158.     */
  159. #     define HX_HEAP_CHECK_EVERY_TIME _CRTDBG_CHECK_ALWAYS_DF
  160.     /*
  161.     // HX_HEAP_DELAY_FREE_MEM
  162.     // OFF by default.
  163.     // Causes freed memory to be marked as free, instead of actually
  164.     // freed.  The freed blocks are all written over w/ DD and 
  165.     // maintained on the heap.  This has 2 benefits:
  166.     // 1) Simulate low memory conditions
  167.     // 2) Detection of corruption of previously freed blocks.  
  168.     // This occurrs when a pointer to freed memory is used
  169.     // w/o reinitializing it
  170.     */
  171. #     define HX_HEAP_DELAY_FREE_MEM _CRTDBG_DELAY_FREE_MEM_DF
  172.     /*
  173.     // HX_HEAP_LEAK_CHECK_ON_EXIT
  174.     // OFF by default.  When the CRT shuts down, the heap linked
  175.     // list is examined, and any remaining blocks not marked as
  176.     // free generate a leakage report indicating the module and
  177.     // line where the block was allocated.
  178.     */
  179. #     define HX_HEAP_LEAK_CHECK_ON_EXIT _CRTDBG_LEAK_CHECK_DF
  180. /* ------------------------ _WIN32 ------------------------- */
  181. # endif
  182. /* ---------------------- MACINTOSH ---------------------- */
  183. # ifdef _MACINTOSH
  184. #     define HX_DEBUG_NEW new
  185. /* ---------------------- MACINTOSH ---------------------- */
  186. # endif
  187. #   else /* end debug section */
  188. # define HX_SET_HEAP_OPTION(a)
  189. # define HX_CLEAR_HEAP_OPTION(a)
  190. # define HX_HEAP_ENABLE_HEAP_CHECKS 0
  191. # define HX_HEAP_CHECK_EVERY_TIME 0
  192. # define HX_HEAP_DELAY_FREE_MEM 0
  193. # define HX_HEAP_LEAK_CHECK_ON_EXIT 0
  194. # define HX_CHECK_MEMORY()
  195. # define HX_DUMP_LEAKS()
  196. #   endif /* end retail section */
  197. #endif /* _INC_HXHPBASE_ */