summaryrefslogtreecommitdiff
path: root/TAO/tao/Sequence.i
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/Sequence.i')
-rw-r--r--TAO/tao/Sequence.i303
1 files changed, 303 insertions, 0 deletions
diff --git a/TAO/tao/Sequence.i b/TAO/tao/Sequence.i
new file mode 100644
index 00000000000..1293e10fe7b
--- /dev/null
+++ b/TAO/tao/Sequence.i
@@ -0,0 +1,303 @@
+// -*- C++ -*-
+//
+// $Id$
+
+// Operations on the unbounded sequence class.
+
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+ACE_INLINE
+TAO_Base_Sequence::TAO_Base_Sequence (void)
+ : maximum_ (0),
+ length_ (0),
+ buffer_ (0),
+ release_ (0)
+{
+}
+
+ACE_INLINE
+TAO_Base_Sequence::TAO_Base_Sequence (CORBA::ULong maximum,
+ CORBA::ULong length,
+ void * buffer,
+ CORBA::Boolean release)
+ : maximum_ (maximum),
+ length_ (length),
+ buffer_ (buffer),
+ release_ (release)
+{
+}
+
+ACE_INLINE
+TAO_Base_Sequence::TAO_Base_Sequence (CORBA::ULong maximum,
+ void * data)
+ : maximum_ (maximum),
+ length_ (0),
+ buffer_ (data),
+ release_ (1)
+{
+}
+
+ACE_INLINE
+TAO_Base_Sequence::TAO_Base_Sequence (const TAO_Base_Sequence & rhs)
+ : maximum_ (rhs.maximum_),
+ length_ (rhs.length_),
+ buffer_ (0),
+ release_ (1)
+{
+}
+
+ACE_INLINE
+CORBA::Boolean
+TAO_Base_Sequence::release (void) const
+{
+ return this->release_;
+}
+
+ACE_INLINE
+TAO_Base_Sequence &
+TAO_Base_Sequence::operator= (const TAO_Base_Sequence & rhs)
+{
+ this->maximum_ = rhs.maximum_;
+ this->length_ = rhs.length_;
+ this->release_ = 1;
+ return *this;
+}
+
+ACE_INLINE
+CORBA::ULong
+TAO_Base_Sequence::maximum (void) const
+{
+ return this->maximum_;
+}
+
+// ****************************************************************
+
+ACE_INLINE
+TAO_Unbounded_Base_Sequence::TAO_Unbounded_Base_Sequence (void)
+{
+}
+
+ACE_INLINE
+TAO_Unbounded_Base_Sequence::TAO_Unbounded_Base_Sequence (
+ CORBA::ULong maximum,
+ CORBA::ULong length,
+ void * buffer,
+ CORBA::Boolean release
+ )
+ : TAO_Base_Sequence (maximum, length, buffer, release)
+{
+}
+
+ACE_INLINE
+TAO_Unbounded_Base_Sequence::TAO_Unbounded_Base_Sequence (
+ CORBA::ULong maximum,
+ void * buffer
+ )
+ : TAO_Base_Sequence (maximum, buffer)
+{
+}
+
+ACE_INLINE
+CORBA::ULong
+TAO_Unbounded_Base_Sequence::length (void) const
+{
+ return this->length_;
+}
+
+ACE_INLINE
+void
+TAO_Unbounded_Base_Sequence::length (CORBA::ULong length)
+{
+ if (length > this->maximum_)
+ {
+ this->_allocate_buffer (length);
+ this->maximum_ = length;
+ this->release_ = 1;
+ }
+ else if (length < this->length_)
+ {
+ this->_shrink_buffer (length, this->length_);
+ }
+
+ this->length_ = length;
+}
+
+// ****************************************************************
+
+ACE_INLINE
+TAO_Bounded_Base_Sequence::TAO_Bounded_Base_Sequence (void)
+{
+}
+
+ACE_INLINE
+TAO_Bounded_Base_Sequence::TAO_Bounded_Base_Sequence (
+ CORBA::ULong maximum,
+ CORBA::ULong length,
+ void * buffer,
+ CORBA::Boolean release
+ )
+ : TAO_Base_Sequence (maximum, length, buffer, release)
+{
+}
+
+ACE_INLINE
+TAO_Bounded_Base_Sequence::TAO_Bounded_Base_Sequence (
+ CORBA::ULong maximum,
+ void * buffer
+ )
+ : TAO_Base_Sequence (maximum, buffer)
+{
+}
+
+ACE_INLINE
+CORBA::ULong
+TAO_Bounded_Base_Sequence::length (void) const
+{
+ return this->length_;
+}
+
+ACE_INLINE
+void
+TAO_Bounded_Base_Sequence::length (CORBA::ULong length)
+{
+ if (this->buffer_ == 0)
+ {
+ this->_allocate_buffer (this->maximum_);
+ this->release_ = 1;
+ }
+
+ if (length > this->maximum_)
+ {
+ return;
+ }
+ else if (length < this->length_)
+ {
+ this->_shrink_buffer (length, this->length_);
+ }
+
+ this->length_ = length;
+}
+
+// ****************************************************************
+
+ACE_INLINE
+TAO_Unbounded_String_Sequence::TAO_Unbounded_String_Sequence (void)
+{
+}
+
+ACE_INLINE
+TAO_Unbounded_String_Sequence::TAO_Unbounded_String_Sequence (
+ CORBA::ULong maximum,
+ CORBA::ULong length,
+ char ** value,
+ CORBA::Boolean release
+ )
+ : TAO_Unbounded_Base_Sequence (maximum, length, value, release)
+{
+}
+
+ACE_INLINE
+TAO_Unbounded_WString_Sequence::TAO_Unbounded_WString_Sequence (void)
+{
+}
+
+ACE_INLINE
+TAO_Unbounded_WString_Sequence::TAO_Unbounded_WString_Sequence (
+ CORBA::ULong maximum,
+ CORBA::ULong length,
+ CORBA::WChar ** value,
+ CORBA::Boolean release
+ )
+ : TAO_Unbounded_Base_Sequence (maximum, length, value, release)
+{
+}
+
+// ****************************************************************
+
+ACE_INLINE
+CORBA::Octet *
+TAO_Unbounded_Sequence<CORBA::Octet>::allocbuf (CORBA::ULong size)
+{
+ return new CORBA::Octet[size];
+}
+
+ACE_INLINE
+void
+TAO_Unbounded_Sequence<CORBA::Octet>::freebuf (CORBA::Octet * buffer)
+{
+ delete [] buffer;
+}
+
+ACE_INLINE
+TAO_Unbounded_Sequence<CORBA::Octet>::TAO_Unbounded_Sequence (void)
+#if (TAO_NO_COPY_OCTET_SEQUENCES == 1)
+ : mb_ (0)
+#endif /* TAO_NO_COPY_OCTET_SEQUENCES == 1 */
+{
+}
+
+ACE_INLINE
+TAO_Unbounded_Sequence<CORBA::Octet>::TAO_Unbounded_Sequence (
+ CORBA::ULong maximum
+ )
+ : TAO_Unbounded_Base_Sequence (
+ maximum,
+ TAO_Unbounded_Sequence<CORBA::Octet>::allocbuf (maximum)
+ )
+#if (TAO_NO_COPY_OCTET_SEQUENCES == 1)
+ , mb_ (0)
+#endif /* TAO_NO_COPY_OCTET_SEQUENCES == 1 */
+{
+}
+
+ACE_INLINE
+TAO_Unbounded_Sequence<CORBA::Octet>::TAO_Unbounded_Sequence (
+ CORBA::ULong maximum,
+ CORBA::ULong length,
+ CORBA::Octet * data,
+ CORBA::Boolean release
+ )
+ : TAO_Unbounded_Base_Sequence (maximum, length, data, release)
+#if (TAO_NO_COPY_OCTET_SEQUENCES == 1)
+ , mb_ (0)
+#endif /* TAO_NO_COPY_OCTET_SEQUENCES == 1 */
+{
+}
+
+ACE_INLINE
+const CORBA::Octet *
+TAO_Unbounded_Sequence<CORBA::Octet>::get_buffer (void) const
+{
+ return reinterpret_cast<const CORBA::Octet * ACE_CAST_CONST> (this->buffer_);
+}
+
+ACE_INLINE
+CORBA::Octet &
+TAO_Unbounded_Sequence<CORBA::Octet>::operator[] (CORBA::ULong i)
+{
+ TAO_SEQUENCE_ASSERT (i, this->maximum_);
+ CORBA::Octet * tmp = reinterpret_cast<CORBA::Octet *> (this->buffer_);
+ return tmp[i];
+}
+
+ACE_INLINE
+const CORBA::Octet &
+TAO_Unbounded_Sequence<CORBA::Octet>::operator[] (CORBA::ULong i) const
+{
+ TAO_SEQUENCE_ASSERT (i, this->maximum_);
+ CORBA::Octet * const tmp =
+ reinterpret_cast<CORBA::Octet * ACE_CAST_CONST> (this->buffer_);
+ return tmp[i];
+}
+
+#if (TAO_NO_COPY_OCTET_SEQUENCES == 1)
+ACE_INLINE
+ACE_Message_Block *
+TAO_Unbounded_Sequence<CORBA::Octet>::mb (void) const
+{
+ return this->mb_;
+}
+#endif /* TAO_NO_COPY_OCTET_SEQUENCES == 1 */
+
+TAO_END_VERSIONED_NAMESPACE_DECL