PolyBoRi
BooleSetSequence.h
Go to the documentation of this file.
1 // -*- c++ -*-
2 //*****************************************************************************
14 //*****************************************************************************
15 
16 #ifndef polybori_BooleSetSequence_h_
17 #define polybori_BooleSetSequence_h_
18 
19 // include basic definitions
20 #include <polybori/pbori_defs.h>
21 
22 #include <vector>
23 #include <algorithm>
24 
25 #include <polybori/BooleSet.h>
26 
28 
34 
35 public:
36  typedef std::vector<BooleSet> vector_type;
37  typedef vector_type::const_iterator const_iterator;
38  typedef vector_type::const_reverse_iterator const_reverse_iterator;
39 
41  BooleSetSequence(): m_termsets() { }
42 
43 
45  template <class SetType, class Operator>
46  BooleSetSequence(const SetType& terms, const Operator& func):
47  m_termsets(terms.size(), terms.ring()) {
48  std::transform(terms.begin(), terms.end(), m_termsets.begin(), func);
49  }
50 
52 
53  const_iterator begin() const { return m_termsets.begin(); }
54  const_iterator end() const { return m_termsets.end(); }
55  const_reverse_iterator rbegin() const { return m_termsets.rbegin(); }
56  const_reverse_iterator rend() const { return m_termsets.rend(); }
57  bool empty() const { return m_termsets.empty(); }
59 
60 private:
61  vector_type m_termsets;
62 };
63 
64 
66 
67 #endif /* polybori_BooleSetSequence_h_ */