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

pbori_order.h

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

Generated on Wed Sep 29 2010 for PolyBoRi by  doxygen 1.7.1