A base class for site iterators. More...
#include <site_iterator_base.hh>
Public Types | |
typedef Site_Proxy< void > | category |
typedef E | exact_t |
typedef S::site | site |
The associated site type (as a Site_Proxy). | |
typedef S | target |
The associated target type. | |
Public Member Functions | |
void | invalidate () |
bool | is_valid () const |
void | next () |
Go to the next element. | |
void | start () |
const S::psite & | subj_ () |
Give the subject (required by the Proxy interface). | |
const S *& | target_ () |
Give the target address. It might be 0. | |
const S::site & | to_site () const |
Return the site it points to (as a Site_Proxy). | |
Protected Member Functions | |
site_iterator_base () | |
Protected Attributes | |
const S * | s_ |
The target. | |
Private Types | |
typedef proxy_impl< const typename S::psite &, E > | super_ |
A base class for site iterators.
NEVER DIRECTLY DERIVE FROM THIS CLASS.
Instead derive EITHER from site_set_iterator_base OR from site_relative_iterator_base OR from piter_adaptor_.
Parameter S
is the targeted "site set definition" type. It can be either a Site_Set, a Window, or a Neighborhood.
typedef Site_Proxy<void> mln::Site_Proxy< E >::category [inherited] |
Reimplemented from mln::Proxy< E >.
Reimplemented in mln::Pseudo_Site< E >, mln::Pseudo_Site< complex_psite< D, G > >, mln::Pseudo_Site< p_edges_psite< G, F > >, mln::Pseudo_Site< p_indexed_psite< S > >, mln::Pseudo_Site< p_double_psite< S, Sp > >, mln::Pseudo_Site< faces_psite< N, D, P > >, mln::Pseudo_Site< p_run_psite< P > >, and mln::Pseudo_Site< p_vertices_psite< G, F > >.
typedef E mln::Object< E >::exact_t [inherited] |
typedef S ::site mln::internal::site_iterator_base< S, E >::site |
The associated site type (as a Site_Proxy).
typedef proxy_impl< const typename S ::psite&, E> mln::internal::site_iterator_base< S, E >::super_ [private] |
Reimplemented in mln::box_runstart_piter< P >, mln::complex_neighborhood_fwd_piter< I, G, N >, mln::complex_neighborhood_bkd_piter< I, G, N >, mln::complex_window_fwd_piter< I, G, W >, mln::complex_window_bkd_piter< I, G, W >, mln::hexa_fwd_piter_< S >, mln::graph_window_piter< S, W, I >, mln::internal::p_complex_piter_base_< I, S, P, E >, mln::internal::piter_identity_< Pi, E >, mln::p_complex_faces_fwd_piter_< N, D, P >, mln::p_complex_faces_bkd_piter_< N, D, P >, mln::p_faces_fwd_piter_< N, D, P >, mln::p_faces_bkd_piter_< N, D, P >, mln::box_fwd_piter_< P >, mln::box_bkd_piter_< P >, mln::p_centered_piter< W >, mln::p_complex_fwd_piter_< D, G >, mln::p_complex_bkd_piter_< D, G >, mln::p_double_piter< S, I1, I2 >, mln::p_graph_piter< S, I >, mln::p_if_piter_< Pi, S, F >, mln::p_n_faces_fwd_piter< D, P >, mln::p_n_faces_bkd_piter< D, P >, mln::p_run_fwd_piter_< P >, mln::p_run_bkd_piter_< P >, mln::p_transformed_piter< Pi, S, F >, mln::morpho::tree::up_site_piter< T >, mln::morpho::tree::dn_site_piter< T >, mln::morpho::tree::up_node_piter< T >, mln::morpho::tree::dn_node_piter< T >, mln::morpho::tree::up_leaf_piter< T >, mln::morpho::tree::dn_leaf_piter< T >, mln::morpho::tree::depth1st_piter< T >, mln::win::multiple_qiter< W, F >, mln::win::multiple_size_qiter< n, W, F >, mln::internal::p_complex_piter_base_< topo::face_bkd_iter< D >, p_complex< D, G >, G::site, p_complex_bkd_piter_< D, G > >, mln::internal::p_complex_piter_base_< topo::faces_fwd_iter_< N, D >, p_faces< N, D, P >, P, p_faces_fwd_piter_< N, D, P > >, mln::internal::p_complex_piter_base_< topo::faces_bkd_iter_< N, D >, p_faces< N, D, P >, P, p_faces_bkd_piter_< N, D, P > >, mln::internal::p_complex_piter_base_< topo::n_face_fwd_iter< D >, p_complex< D, P >, P, p_n_faces_fwd_piter< D, P > >, mln::internal::p_complex_piter_base_< topo::n_face_bkd_iter< D >, p_complex< D, P >, P, p_n_faces_bkd_piter< D, P > >, mln::internal::p_complex_piter_base_< topo::faces_fwd_iter_< N, D >, p_complex< D, P >, P, p_complex_faces_fwd_piter_< N, D, P > >, mln::internal::p_complex_piter_base_< topo::face_fwd_iter< D >, p_complex< D, G >, G::site, p_complex_fwd_piter_< D, G > >, mln::internal::p_complex_piter_base_< topo::faces_bkd_iter_< N, D >, p_complex< D, P >, P, p_complex_faces_bkd_piter_< N, D, P > >, mln::internal::piter_identity_< T::leaves_t::bkd_piter, dn_leaf_piter< T > >, mln::internal::piter_identity_< T::sites_t::bkd_piter, up_site_piter< T > >, mln::internal::piter_identity_< T::nodes_t::fwd_piter, up_node_piter< T > >, mln::internal::piter_identity_< T::nodes_t::bkd_piter, dn_node_piter< T > >, mln::internal::piter_identity_< T::sites_t::fwd_piter, dn_site_piter< T > >, and mln::internal::piter_identity_< T::leaves_t::fwd_piter, up_leaf_piter< T > >.
typedef S mln::internal::site_iterator_base< S, E >::target |
The associated target type.
mln::internal::site_iterator_base< S, E >::site_iterator_base | ( | ) | [inline, protected] |
void mln::Site_Iterator< E >::invalidate | ( | ) | [inline, inherited] |
References mln::exact(), and mln::Site_Iterator< E >::is_valid().
Referenced by mln::internal::site_relative_iterator_base< S, E >::center_at(), mln::internal::site_set_iterator_base< S, E >::change_target(), mln::internal::site_relative_iterator_base< S, E >::change_target(), mln::internal::piter_adaptor_< Pi, S, E >::change_target(), and mln::p_transformed_piter< Pi, S, F >::change_target().
bool mln::Site_Iterator< E >::is_valid | ( | ) | const [inline, inherited] |
References mln::exact().
Referenced by mln::Site_Iterator< E >::invalidate(), mln::Site_Iterator< E >::next(), mln::internal::site_relative_iterator_base< S, E >::next_(), mln::internal::p_complex_piter_base_< I, S, P, E >::next_(), mln::internal::p_complex_piter_base_< I, S, P, E >::p_complex_piter_base_(), mln::internal::site_relative_iterator_base< S, E >::start_(), mln::internal::p_complex_piter_base_< I, S, P, E >::start_(), mln::internal::site_relative_iterator_base< S, E >::update(), and mln::internal::p_complex_piter_base_< I, S, P, E >::update_().
void mln::Site_Iterator< E >::next | ( | ) | [inline, inherited] |
Go to the next element.
References mln::exact(), and mln::Site_Iterator< E >::is_valid().
void mln::Site_Iterator< E >::start | ( | ) | [inline, inherited] |
References mln::exact().
const S::psite & mln::internal::site_iterator_base< S, E >::subj_ | ( | ) | [inline] |
Give the subject (required by the Proxy interface).
Reimplemented in mln::internal::site_relative_iterator_base< S, E >, mln::internal::site_relative_iterator_base< W, graph_window_piter< S, W, I > >, mln::internal::site_relative_iterator_base< multiple< W, F >, multiple_qiter< W, F > >, mln::internal::site_relative_iterator_base< V, dpsites_bkd_piter< V > >, mln::internal::site_relative_iterator_base< neighb< W >, neighb_fwd_niter< W > >, mln::internal::site_relative_iterator_base< W, graph_window_if_piter< S, W, I > >, mln::internal::site_relative_iterator_base< W, complex_window_fwd_piter< I, G, W > >, mln::internal::site_relative_iterator_base< W, complex_window_bkd_piter< I, G, W > >, mln::internal::site_relative_iterator_base< multiple_size< n, W, F >, multiple_size_qiter< n, W, F > >, mln::internal::site_relative_iterator_base< N, complex_neighborhood_bkd_piter< I, G, N > >, mln::internal::site_relative_iterator_base< N, complex_neighborhood_fwd_piter< I, G, N > >, mln::internal::site_relative_iterator_base< neighb< W >, neighb_bkd_niter< W > >, and mln::internal::site_relative_iterator_base< V, dpsites_fwd_piter< V > >.
References mln::exact().
const S *& mln::internal::site_iterator_base< S, E >::target_ | ( | ) | [inline] |
Give the target address. It might be 0.
const S::site & mln::internal::site_iterator_base< S, E >::to_site | ( | ) | const [inline] |
Return the site it points to (as a Site_Proxy).
References mln::exact().
const S* mln::internal::site_iterator_base< S, E >::s_ [protected] |
The target.
Referenced by mln::internal::site_set_iterator_base< S, E >::change_target(), mln::internal::site_relative_iterator_base< S, E >::change_target(), mln::internal::piter_adaptor_< Pi, S, E >::change_target(), mln::p_transformed_piter< Pi, S, F >::change_target(), mln::p_transformed_piter< Pi, S, F >::next_(), mln::p_if_piter_< Pi, S, F >::next_(), mln::internal::site_set_iterator_base< S, E >::site_set(), mln::internal::site_relative_iterator_base< S, E >::site_set(), mln::p_transformed_piter< Pi, S, F >::start_(), mln::p_if_piter_< Pi, S, F >::start_(), and mln::internal::site_relative_iterator_base< S, E >::update().