Public Types | Public Member Functions | Private Attributes

ACE_String_Base_Iterator< ACE_CHAR_T > Class Template Reference

Iterator class for the ACE_String_Base class. More...

#include <String_Base.h>

List of all members.

Public Types

typedef
std::bidirectional_iterator_tag 
iterator_category
typedef ACE_CHAR_T value_type
typedef ACE_CHAR_T & reference
typedef ACE_CHAR_T * pointer
typedef ptrdiff_t difference_type

Public Member Functions

 ACE_String_Base_Iterator (ACE_String_Base< ACE_CHAR_T > &str, int end=0)
 ACE_String_Base_Iterator (const ACE_String_Base_Iterator< ACE_CHAR_T > &iter)
 ~ACE_String_Base_Iterator (void)
 Destructor.
int done (void) const
int next (ACE_CHAR_T *&ch) const
int advance (void)
const ACE_String_Base_Iterator
< ACE_CHAR_T > & 
operator= (const ACE_String_Base_Iterator< ACE_CHAR_T > &iter)
ACE_CHAR_T & operator* (void)
ACE_String_Base_Iterator
< ACE_CHAR_T > & 
operator++ (void)
ACE_String_Base_Iterator
< ACE_CHAR_T > 
operator++ (int)
ACE_String_Base_Iterator
< ACE_CHAR_T > & 
operator-- (void)
ACE_String_Base_Iterator
< ACE_CHAR_T > 
operator-- (int)
bool operator== (const ACE_String_Base_Iterator< ACE_CHAR_T > &rhs) const
bool operator!= (const ACE_String_Base_Iterator< ACE_CHAR_T > &rhs) const
bool operator< (const ACE_String_Base_Iterator< ACE_CHAR_T > &rhs) const
bool operator> (const ACE_String_Base_Iterator< ACE_CHAR_T > &rhs) const
bool operator<= (const ACE_String_Base_Iterator< ACE_CHAR_T > &rhs) const
bool operator>= (const ACE_String_Base_Iterator< ACE_CHAR_T > &rhs) const

Private Attributes

ACE_String_Base< ACE_CHAR_T > * str_
 Target string to iterate over.
size_t index_
 Current location in the string.

Detailed Description

template<class ACE_CHAR_T>
class ACE_String_Base_Iterator< ACE_CHAR_T >

Iterator class for the ACE_String_Base class.

This class is an implementation of an iterator that allows client applications it iterator over the contents of a string. Currently, now this iterator fall under the std::bidirectional_iterator_tag category. Future versions of the class will support the operations of std::random_access_iterator_tag.

Definition at line 607 of file String_Base.h.


Member Typedef Documentation

template<class ACE_CHAR_T>
typedef ptrdiff_t ACE_String_Base_Iterator< ACE_CHAR_T >::difference_type

Definition at line 615 of file String_Base.h.

template<class ACE_CHAR_T>
typedef std::bidirectional_iterator_tag ACE_String_Base_Iterator< ACE_CHAR_T >::iterator_category

Definition at line 611 of file String_Base.h.

template<class ACE_CHAR_T>
typedef ACE_CHAR_T* ACE_String_Base_Iterator< ACE_CHAR_T >::pointer

Definition at line 614 of file String_Base.h.

template<class ACE_CHAR_T>
typedef ACE_CHAR_T& ACE_String_Base_Iterator< ACE_CHAR_T >::reference

Definition at line 613 of file String_Base.h.

template<class ACE_CHAR_T>
typedef ACE_CHAR_T ACE_String_Base_Iterator< ACE_CHAR_T >::value_type

Definition at line 612 of file String_Base.h.


Constructor & Destructor Documentation

template<class ACE_CHAR_T >
ACE_String_Base_Iterator< ACE_CHAR_T >::ACE_String_Base_Iterator ( ACE_String_Base< ACE_CHAR_T > &  str,
int  end = 0 
)

Initializing constructor

Parameters:
[in] str Target string for iterator.

Definition at line 177 of file String_Base.inl.

: str_ (&str),
  index_ (0 == end ? 0 : str.length ())
{
  ACE_TRACE ("ACE_String_Base_Iterator<ACE_CHAR_T>::ACE_String_Base_Iterator");
}

