• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

CStackSelector.h

Go to the documentation of this file.
00001 // -*- c++ -*-
00002 //*****************************************************************************
00034 //*****************************************************************************
00035 
00036 // include basic definitions
00037 #include "pbori_defs.h"
00038 
00039 // include polybori's functionals
00040 #include "pbori_func.h"
00041 
00042 // get stack types, which are used to store and handle paths of current terms
00043 #include "CTermStack.h"
00044 //#include "CDegTermStack.h"
00045 //#include "CBlockTermStack.h"
00046 
00047 // include standard iterator functionality
00048 #include <iterator>
00049 
00050 
00051 #ifndef CStackSelector_h_
00052 #define CStackSelector_h_
00053 
00054 BEGIN_NAMESPACE_PBORI
00055 
00056 template <class OrderType, class NaviType, class BaseType = internal_tag> 
00057 class CStackSelector {
00058 
00060 
00061   typedef BaseType base;
00062   typedef NaviType navigator;
00063   typedef typename OrderType::descending_property descending;
00064   typedef typename OrderType::degorder_property deg_prop;
00065   typedef typename OrderType::blockorder_property block_prop;
00067 
00069   typedef CTermStack<navigator, std::forward_iterator_tag, base> lex_type;
00070 
00072   typedef CDegTermStack<navigator, descending, invalid_tag, base> deg_type;
00073 
00075   typedef CBlockTermStack<navigator, descending, base> block_type;
00076 
00078   typedef typename on_same_type<deg_prop, valid_tag,
00079                                 deg_type, lex_type>::type nonblock_type;
00080   
00081 public:
00083   typedef typename on_same_type<block_prop, valid_tag,
00084                                 block_type, nonblock_type>::type type;
00085 };
00086 
00087 
00088 END_NAMESPACE_PBORI
00089 
00090 #endif

Generated on Thu Oct 21 2010 06:56:30 for PolyBoRi by  doxygen 1.7.1