#include <CGAL/Combinatorial_map.h>
#include <CGAL/Combinatorial_map_constructors.h>
#include <iostream>
#include <cstdlib>
typedef CMap_4::Dart_handle Dart_handle;
Dart_handle make_triangle(CMap_4& amap)
{
Dart_handle d1 = amap.create_dart();
Dart_handle d2 = amap.create_dart();
Dart_handle d3 = amap.create_dart();
amap.link_beta<1>(d1,d2);
amap.link_beta<1>(d2,d3);
amap.link_beta<1>(d3,d1);
return d1;
}
Dart_handle make_tetrahedral(CMap_4& amap)
{
Dart_handle d1 = make_triangle(amap);
Dart_handle d2 = make_triangle(amap);
Dart_handle d3 = make_triangle(amap);
Dart_handle d4 = make_triangle(amap);
amap.link_beta<2>(d1, d2);
amap.link_beta<2>(d3, d2->beta(0));
amap.link_beta<2>(d1->beta(1), d3->beta(0));
amap.link_beta<2>(d4, d2->beta(1));
amap.link_beta<2>(d4->beta(0), d3->beta(1));
amap.link_beta<2>(d4->beta(1), d1->beta(0));
return d1;
}
int main()
{
CMap_4 cm;
Dart_handle d1 = make_tetrahedral(cm);
Dart_handle d2 = make_tetrahedral(cm);
cm.sew<4>(d1,d2);
cm.display_characteristics(std::cout);
std::cout<<", valid="<<cm.is_valid()<<std::endl;
return EXIT_SUCCESS;
}