29 template<
typename SimplexHandle>
30 std::list<SimplexHandle> subfaces(SimplexHandle top_face){
31 std::list<SimplexHandle> res;
32 if(top_face.dimension()==-1)
return res;
33 if(top_face.dimension()==0) {
34 res.push_back(top_face);
38 auto first_vertex = top_face.first_vertex();
39 top_face.remove_vertex(first_vertex);
40 res = subfaces(top_face);
41 std::list<SimplexHandle> copy = res;
42 for(
auto& simplex : copy){
43 simplex.add_vertex(first_vertex);
45 res.push_back(SimplexHandle(first_vertex));
46 res.splice(res.end(),copy);
54 template<
typename SimplexHandle>
56 std::vector< std::set<SimplexHandle> >& simplices_per_dimension,
57 const SimplexHandle& top_face){
58 std::list<SimplexHandle> subfaces_list = subfaces(top_face);
59 for(
auto& simplex : subfaces_list ){
60 simplices_per_dimension[simplex.dimension()].insert(simplex);