#include <SafetyProfileSequence.h>
Public Types | |
typedef seq_size_type | size_type |
typedef seq_size_type | _size_type |
typedef Elts | ElementPolicy |
typedef Elts::Element | Element |
typedef Elts::ConstElement | ConstElement |
typedef Elts::ConstRawElement | ConstRawElement |
typedef ConstElement | const_subscript_type |
typedef Element | subscript_type |
typedef T | value_type |
typedef T & | reference |
typedef const T & | const_reference |
typedef T * | iterator |
typedef const T * | const_iterator |
typedef std::ptrdiff_t | difference_type |
Public Member Functions | |
void | length (size_type len) |
size_type | length () const |
ConstElement | operator[] (size_type idx) const |
Element | operator[] (size_type idx) |
seq_flag_type | release () const |
T * | get_buffer (seq_flag_type orphan=false) |
const ConstRawElement * | get_buffer () const |
const T * | begin () const |
T * | begin () |
const T * | end () const |
T * | end () |
bool | operator== (const Sequence &rhs) const |
bool | operator!= (const Sequence &rhs) const |
size_type | size () const |
bool | empty () const |
Static Public Member Functions | |
static void | freebuf (T *data) |
Protected Member Functions | |
Sequence (size_type maximum=0, size_type length=0, T *data=0, seq_flag_type release=false) | |
Sequence (const Sequence &seq) | |
~Sequence () | |
Sequence & | operator= (const Sequence &seq) |
void | swap (Sequence &rhs) throw () |
Private Member Functions | |
void | replace_i (size_type maximum, size_type length, T *data, seq_flag_type release) |
void | lazy_alloc () const |
Private Attributes | |
size_type | length_ |
seq_flag_type | release_ |
T * | buffer_ |
Friends | |
struct | AllocPolicy< T, Sequence, Bounds > |
Generic base class for all IDL-defined sequences accepted by opendds_idl. Derived classes (generated by opendds_idl) need to provide the following methods to be compliant with the IDL-to-C++ specification: If bounded:
T | element type of the sequence | |
Bounds | either Bounded<N> or Unbounded | |
Elts | element handling policy |
Definition at line 246 of file SafetyProfileSequence.h.
typedef seq_size_type OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::_size_type |
Definition at line 251 of file SafetyProfileSequence.h.
typedef const T* OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::const_iterator |
Definition at line 298 of file SafetyProfileSequence.h.
typedef const T& OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::const_reference |
Definition at line 296 of file SafetyProfileSequence.h.
typedef ConstElement OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::const_subscript_type |
Definition at line 271 of file SafetyProfileSequence.h.
typedef Elts::ConstElement OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::ConstElement |
Definition at line 268 of file SafetyProfileSequence.h.
typedef Elts::ConstRawElement OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::ConstRawElement |
Definition at line 269 of file SafetyProfileSequence.h.
typedef std::ptrdiff_t OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::difference_type |
Definition at line 299 of file SafetyProfileSequence.h.
typedef Elts::Element OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::Element |
Definition at line 267 of file SafetyProfileSequence.h.
typedef Elts OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::ElementPolicy |
Definition at line 252 of file SafetyProfileSequence.h.
typedef T* OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::iterator |
Definition at line 297 of file SafetyProfileSequence.h.
typedef T& OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::reference |
Definition at line 295 of file SafetyProfileSequence.h.
typedef seq_size_type OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::size_type |
Definition at line 250 of file SafetyProfileSequence.h.
typedef Element OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::subscript_type |
Definition at line 272 of file SafetyProfileSequence.h.
typedef T OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::value_type |
Definition at line 294 of file SafetyProfileSequence.h.
OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::Sequence | ( | size_type | maximum = 0 , |
|
size_type | length = 0 , |
|||
T * | data = 0 , |
|||
seq_flag_type | release = false | |||
) | [inline, explicit, protected] |
Definition at line 529 of file SafetyProfileSequence.h.
OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::Sequence | ( | const Sequence< T, Bounds, Elts > & | seq | ) | [inline, protected] |
Definition at line 540 of file SafetyProfileSequence.h.
References OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::buffer_, and OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::length_.
OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::~Sequence | ( | ) | [inline, protected] |
Definition at line 552 of file SafetyProfileSequence.h.
References OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::buffer_, OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::freebuf(), and OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::release_.
T* OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::begin | ( | void | ) | [inline] |
Definition at line 302 of file SafetyProfileSequence.h.
References OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::buffer_.
00302 { return buffer_; }
const T* OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::begin | ( | void | ) | const [inline] |
Definition at line 301 of file SafetyProfileSequence.h.
References OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::buffer_.
00301 { return buffer_; }
bool OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::empty | ( | void | ) | const [inline] |
Definition at line 312 of file SafetyProfileSequence.h.
References OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::length_.
00312 { return !length_; }
T* OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::end | ( | void | ) | [inline] |
Definition at line 305 of file SafetyProfileSequence.h.
References OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::buffer_, and OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::length_.
const T* OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::end | ( | void | ) | const [inline] |
Definition at line 304 of file SafetyProfileSequence.h.
References OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::buffer_, and OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::length_.
void OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::freebuf | ( | T * | data | ) | [inline, static] |
Definition at line 656 of file SafetyProfileSequence.h.
References ACE_Allocator::free(), and ACE_Allocator::instance().
Referenced by OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::~Sequence().
00657 { 00658 if (!data) return; 00659 T* const allocated = Elts::destroy(data, Bounds::Bounds); 00660 ACE_Allocator::instance()->free(allocated); 00661 }
const Sequence< T, Bounds, Elts >::ConstRawElement * OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::get_buffer | ( | ) | const [inline] |
Definition at line 649 of file SafetyProfileSequence.h.
References OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::buffer_, and OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::lazy_alloc().
00650 { 00651 lazy_alloc(); 00652 return buffer_; 00653 }
T * OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::get_buffer | ( | seq_flag_type | orphan = false |
) | [inline] |
Definition at line 629 of file SafetyProfileSequence.h.
References OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::buffer_, OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::lazy_alloc(), OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::release_, and OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::swap().
00630 { 00631 if (orphan && !release_) { 00632 return 0; 00633 } 00634 00635 lazy_alloc(); 00636 00637 if (orphan) { 00638 Sequence tmp; 00639 swap(tmp); 00640 tmp.release_ = false; 00641 return tmp.buffer_; 00642 } 00643 00644 return buffer_; 00645 }
void OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::lazy_alloc | ( | ) | const [inline, private] |
Definition at line 587 of file SafetyProfileSequence.h.
References OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::buffer_, and OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::release_.
Referenced by OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::get_buffer(), and OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::length().
size_type OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::length | ( | void | ) | const [inline] |
Definition at line 265 of file SafetyProfileSequence.h.
References OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::length_.
00265 { return length_; }
void OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::length | ( | size_type | len | ) | [inline] |
Definition at line 596 of file SafetyProfileSequence.h.
References OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::buffer_, OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::lazy_alloc(), OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::length_, OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::release_, and OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::swap().
00597 { 00598 if (len <= maximum()) { 00599 if (len && !buffer_) { 00600 lazy_alloc(); 00601 } 00602 else if (release_ && len < length_) { 00603 Elts::reset_n(buffer_ + len, length_ - len); 00604 } 00605 length_ = len; 00606 return; 00607 } 00608 00609 Sequence tmp(len, len, allocate(len), true); 00610 Elts::move_n(buffer_, length_, tmp.buffer_); 00611 swap(tmp); 00612 }
bool OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::operator!= | ( | const Sequence< T, Bounds, Elts > & | rhs | ) | const [inline] |
Definition at line 679 of file SafetyProfileSequence.h.
Sequence< T, Bounds, Elts > & OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::operator= | ( | const Sequence< T, Bounds, Elts > & | seq | ) | [inline, protected] |
Definition at line 561 of file SafetyProfileSequence.h.
References OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::swap().
bool OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::operator== | ( | const Sequence< T, Bounds, Elts > & | rhs | ) | const [inline] |
Definition at line 664 of file SafetyProfileSequence.h.
References OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::size().
00665 { 00666 const size_type sz = size(); 00667 if (sz != rhs.size()) { 00668 return false; 00669 } 00670 for (size_type i = 0; i < sz; ++i) { 00671 if (!((*this)[i] == rhs[i])) { 00672 return false; 00673 } 00674 } 00675 return true; 00676 }
Sequence< T, Bounds, Elts >::Element OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::operator[] | ( | size_type | idx | ) | [inline] |
Definition at line 623 of file SafetyProfileSequence.h.
References OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::buffer_, and OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::release_.
Sequence< T, Bounds, Elts >::ConstElement OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::operator[] | ( | size_type | idx | ) | const [inline] |
Definition at line 616 of file SafetyProfileSequence.h.
References OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::buffer_.
00617 { 00618 return buffer_[idx]; 00619 }
seq_flag_type OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::release | ( | void | ) | const [inline] |
Definition at line 277 of file SafetyProfileSequence.h.
References OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::release_.
00277 { return release_; }
void OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::replace_i | ( | size_type | maximum, | |
size_type | length, | |||
T * | data, | |||
seq_flag_type | release | |||
) | [inline, private] |
Definition at line 578 of file SafetyProfileSequence.h.
References OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::swap().
size_type OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::size | ( | void | ) | const [inline] |
Definition at line 310 of file SafetyProfileSequence.h.
References OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::length_.
Referenced by OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::operator==().
00310 { return length_; }
void OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::swap | ( | Sequence< T, Bounds, Elts > & | rhs | ) | throw () [inline, protected] |
Definition at line 569 of file SafetyProfileSequence.h.
References OpenDDS::DCPS::swap().
Referenced by OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::get_buffer(), OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::length(), OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::operator=(), and OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::replace_i().
00570 { 00571 AllocPolicy<T, Sequence, Bounds>::swap(rhs); 00572 std::swap(length_, rhs.length_); 00573 std::swap(release_, rhs.release_); 00574 std::swap(buffer_, rhs.buffer_); 00575 }
friend struct AllocPolicy< T, Sequence, Bounds > [friend] |
Definition at line 316 of file SafetyProfileSequence.h.
T* OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::buffer_ [mutable, private] |
Definition at line 327 of file SafetyProfileSequence.h.
Referenced by OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::begin(), OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::end(), OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::get_buffer(), OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::lazy_alloc(), OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::length(), OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::operator[](), OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::Sequence(), and OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::~Sequence().
size_type OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::length_ [private] |
Definition at line 325 of file SafetyProfileSequence.h.
Referenced by OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::empty(), OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::end(), OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::length(), OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::Sequence(), and OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::size().
seq_flag_type OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::release_ [mutable, private] |
Definition at line 326 of file SafetyProfileSequence.h.
Referenced by OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::get_buffer(), OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::lazy_alloc(), OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::length(), OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::operator[](), OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::release(), and OpenDDS::SafetyProfile::Sequence< T, Bounds, Elts >::~Sequence().