27 #ifndef MLN_CORE_ALIAS_POINT3D_HH
28 # define MLN_CORE_ALIAS_POINT3D_HH
35 # include <mln/core/def/coord.hh>
36 # include <mln/core/def/coordf.hh>
37 # include <mln/core/point.hh>
39 # include <mln/core/concept/site_proxy.hh>
40 # include <mln/core/internal/force_exact.hh>
53 typedef point<grid::cube, def::coord>
point3d;
65 typedef point<grid::cube, def::coordf> point3df;
75 template <
typename C,
typename E>
82 typedef const C& row_t;
85 typedef const C& col_t;
88 typedef const C& sli_t;
91 const C& operator[](
unsigned i)
const;
92 const C& last_coord()
const;
94 const E& exact_()
const;
101 template <
typename C,
typename E>
119 using super_::operator[];
120 C& operator[](
unsigned i);
125 # ifndef MLN_INCLUDE_ONLY
129 template <
typename C,
typename E>
134 return exact_().get_subject().row();
137 template <
typename C,
typename E>
142 return exact_().get_subject().col();
145 template <
typename C,
typename E>
150 return exact_().get_subject().sli();
153 template <
typename C,
typename E>
158 mln_precondition(i < 3);
159 return exact_().get_subject()[i];
162 template <
typename C,
typename E>
170 template <
typename C,
typename E>
175 return internal::force_exact<const E>(*this);
180 template <
typename C,
typename E>
185 return exact_().get_subject().row();
188 template <
typename C,
typename E>
193 return exact_().get_subject().col();
196 template <
typename C,
typename E>
201 return exact_().get_subject().sli();
204 template <
typename C,
typename E>
209 mln_precondition(i < 3);
210 return exact_().get_subject()[i];
213 template <
typename C,
typename E>
218 return internal::force_exact<E>(*this);
221 # endif // ! MLN_INCLUDE_ONLY
229 # include <mln/core/alias/dpoint3d.hh>
232 #endif // ! MLN_CORE_ALIAS_POINT3D_HH