Public Types | Public Member Functions | Protected Attributes

mln::dpsites_fwd_piter< V > Class Template Reference

A generic forward iterator on points of windows and of neighborhoods. More...

#include <dpsites_piter.hh>

Inheritance diagram for mln::dpsites_fwd_piter< V >:
Inheritance graph

List of all members.

Public Types

typedef Site_Proxy< void > category
typedef dpsites_fwd_piter< V > exact_t
typedef V::site site
 The associated site type (as a Site_Proxy).
typedef V target
 The associated target type.

Public Member Functions

const typename V::psite & center () const
 The psite around which this iterator moves.
void center_at (const P &c)
void change_target (const V &s)
 Change the site set targeted by this iterator.
V::psite compute_p_ () const
 Compute the current psite.
void do_next_ ()
 Go to the next point.
void do_start_ ()
 Start an iteration.
 dpsites_fwd_piter ()
 Constructor without argument.
template<typename P >
 dpsites_fwd_piter (const V &v, const P &c)
 Constructor.
template<typename P >
void init_ (const V &v, const P &c)
 Delayed initialization.
void invalidate ()
void invalidate_ ()
 Invalidate the iterator.
bool is_valid () const
bool is_valid_ () const
 Test the iterator validity.
void next ()
 Go to the next element.
void next_ ()
 Go to the next point.
const V::psite & p_hook_ () const
 Hook to the current location.
const V & site_set () const
 Give the site set (neighborhood or window) that this iterator browses.
void start ()
void start_ ()
 Start an iteration.
const V::psite & subj_ ()
 This overriding is very useful: it adds a test to prevent getting an invalid iterator when its center has moved.
const V *& target_ ()
 Give the target address. It might be 0.
const V::site & to_site () const
 Return the site it points to (as a Site_Proxy).
dpsites_fwd_piter< V > & update ()
 Warning: this method is an advanced tool provided for very special occasions; if you are a regular user, you should never use it! Calling this method forces this relative iterator to synchronize with its center when it has just moved and when the relative iterator still makes sense.

Protected Attributes

const typename V::psite * c_
 A pointer to the center psite around which this iterator moves.
unsigned i_
const V * s_
 The target.

Detailed Description

template<typename V>
class mln::dpsites_fwd_piter< V >

A generic forward iterator on points of windows and of neighborhoods.

The parameter V is the type of std::vector enclosing structure.

Definition at line 48 of file dpsites_piter.hh.


Member Typedef Documentation

typedef Site_Proxy<void> mln::Site_Proxy< dpsites_fwd_piter< V > >::category [inherited]

Reimplemented from mln::Proxy< dpsites_fwd_piter< V > >.

Definition at line 63 of file site_proxy.hh.

typedef dpsites_fwd_piter< V > mln::Object< dpsites_fwd_piter< V > >::exact_t [inherited]

Definition at line 173 of file object.hh.

typedef V ::site mln::internal::site_iterator_base< V , dpsites_fwd_piter< V > >::site [inherited]

The associated site type (as a Site_Proxy).

Definition at line 64 of file site_iterator_base.hh.

typedef V mln::internal::site_iterator_base< V , dpsites_fwd_piter< V > >::target [inherited]

The associated target type.

Definition at line 61 of file site_iterator_base.hh.


Constructor & Destructor Documentation

template<typename V >
template<typename P >
mln::dpsites_fwd_piter< V >::dpsites_fwd_piter ( const V &  v,
const P &  c 
) [inline]

Constructor.

Parameters:
[in] v Object that can provide an array of delta-points.
[in] c Center point to iterate around.

Definition at line 149 of file dpsites_piter.hh.

References mln::dpsites_fwd_piter< V >::init_().

template<typename V >
mln::dpsites_fwd_piter< V >::dpsites_fwd_piter (  )  [inline]

Constructor without argument.

Definition at line 142 of file dpsites_piter.hh.


Member Function Documentation

const typename V ::psite & mln::internal::site_relative_iterator_base< V , dpsites_fwd_piter< V > , typename V ::psite >::center (  )  const [inherited]

The psite around which this iterator moves.

void mln::internal::site_relative_iterator_base< V , dpsites_fwd_piter< V > , typename V ::psite >::center_at ( const P &  c  )  [inherited]
void mln::internal::site_relative_iterator_base< V , dpsites_fwd_piter< V > , typename V ::psite >::change_target ( const V &  s  )  [inherited]

