27 #ifndef MLN_TOPO_FACE_DATA_HH
28 # define MLN_TOPO_FACE_DATA_HH
39 # include <mln/topo/algebraic_n_face.hh>
49 template <
unsigned D>
class complex;
52 template <
unsigned N,
unsigned D>
struct lower_dim_faces_set_mixin;
53 template <
unsigned N,
unsigned D>
struct higher_dim_faces_set_mixin;
55 template <
unsigned N,
unsigned D>
56 struct lower_dim_adj_faces_if_dim_matches_;
57 template <
unsigned N,
unsigned D>
58 struct higher_dim_adj_faces_if_dim_matches_;
62 template <
unsigned N,
unsigned D>
class n_face;
65 template <
unsigned N,
unsigned D>
class lower_dim_faces_data_mixin;
66 template <
unsigned N,
unsigned D>
class higher_dim_faces_data_mixin;
75 template <
unsigned N,
unsigned D>
class face_data;
86 template <
unsigned N,
unsigned D>
113 template <
unsigned N,
unsigned D>
123 friend struct mln::topo::internal::lower_dim_adj_faces_if_dim_matches_<N, D>;
124 friend lower_dim_faces_type
128 lower_dim_faces_type lower_dim_faces_;
131 template <
unsigned N,
unsigned D>
134 typedef std::vector< algebraic_n_face<N + 1, D> > higher_dim_faces_type;
141 friend struct mln::topo::internal::higher_dim_adj_faces_if_dim_matches_<N, D>;
142 friend higher_dim_faces_type
146 higher_dim_faces_type higher_dim_faces_;
154 # ifndef MLN_INCLUDE_ONLY
158 template <
unsigned N,
unsigned D>
163 lower_dim_faces_.push_back(f);
166 template <
unsigned N,
unsigned D>
171 higher_dim_faces_.push_back(f);
176 # endif // ! MLN_INCLUDE_ONLY
182 #endif // ! MLN_TOPO_FACE_DATA_HH