ncbidbg.hpp
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:7k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: ncbidbg.hpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/04/21 14:34:37  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.32
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef NCBIDBG__HPP
  10. #define NCBIDBG__HPP
  11. /*  $Id: ncbidbg.hpp,v 1000.1 2004/04/21 14:34:37 gouriano Exp $
  12.  * ===========================================================================
  13.  *
  14.  *                            PUBLIC DOMAIN NOTICE
  15.  *               National Center for Biotechnology Information
  16.  *
  17.  *  This software/database is a "United States Government Work" under the
  18.  *  terms of the United States Copyright Act.  It was written as part of
  19.  *  the author's official duties as a United States Government employee and
  20.  *  thus cannot be copyrighted.  This software/database is freely available
  21.  *  to the public for use. The National Library of Medicine and the U.S.
  22.  *  Government have not placed any restriction on its use or reproduction.
  23.  *
  24.  *  Although all reasonable efforts have been taken to ensure the accuracy
  25.  *  and reliability of the software and data, the NLM and the U.S.
  26.  *  Government do not and cannot warrant the performance or results that
  27.  *  may be obtained by using this software or data. The NLM and the U.S.
  28.  *  Government disclaim all warranties, express or implied, including
  29.  *  warranties of performance, merchantability or fitness for any particular
  30.  *  purpose.
  31.  *
  32.  *  Please cite the author in any work or product based on this material.
  33.  *
  34.  * ===========================================================================
  35.  *
  36.  * Author:  Denis Vakatov
  37.  *
  38.  *
  39.  */
  40.  /// @file ncbidbg.hpp
  41.  /// NCBI C++ auxiliary debug macros
  42.  ///
  43.  /// NOTE:These macros are NOT for use in test applications!!!
  44.  ///      Test applications must use normal assert() and must
  45.  ///      include <test/test_assert.h> as a last header file.
  46.  ///      [test apps in 'connect' branch include "test/test_assert.h" instead]
  47. #include <corelib/ncbidiag.hpp>
  48. /** @addtogroup Debug
  49.  *
  50.  * @{
  51.  */
  52. BEGIN_NCBI_SCOPE
  53. /// Define macros to support debugging.
  54. #if defined(_DEBUG)
  55. #  define _TRACE(message) 
  56.     ( NCBI_NS_NCBI::CNcbiDiag(__FILE__, __LINE__, NCBI_NS_NCBI::eDiag_Trace) 
  57.       << message << NCBI_NS_NCBI::Endm )
  58. #  define _TROUBLE NCBI_NS_NCBI::CNcbiDiag::DiagTrouble(__FILE__, __LINE__)
  59. #  define _ASSERT(expr) 
  60.     do { if ( !(expr) ) 
  61.         NCBI_NS_NCBI::CNcbiDiag::DiagAssert(__FILE__, __LINE__, #expr); 
  62.     } while ( 0 )
  63. #  define _VERIFY(expr) _ASSERT(expr)
  64. #  define _DEBUG_ARG(arg) arg
  65. #else  /* _DEBUG */
  66. #  define _TRACE(message)  ((void)0)
  67. #  define _TROUBLE
  68. #  define _ASSERT(expr) ((void)0)
  69. #  define _VERIFY(expr) ((void)(expr))
  70. #  define _DEBUG_ARG(arg)
  71. #endif  /* else!_DEBUG */
  72. /// Which action to perform.
  73. ///
  74. /// Specify action to be performed when expression under
  75. /// "xncbi_Validate(expr, ...)" evaluates to FALSE.
  76. enum EValidateAction {
  77.     eValidate_Default = 0,  ///< Default action
  78.     eValidate_Abort,        ///< abort() if not valid
  79.     eValidate_Throw         ///< Throw an exception if not valid
  80. };
  81. /// Set the action to be performed.
  82. extern NCBI_XNCBI_EXPORT void xncbi_SetValidateAction(EValidateAction action);
  83. /// Get the action to be performed.
  84. extern NCBI_XNCBI_EXPORT EValidateAction xncbi_GetValidateAction(void);
  85. END_NCBI_SCOPE
  86. /* @} */
  87. /*
  88.  * ==========================================================================
  89.  * $Log: ncbidbg.hpp,v $
  90.  * Revision 1000.1  2004/04/21 14:34:37  gouriano
  91.  * PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.32
  92.  *
  93.  * Revision 1.32  2004/03/10 19:52:42  gorelenk
  94.  * Added NCBI_XNCBI_EXPORT for functions xncbi_SetValidateAction and
  95.  * xncbi_GetValidateAction.
  96.  *
  97.  * Revision 1.31  2003/07/11 12:47:09  siyan
  98.  * Documentation changes.
  99.  *
  100.  * Revision 1.30  2003/03/31 14:29:23  siyan
  101.  * Added doxygen support
  102.  *
  103.  * Revision 1.29  2002/09/24 20:59:47  vasilche
  104.  * Added "extern" keyword.
  105.  *
  106.  * Revision 1.28  2002/09/24 18:27:17  vasilche
  107.  * Removed redundant "extern" keyword
  108.  *
  109.  * Revision 1.27  2002/09/19 20:05:41  vasilche
  110.  * Safe initialization of static mutexes
  111.  *
  112.  * Revision 1.26  2002/04/16 22:03:16  lavr
  113.  * Added a note about proper use of debug macros
  114.  *
  115.  * Revision 1.25  2002/04/10 18:28:09  ivanov
  116.  * Moved CVS log to end of file
  117.  *
  118.  * Revision 1.24  2001/12/13 19:38:01  gouriano
  119.  * *** empty log message ***
  120.  *
  121.  * Revision 1.23  2001/07/30 14:40:47  lavr
  122.  * eDiag_Trace and eDiag_Fatal always print as much as possible
  123.  *
  124.  * Revision 1.22  2001/05/17 14:50:41  lavr
  125.  * Typos corrected
  126.  *
  127.  * Revision 1.21  2000/06/23 15:12:57  thiessen
  128.  * minor change to _ASSERT macro to avoid frequent Mac warnings about semicolons
  129.  *
  130.  * Revision 1.20  2000/05/24 20:01:07  vasilche
  131.  * Added _DEBUG_ARG macro for arguments used only in debug mode.
  132.  *
  133.  * Revision 1.19  2000/03/10 14:17:40  vasilche
  134.  * Added missing namespace specifier to macro.
  135.  *
  136.  * Revision 1.18  1999/12/27 19:39:12  vakatov
  137.  * [_DEBUG]  Forcibly flush ("<< Endm") the diag. stream
  138.  *
  139.  * Revision 1.17  1999/09/27 16:23:19  vasilche
  140.  * Changed implementation of debugging macros (_TRACE, _THROW*, _ASSERT etc),
  141.  * so that they will be much easier for compilers to eat.
  142.  *
  143.  * Revision 1.16  1999/09/23 21:15:48  vasilche
  144.  * Added namespace modifiers.
  145.  *
  146.  * Revision 1.15  1999/05/04 00:03:05  vakatov
  147.  * Removed the redundant severity arg from macro ERR_POST()
  148.  *
  149.  * Revision 1.14  1999/05/03 20:32:25  vakatov
  150.  * Use the (newly introduced) macro from <corelib/ncbidbg.h>:
  151.  *   RETHROW_TRACE,
  152.  *   THROW0_TRACE(exception_class),
  153.  *   THROW1_TRACE(exception_class, exception_arg),
  154.  *   THROW_TRACE(exception_class, exception_args)
  155.  * instead of the former (now obsolete) macro _TRACE_THROW.
  156.  *
  157.  * Revision 1.13  1999/04/30 19:20:56  vakatov
  158.  * Added more details and more control on the diagnostics
  159.  * See #ERR_POST, EDiagPostFlag, and ***DiagPostFlag()
  160.  *
  161.  * Revision 1.12  1999/04/22 14:18:18  vasilche
  162.  * Added _TRACE_THROW() macro which can be configured to make coredump at 
  163.  * some point fo throwing exception.
  164.  *
  165.  * Revision 1.11  1999/03/15 16:08:09  vakatov
  166.  * Fixed "{...}" macros to "do {...} while(0)" lest it to mess up with "if"s
  167.  *
  168.  * Revision 1.10  1999/01/07 16:15:09  vakatov
  169.  * Explicitly specify "NCBI_NS_NCBI::" in the preprocessor macros
  170.  *
  171.  * Revision 1.9  1998/12/28 17:56:26  vakatov
  172.  * New CVS and development tree structure for the NCBI C++ projects
  173.  *
  174.  * Revision 1.8  1998/11/19 22:17:41  vakatov
  175.  * Forgot "()" in the _ASSERT macro
  176.  *
  177.  * Revision 1.7  1998/11/18 21:00:24  vakatov
  178.  * [_DEBUG]  Fixed a typo in _ASSERT macro
  179.  *
  180.  * Revision 1.6  1998/11/06 22:42:37  vakatov
  181.  * Introduced BEGIN_, END_ and USING_ NCBI_SCOPE macros to put NCBI C++
  182.  * API to namespace "ncbi::" and to use it by default, respectively
  183.  * Introduced THROWS_NONE and THROWS(x) macros for the exception
  184.  * specifications
  185.  * Other fixes and rearrangements throughout the most of "corelib" code
  186.  *
  187.  * Revision 1.5  1998/11/04 23:46:35  vakatov
  188.  * Fixed the "ncbidbg/diag" header circular dependencies
  189.  *
  190.  * ==========================================================================
  191.  */
  192. #endif  /* NCBIDBG__HPP */