Public Types | Public Member Functions | Protected Attributes | Private Types | Private Attributes

mln::complex_window_bkd_piter< I, G, W > Class Template Reference

Backward iterator on complex window. More...

#include <complex_window_piter.hh>

Inheritance diagram for mln::complex_window_bkd_piter< I, G, W >:
Inheritance graph

List of all members.

Public Types

typedef Site_Proxy< void > category
typedef
complex_window_bkd_piter< I, G,
W > 
exact_t
typedef W::complex_bkd_iter iter_type
 The type of the underlying complex iterator.
typedef W::psite psite
 The Pseudo_Site type.
typedef W::site site
 The associated site type (as a Site_Proxy).
typedef W target
 The associated target type.

Public Member Functions

const W::psite & center () const
 The psite around which this iterator moves.
void center_at (const P &c)
void change_target (const W &s)
 Change the site set targeted by this iterator.
void invalidate ()
bool is_valid () const
void next ()
 Go to the next element.
void next_ ()
 Go to the next point.
const W::psite & p_hook_ () const
 Hook to the current location.
const W & site_set () const
 Give the site set (neighborhood or window) that this iterator browses.
void start ()
void start_ ()
 Start an iteration.
const W::psite & subj_ ()
 This overriding is very useful: it adds a test to prevent getting an invalid iterator when its center has moved.
const W *& target_ ()
 Give the target address. It might be 0.
const W::site & to_site () const
 Return the site it points to (as a Site_Proxy).
complex_window_bkd_piter< I, G,
W > & 
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.

 complex_window_bkd_piter ()
 Construction.
template<typename Pref >
 complex_window_bkd_piter (const Window< W > &win, const Pref &p_ref)

bool is_valid_ () const
 Manipulation.
void invalidate_ ()
 Invalidate the iterator.
void do_start_ ()
 Start an iteration.
void do_next_ ()
 Go to the next site.
template<typename Pref >
void center_at_ (const Pref &c)
 Do some work while setting the reference site.
psite compute_p_ () const
 Compute the current psite.

const iter_typeiter () const
 Accessors.
iter_typeiter ()

Protected Attributes

const W::psite * c_
 A pointer to the center psite around which this iterator moves.
const W * s_
 The target.

Private Types

typedef
complex_window_bkd_piter< I, G,
W > 
self_
typedef
internal::site_relative_iterator_base
< W, self_
super_

Private Attributes

iter_type iter_
 The underlying complex iterator.

Detailed Description

template<typename I, typename G, typename W>
class mln::complex_window_bkd_piter< I, G, W >

Backward iterator on complex window.


Member Typedef Documentation

typedef Site_Proxy<void> mln::Site_Proxy< complex_window_bkd_piter< I, G, W > >::category [inherited]
typedef complex_window_bkd_piter< I, G, W > mln::Object< complex_window_bkd_piter< I, G, W > >::exact_t [inherited]
template<typename I, typename G, typename W>
typedef W::complex_bkd_iter mln::complex_window_bkd_piter< I, G, W >::iter_type

The type of the underlying complex iterator.

template<typename I, typename G, typename W>
typedef W ::psite mln::complex_window_bkd_piter< I, G, W >::psite

The Pseudo_Site type.

template<typename I, typename G, typename W>
typedef complex_window_bkd_piter<I, G, W> mln::complex_window_bkd_piter< I, G, W >::self_ [private]
typedef W ::site mln::internal::site_iterator_base< W , complex_window_bkd_piter< I, G, W > >::site [inherited]

The associated site type (as a Site_Proxy).

template<typename I, typename G, typename W>
typedef internal::site_relative_iterator_base< W, self_ > mln::complex_window_bkd_piter< I, G, W >::super_ [private]
typedef W mln::internal::site_iterator_base< W , complex_window_bkd_piter< I, G, W > >::target [inherited]

The associated target type.


Constructor & Destructor Documentation

template<typename I , typename G , typename W >
mln::complex_window_bkd_piter< I, G, W >::complex_window_bkd_piter (  )  [inline]

Construction.

template<typename I , typename G , typename W >
template<typename Pref >
mln::complex_window_bkd_piter< I, G, W >::complex_window_bkd_piter ( const Window< W > &  win,
const Pref &  p_ref 
) [inline]

