PolyBoRi
CGenericIter.h
Go to the documentation of this file.
1 // -*- c++ -*-
2 //*****************************************************************************
85 //*****************************************************************************
86 
87 
88 // include basic definitions
89 #include "pbori_defs.h"
90 #include "pbori_algo.h"
91 
92 // get stuff for term iteration
93 #include "CStackSelector.h"
94 #include "CTermIter.h"
95 #include "CTermGenerator.h"
96 
97 
98 #ifndef CGenericIter_h_
99 #define CGenericIter_h_
100 
102 
103 template <class OrderType, class NaviType, class RefType>
104 struct pbori_base<CGenericIter<OrderType, NaviType, RefType> > {
105 
106  typedef typename CStackSelector<OrderType, NaviType>::type stack_type;
107 
108  typedef CTermIter<stack_type, CTermGenerator<RefType> > type;
109 };
110 
111 
112 template <class OrderType, class NaviType, class RefType>
113 class CGenericIter:
114  public pbori_base<CGenericIter<OrderType, NaviType, RefType> >::type {
115 
116 public:
117  typedef typename pbori_base<CGenericIter>::type base;
118  typedef typename base::term_generator term_generator;
119 
120  template <class MgrType>
121  CGenericIter(NaviType navi, const MgrType& mgr): base(navi, mgr) {}
122  CGenericIter(): base() {}
123 };
124 
125 template <class OrderType, class NaviType>
126 class CGenericIter<OrderType, NaviType, BooleMonomial>:
127  public pbori_base<CGenericIter<OrderType, NaviType, BooleMonomial> >::type {
128 
129 public:
130  typedef typename pbori_base<CGenericIter>::type base;
131  typedef typename base::term_generator term_generator;
132 
133  template <class MgrType>
134  CGenericIter(NaviType navi, const MgrType& mgr): base(navi, mgr) {}
135 
136  CGenericIter(): base() {}
137 };
138 
140 
141 
142 
143 
144 
146 
147 #endif