Go to the documentation of this file.00001
00002
00037
00038
00039
00040 #include "pbori_defs.h"
00041
00042
00043 #include "pbori_func.h"
00044
00045
00046 #include "CTermStack.h"
00047
00048
00049 #include <iterator>
00050
00051
00052 #ifndef CStackSelector_h_
00053 #define CStackSelector_h_
00054
00055 BEGIN_NAMESPACE_PBORI
00059 template <class OrderType, class NaviType, class BaseType = internal_tag>
00060 class CStackSelector {
00061
00063
00064 typedef BaseType base;
00065 typedef NaviType navigator;
00066 typedef typename OrderType::descending_property descending;
00067 typedef typename OrderType::degorder_property deg_prop;
00068 typedef typename OrderType::blockorder_property block_prop;
00070
00072 typedef CTermStack<navigator, std::forward_iterator_tag, base> lex_type;
00073
00075 typedef CDegTermStack<navigator, descending, invalid_tag, base> deg_type;
00076
00078 typedef CBlockTermStack<navigator, descending, base> block_type;
00079
00081 typedef typename on_same_type<deg_prop, valid_tag,
00082 deg_type, lex_type>::type nonblock_type;
00083
00084 public:
00086 typedef typename on_same_type<block_prop, valid_tag,
00087 block_type, nonblock_type>::type type;
00088 };
00089
00090
00091 END_NAMESPACE_PBORI
00092
00093 #endif