template<class ACE_CHAR_T >
ACE_String_Base_Iterator< ACE_CHAR_T >::ACE_String_Base_Iterator ( const ACE_String_Base_Iterator< ACE_CHAR_T > &  iter  ) 

Copy constructor

Parameters:
[in] iter Iterator to copy.

Definition at line 186 of file String_Base.inl.

: str_ (iter.str_),
  index_ (iter.index_)
{
  ACE_TRACE ("ACE_String_Base_Iterator<ACE_CHAR_T>::ACE_String_Base_Iterator");
}

template<class ACE_CHAR_T >
ACE_String_Base_Iterator< ACE_CHAR_T >::~ACE_String_Base_Iterator ( void   ) 

Destructor.

Definition at line 194 of file String_Base.inl.

{
  ACE_TRACE ("ACE_String_Base_Iterator<ACE_CHAR_T>::~ACE_String_Base_Iterator");
}


Member Function Documentation

template<class ACE_CHAR_T >
int ACE_String_Base_Iterator< ACE_CHAR_T >::advance ( void   ) 

Move to the next character in the string.

Return values:
0 All characters have been seen.
1 Items still remain to be seen.

Definition at line 497 of file String_Base.cpp.

{
  ACE_TRACE ("ACE_String_Base_Iterator<ACE_CHAR_T>::advance");

  if (this->index_ < this->str_->length ())
  {
    ++ this->index_;
    return 1;
  }
  else
  {
    return 0;
  }
}

template<class ACE_CHAR_T >
int ACE_String_Base_Iterator< ACE_CHAR_T >::done ( void   )  const

Test if the iterator has seen all characters.

Return values:
0 Characters still remain.
1 All characters have been seen.

Definition at line 200 of file String_Base.inl.

{
  ACE_TRACE ("ACE_String_Base_Iterator<ACE_CHAR_T>::done");

  return this->index_ >= this->str_->length () ? 1 : 0;
}

template<class ACE_CHAR_T >
int ACE_String_Base_Iterator< ACE_CHAR_T >::next ( ACE_CHAR_T *&  ch  )  const

Get the current character.

Parameters:
[out] ch The current character.
Return values:
0 All characters have been seen.
1 Items still remain to be seen.

Definition at line 480 of file String_Base.cpp.

{
  ACE_TRACE ("ACE_String_Base_Iterator<ACE_CHAR_T>::next");

  if (0 == this->done ())
  {
    ch = &this->str_->rep_[this->index_];
    return 1;
  }
  else
  {
    ch = 0;
    return 0;
  }
}

template<class ACE_CHAR_T >
bool ACE_String_Base_Iterator< ACE_CHAR_T >::operator!= ( const ACE_String_Base_Iterator< ACE_CHAR_T > &  rhs  )  const

Ineqaulity comparison operator

Parameters:
[in] rhs Right-hand side of operator.

Definition at line 276 of file String_Base.inl.

{
  return this->index_ != rhs.index_;
}

template<class ACE_CHAR_T >
ACE_CHAR_T & ACE_String_Base_Iterator< ACE_CHAR_T >::operator* ( void   ) 

Dereference operator

Returns:
Reference to current character seen by iterator.

Definition at line 208 of file String_Base.inl.

{
  ACE_TRACE ("ACE_String_Base_Iterator<ACE_CHAR_T>::operator *");

  return this->str_->rep_[this->index_];
}

template<class ACE_CHAR_T >
ACE_String_Base_Iterator< ACE_CHAR_T > & ACE_String_Base_Iterator< ACE_CHAR_T >::operator++ ( void   ) 

Prefix operator

Definition at line 217 of file String_Base.inl.

{
  ACE_TRACE ("ACE_String_Base_Iterator<ACE_CHAR_T>::operator ++");

  if (0 == this->done ())
    ++ this->index_;

  return *this;
}

template<class ACE_CHAR_T >
ACE_String_Base_Iterator< ACE_CHAR_T > ACE_String_Base_Iterator< ACE_CHAR_T >::operator++ ( int   ) 

