diff options
Diffstat (limited to 'TAO/tao/Sequence_T.i')
-rw-r--r-- | TAO/tao/Sequence_T.i | 169 |
1 files changed, 151 insertions, 18 deletions
diff --git a/TAO/tao/Sequence_T.i b/TAO/tao/Sequence_T.i index c747c35ab7d..881f6584d96 100644 --- a/TAO/tao/Sequence_T.i +++ b/TAO/tao/Sequence_T.i @@ -51,20 +51,20 @@ TAO_Unbounded_Sequence<T>::get_buffer (CORBA::Boolean orphan) { result = TAO_Unbounded_Sequence<T>::allocbuf (this->length_); this->buffer_ = result; - this->release_ = 1; + this->release_ = 1; } } else { result = - ACE_reinterpret_cast (T*, - this->buffer_); + ACE_reinterpret_cast (T*, + this->buffer_); } } else // if (orphan == 1) { result = ACE_reinterpret_cast (T*, - this->buffer_); + this->buffer_); if (this->release_ != 0) { @@ -145,7 +145,7 @@ TAO_Bounded_Sequence<T, MAX>::get_buffer (CORBA::Boolean orphan) { result = TAO_Bounded_Sequence<T,MAX>::allocbuf (this->maximum_); this->buffer_ = result; - this->release_ = 1; + this->release_ = 1; } else { @@ -339,6 +339,84 @@ TAO_Pseudo_Object_Manager<T,T_var>::_retn (void) } // ************************************************************* +// Inline operations for class TAO_Valuetype_Manager +// ************************************************************* + +template <class T, class T_var> ACE_INLINE +TAO_Valuetype_Manager<T,T_var>::~TAO_Valuetype_Manager (void) +{ +} + +template <class T, class T_var> ACE_INLINE +TAO_Valuetype_Manager<T,T_var>::TAO_Valuetype_Manager (const TAO_Valuetype_Manager<T,T_var> &rhs) + : ptr_ (rhs.ptr_), + release_ (rhs.release_) +{ +} + +template <class T, class T_var> ACE_INLINE +TAO_Valuetype_Manager<T,T_var>::TAO_Valuetype_Manager(T** buffer, CORBA::Boolean release) + : ptr_ (buffer), + release_ (release) +{ +} + +template <class T, class T_var> ACE_INLINE T * +TAO_Valuetype_Manager<T,T_var>::operator-> (void) const +{ + return *this->ptr_; +} + +template <class T, class T_var> ACE_INLINE +TAO_Valuetype_Manager<T,T_var>::operator const T_var () const +{ + if (*this->ptr_ != 0) + (*this->ptr_)->_add_ref (); + return *this->ptr_; +} + +template <class T, class T_var> ACE_INLINE +TAO_Valuetype_Manager<T,T_var>::operator const T* () const // cast +{ + return *this->ptr_; +} + +template <class T, class T_var> ACE_INLINE +TAO_Valuetype_Manager<T,T_var>::operator T* &() // cast +{ + return *this->ptr_; +} + +template <class T, class T_var> ACE_INLINE T * +TAO_Valuetype_Manager<T,T_var>::in (void) const +{ + return *this->ptr_; +} + +template <class T, class T_var> ACE_INLINE T *& +TAO_Valuetype_Manager<T,T_var>::inout (void) +{ + return *this->ptr_; +} + +template <class T, class T_var> ACE_INLINE T *& +TAO_Valuetype_Manager<T,T_var>::out (void) +{ + if (*this->ptr_ != 0) + (*this->ptr_)->_remove_ref (); + *this->ptr_ = 0; + return *this->ptr_; +} + +template <class T, class T_var> ACE_INLINE T * +TAO_Valuetype_Manager<T,T_var>::_retn (void) +{ + T *temp = *this->ptr_; + *this->ptr_ = 0; + return temp; +} + +// ************************************************************* // class TAO_Unbounded_Object_Sequence // ************************************************************* @@ -451,6 +529,61 @@ TAO_Bounded_Pseudo_Sequence<T, T_var,MAX>::operator[] (CORBA::ULong slot) const } // ************************************************************* +// class TAO_Unbounded_Valuetype_Sequence +// ************************************************************* + +//default constructor +template <class T, class T_var> ACE_INLINE +TAO_Unbounded_Valuetype_Sequence<T,T_var>::TAO_Unbounded_Valuetype_Sequence (void) +{ +} + +template <class T, class T_var> ACE_INLINE +TAO_Unbounded_Valuetype_Sequence<T,T_var>:: +TAO_Unbounded_Valuetype_Sequence (CORBA::ULong maximum, + CORBA::ULong length, + T* *value, + CORBA::Boolean release) + : TAO_Unbounded_Base_Sequence (maximum, length, value, release) +{ +} + +template <class T, class T_var> ACE_INLINE TAO_Valuetype_Manager<T,T_var> +TAO_Unbounded_Valuetype_Sequence<T,T_var>::operator[] (CORBA::ULong slot) const +{ + ACE_ASSERT (slot < this->maximum_); + T ** const tmp = ACE_reinterpret_cast (T ** ACE_CAST_CONST, this->buffer_); + return TAO_Valuetype_Manager<T,T_var> (tmp + slot, this->release_); +} + +// ************************************************************* +// class TAO_Bounded_Valuetype_Sequence +// ************************************************************* + +template<class T, class T_var, size_t MAX> ACE_INLINE +TAO_Bounded_Valuetype_Sequence<T,T_var,MAX>::~TAO_Bounded_Valuetype_Sequence (void) +{ + this->_deallocate_buffer (); +} + +template <class T, class T_var, size_t MAX> ACE_INLINE +TAO_Bounded_Valuetype_Sequence<T,T_var,MAX>:: +TAO_Bounded_Valuetype_Sequence (CORBA::ULong length, + T **value, + CORBA::Boolean release) + : TAO_Bounded_Base_Sequence (MAX, length, value, release) +{ +} + +template <class T, class T_var, size_t MAX> ACE_INLINE TAO_Valuetype_Manager<T,T_var> +TAO_Bounded_Valuetype_Sequence<T, T_var,MAX>::operator[] (CORBA::ULong slot) const +{ + ACE_ASSERT (slot < this->maximum_); + T **const tmp = ACE_reinterpret_cast (T ** ACE_CAST_CONST, this->buffer_); + return TAO_Valuetype_Manager<T,T_var> (tmp + slot, this->release_); +} + +// ************************************************************* // class TAO_Unbounded_Array_Sequence // ************************************************************* @@ -523,19 +656,19 @@ TAO_Unbounded_Array_Sequence<T, T_var>::get_buffer (CORBA::Boolean orphan) { if (this->length_ > 0) { - result = - TAO_Unbounded_Array_Sequence<T, T_var>::allocbuf ( + result = + TAO_Unbounded_Array_Sequence<T, T_var>::allocbuf ( this->length_ ); this->buffer_ = result; - this->release_ = 1; + this->release_ = 1; } } else { result = - ACE_reinterpret_cast (T*, - this->buffer_); + ACE_reinterpret_cast (T*, + this->buffer_); } } else // if (orphan == 1) @@ -545,7 +678,7 @@ TAO_Unbounded_Array_Sequence<T, T_var>::get_buffer (CORBA::Boolean orphan) // We set the state back to default and relinquish // ownership. result = ACE_reinterpret_cast (T*, - this->buffer_); + this->buffer_); this->maximum_ = 0; this->length_ = 0; this->buffer_ = 0; @@ -558,13 +691,13 @@ TAO_Unbounded_Array_Sequence<T, T_var>::get_buffer (CORBA::Boolean orphan) template <class T, class T_var> ACE_INLINE const T * TAO_Unbounded_Array_Sequence<T, T_var>::get_buffer (void) const { - return ACE_reinterpret_cast (const T * ACE_CAST_CONST, + return ACE_reinterpret_cast (const T * ACE_CAST_CONST, this->buffer_); } template <class T, class T_var> ACE_INLINE void TAO_Unbounded_Array_Sequence<T, T_var>::replace (CORBA::ULong max, - CORBA::ULong length, + CORBA::ULong length, T *data, CORBA::Boolean release) { @@ -643,10 +776,10 @@ TAO_Bounded_Array_Sequence<T, T_var, MAX>::get_buffer (CORBA::Boolean orphan) if (this->buffer_ == 0) { - result = - TAO_Bounded_Array_Sequence<T, T_var, MAX>::allocbuf (this->maximum_); + result = + TAO_Bounded_Array_Sequence<T, T_var, MAX>::allocbuf (this->maximum_); this->buffer_ = result; - this->release_ = 1; + this->release_ = 1; } else { @@ -673,7 +806,7 @@ TAO_Bounded_Array_Sequence<T, T_var, MAX>::get_buffer (CORBA::Boolean orphan) template <class T, class T_var, size_t MAX> ACE_INLINE const T * TAO_Bounded_Array_Sequence<T, T_var, MAX>::get_buffer (void) const { - return ACE_reinterpret_cast (const T * ACE_CAST_CONST, + return ACE_reinterpret_cast (const T * ACE_CAST_CONST, this->buffer_); } @@ -687,7 +820,7 @@ TAO_Bounded_Array_Sequence<T, T_var, MAX>::replace (CORBA::ULong max, this->length_ = length; if (this->buffer_ && this->release_ == 1) { - T* tmp = ACE_reinterpret_cast (T*, + T* tmp = ACE_reinterpret_cast (T*, this->buffer_); TAO_Bounded_Array_Sequence<T, T_var, MAX>::freebuf (tmp); } |