17 #ifndef polybori_BoolePolyRing_h_
18 #define polybori_BoolePolyRing_h_
27 #include <boost/intrusive_ptr.hpp>
79 typedef boost::intrusive_ptr<core_type>
core_ptr;
108 p_core(rhs.operator->()) {
PBORI_ASSERT(p_core != NULL); }
113 ordercode_type order =
lp);
130 return p_core->m_names[idx];
135 p_core->m_names.set(idx, varname);
142 ostream_type& print(ostream_type&)
const;
146 return static_cast<hash_type>(
reinterpret_cast<std::ptrdiff_t
152 return static_cast<hash_type>(
reinterpret_cast<std::ptrdiff_t
>(p_core.operator->()));
165 void changeOrdering(ordercode_type);
168 poly_type coerce(
const poly_type& rhs)
const;
171 monom_type coerce(
const monom_type& rhs)
const;
174 var_type coerce(
const var_type& rhs)
const;
177 dd_type variableDiagram(checked_idx_type nvar)
const;
180 var_type variable(checked_idx_type nvar)
const;
183 dd_type zero()
const;
189 dd_type constant(
bool is_one)
const;
200 inline BoolePolyRing::ostream_type&
202 return ring.
print(os);
208 #endif // of #ifndef polybori_BoolePolyRing_h_