00001 // -*- C++ -*- 00002 00003 //============================================================================= 00004 /** 00005 * @file Exception_Data.h 00006 * 00007 * $Id: Exception_Data.h 69150 2005-11-02 07:13:04Z ossama $ 00008 * 00009 * @author balachandran Natarajan <bala@dre.vanderbilt.edu> 00010 */ 00011 //============================================================================= 00012 00013 #ifndef TAO_EXCEPTION_DATA_H 00014 #define TAO_EXCEPTION_DATA_H 00015 #include /**/ "ace/pre.h" 00016 00017 #include "ace/config-all.h" 00018 00019 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00020 # pragma once 00021 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00022 00023 #include "tao/orbconf.h" 00024 00025 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00026 00027 namespace CORBA 00028 { 00029 class TypeCode; 00030 typedef TypeCode *TypeCode_ptr; 00031 } 00032 00033 namespace TAO 00034 { 00035 // Function pointer returning a pointer to CORBA::Exception. This is used to 00036 // describe the allocator for user-defined exceptions that are used internally 00037 // by the interpreter. 00038 typedef CORBA::Exception* (*TAO_Exception_Alloc) (void); 00039 00040 /** 00041 * @struct Exception_Data 00042 * 00043 * @brief Description of a single exception. 00044 * 00045 * The interpreter needs a way to allocate memory to hold the exception 00046 * that was raised by the stub. This data structure provides the typecode 00047 * for the exception as well as a static function pointer that 00048 * does the job of memory allocation. 00049 */ 00050 struct Exception_Data 00051 { 00052 /// Repository id of the exception. 00053 const char *id; 00054 00055 /// The allocator for this exception. 00056 TAO_Exception_Alloc alloc; 00057 00058 #if TAO_HAS_INTERCEPTORS == 1 00059 /// The typecode pointer for this exception. 00060 CORBA::TypeCode_ptr tc_ptr; 00061 #endif /* TAO_HAS_INTERCEPTORS */ 00062 }; 00063 } 00064 00065 TAO_END_VERSIONED_NAMESPACE_DECL 00066 00067 #include /**/ "ace/post.h" 00068 #endif /*TAO_EXCEPTION_DATA_H*/