SystemExceptionA.cpp

Go to the documentation of this file.
00001 // $Id: SystemExceptionA.cpp 72893 2006-06-01 08:58:57Z jwillemsen $
00002 
00003 #include "tao/AnyTypeCode/SystemExceptionA.h"
00004 #include "tao/AnyTypeCode/Any_SystemException.h"
00005 #include "tao/AnyTypeCode/Any_Dual_Impl_T.h"
00006 #include "tao/AnyTypeCode/TypeCode.h"
00007 #include "tao/AnyTypeCode/TypeCode_Constants.h"
00008 #include "tao/AnyTypeCode/Enum_TypeCode_Static.h"
00009 #include "tao/AnyTypeCode/TypeCode_Struct_Field.h"
00010 #include "tao/AnyTypeCode/Struct_TypeCode_Static.h"
00011 #include "tao/AnyTypeCode/Null_RefCount_Policy.h"
00012 
00013 #include "tao/CORBA_String.h"
00014 
00015 ACE_RCSID (AnyTypeCode,
00016            SystemExceptionA,
00017            "$Id: SystemExceptionA.cpp 72893 2006-06-01 08:58:57Z jwillemsen $")
00018 
00019 
00020 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00021 
00022 #if defined (THREAD_CANCELLED)
00023 #undef THREAD_CANCELLED
00024 #endif /* THREAD_CANCELLED */
00025 
00026 // List of standard/system exceptions ... used to create static
00027 // storage for their typecodes.
00028 
00029 #define STANDARD_EXCEPTION_LIST \
00030     TAO_SYSTEM_EXCEPTION (UNKNOWN) \
00031     TAO_SYSTEM_EXCEPTION (BAD_PARAM) \
00032     TAO_SYSTEM_EXCEPTION (NO_MEMORY) \
00033     TAO_SYSTEM_EXCEPTION (IMP_LIMIT) \
00034     TAO_SYSTEM_EXCEPTION (COMM_FAILURE) \
00035     TAO_SYSTEM_EXCEPTION (INV_OBJREF) \
00036     TAO_SYSTEM_EXCEPTION (OBJECT_NOT_EXIST) \
00037     TAO_SYSTEM_EXCEPTION (NO_PERMISSION) \
00038     TAO_SYSTEM_EXCEPTION (INTERNAL) \
00039     TAO_SYSTEM_EXCEPTION (MARSHAL) \
00040     TAO_SYSTEM_EXCEPTION (INITIALIZE) \
00041     TAO_SYSTEM_EXCEPTION (NO_IMPLEMENT) \
00042     TAO_SYSTEM_EXCEPTION (BAD_TYPECODE) \
00043     TAO_SYSTEM_EXCEPTION (BAD_OPERATION) \
00044     TAO_SYSTEM_EXCEPTION (NO_RESOURCES) \
00045     TAO_SYSTEM_EXCEPTION (NO_RESPONSE) \
00046     TAO_SYSTEM_EXCEPTION (PERSIST_STORE) \
00047     TAO_SYSTEM_EXCEPTION (BAD_INV_ORDER) \
00048     TAO_SYSTEM_EXCEPTION (TRANSIENT) \
00049     TAO_SYSTEM_EXCEPTION (FREE_MEM) \
00050     TAO_SYSTEM_EXCEPTION (INV_IDENT) \
00051     TAO_SYSTEM_EXCEPTION (INV_FLAG) \
00052     TAO_SYSTEM_EXCEPTION (INTF_REPOS) \
00053     TAO_SYSTEM_EXCEPTION (BAD_CONTEXT) \
00054     TAO_SYSTEM_EXCEPTION (OBJ_ADAPTER) \
00055     TAO_SYSTEM_EXCEPTION (DATA_CONVERSION) \
00056     TAO_SYSTEM_EXCEPTION (INV_POLICY) \
00057     TAO_SYSTEM_EXCEPTION (REBIND) \
00058     TAO_SYSTEM_EXCEPTION (TIMEOUT) \
00059     TAO_SYSTEM_EXCEPTION (TRANSACTION_UNAVAILABLE) \
00060     TAO_SYSTEM_EXCEPTION (TRANSACTION_MODE) \
00061     TAO_SYSTEM_EXCEPTION (TRANSACTION_REQUIRED) \
00062     TAO_SYSTEM_EXCEPTION (TRANSACTION_ROLLEDBACK) \
00063     TAO_SYSTEM_EXCEPTION (INVALID_TRANSACTION) \
00064     TAO_SYSTEM_EXCEPTION (CODESET_INCOMPATIBLE) \
00065     TAO_SYSTEM_EXCEPTION (BAD_QOS) \
00066     TAO_SYSTEM_EXCEPTION (INVALID_ACTIVITY) \
00067     TAO_SYSTEM_EXCEPTION (ACTIVITY_COMPLETED) \
00068     TAO_SYSTEM_EXCEPTION (ACTIVITY_REQUIRED) \
00069     TAO_SYSTEM_EXCEPTION (THREAD_CANCELLED)
00070 
00071 namespace TAO
00072 {
00073   namespace TypeCode
00074   {
00075     char const * const enumerators_CORBA_CompletionStatus[] =
00076       {
00077         "COMPLETED_YES",
00078         "COMPLETED_NO",
00079         "COMPLETED_MAYBE"
00080       };
00081 
00082     Enum<char const *,
00083          char const * const *,
00084          TAO::Null_RefCount_Policy>
00085       tc_CompletionStatus ("IDL:omg.org/CORBA/CompletionStatus:1.0",
00086                            "CompletionStatus",
00087                            enumerators_CORBA_CompletionStatus,
00088                            3 /* # of enumerators */);
00089   }
00090 }
00091 
00092 namespace CORBA
00093 {
00094   // An internal TypeCode.
00095   TypeCode_ptr const _tc_CompletionStatus =
00096     &TAO::TypeCode::tc_CompletionStatus;
00097 }
00098 
00099 namespace TAO
00100 {
00101   namespace TypeCode
00102   {
00103     Struct_Field<char const *,
00104                  CORBA::TypeCode_ptr const *> const
00105     fields_CORBA_SystemException[] =
00106       {
00107         { "minor",     &CORBA::_tc_ulong },
00108         { "completed", &CORBA::_tc_CompletionStatus }
00109       };
00110 
00111     typedef TAO::TypeCode::Struct<char const *,
00112                                   CORBA::TypeCode_ptr const *,
00113                                   TAO::TypeCode::Struct_Field<char const *,
00114                                                               CORBA::TypeCode_ptr const *> const *,
00115                                   TAO::Null_RefCount_Policy> tc_SystemException;
00116   }
00117 }
00118 
00119 #define TAO_SYSTEM_EXCEPTION(name) \
00120 namespace TAO \
00121 { \
00122   namespace TypeCode \
00123   { \
00124     tc_SystemException tc_CORBA_ ## name ( \
00125       CORBA::tk_except, \
00126       "IDL:omg.org/CORBA/" #name ":1.0", \
00127       #name, \
00128       TAO::TypeCode::fields_CORBA_SystemException, \
00129       2 /* # of fields */); \
00130   } \
00131 } \
00132 CORBA::TypeCode_ptr const CORBA::_tc_ ## name = \
00133     &TAO::TypeCode::tc_CORBA_ ## name;
00134 
00135 STANDARD_EXCEPTION_LIST
00136 #undef  TAO_SYSTEM_EXCEPTION
00137 
00138 
00139 #define TAO_SYSTEM_EXCEPTION(name) \
00140 void \
00141 CORBA::operator<<= (CORBA::Any &any, const CORBA::name &ex) \
00142 { \
00143   TAO::Any_SystemException::insert_copy ( \
00144       any, \
00145       CORBA::name ::_tao_any_destructor, \
00146       CORBA::_tc_ ## name, \
00147       ex \
00148     ); \
00149 }
00150 
00151 STANDARD_EXCEPTION_LIST
00152 #undef TAO_SYSTEM_EXCEPTION
00153 
00154 #define TAO_SYSTEM_EXCEPTION(name) \
00155 void \
00156 CORBA::operator<<= (CORBA::Any &any, CORBA::name *ex) \
00157 { \
00158   TAO::Any_SystemException::insert ( \
00159       any, \
00160       CORBA::name ::_tao_any_destructor, \
00161       CORBA::_tc_ ## name, \
00162       ex \
00163     ); \
00164 }
00165 
00166 STANDARD_EXCEPTION_LIST
00167 #undef TAO_SYSTEM_EXCEPTION
00168 
00169 #define TAO_SYSTEM_EXCEPTION(name) \
00170 CORBA::Boolean operator>>= (const CORBA::Any &any, \
00171                             const CORBA::name *&ex) \
00172 { \
00173   return \
00174     TAO::Any_SystemException::extract ( \
00175         any, \
00176         CORBA::name ::_tao_any_destructor, \
00177         CORBA::_tc_ ## name, \
00178         (const CORBA::SystemException *&) ex, \
00179         &CORBA::name ::_tao_create); \
00180 }
00181 
00182 STANDARD_EXCEPTION_LIST
00183 #undef TAO_SYSTEM_EXCEPTION
00184 
00185 TAO_END_VERSIONED_NAMESPACE_DECL

Generated on Sun Jan 27 13:21:06 2008 for TAO_AnyTypeCode by doxygen 1.3.6