00001 // -*- C++ -*- 00002 00003 //============================================================================= 00004 /** 00005 * @file Env.h 00006 * 00007 * $Id: Env.h 80826 2008-03-04 14:51:23Z wotte $ 00008 * 00009 * @author Nanbor Wang <nanbor@cs.wustl.edu> 00010 */ 00011 //============================================================================= 00012 00013 #ifndef _ACEXML_ENV_H_ 00014 #define _ACEXML_ENV_H_ 00015 00016 #include /**/ "ace/pre.h" 00017 #include "ACEXML/common/ACEXML_Export.h" 00018 00019 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00020 #pragma once 00021 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00022 00023 #include "ACEXML/common/XML_Macros.h" 00024 #include "ACEXML/common/Exception.h" 00025 00026 /** 00027 * @class ACEXML_Env Env.h "ACEXML/common/Env.h" 00028 * 00029 * @brief ACEXML_Env 00030 * 00031 * ACEXML_Env is modeled after CORBA_Environment class. It provides a place 00032 * holder for callees to propagate exceptions back to callers. ACEXML does 00033 * not support native exceptions at this moment. 00034 * 00035 * @sa ACEXML_Exception 00036 */ 00037 class ACEXML_Export ACEXML_Env 00038 { 00039 public: 00040 /// Default constructor. 00041 ACEXML_Env (void); 00042 00043 /// Copy constructor. 00044 ACEXML_Env (const ACEXML_Env& ACEXML_TRY_ENV); 00045 00046 /// Assignment 00047 ACEXML_Env& operator= (const ACEXML_Env& ACEXML_TRY_ENV); 00048 00049 /// Destructor. 00050 ~ACEXML_Env (void); 00051 00052 /// Return the contained exception. 00053 ACEXML_Exception *exception (void) const; 00054 00055 /// Set the contained exception to @arg ex 00056 void exception (ACEXML_Exception* ex); 00057 00058 /// Clear the exception and reset the evnrionment. 00059 void clear (void); 00060 00061 private: 00062 /// Place holder for exception (if one occurs.) 00063 ACEXML_Exception *exception_; 00064 }; 00065 00066 #if defined (__ACEXML_INLINE__) 00067 # include "ACEXML/common/Env.inl" 00068 #endif /* __ACEXML_INLINE__ */ 00069 00070 #include /**/ "ace/post.h" 00071 00072 #endif /* _ACEXML_ENV_H_ */