PolyBoRi
LiteralFactorizationIterator.h
Go to the documentation of this file.
1 // -*- c++ -*-
2 //*****************************************************************************
14 //*****************************************************************************
15 
16 #ifndef polybori_groebner_LiteralFactorizationIterator_h_
17 #define polybori_groebner_LiteralFactorizationIterator_h_
18 
19 // include basic definitions
20 #include "groebner_defs.h"
21 #include "LiteralFactorization.h"
22 
23 #include <algorithm>
24 #include <vector>
25 #include <map>
26 #include <set>
27 #include <utility>
28 
30 
31 
37  typedef LiteralFactorizationIterator self;
38 
39 public:
43 
45  map_type::const_iterator var2const_iter_,
46  var2var_map_type::const_iterator
47  var2var_iter_
48  ):
49  var2var_iter(var2var_iter_), var2const_iter(var2const_iter_),
50  literal_factorization(literal_factorization_),
51  m_ring(literal_factorization_->rest.ring()) { }
52 
53 
54  self & operator++();
55  Polynomial operator*() const;
56 
57  bool operator==(const self& other){
58  return ((literal_factorization==other.literal_factorization)
59  && (var2const_iter==other.var2const_iter) &&
60  (var2var_iter==other.var2var_iter)
61  );
62  }
63  bool operator!=(const self& other){
64  return !(*this==other);
65  }
66 
67 private:
68  var2var_map_type::const_iterator var2var_iter;
69  map_type::const_iterator var2const_iter;
70 
71  const LiteralFactorization* literal_factorization;
72  BoolePolyRing m_ring;
73 };
74 
76 
77 #endif /* polybori_groebner_LiteralFactorizationIterator_h_ */