00001 #ifndef guard_object_const_reference_sequence_element_hpp 00002 #define guard_object_const_reference_sequence_element_hpp 00003 /** 00004 * @file 00005 * 00006 * @brief Implement the type returned by const operator[] in object_reference 00007 * sequences. 00008 * 00009 * $Id: Object_Reference_Const_Sequence_Element_T.h 79363 2007-08-16 11:36:29Z johnnyw $ 00010 * 00011 * @author Johnny Willemsen 00012 */ 00013 #include "tao/Basic_Types.h" 00014 00015 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00016 00017 namespace TAO 00018 { 00019 namespace details 00020 { 00021 00022 template<typename obj_ref_traits> 00023 class object_reference_const_sequence_element 00024 { 00025 public: 00026 typedef typename obj_ref_traits::object_type object_reference_type; 00027 typedef object_reference_type * value_type; 00028 typedef object_reference_type const * const_value_type; 00029 typedef typename obj_ref_traits::object_type_var object_reference_var; 00030 00031 public: 00032 object_reference_const_sequence_element( 00033 value_type const & e, CORBA::Boolean release) 00034 : element_(&e) 00035 , release_(release) 00036 { 00037 } 00038 00039 object_reference_const_sequence_element( 00040 object_reference_const_sequence_element const & rhs) 00041 : element_(rhs.element_) 00042 , release_(rhs.release_) 00043 { 00044 } 00045 00046 ~object_reference_const_sequence_element() 00047 { 00048 } 00049 00050 inline operator object_reference_type * (void) const 00051 { 00052 return *this->element_; 00053 } 00054 00055 inline object_reference_type * in (void) const 00056 { 00057 return *this->element_; 00058 } 00059 00060 inline value_type operator->() const 00061 { 00062 return *this->element_; 00063 } 00064 00065 inline CORBA::Boolean release() const 00066 { 00067 return this->release_; 00068 } 00069 00070 private: 00071 // This function is not implemented 00072 object_reference_const_sequence_element(); 00073 object_reference_const_sequence_element & operator=( 00074 object_reference_const_sequence_element const & rhs); 00075 00076 private: 00077 value_type const * const element_; 00078 CORBA::Boolean const release_; 00079 }; 00080 00081 } // namespace details 00082 } // namespace CORBA 00083 00084 TAO_END_VERSIONED_NAMESPACE_DECL 00085 00086 #endif // guard_object_const_reference_sequence_element_hpp