PolyBoRi
RedTailNth.h
Go to the documentation of this file.
1 // -*- c++ -*-
2 //*****************************************************************************
14 //*****************************************************************************
15 
16 #ifndef polybori_groebner_RedTailNth_h_
17 #define polybori_groebner_RedTailNth_h_
18 
19 // include basic definitions
20 #include "groebner_defs.h"
21 
22 #include "PolyEntry.h"
23 #include "PolyEntryReference.h"
24 #include "ReductionStrategy.h"
25 
27 
35 class RedTailNth {
36 public:
37  RedTailNth(ReductionStrategy& strat): m_strat(strat) {}
38 
39  template <class KeyType>
40  const Polynomial& operator()(const KeyType& key) {
41  return get(m_strat(key)).p;
42  }
43 
44 private:
45  const PolyEntry& get(PolyEntryReference entry) {
46  return entry = red_tail(m_strat, entry.get().p);
47  }
48 
49  ReductionStrategy& m_strat;
50 };
51 
53 
54 #endif /* polybori_groebner_RedTailNth_h_ */