16 #ifndef polybori_cache_CDegreeCache_h_
17 #define polybori_cache_CDegreeCache_h_
32 template <
class NaviType>
36 enum { invalid = CTypes::max_idx };
61 m_idx(fromNode(navi, mgr)) {}
69 return (m_idx != invalid);
73 idx_type
fromNode(navigator navi,
const manager_type& mgr)
const {
90 template <
class NaviType>
114 m_navi( toNode(idx, mgr) ) {}
120 operator navigator()
const {
return m_navi; }
124 navigator
toNode(idx_type idx,
const manager_type& mgr)
const {
127 return mgr.
variable(idx).set().navigation();
129 return mgr.
zero().navigation();
136 template <
class DDType>
167 node_type
find(input_node_type navi)
const{
168 return node_type(base::find(navi), base::manager()); }
170 node_type
find(navi_type navi)
const{
171 return node_type(base::find(navi), base::manager()); }
175 base::insert(navi, node_cache_type(deg, base::manager()));
180 base::insert(navi, node_cache_type(deg, base::manager()));
183 node_type
find(input_node_type navi,
deg_type)
const {
return self::find(navi); }
185 node_type
find(navi_type navi,
deg_type)
const{
return self::find(navi); }
189 self::insert(navi, deg);
194 self::insert(navi, deg);
199 template <
class DDType>
231 return node_type(base::find(navi,
232 node_cache_type(upper_bound, base::manager())),
237 return node_type(base::find(navi,
238 node_cache_type(upper_bound, base::manager())),
244 base::insert(navi, node_cache_type(upper_bound, base::manager()),
245 node_cache_type(deg, base::manager()));
250 base::insert(navi, node_cache_type(upper_bound, base::manager()),
251 node_cache_type(deg, base::manager()));
257 template <
class DDType>
260 typename CCacheTypes::block_degree, 2> {
291 return node_type(base::find(navi, node_cache_type(idx, base::manager())),
295 return node_type(base::find(navi, node_cache_type(idx, base::manager())),
300 base::insert(navi, node_cache_type(idx, base::manager()),
301 node_cache_type(deg, base::manager()));
306 base::insert(navi, node_cache_type(idx, base::manager()),
307 node_cache_type(deg, base::manager()));
311 template <
class TagType,
345 return base::find(navi, degree_node_type(deg, base::manager()));
350 base::insert(navi, degree_node_type(deg, base::manager()), result);
dd_type::navigator navi_type
Definition: CDegreeCache.h:215
base::node_type node_type
Extracting inherited node type.
Definition: CCacheManagement.h:474
BoolePolyRing manager_type
Type of decision diagram manager.
Definition: CDegreeCache.h:54
DDType dd_type
Definition: CDegreeCache.h:320
node_type find(navi_type navi) const
Definition: CDegreeCache.h:170
DDType dd_type
Definition: CDegreeCache.h:206
#define END_NAMESPACE_PBORI
Finish project's namespace.
Definition: pbori_defs.h:77
CCacheManagement< BoolePolyRing, tag_type, 2 > base
Definition: CDegreeCache.h:267
CCacheManagement< BoolePolyRing, tag_type, 2 > base
Definition: CDegreeCache.h:322
DDType dd_type
Definition: CDegreeCache.h:265
dd_type::navigator navi_type
Definition: CDegreeCache.h:152
BoolePolyRing manager_type
Type of decision diagram manager.
Definition: CDegreeCache.h:110
CDegreeArgumentCache(const manager_type &mgr)
Constructor.
Definition: CDegreeCache.h:335
idx_type fromNode(navigator navi, const manager_type &mgr) const
Dereference to get stored index.
Definition: CDegreeCache.h:73
manager_type::deg_type deg_type
Definition: CCacheManagement.h:463
#define BEGIN_NAMESPACE_PBORI
Start project's namespace.
Definition: pbori_defs.h:74
~CDegreeCache()
Destructor.
Definition: CDegreeCache.h:164
CIndexHandle< navi_type > node_type
Definition: CDegreeCache.h:276
node_type find(navi_type navi, idx_type idx) const
Definition: CDegreeCache.h:294
node_type find(navi_type navi, deg_type) const
Definition: CDegreeCache.h:185
This template class forms the base for CCommutativeCacheManagement and CacheManager. It is an interface defining find and insert on decision diagram cache.
Definition: CCacheManagement.h:455
idx_type m_idx
Definition: CDegreeCache.h:86
CIndexCacheHandle< navi_type > degree_node_type
Definition: CDegreeCache.h:331
var_type variable(checked_idx_type nvar) const
Access nvar-th ring variable as diagram.
Definition: BoolePolyRing.cc:99
ManagerType manager_type
Definition: CCacheManagement.h:462
CIndexCacheHandle< navi_type > node_cache_type
Definition: CDegreeCache.h:217
void insert(navi_type navi, deg_type upper_bound, deg_type deg) const
Store cached degree wrt. given navigator.
Definition: CDegreeCache.h:249
Definition: CDegreeCache.h:313
CBoundedDegreeCache(const manager_type &mgr)
Constructor.
Definition: CDegreeCache.h:221
dd_type zero() const
Get empty decision diagram.
Definition: BoolePolyRing.cc:42
CCacheManagement< BoolePolyRing, tag_type, 1 > base
Definition: CDegreeCache.h:145
base::node_type input_node_type
Definition: CDegreeCache.h:213
CIndexHandle< navi_type > node_type
Definition: CDegreeCache.h:216
~CDegreeArgumentCache()
Destructor.
Definition: CDegreeCache.h:341
void insert(input_node_type navi, deg_type deg) const
Store cached degree wrt. given navigator.
Definition: CDegreeCache.h:174
This class reinterprets decicion diagram managers as Boolean polynomial rings, adds an ordering and v...
Definition: BoolePolyRing.h:40
navi_type find(navi_type navi, size_type deg) const
Find cached degree wrt. given navigator.
Definition: CDegreeCache.h:344
dd_type::navigator navi_type
Definition: CDegreeCache.h:275
This struct contains auxiliary type definitions.
Definition: pbori_defs.h:210
CBlockDegreeCache(const manager_type &mgr)
Constructor.
Definition: CDegreeCache.h:281
CCacheTypes::degree tag_type
Definition: CDegreeCache.h:207
CIndexCacheHandle< navi_type > node_cache_type
Definition: CDegreeCache.h:154
NaviType navigator
Set actual storage type.
Definition: CDegreeCache.h:95
node_type find(input_node_type navi, deg_type) const
Find cached degree wrt. given navigator (ignoring bound as second argument)
Definition: CDegreeCache.h:183
void insert(navi_type navi, size_type deg, navi_type result) const
Store cached degree wrt. given navigator.
Definition: CDegreeCache.h:349
CDegreeCache(const manager_type &mgr)
Constructor.
Definition: CDegreeCache.h:158
Definition: CDegreeCache.h:91
#define PBORI_LIKELY(expression)
For optimizing if-branches.
Definition: pbori_defs.h:56
~CBoundedDegreeCache()
Destructor.
Definition: CDegreeCache.h:227
navigator m_navi
Actual navigator, which is stored.
Definition: CDegreeCache.h:133
node_type find(navi_type navi, deg_type upper_bound) const
Definition: CDegreeCache.h:236
navigator base
Define type base.
Definition: CDegreeCache.h:42
node_type find(input_node_type navi) const
Find cached degree wrt. given navigator.
Definition: CDegreeCache.h:167
~CBlockDegreeCache()
Destructor.
Definition: CDegreeCache.h:287
void insert(navi_type navi, deg_type deg) const
Store cached degree wrt. given navigator.
Definition: CDegreeCache.h:179
CCacheTypes::degree tag_type
Definition: CDegreeCache.h:144
CIndexHandle(navigator navi, const manager_type &mgr)
Construct from given navigator.
Definition: CDegreeCache.h:60
CTypes::idx_type idx_type
Type for representing indices.
Definition: CDegreeCache.h:48
base::manager_type manager_type
Definition: CDegreeCache.h:214
Definition: CCacheManagement.h:93
void insert(navi_type navi, deg_type, deg_type deg) const
Store cached degree wrt. given navigator.
Definition: CDegreeCache.h:193
navigator::bool_type bool_type
Define type base.
Definition: CDegreeCache.h:101
base::manager_type manager_type
Definition: CDegreeCache.h:274
DDType dd_type
Definition: CDegreeCache.h:143
navigator::bool_type bool_type
Plain Boolean type.
Definition: CDegreeCache.h:45
NaviType navigator
Set actual storage type.
Definition: CDegreeCache.h:39
CIndexCacheHandle(navigator navi)
Construct from given navigator.
Definition: CDegreeCache.h:117
base::node_type input_node_type
Definition: CDegreeCache.h:150
Definition: CDegreeCache.h:200
manager_type::idx_type idx_type
Definition: CCacheManagement.h:465
size_type nVariables() const
Get number of ring variables.
Definition: BoolePolyRing.h:126
CDegreeCache(const self &rhs)
Copy Constructor.
Definition: CDegreeCache.h:161
void insert(navi_type navi, idx_type idx, size_type deg) const
Store cached degree wrt. given navigator.
Definition: CDegreeCache.h:305
CIndexCacheHandle< navi_type > node_cache_type
Definition: CDegreeCache.h:277
Definition: CDegreeCache.h:258
manager_type::size_type size_type
Definition: CCacheManagement.h:464
CIndexCacheHandle(idx_type idx, const manager_type &mgr)
Construct from index.
Definition: CDegreeCache.h:113
CIndexHandle(idx_type idx)
Construct from index.
Definition: CDegreeCache.h:57
TagType tag_type
Definition: CDegreeCache.h:321
base::node_type node_type
Definition: CDegreeCache.h:328
CBoundedDegreeCache(const self &rhs)
Copy Constructor.
Definition: CDegreeCache.h:224
base::manager_type manager_type
Definition: CDegreeCache.h:151
dd_type::navigator navi_type
Definition: CDegreeCache.h:330
polybori::CTypes::idx_type idx_type
Definition: groebner_defs.h:44
CCacheTypes::block_degree tag_type
Definition: CDegreeCache.h:266
bool isValid() const
Definition: CDegreeCache.h:68
void insert(input_node_type navi, deg_type, deg_type deg) const
Store cached degree wrt. given navigator (ignoring bound as second argument)
Definition: CDegreeCache.h:188
void insert(input_node_type navi, idx_type idx, size_type deg) const
Store cached degree wrt. given navigator.
Definition: CDegreeCache.h:299
std::size_t size_type
Type for lengths, dimensions, etc.
Definition: pbori_defs.h:219
Definition: CDegreeCache.h:137
navigator::size_type size_type
Type for representing size.
Definition: CDegreeCache.h:107
This class defines an uses an navigator-like type for storing integer values from 0 upto nmax (number...
Definition: CDegreeCache.h:33
This class defines an iterator for navigating through then and else branches of ZDDs.
Definition: CCuddNavigator.h:36
base::node_type input_node_type
Definition: CDegreeCache.h:273
CBlockDegreeCache(const self &rhs)
Copy Constructor.
Definition: CDegreeCache.h:284
navigator::value_type idx_type
Type for representing indices.
Definition: CDegreeCache.h:104
node_type find(input_node_type navi, deg_type upper_bound) const
Find cached degree wrt. given navigator.
Definition: CDegreeCache.h:230
CTypes::size_type size_type
Type for representing size.
Definition: CDegreeCache.h:51
CIndexHandle< navi_type > node_type
Definition: CDegreeCache.h:153
base::manager_type manager_type
Definition: CDegreeCache.h:329
navigator toNode(idx_type idx, const manager_type &mgr) const
Convert plain number to navigation type.
Definition: CDegreeCache.h:124
node_type find(input_node_type navi, idx_type idx) const
Find cached degree wrt. given navigator.
Definition: CDegreeCache.h:290
#define PBORI_UNLIKELY(expression)
Definition: pbori_defs.h:59
CDegreeArgumentCache(const self &rhs)
Copy Constructor.
Definition: CDegreeCache.h:338
CCacheManagement< BoolePolyRing, tag_type, 2 > base
Definition: CDegreeCache.h:208
idx_type operator*() const
Dereference to get stored index.
Definition: CDegreeCache.h:64
void insert(input_node_type navi, deg_type upper_bound, deg_type deg) const
Store cached degree wrt. given navigator.
Definition: CDegreeCache.h:243
Definition: CCacheManagement.h:59