26 #ifndef MLN_GEOM_COMPLEX_GEOMETRY_HH
27 # define MLN_GEOM_COMPLEX_GEOMETRY_HH
38 # include <mln/topo/face.hh>
39 # include <mln/topo/adj_m_face_iter.hh>
41 # include <mln/util/multi_site.hh>
42 # include <mln/util/tracked_ptr.hh>
65 template <
typename P>
struct complex_geometry_data;
87 template <
unsigned D,
typename P>
92 typedef util::multi_site<P> site;
119 template <
typename P>
120 struct complex_geometry_data
122 std::vector<P> zero_faces_geom;
128 # ifndef MLN_INCLUDE_ONLY
130 template <
unsigned D,
typename P>
133 : data_(new internal::complex_geometry_data<P>())
137 template <
unsigned D,
typename P>
142 mln_precondition(data_);
144 data_->zero_faces_geom.push_back(p);
145 return data_->zero_faces_geom.size();
148 template <
unsigned D,
typename P>
153 mln_precondition(data_);
159 mln_assertion(f.
face_id() < data_->zero_faces_geom.size());
160 s.push_back(data_->zero_faces_geom[f.
face_id()]);
168 s.push_back(data_->zero_faces_geom[g.subject().face_id()]);
173 # endif // ! MLN_INCLUDE_ONLY
179 #endif // ! MLN_GEOM_COMPLEX_GEOMETRY_HH