Object_Reference_Const_Sequence_Element_T.h

Go to the documentation of this file.
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

Generated on Tue Feb 2 17:37:52 2010 for TAO by  doxygen 1.4.7