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

mln::win::multiple_size_qiter< n, W, F > Class Template Reference

#include <multiple_size.hh>

Inheritance diagram for mln::win::multiple_size_qiter< n, W, F >:
Inheritance graph

List of all members.

Public Types

typedef Site_Proxy< void > category
typedef multiple_size_qiter< n,
W, F > 
exact_t
typedef multiple_size< n, W, F >
::site 
site
 The associated site type (as a Site_Proxy).
typedef multiple_size< n, W, F > target
 The associated target type.

Public Member Functions

const multiple_size< n, W, F >
::psite & 
center () const
 The psite around which this iterator moves.
void center_at (const P &c)
void change_target (const multiple_size< n, W, F > &s)
 Change the site set targeted by this iterator.
W::psite compute_p_ () const
 Compute the current psite.
void do_next_ ()
 Go to the next point.
void do_start_ ()
 Start an iteration.
void invalidate ()
void invalidate_ ()
 Invalidate the iterator.
bool is_valid () const
bool is_valid_ () const
 Test the iterator validity.
template<typename P >
 multiple_size_qiter (const multiple_size< n, W, F > &w, const P &c)
 multiple_size_qiter ()
void next ()
 Go to the next element.
void next_ ()
 Go to the next point.
const multiple_size< n, W, F >
::psite & 
p_hook_ () const
 Hook to the current location.
const multiple_size< n, W, F > & site_set () const
 Give the site set (neighborhood or window) that this iterator browses.
void start ()
void start_ ()
 Start an iteration.
const multiple_size< n, W, F >
::psite & 
subj_ ()
 This overriding is very useful: it adds a test to prevent getting an invalid iterator when its center has moved.
const multiple_size< n, W, F > *& target_ ()
 Give the target address. It might be 0.
const multiple_size< n, W, F >
::site
to_site () const
 Return the site it points to (as a Site_Proxy).
multiple_size_qiter< n, W, F > & 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 multiple_size< n, W, F >
::psite * 
c_
 A pointer to the center psite around which this iterator moves.
const multiple_size< n, W, F > * s_
 The target.

Private Types

typedef multiple_size_qiter< n,
W, F > 
self_
typedef
internal::site_relative_iterator_base
< multiple_size< n, W, F >
, self_
super_

Private Member Functions

int size_ () const

Private Attributes

int i_

template<unsigned n, typename W, typename F>
class mln::win::multiple_size_qiter< n, W, F >


Member Typedef Documentation

typedef Site_Proxy<void> mln::Site_Proxy< multiple_size_qiter< n, W, F > >::category [inherited]
typedef multiple_size_qiter< n, W, F > mln::Object< multiple_size_qiter< n, W, F > >::exact_t [inherited]
template<unsigned n, typename W , typename F >
typedef multiple_size_qiter<n,W,F> mln::win::multiple_size_qiter< n, W, F >::self_ [private]
typedef multiple_size< n, W, F > ::site mln::internal::site_iterator_base< multiple_size< n, W, F > , multiple_size_qiter< n, W, F > >::site [inherited]

The associated site type (as a Site_Proxy).

template<unsigned n, typename W , typename F >
typedef internal::site_relative_iterator_base< multiple_size<n,W,F>, self_ > mln::win::multiple_size_qiter< n, W, F >::super_ [private]
typedef multiple_size< n, W, F > mln::internal::site_iterator_base< multiple_size< n, W, F > , multiple_size_qiter< n, W, F > >::target [inherited]

The associated target type.


Constructor & Destructor Documentation

template<unsigned n, typename W , typename F >
mln::win::multiple_size_qiter< n, W, F >::multiple_size_qiter (  )  [inline]
template<unsigned n, typename W , typename F >
template<typename P >
mln::win::multiple_size_qiter< n, W, F >::multiple_size_qiter ( const multiple_size< n, W, F > &  w,
const P &  c 
) [inline]

Member Function Documentation

const multiple_size< n, W, F > ::psite& mln::internal::site_relative_iterator_base< multiple_size< n, W, F > , multiple_size_qiter< n, W, F > >::center (  )  const [inherited]