Postfix operator

Definition at line 229 of file String_Base.inl.

{
  ACE_TRACE ("ACE_String_Base_Iterator<ACE_CHAR_T>::operator ++ (int)");

  ACE_String_Base_Iterator <ACE_CHAR_T> temp (*this);

  if (0 == this->done ())
    ++ this->index_;

  return temp;
}

template<class ACE_CHAR_T >
ACE_String_Base_Iterator< ACE_CHAR_T > & ACE_String_Base_Iterator< ACE_CHAR_T >::operator-- ( void   ) 

Prefix operator

Definition at line 243 of file String_Base.inl.

{
  ACE_TRACE ("ACE_String_Base_Iterator<ACE_CHAR_T>::operator --");

  if (0 < this->index_)
    -- this->index_;

  return *this;
}

template<class ACE_CHAR_T >
ACE_String_Base_Iterator< ACE_CHAR_T > ACE_String_Base_Iterator< ACE_CHAR_T >::operator-- ( int   ) 

Postfix operator

Definition at line 255 of file String_Base.inl.

{
  ACE_TRACE ("ACE_String_Base_Iterator<ACE_CHAR_T>::operator -- (int)");

  ACE_String_Base_Iterator <ACE_CHAR_T> temp (*this);

  if (0 < this->index_)
    -- this->index_;

  return temp;
}

template<class ACE_CHAR_T >
bool ACE_String_Base_Iterator< ACE_CHAR_T >::operator< ( const ACE_String_Base_Iterator< ACE_CHAR_T > &  rhs  )  const

Definition at line 283 of file String_Base.inl.

{
  return this->index_ < rhs.index_;
}

template<class ACE_CHAR_T >
bool ACE_String_Base_Iterator< ACE_CHAR_T >::operator<= ( const ACE_String_Base_Iterator< ACE_CHAR_T > &  rhs  )  const

Definition at line 304 of file String_Base.inl.

{
  return this->index_ <= rhs.index_;
}

template<class ACE_CHAR_T >
const ACE_String_Base_Iterator< ACE_CHAR_T > & ACE_String_Base_Iterator< ACE_CHAR_T >::operator= ( const ACE_String_Base_Iterator< ACE_CHAR_T > &  iter  ) 

Assignment operator

Parameters:
[in] iter Right-hand side of operator.
Returns:
Reference to self.

Definition at line 515 of file String_Base.cpp.

{
  ACE_TRACE ("ACE_String_Base_Iterator<ACE_CHAR_T>::operator =");

  if (this == &rhs)
    return *this;

  this->str_ = rhs.str_;
  this->index_ = rhs.index_;
  return *this;
}

template<class ACE_CHAR_T >
bool ACE_String_Base_Iterator< ACE_CHAR_T >::operator== ( const ACE_String_Base_Iterator< ACE_CHAR_T > &  rhs  )  const

Eqaulity comparison operator

Parameters:
[in] rhs Right-hand side of operator.

Definition at line 269 of file String_Base.inl.

{
  return this->index_ == rhs.index_;
}

template<class ACE_CHAR_T >
bool ACE_String_Base_Iterator< ACE_CHAR_T >::operator> ( const ACE_String_Base_Iterator< ACE_CHAR_T > &  rhs  )  const

Definition at line 290 of file String_Base.inl.

{
  return this->index_ > rhs.index_;
}

template<class ACE_CHAR_T >
bool ACE_String_Base_Iterator< ACE_CHAR_T >::operator>= ( const ACE_String_Base_Iterator< ACE_CHAR_T > &  rhs  )  const

Definition at line 297 of file String_Base.inl.

{
  return this->index_ >= rhs.index_;
}


Member Data Documentation

template<class ACE_CHAR_T>
size_t ACE_String_Base_Iterator< ACE_CHAR_T >::index_ [private]

Current location in the string.

Definition at line 719 of file String_Base.h.

template<class ACE_CHAR_T>
ACE_String_Base<ACE_CHAR_T>* ACE_String_Base_Iterator< ACE_CHAR_T >::str_ [private]

Target string to iterate over.

Definition at line 716 of file String_Base.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines