00001 // -*- C++ -*- 00002 00003 // ============================================================================ 00004 /** 00005 * @file Exception_Macros.h 00006 * 00007 * $Id: Exception_Macros.h 74005 2006-08-14 11:30:00Z johnnyw $ 00008 * 00009 * Writing code that is portable between platforms with or without 00010 * native C++ exceptions is hard. The following macros offer some 00011 * help on this task. 00012 * 00013 * @author Nanbor Wang <nanbor@cs.wustl.edu> 00014 * @author Aniruddha Gokhale <gokhale@sahyadri.research.bell-labs.com> 00015 * @author Carlos O'Ryan <coryan@uci.edu> 00016 * @author Krishnakumar B <kitty@cs.wustl.edu>, et al. 00017 */ 00018 // ============================================================================ 00019 00020 // Macros for handling exceptions. 00021 00022 #ifndef ACE_EXCEPTION_MACROS_H 00023 #define ACE_EXCEPTION_MACROS_H 00024 00025 #include /**/ "ace/pre.h" 00026 00027 #include /**/ "ace/config-all.h" 00028 00029 # if !defined (ACE_LACKS_PRAGMA_ONCE) 00030 # pragma once 00031 # endif /* ACE_LACKS_PRAGMA_ONCE */ 00032 00033 // By default, if the compiler supports native exception handling, assume 00034 // CORBA also support native exception handling. But it can be disabled by 00035 // defining ACE_CORBA_HAS_EXCEPTIONS=0. If the compiler does not support 00036 // exceptions handling, make sure native exception handling is disabled. 00037 #if defined (ACE_HAS_EXCEPTIONS) 00038 # if defined (ACE_CORBA_HAS_EXCEPTIONS) 00039 # if (ACE_CORBA_HAS_EXCEPTIONS == 0) 00040 # undef ACE_USES_NATIVE_EXCEPTIONS 00041 # else /* ACE_CORBA_HAS_EXCEPTIONS != 0 */ 00042 # define ACE_USES_NATIVE_EXCEPTIONS 00043 # endif /* ACE_CORBA_HAS_EXCEPTIONS == 0 */ 00044 # else 00045 # define ACE_USES_NATIVE_EXCEPTIONS 00046 # define ACE_CORBA_HAS_EXCEPTIONS 00047 # endif /* ACE_CORBA_HAS_EXCEPTIONS */ 00048 #else /* ! ACE_HAS_EXCEPTIONS */ 00049 # undef ACE_CORBA_HAS_EXCEPTIONS 00050 # undef ACE_USES_NATIVE_EXCEPTIONS 00051 #endif /* ACE_HAS_EXCEPTIONS */ 00052 00053 #include /**/ "ace/post.h" 00054 00055 #endif /* ACE_EXCEPTION_MACROS_H */