• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

pbori_order.h

Go to the documentation of this file.
00001 // -*- c++ -*-
00002 //*****************************************************************************
00060 //*****************************************************************************
00061 
00062 // include basic definitions
00063 #include "pbori_defs.h"
00064 
00065 #include "OrderedManager.h"
00066 
00067 // get all available orderings
00068 #include "LexOrder.h"
00069 #include "DegLexOrder.h"
00070 #include "DegRevLexAscOrder.h"
00071 #include "BlockDegLexOrder.h"
00072 #include "BlockDegRevLexAscOrder.h"
00073 
00074 #ifndef pbori_order_h_
00075 #define pbori_order_h_
00076 
00077 BEGIN_NAMESPACE_PBORI
00078 
00079 inline PBORI_SHARED_PTR(CDynamicOrderBase)
00080 get_ordering(CTypes::ordercode_type order) {
00081   typedef PBORI_SHARED_PTR(CDynamicOrderBase) order_ptr;
00082 
00083   if(order == CTypes::lp)
00084     return order_ptr(new CDynamicOrder<LexOrder>);
00085   else if(order == CTypes::dlex)
00086     return order_ptr(new CDynamicOrder<DegLexOrder>);
00087   else if(order == CTypes::dp_asc)
00088     return order_ptr(new CDynamicOrder<DegRevLexAscOrder>);
00089   else if(order == CTypes::block_dlex)
00090     return order_ptr(new CDynamicOrder<BlockDegLexOrder>);
00091   else if(order == CTypes::block_dp_asc)
00092      return order_ptr(new CDynamicOrder<BlockDegRevLexAscOrder>);
00093 
00094   // default is lex order
00095   return order_ptr(new CDynamicOrder<LexOrder>);
00096 }
00097 
00098 
00101 template <class LhsType, class RhsType, class BinaryPredicate>
00102 class lex_compare_predicate:
00103   public std::binary_function<LhsType, RhsType, bool> {
00104 public:
00105 
00107   lex_compare_predicate(const BinaryPredicate& comp):
00108     m_comp(comp) {}
00109 
00111   bool operator()(const LhsType& lhs, const RhsType& rhs) const {
00112     return std::lexicographical_compare(lhs.begin(), lhs.end(), 
00113                                         rhs.begin(), rhs.end(), m_comp);
00114   }
00115 
00116 private:
00117   BinaryPredicate m_comp;
00118 };
00119 
00120 END_NAMESPACE_PBORI
00121 
00122 #endif

Generated on Thu Oct 21 2010 15:45:58 for PolyBoRi by  doxygen 1.7.1