27 #ifndef MLN_CORE_IMAGE_CH_PITER_HH
28 # define MLN_CORE_IMAGE_CH_PITER_HH
36 # include <mln/core/internal/image_identity.hh>
44 template <
typename I,
typename Fwd>
class ch_piter_image;
51 template <
typename I,
typename Fwd>
52 struct data< ch_piter_image<I,Fwd> >
64 template <
typename I,
typename Fwd>
65 struct image_< ch_piter_image<I,Fwd> > : image_< I >
68 typedef trait::image::category::identity_morpher category;
77 template <
typename I,
typename Fwd>
78 class ch_piter_image :
public internal::image_identity< I,
80 ch_piter_image<I,Fwd> >
85 typedef ch_piter_image< tag::image_<I>, Fwd > skeleton;
87 typedef Fwd fwd_piter;
88 typedef Fwd bkd_piter;
89 typedef fwd_piter piter;
92 ch_piter_image(I& ima);
100 template <
typename Fwd,
typename I>
101 ch_piter_image<I,Fwd>
102 ch_piter(Image<I>& ima);
106 # ifndef MLN_INCLUDE_ONLY
114 template <
typename I,
typename Fwd>
126 template <
typename I,
typename Fwd>
128 ch_piter_image<I,Fwd>::ch_piter_image()
132 template <
typename I,
typename Fwd>
134 ch_piter_image<I,Fwd>::ch_piter_image(I& ima)
136 mln_precondition(ima.is_valid());
140 template <
typename I,
typename Fwd>
143 ch_piter_image<I,Fwd>::init_(I& ima)
145 mln_precondition(ima.is_valid());
146 this->data_ =
new internal::data< ch_piter_image<I,Fwd> >(ima);
152 template <
typename Fwd,
typename I>
154 ch_piter_image<I,Fwd>
155 ch_piter(Image<I>& ima)
157 ch_piter_image<I,Fwd> tmp(exact(ima));
161 # endif // ! MLN_INCLUDE_ONLY
166 #endif // ! MLN_CORE_IMAGE_CH_PITER_HH