Go to the documentation of this file.00001
00002
00085
00086
00087
00088
00089 #include "pbori_defs.h"
00090 #include "pbori_algo.h"
00091
00092
00093 #include "CStackSelector.h"
00094 #include "CTermIter.h"
00095 #include "CTermGenerator.h"
00096
00097
00098 #ifndef CGenericIter_h_
00099 #define CGenericIter_h_
00100
00101 BEGIN_NAMESPACE_PBORI
00102
00103 template <class OrderType, class NaviType, class RefType>
00104 struct pbori_base<CGenericIter<OrderType, NaviType, RefType> > {
00105
00106 typedef typename CStackSelector<OrderType, NaviType>::type stack_type;
00107
00108 typedef CTermIter<stack_type, CTermGenerator<RefType> > type;
00109 };
00110
00111
00112 template <class OrderType, class NaviType, class RefType>
00113 class CGenericIter:
00114 public pbori_base<CGenericIter<OrderType, NaviType, RefType> >::type {
00115
00116 public:
00117 typedef typename pbori_base<CGenericIter>::type base;
00118 typedef typename base::term_generator term_generator;
00119
00120 template <class MgrType>
00121 CGenericIter(NaviType navi, const MgrType& mgr): base(navi, mgr) {}
00122 CGenericIter(): base() {}
00123 };
00124
00125 template <class OrderType, class NaviType>
00126 class CGenericIter<OrderType, NaviType, BooleMonomial>:
00127 public pbori_base<CGenericIter<OrderType, NaviType, BooleMonomial> >::type {
00128
00129 public:
00130 typedef typename pbori_base<CGenericIter>::type base;
00131 typedef typename base::term_generator term_generator;
00132
00133 template <class MgrType>
00134 CGenericIter(NaviType navi, const MgrType& mgr): base(navi, mgr) {}
00135
00136 CGenericIter(): base() {}
00137 };
00138
00140
00141
00142
00143
00144
00145 END_NAMESPACE_PBORI
00146
00147 #endif