00001
00004 #ifndef __COMBI_MAP_HH__
00005 #define __COMBI_MAP_HH__
00006
00007 #include <label.hh>
00008
00009
00011 typedef enum{right_move,up_move,left_move,down_move} move_type;
00012
00014 class combi_map
00015 {
00016 public:
00018 virtual dart sigma(dart) const=0;
00020
00021 dart sigma_1(dart b)
00022 {
00023 dart b_prev, s=phi(b);
00024 while(s != b)
00025 {
00026 b_prev=s;
00027 s=phi(s);
00028 }
00029 return alpha(b_prev);
00030 }
00033 dart phi(dart b)
00034 {
00035 return sigma(alpha(b));
00036 }
00038 virtual dart alpha(dart) const=0;
00040 virtual int give_nb_edge() const =0 ;
00042 virtual unsigned long give_background() const =0;
00043 };
00044
00045 #endif // __COMBI_MAP_HH__