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

mln::graph_window_piter< S, W, I > Class Template Reference

Forward iterator on line graph window. More...

#include <graph_window_piter.hh>

Inheritance diagram for mln::graph_window_piter< S, W, I >:
Inheritance graph

List of all members.

Public Types

typedef Site_Proxy< void > category
typedef graph_window_piter< S,
W, I > 
exact_t
typedef W::site site
 The associated site type (as a Site_Proxy).
typedef W target
 The associated target type.

typedef S::fun_t::result P
 Associated typesType of the window elements.
typedef W::center_t center_t
 Type of the window center.
typedef W::graph_element graph_element
 Type of the graph element pointed by this iterator.

Public Member Functions

const W::center_t & 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 change_target_site_set (const S &s)
 Change the target site set.
void do_start_ ()
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 S & target_site_set () const
 Return the target site set.
const W::site & to_site () const
 Return the site it points to (as a Site_Proxy).
graph_window_piter< S, W, I > & 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.

 graph_window_piter ()
 Construction.
template<typename Pref >
 graph_window_piter (const Window< W > &win, const Pref &p_ref)
 To be used in case the center and neighbor sites have the same type and belong to the same site set.
template<typename Pref >
 graph_window_piter (const Window< W > &win, const Site_Set< S > &target_site_set, const Pref &p_ref)
 To be used in case center and neighbors sites do not have the same type and do not belong to the same site set.

template<typename Pref >
void init_ (const Window< W > &win, const Pref &p_ref)
 Delayed initialization.
template<typename Pref >
void init_ (const Window< W > &win, const Site_Set< S > &target_site_set, const Pref &p_ref)

bool is_valid_ () const
 Manipulation.
void invalidate_ ()
 Invalidate the iterator.
void do_next_ ()
 Go to the next point.
template<typename Pref >
void center_at_ (const Pref &c)
 Do some work while setting the reference site.
template<typename S2 , typename I2 >
void center_at_ (const p_graph_piter< S2, I2 > &c)
 Do some work while setting the reference site.
const graph_elementelement () const
 Return the graph element pointed by this iterator.
W::psite compute_p_ () const
 Compute the current psite.
unsigned id () const
 Return the graph element id.

Protected Attributes

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

Private Types

typedef graph_window_piter< S,
W, I > 
self_
typedef
internal::site_relative_iterator_base
< W, self_, typename S::psite > 
super_
typedef
internal::impl_selector
< typename W::center_t,
typename W::psite,
graph_window_piter< S, W, I > > 
super_impl_

Private Attributes

iter_
const S * s_

Friends

class internal::impl_selector< typename W::center_t, typenameW::psite, graph_window_piter< S, W, I > >

Detailed Description

template<typename S, typename W, typename I>
class mln::graph_window_piter< S, W, I >

Forward iterator on line graph window.

Template Parameters:
S is the site set type.
W is the window type.
I is the underlying iterator type.

Definition at line 99 of file graph_window_piter.hh.


Member Typedef Documentation

typedef Site_Proxy<void> mln::Site_Proxy< graph_window_piter< S, W, I > >::category [inherited]

Reimplemented from mln::Proxy< graph_window_piter< S, W, I > >.

Definition at line 63 of file site_proxy.hh.

template<typename S, typename W, typename I>
typedef W::center_t mln::graph_window_piter< S, W, I >::center_t

Type of the window center.

Definition at line 120 of file graph_window_piter.hh.

typedef graph_window_piter< S, W, I > mln::Object< graph_window_piter< S, W, I > >::exact_t [inherited]

Definition at line 173 of file object.hh.

template<typename S, typename W, typename I>
typedef W::graph_element mln::graph_window_piter< S, W, I >::graph_element

Type of the graph element pointed by this iterator.

Definition at line 122 of file graph_window_piter.hh.

template<typename S, typename W, typename I>
typedef S::fun_t ::result mln::graph_window_piter< S, W, I >::P

Associated typesType of the window elements.

Definition at line 118 of file graph_window_piter.hh.

template<typename S, typename W, typename I>
typedef graph_window_piter<S,W,I> mln::graph_window_piter< S, W, I >::self_ [private]

Definition at line 106 of file graph_window_piter.hh.

typedef W ::site mln::internal::site_iterator_base< W , graph_window_piter< S, W, I > >::site [inherited]

The associated site type (as a Site_Proxy).

Definition at line 64 of file site_iterator_base.hh.

template<typename S, typename W, typename I>
typedef internal::site_relative_iterator_base<W,self_,typename S ::psite> mln::graph_window_piter< S, W, I >::super_ [private]

Definition at line 108 of file graph_window_piter.hh.

template<typename S, typename W, typename I>
typedef internal::impl_selector<typename W::center_t, typename W ::psite, graph_window_piter<S,W,I> > mln::graph_window_piter< S, W, I >::super_impl_ [private]

Definition at line 111 of file graph_window_piter.hh.

typedef W mln::internal::site_iterator_base< W , graph_window_piter< S, W, I > >::target [inherited]

The associated target type.

Definition at line 61 of file site_iterator_base.hh.


Constructor & Destructor Documentation

template<typename S , typename W , typename I >
mln::graph_window_piter< S, W, I >::graph_window_piter (  )  [inline]

Construction.

Definition at line 226 of file graph_window_piter.hh.

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

To be used in case the center and neighbor sites have the same type and belong to the same site set.

Parameters:
win The underlying window.
p_ref Window center.

Definition at line 235 of file graph_window_piter.hh.

References mln::graph_window_piter< S, W, I >::init_().

template<typename S , typename W , typename I >
template<typename Pref >
mln::graph_window_piter< S, W, I >::graph_window_piter ( const Window< W > &  win,
const Site_Set< S > &  target_site_set,
const Pref &  p_ref 
) [inline]

