PolyBoRi
SetFactory.h
Go to the documentation of this file.
1 // -*- c++ -*-
2 //*****************************************************************************
15 //*****************************************************************************
16 
17 #ifndef polybori_SetFactory_h_
18 #define polybori_SetFactory_h_
19 
20 // include basic definitions
21 #include <polybori/pbori_defs.h>
23 #include <polybori/BooleSet.h>
24 #include <polybori/BooleMonomial.h>
26 
33 class SetFactory:
34  public CFactoryBase {
36  typedef SetFactory self;
37 
39  typedef CFactoryBase base;
40 
41 public:
44 
47 
49  SetFactory(const parent_type& ring): base(ring) {}
50 
52  SetFactory(const self& rhs): base(rhs) {}
53 
56 
58  value_type operator()() const {
59  return value_type(parent());
60  }
61 
63  value_type operator()(const value_type& rhs) const {
64  return rhs;
65  }
66 
68  value_type operator()(const value_type::ring_type& ring) const {
69  return value_type(ring);
70  }
71 
74  const value_type& first,
75  const value_type& second) const {
76  return value_type(idx, first, second);
77  }
78 
82  value_type::navigator second) const {
83  return value_type(idx, first, second, parent());
84  }
85 
89  value_type::navigator second,
90  value_type::ring_type& ring) const {
91  return value_type(idx, first, second, ring);
92  }
93 
96  value_type::ring_type& ring) const {
97  return value_type(navi, ring);
98  }
99 
101  value_type operator()(value_type::navigator navi) const {
102  return value_type(navi, parent());
103  }
104 };
105 
107 
108 #endif /* polybori_SetFactory_h_ */
#define END_NAMESPACE_PBORI
Finish project's namespace.
Definition: pbori_defs.h:77
value_type operator()(value_type::idx_type idx, const value_type &first, const value_type &second) const
Construct new node.
Definition: SetFactory.h:73
#define BEGIN_NAMESPACE_PBORI
Start project's namespace.
Definition: pbori_defs.h:74
value_type operator()(value_type::idx_type idx, value_type::navigator first, value_type::navigator second, value_type::ring_type &ring) const
Construct new node (using navigator nodes and explicit ring)
Definition: SetFactory.h:87
This class reinterprets decicion diagram managers as Boolean polynomial rings, adds an ordering and v...
Definition: BoolePolyRing.h:40
value_type operator()(value_type::idx_type idx, value_type::navigator first, value_type::navigator second) const
Construct new node (using navigator nodes)
Definition: SetFactory.h:80
value_type operator()(const value_type &rhs) const
Indirect copy constructor.
Definition: SetFactory.h:63
SetFactory(const self &rhs)
Copy constructor.
Definition: SetFactory.h:52
base::parent_type parent_type
Type of parent.
Definition: SetFactory.h:43
BooleSet value_type
We construct element of this type.
Definition: SetFactory.h:46
value_type operator()(value_type::navigator navi) const
Construct new node from navigator.
Definition: SetFactory.h:101
This base class CFactoryBase is used for currying other constructors with a BoolePolyRing.
Definition: CFactoryBase.h:35
int idx_type
Type for indices.
Definition: pbori_defs.h:228
value_type operator()() const
Get empty set of the ring.
Definition: SetFactory.h:58
This base class SetFactory is used for currying set constructors with a BoolePolyRing.
Definition: SetFactory.h:33
value_type operator()(const value_type::ring_type &ring) const
Get first variable of explicit ring.
Definition: SetFactory.h:68
value_type operator()(value_type::navigator navi, value_type::ring_type &ring) const
Construct new node from navigator (using explicit ring)
Definition: SetFactory.h:95
SetFactory(const parent_type &ring)
Construct from given ring.
Definition: SetFactory.h:49
This class defines an iterator for navigating through then and else branches of ZDDs.
Definition: CCuddNavigator.h:36
Definition: BooleSet.h:57
~SetFactory()
Destructor.
Definition: SetFactory.h:55