74 #ifndef pbori_order_h_
75 #define pbori_order_h_
80 get_ordering(CTypes::ordercode_type order) {
83 if(order == CTypes::lp)
84 return order_ptr(new CDynamicOrder<LexOrder>);
85 else if(order == CTypes::dlex)
86 return order_ptr(new CDynamicOrder<DegLexOrder>);
87 else if(order == CTypes::dp_asc)
88 return order_ptr(new CDynamicOrder<DegRevLexAscOrder>);
89 else if(order == CTypes::block_dlex)
90 return order_ptr(new CDynamicOrder<BlockDegLexOrder>);
91 else if(order == CTypes::block_dp_asc)
92 return order_ptr(new CDynamicOrder<BlockDegRevLexAscOrder>);
95 return order_ptr(new CDynamicOrder<LexOrder>);
101 template <class LhsType, class RhsType, class BinaryPredicate>
102 class lex_compare_predicate:
103 public std::binary_function<LhsType, RhsType,
bool> {
107 lex_compare_predicate(
const BinaryPredicate& comp):
111 bool operator()(
const LhsType& lhs,
const RhsType& rhs)
const {
112 return std::lexicographical_compare(lhs.begin(), lhs.end(),
113 rhs.begin(), rhs.end(), m_comp);
117 BinaryPredicate m_comp;