To be used in case center and neighbors sites do not have the same type and do not belong to the same site set.

Parameters:
win The underlying window.
target_site_set Site set in which neighbor sites are extracted.
p_ref Window center.

Definition at line 249 of file graph_window_piter.hh.

References mln::graph_window_piter< S, W, I >::init_().


Member Function Documentation

const W::center_t & mln::internal::site_relative_iterator_base< W , graph_window_piter< S, W, I > , W::center_t >::center (  )  const [inherited]

The psite around which this iterator moves.

void mln::internal::site_relative_iterator_base< W , graph_window_piter< S, W, I > , W::center_t >::center_at ( const P &  c  )  [inherited]
template<typename S , typename W , typename I >
template<typename Pref >
void mln::graph_window_piter< S, W, I >::center_at_ ( const Pref &  c  )  [inline]

Do some work while setting the reference site.

Definition at line 316 of file graph_window_piter.hh.

template<typename S , typename W , typename I >
template<typename S2 , typename I2 >
void mln::graph_window_piter< S, W, I >::center_at_ ( const p_graph_piter< S2, I2 > &  c  )  [inline]

Do some work while setting the reference site.

Definition at line 325 of file graph_window_piter.hh.

References mln::p_graph_piter< S, I >::hook_elt_().

void mln::internal::site_relative_iterator_base< W , graph_window_piter< S, W, I > , W::center_t >::change_target ( const W &  s  )  [inherited]

Change the site set targeted by this iterator.

Referenced by mln::graph_window_piter< S, W, I >::init_().

template<typename S , typename W , typename I >
void mln::graph_window_piter< S, W, I >::change_target_site_set ( const S &  s  )  [inline]

Change the target site set.

Window elements different from the center come from the target site set.

Definition at line 357 of file graph_window_piter.hh.

Referenced by mln::graph_window_piter< S, W, I >::init_().

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

Compute the current psite.

Definition at line 333 of file graph_window_piter.hh.

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

Go to the next point.

Definition at line 307 of file graph_window_piter.hh.

void mln::internal::impl_selector< W::center_t , W::psite , graph_window_piter< S, W, I > >::do_start_ (  )  [inline, inherited]

Definition at line 57 of file graph_window_piter.hh.

template<typename S , typename W , typename I >
const graph_window_piter< S, W, I >::graph_element & mln::graph_window_piter< S, W, I >::element (  )  const [inline]

Return the graph element pointed by this iterator.

Definition at line 341 of file graph_window_piter.hh.

template<typename S , typename W , typename I >
unsigned mln::graph_window_piter< S, W, I >::id (  )  const [inline]

Return the graph element id.

FIXME: we do not want to have this member since there is an automatic conversion to the graph element. C++ does not seem to use this conversion operator.

Definition at line 349 of file graph_window_piter.hh.

template<typename S , typename W , typename I >
template<typename Pref >
void mln::graph_window_piter< S, W, I >::init_ ( const Window< W > &  win,
const Pref &  p_ref 
) [inline]
template<typename S , typename W , typename I >
template<typename Pref >
void mln::graph_window_piter< S, W, I >::init_ ( const Window< W > &  win,
const Site_Set< S > &  target_site_set,
const Pref &  p_ref 
) [inline]
void mln::Site_Iterator< graph_window_piter< S, W, I > >::invalidate (  )  [inherited]
template<typename S , typename W , typename I >
void mln::graph_window_piter< S, W, I >::invalidate_ (  )  [inline]

Invalidate the iterator.

Definition at line 299 of file graph_window_piter.hh.

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

Manipulation.

Test if the iterator is valid.

Definition at line 291 of file graph_window_piter.hh.

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

Go to the next point.

const W ::psite& mln::internal::site_relative_iterator_base< W , graph_window_piter< S, W, I > , W::center_t >::p_hook_ (  )  const [inherited]

Hook to the current location.

const W & mln::internal::site_relative_iterator_base< W , graph_window_piter< S, W, I > , W::center_t >::site_set (  )  const [inherited]

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

void mln::Site_Iterator< graph_window_piter< S, W, I > >::start (  )  [inherited]
void mln::internal::site_relative_iterator_base< W , graph_window_piter< S, W, I > , W::center_t >::start_ (  )  [inherited]

Start an iteration.

const W ::psite& mln::internal::site_relative_iterator_base< W , graph_window_piter< S, W, I > , W::center_t >::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, graph_window_piter< S, W, I > >.

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

Give the target address. It might be 0.

template<typename S , typename W , typename I >
const S & mln::graph_window_piter< S, W, I >::target_site_set (  )  const [inline]

Return the target site set.

Window elements different from the center come from the target site set.

Definition at line 366 of file graph_window_piter.hh.

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

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

graph_window_piter< S, W, I > & mln::internal::site_relative_iterator_base< W , graph_window_piter< S, W, I > , W::center_t >::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.


Friends And Related Function Documentation

template<typename S, typename W, typename I>
friend class internal::impl_selector< typename W::center_t, typenameW::psite,graph_window_piter< S, W, I > > [friend]

Definition at line 213 of file graph_window_piter.hh.


Member Data Documentation

const W::center_t * mln::internal::site_relative_iterator_base< W , graph_window_piter< S, W, I > , W::center_t >::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 S, typename W, typename I>
I mln::graph_window_piter< S, W, I >::iter_ [private]

Definition at line 216 of file graph_window_piter.hh.

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

The target.

Definition at line 90 of file site_iterator_base.hh.

template<typename S, typename W, typename I>
const S* mln::graph_window_piter< S, W, I >::s_ [private]

Definition at line 217 of file graph_window_piter.hh.