Member Function Documentation

const W ::psite& mln::internal::site_relative_iterator_base< W , complex_window_bkd_piter< I, G, W > >::center (  )  const [inherited]

The psite around which this iterator moves.

Referenced by mln::complex_window_bkd_piter< I, G, W >::center_at_().

void mln::internal::site_relative_iterator_base< W , complex_window_bkd_piter< I, G, W > >::center_at ( const P &  c  )  [inherited]
template<typename I , typename G , typename W >
template<typename Pref >
void mln::complex_window_bkd_piter< I, G, W >::center_at_ ( const Pref &  c  )  [inline]
void mln::internal::site_relative_iterator_base< W , complex_window_bkd_piter< I, G, W > >::change_target ( const W &  s  )  [inherited]

Change the site set targeted by this iterator.

Referenced by mln::complex_window_bkd_piter< I, G, W >::complex_window_bkd_piter().

template<typename I , typename G , typename W >
W::psite mln::complex_window_bkd_piter< I, G, W >::compute_p_ (  )  const [inline]

Compute the current psite.

template<typename I , typename G , typename W >
void mln::complex_window_bkd_piter< I, G, W >::do_next_ (  )  [inline]

Go to the next site.

template<typename I , typename G , typename W >
void mln::complex_window_bkd_piter< I, G, W >::do_start_ (  )  [inline]

Start an iteration.

void mln::Site_Iterator< complex_window_bkd_piter< I, G, W > >::invalidate (  )  [inherited]
template<typename I , typename G , typename W >
void mln::complex_window_bkd_piter< I, G, W >::invalidate_ (  )  [inline]

Invalidate the iterator.

bool mln::Site_Iterator< complex_window_bkd_piter< I, G, W > >::is_valid (  )  const [inherited]
template<typename I , typename G , typename W >
bool mln::complex_window_bkd_piter< I, G, W >::is_valid_ (  )  const [inline]

Manipulation.

Test if the iterator is valid.

template<typename I , typename G , typename W >
W::complex_bkd_iter & mln::complex_window_bkd_piter< I, G, W >::iter (  )  [inline]
template<typename I , typename G , typename W >
const W::complex_bkd_iter & mln::complex_window_bkd_piter< I, G, W >::iter (  )  const [inline]

Accessors.

void mln::Site_Iterator< complex_window_bkd_piter< I, G, W > >::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< W , complex_window_bkd_piter< I, G, W > >::next_ (  )  [inherited]

Go to the next point.

const W ::psite& mln::internal::site_relative_iterator_base< W , complex_window_bkd_piter< I, G, W > >::p_hook_ (  )  const [inherited]

Hook to the current location.

const W & mln::internal::site_relative_iterator_base< W , complex_window_bkd_piter< I, G, W > >::site_set (  )  const [inherited]

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

void mln::Site_Iterator< complex_window_bkd_piter< I, G, W > >::start (  )  [inherited]
void mln::internal::site_relative_iterator_base< W , complex_window_bkd_piter< I, G, W > >::start_ (  )  [inherited]

Start an iteration.

const W ::psite& mln::internal::site_relative_iterator_base< W , complex_window_bkd_piter< I, G, W > >::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< W, complex_window_bkd_piter< I, G, W > >.

const W *& mln::internal::site_iterator_base< W , complex_window_bkd_piter< I, G, W > >::target_ (  )  [inherited]

Give the target address. It might be 0.

const W ::site& mln::internal::site_iterator_base< W , complex_window_bkd_piter< I, G, W > >::to_site (  )  const [inherited]

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

complex_window_bkd_piter< I, G, W > & mln::internal::site_relative_iterator_base< W , complex_window_bkd_piter< I, G, W > >::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 W ::psite* mln::internal::site_relative_iterator_base< W , complex_window_bkd_piter< I, G, W > >::c_ [protected, inherited]

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

template<typename I, typename G, typename W>
iter_type mln::complex_window_bkd_piter< I, G, W >::iter_ [private]

The underlying complex iterator.

const W * mln::internal::site_iterator_base< W , complex_window_bkd_piter< I, G, W > >::s_ [protected, inherited]

The target.