Change the site set targeted by this iterator.

Referenced by mln::dpsites_fwd_piter< V >::init_().

template<typename V >
V::psite mln::dpsites_fwd_piter< V >::compute_p_ (  )  const [inline]

Compute the current psite.

Definition at line 200 of file dpsites_piter.hh.

template<typename V >
void mln::dpsites_fwd_piter< V >::do_next_ (  )  [inline]

Go to the next point.

Definition at line 192 of file dpsites_piter.hh.

References mln::dpsites_fwd_piter< V >::i_.

template<typename V >
void mln::dpsites_fwd_piter< V >::do_start_ (  )  [inline]

Start an iteration.

Definition at line 184 of file dpsites_piter.hh.

References mln::dpsites_fwd_piter< V >::i_.

template<typename V >
template<typename P >
void mln::dpsites_fwd_piter< V >::init_ ( const V &  v,
const P &  c 
) [inline]
void mln::Site_Iterator< dpsites_fwd_piter< V > >::invalidate (  )  [inherited]
template<typename V >
void mln::dpsites_fwd_piter< V >::invalidate_ (  )  [inline]
bool mln::Site_Iterator< dpsites_fwd_piter< V > >::is_valid (  )  const [inherited]
template<typename V >
bool mln::dpsites_fwd_piter< V >::is_valid_ (  )  const [inline]

Test the iterator validity.

Definition at line 168 of file dpsites_piter.hh.

References mln::dpsites_fwd_piter< V >::i_, and mln::internal::site_iterator_base< V, dpsites_fwd_piter< V > >::s_.

void mln::Site_Iterator< dpsites_fwd_piter< V > >::next (  )  [inherited]

Go to the next element.

Warning:
This is a final method; iterator classes should not re-defined this method. The actual "next" operation has to be defined through the next_ method.
Precondition:
The iterator is valid.
void mln::internal::site_relative_iterator_base< V , dpsites_fwd_piter< V > , typename V ::psite >::next_ (  )  [inherited]

Go to the next point.

const V ::psite& mln::internal::site_relative_iterator_base< V , dpsites_fwd_piter< V > , typename V ::psite >::p_hook_ (  )  const [inherited]

Hook to the current location.

const V & mln::internal::site_relative_iterator_base< V , dpsites_fwd_piter< V > , typename V ::psite >::site_set (  )  const [inherited]

Give the site set (neighborhood or window) that this iterator browses.

void mln::Site_Iterator< dpsites_fwd_piter< V > >::start (  )  [inherited]
void mln::internal::site_relative_iterator_base< V , dpsites_fwd_piter< V > , typename V ::psite >::start_ (  )  [inherited]

Start an iteration.

const V ::psite& mln::internal::site_relative_iterator_base< V , dpsites_fwd_piter< V > , typename V ::psite >::subj_ (  )  [inherited]

This overriding is very useful: it adds a test to prevent getting an invalid iterator when its center has moved.

Some sub-classes provide an update() method for the client to say that she really want to read the iterator just after the center has changed.

Reimplemented from mln::internal::site_iterator_base< V, dpsites_fwd_piter< V > >.

const V *& mln::internal::site_iterator_base< V , dpsites_fwd_piter< V > >::target_ (  )  [inherited]

Give the target address. It might be 0.

const V ::site& mln::internal::site_iterator_base< V , dpsites_fwd_piter< V > >::to_site (  )  const [inherited]

Return the site it points to (as a Site_Proxy).

dpsites_fwd_piter< V > & mln::internal::site_relative_iterator_base< V , dpsites_fwd_piter< V > , typename V ::psite >::update (  )  [inherited]

Warning: this method is an advanced tool provided for very special occasions; if you are a regular user, you should never use it! Calling this method forces this relative iterator to synchronize with its center when it has just moved and when the relative iterator still makes sense.


Member Data Documentation

const typename V ::psite * mln::internal::site_relative_iterator_base< V , dpsites_fwd_piter< V > , typename V ::psite >::c_ [protected, inherited]

A pointer to the center psite around which this iterator moves.

Definition at line 108 of file site_relative_iterator_base.hh.

template<typename V >
unsigned mln::dpsites_fwd_piter< V >::i_ [protected]
const V * mln::internal::site_iterator_base< V , dpsites_fwd_piter< V > >::s_ [protected, inherited]