6 #ifndef OPENDDS_DCPS_SEQUENCEITERATOR_H 7 #define OPENDDS_DCPS_SEQUENCEITERATOR_H 20 template <
typename Sequence>
48 template <
typename Sequence>
54 template <
typename Sequence_>
59 typedef typename Sequence::value_type*
pointer;
63 template <
typename Sequence_>
68 typedef const typename Sequence::value_type*
pointer;
69 typedef const typename Sequence::value_type&
reference;
72 template <
typename Derived,
typename IterTraits>
78 typedef typename IterTraits::pointer
pointer;
81 Derived&
as_derived() {
return *
static_cast<Derived*
>(
this); }
83 const Derived&
as_derived()
const {
return *
static_cast<const Derived*
>(
this); }
95 pointer
operator->()
const {
return &(*seq_)[current_]; }
105 Derived iter(as_derived());
112 return (
seq_ == rhs.seq_) && (current_ == rhs.current_);
115 bool operator!=(
const Derived& rhs)
const {
return !(*
this == rhs); }
127 Derived iter(as_derived());
144 Derived iter(as_derived());
157 Derived iter(as_derived());
164 current_ += rhs.current_;
171 iter.current_ += rhs.current_;
177 current_ -= rhs.current_;
183 Derived iter(as_derived());
184 iter.current_ -= rhs.current_;
190 return current_ < rhs.current_;
195 return current_ > rhs.current_;
200 return current_ <= rhs.current_;
205 return current_ >= rhs.current_;
208 static Derived
begin(
typename IterTraits::Sequence& sequence)
210 Derived iter(sequence);
215 static Derived
end(
typename IterTraits::Sequence& sequence)
217 Derived iter(sequence);
218 iter.current_ = sequence.length();
223 typename IterTraits::Sequence*
seq_;
227 template <
typename Sequence>
229 SequenceIterTraits<Sequence> >
238 template <
typename Sequence>
240 ConstSequenceIterTraits<Sequence> >
249 template <
typename Sequence>
255 template <
typename Sequence>
261 template <
typename Sequence>
267 template <
typename Sequence>
bool operator==(const Derived &rhs) const
ConstSequenceIterator(typename ConstSequenceIterTraits< Sequence >::Sequence &seq)
SequenceBackInsertIterator & operator=(const typename Sequence::value_type &value)
const Sequence::value_type & reference
const LogLevel::Value value
SequenceBackInsertIterator< Sequence > back_inserter(Sequence &seq)
const Derived & as_derived() const
SequenceIteratorBase< SequenceIterator< Sequence >, SequenceIterTraits< Sequence > > Base
Sequence::value_type & reference
IterTraits::Sequence * seq_
Derived & operator-=(difference_type n)
std::output_iterator_tag iterator_category
IterTraits::reference reference
std::random_access_iterator_tag iterator_category
const Sequence::value_type * pointer
IterTraits::pointer pointer
SequenceBackInsertIterator operator++(int)
Derived operator+(difference_type n) const
pointer operator->() const
bool operator<=(const Derived &rhs) const
Derived & operator-=(const Derived &rhs)
Derived & operator+=(difference_type n)
reference operator*() const
IterTraits::value_type value_type
bool operator>(const Derived &rhs) const
SequenceBackInsertIterator & operator++()
SequenceIterator< Sequence > sequence_end(Sequence &seq)
static Derived begin(typename IterTraits::Sequence &sequence)
reference operator[](difference_type n) const
Derived operator+(const Derived &rhs) const
ConstSequenceIterator< Sequence > const_sequence_begin(Sequence &seq)
Derived operator-(const Derived &rhs) const
Sequence::value_type value_type
const Sequence::value_type value_type
SequenceBackInsertIterator(Sequence &seq)
SequenceIterator(typename SequenceIterTraits< Sequence >::Sequence &seq)
bool operator!=(const Derived &rhs) const
Sequence::value_type * pointer
void push_back(Seq &seq, const typename Seq::value_type &val)
std::vector-style push_back() for CORBA Sequences
Derived & operator+=(const Derived &rhs)
bool operator>=(const Derived &rhs) const
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
bool operator<(const Derived &rhs) const
static Derived end(typename IterTraits::Sequence &sequence)
SequenceIteratorBase< ConstSequenceIterator< Sequence >, ConstSequenceIterTraits< Sequence > > Base
The Internal API and Implementation of OpenDDS.
SequenceBackInsertIterator & operator*()
SequenceIteratorBase(typename IterTraits::Sequence &sequence)
ConstSequenceIterator< Sequence > const_sequence_end(Sequence &seq)
Derived operator-(difference_type n) const
SequenceIterator< Sequence > sequence_begin(Sequence &seq)