lin_order.h
上传用户:gzelex
上传日期:2007-01-07
资源大小:707k
文件大小:1k
开发平台:

MultiPlatform

  1. /*******************************************************************************
  2. +
  3. +  LEDA-R  3.2.3
  4. +
  5. +  lin_order.h
  6. +
  7. +  Copyright (c) 1995  by  Max-Planck-Institut fuer Informatik
  8. +  Im Stadtwald, 66123 Saarbruecken, Germany     
  9. +  All rights reserved.
  10. *******************************************************************************/
  11. #ifndef LEDA_LIN_ORDER_H
  12. #define LEDA_LIN_ORDER_H
  13. //------------------------------------------------------------------------------
  14. // Defining Linear Orders
  15. //------------------------------------------------------------------------------
  16. #define DEFINE_LINEAR_ORDER(type,cmp,new_type)
  17. struct new_type : public type
  18. { new_type(type s)            : type(s) {}
  19.   new_type(const new_type& s) : type(s) {}
  20.   new_type() {}
  21.  ~new_type() {}
  22. };
  23. inline int compare(const new_type& x, const new_type& y) { return cmp(x,y); }
  24. // INT<cmp>: int with user defined linear order cmp
  25. typedef int (*CMP_INT_TYPE)(const int&, const int&);
  26. template<CMP_INT_TYPE cmp> 
  27. class INT {
  28.   int p;
  29. public:
  30.   INT(const int i=0) { p = i;}
  31.   operator int()     { return p; }
  32.   friend int compare(const INT<cmp>& x, const INT<cmp>& y)
  33.   { return cmp(x.p,y.p);}
  34. };
  35. #endif