The psite around which this iterator moves.

void mln::internal::site_relative_iterator_base< multiple_size< n, W, F > , multiple_size_qiter< n, W, F > >::center_at ( const P &  c  )  [inherited]
void mln::internal::site_relative_iterator_base< multiple_size< n, W, F > , multiple_size_qiter< n, W, F > >::change_target ( const multiple_size< n, W, F > &  s  )  [inherited]

Change the site set targeted by this iterator.

Referenced by mln::win::multiple_size_qiter< n, W, F >::multiple_size_qiter().

template<unsigned n, typename W , typename F >
W::psite mln::win::multiple_size_qiter< n, W, F >::compute_p_ (  )  const [inline]

Compute the current psite.

template<unsigned n, typename W , typename F >
void mln::win::multiple_size_qiter< n, W, F >::do_next_ (  )  [inline]

Go to the next point.

template<unsigned n, typename W , typename F >
void mln::win::multiple_size_qiter< n, W, F >::do_start_ (  )  [inline]

Start an iteration.

void mln::Site_Iterator< multiple_size_qiter< n, W, F > >::invalidate (  )  [inherited]
template<unsigned n, typename W , typename F >
void mln::win::multiple_size_qiter< n, W, F >::invalidate_ (  )  [inline]

Invalidate the iterator.

bool mln::Site_Iterator< multiple_size_qiter< n, W, F > >::is_valid (  )  const [inherited]
template<unsigned n, typename W , typename F >
bool mln::win::multiple_size_qiter< n, W, F >::is_valid_ (  )  const [inline]

Test the iterator validity.

References mln::win::multiple_size_qiter< n, W, F >::size_().

void mln::Site_Iterator< multiple_size_qiter< n, W, F > >::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< multiple_size< n, W, F > , multiple_size_qiter< n, W, F > >::next_ (  )  [inherited]

Go to the next point.

const multiple_size< n, W, F > ::psite& mln::internal::site_relative_iterator_base< multiple_size< n, W, F > , multiple_size_qiter< n, W, F > >::p_hook_ (  )  const [inherited]

Hook to the current location.

const multiple_size< n, W, F > & mln::internal::site_relative_iterator_base< multiple_size< n, W, F > , multiple_size_qiter< n, W, F > >::site_set (  )  const [inherited]

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

template<unsigned n, typename W , typename F >
int mln::win::multiple_size_qiter< n, W, F >::size_ (  )  const [inline, private]
void mln::Site_Iterator< multiple_size_qiter< n, W, F > >::start (  )  [inherited]
void mln::internal::site_relative_iterator_base< multiple_size< n, W, F > , multiple_size_qiter< n, W, F > >::start_ (  )  [inherited]

Start an iteration.

const multiple_size< n, W, F > ::psite& mln::internal::site_relative_iterator_base< multiple_size< n, W, F > , multiple_size_qiter< n, W, F > >::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< multiple_size< n, W, F >, multiple_size_qiter< n, W, F > >.

const multiple_size< n, W, F > *& mln::internal::site_iterator_base< multiple_size< n, W, F > , multiple_size_qiter< n, W, F > >::target_ (  )  [inherited]

Give the target address. It might be 0.

const multiple_size< n, W, F > ::site& mln::internal::site_iterator_base< multiple_size< n, W, F > , multiple_size_qiter< n, W, F > >::to_site (  )  const [inherited]

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

multiple_size_qiter< n, W, F > & mln::internal::site_relative_iterator_base< multiple_size< n, W, F > , multiple_size_qiter< n, W, F > >::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 multiple_size< n, W, F > ::psite* mln::internal::site_relative_iterator_base< multiple_size< n, W, F > , multiple_size_qiter< n, W, F > >::c_ [protected, inherited]

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

template<unsigned n, typename W , typename F >
int mln::win::multiple_size_qiter< n, W, F >::i_ [private]
const multiple_size< n, W, F > * mln::internal::site_iterator_base< multiple_size< n, W, F > , multiple_size_qiter< n, W, F > >::s_ [protected, inherited]