Forward iterator on complex window. More...
#include <complex_window_piter.hh>
Public Types | |
typedef Site_Proxy< void > | category |
typedef complex_window_fwd_piter< I, G, W > | exact_t |
typedef W::complex_fwd_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_fwd_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_fwd_piter () | |
Construction. | |
template<typename Pref > | |
complex_window_fwd_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_type & | iter () const |
Accessors. | |
iter_type & | iter () |
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_fwd_piter< I, G, W > | self_ |
typedef internal::site_relative_iterator_base < W, self_ > | super_ |
Private Attributes | |
iter_type | iter_ |
The underlying complex iterator. |
Forward iterator on complex window.
typedef Site_Proxy<void> mln::Site_Proxy< complex_window_fwd_piter< I, G, W > >::category [inherited] |
Reimplemented from mln::Proxy< complex_window_fwd_piter< I, G, W > >.
typedef complex_window_fwd_piter< I, G, W > mln::Object< complex_window_fwd_piter< I, G, W > >::exact_t [inherited] |
typedef W::complex_fwd_iter mln::complex_window_fwd_piter< I, G, W >::iter_type |
The type of the underlying complex iterator.
typedef W ::psite mln::complex_window_fwd_piter< I, G, W >::psite |
The Pseudo_Site type.
typedef complex_window_fwd_piter<I, G, W> mln::complex_window_fwd_piter< I, G, W >::self_ [private] |
typedef W ::site mln::internal::site_iterator_base< W , complex_window_fwd_piter< I, G, W > >::site [inherited] |
The associated site type (as a Site_Proxy).
typedef internal::site_relative_iterator_base< W, self_ > mln::complex_window_fwd_piter< I, G, W >::super_ [private] |
Reimplemented from mln::internal::site_iterator_base< W, complex_window_fwd_piter< I, G, W > >.
typedef W mln::internal::site_iterator_base< W , complex_window_fwd_piter< I, G, W > >::target [inherited] |
The associated target type.
mln::complex_window_fwd_piter< I, G, W >::complex_window_fwd_piter | ( | ) | [inline] |
Construction.
mln::complex_window_fwd_piter< I, G, W >::complex_window_fwd_piter | ( | const Window< W > & | win, | |
const Pref & | p_ref | |||
) | [inline] |
References mln::internal::site_relative_iterator_base< W, complex_window_fwd_piter< I, G, W > >::center_at(), mln::internal::site_relative_iterator_base< W, complex_window_fwd_piter< I, G, W > >::change_target(), mln::exact(), and mln::Site_Iterator< complex_window_fwd_piter< I, G, W > >::is_valid().
const W ::psite& mln::internal::site_relative_iterator_base< W , complex_window_fwd_piter< I, G, W > >::center | ( | ) | const [inherited] |
The psite around which this iterator moves.
Referenced by mln::complex_window_fwd_piter< I, G, W >::center_at_().
void mln::internal::site_relative_iterator_base< W , complex_window_fwd_piter< I, G, W > >::center_at | ( | const P & | c | ) | [inherited] |
void mln::complex_window_fwd_piter< I, G, W >::center_at_ | ( | const Pref & | c | ) | [inline] |
Do some work while setting the reference site.
References mln::internal::site_relative_iterator_base< W, complex_window_fwd_piter< I, G, W > >::center().
void mln::internal::site_relative_iterator_base< W , complex_window_fwd_piter< I, G, W > >::change_target | ( | const W & | s | ) | [inherited] |
Change the site set targeted by this iterator.
Referenced by mln::complex_window_fwd_piter< I, G, W >::complex_window_fwd_piter().
W::psite mln::complex_window_fwd_piter< I, G, W >::compute_p_ | ( | ) | const [inline] |
Compute the current psite.
void mln::complex_window_fwd_piter< I, G, W >::do_next_ | ( | ) | [inline] |
Go to the next site.
void mln::complex_window_fwd_piter< I, G, W >::do_start_ | ( | ) | [inline] |
Start an iteration.
void mln::Site_Iterator< complex_window_fwd_piter< I, G, W > >::invalidate | ( | ) | [inherited] |
void mln::complex_window_fwd_piter< I, G, W >::invalidate_ | ( | ) | [inline] |
Invalidate the iterator.
bool mln::Site_Iterator< complex_window_fwd_piter< I, G, W > >::is_valid | ( | ) | const [inherited] |
bool mln::complex_window_fwd_piter< I, G, W >::is_valid_ | ( | ) | const [inline] |
Manipulation.
Test if the iterator is valid.
W::complex_fwd_iter & mln::complex_window_fwd_piter< I, G, W >::iter | ( | ) | [inline] |
const W::complex_fwd_iter & mln::complex_window_fwd_piter< I, G, W >::iter | ( | ) | const [inline] |
Accessors.
void mln::Site_Iterator< complex_window_fwd_piter< I, G, W > >::next | ( | ) | [inherited] |
Go to the next element.
void mln::internal::site_relative_iterator_base< W , complex_window_fwd_piter< I, G, W > >::next_ | ( | ) | [inherited] |
Go to the next point.
const W ::psite& mln::internal::site_relative_iterator_base< W , complex_window_fwd_piter< I, G, W > >::p_hook_ | ( | ) | const [inherited] |
Hook to the current location.
const W & mln::internal::site_relative_iterator_base< W , complex_window_fwd_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_fwd_piter< I, G, W > >::start | ( | ) | [inherited] |
void mln::internal::site_relative_iterator_base< W , complex_window_fwd_piter< I, G, W > >::start_ | ( | ) | [inherited] |
Start an iteration.
const W ::psite& mln::internal::site_relative_iterator_base< W , complex_window_fwd_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_fwd_piter< I, G, W > >.
const W *& mln::internal::site_iterator_base< W , complex_window_fwd_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_fwd_piter< I, G, W > >::to_site | ( | ) | const [inherited] |
Return the site it points to (as a Site_Proxy).
complex_window_fwd_piter< I, G, W > & mln::internal::site_relative_iterator_base< W , complex_window_fwd_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.
const W ::psite* mln::internal::site_relative_iterator_base< W , complex_window_fwd_piter< I, G, W > >::c_ [protected, inherited] |
A pointer to the center psite around which this iterator moves.
iter_type mln::complex_window_fwd_piter< I, G, W >::iter_ [private] |
The underlying complex iterator.
const W * mln::internal::site_iterator_base< W , complex_window_fwd_piter< I, G, W > >::s_ [protected, inherited] |
The target.