PPL  1.2
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy > Class Template Reference

#include <Interval_Info_defs.hh>

Collaboration diagram for Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >:

Public Member Functions

 const_bool_nodef (may_be_empty, Policy::may_be_empty)
 
 const_bool_nodef (may_contain_infinity, Policy::may_contain_infinity)
 
 const_bool_nodef (check_inexact, Policy::check_inexact)
 
 const_bool_nodef (store_special, Policy::store_special)
 
 const_bool_nodef (store_open, Policy::store_open)
 
 const_bool_nodef (cache_empty, Policy::cache_empty)
 
 const_bool_nodef (cache_singleton, Policy::cache_singleton)
 
 const_int_nodef (lower_special_bit, Policy::next_bit)
 
 const_int_nodef (lower_open_bit, lower_special_bit+(store_special?1:0))
 
 const_int_nodef (upper_special_bit, lower_open_bit+(store_open?1:0))
 
 const_int_nodef (upper_open_bit, upper_special_bit+(store_special?1:0))
 
 const_int_nodef (cardinality_is_bit, upper_open_bit+(store_open?1:0))
 
 const_int_nodef (cardinality_0_bit, cardinality_is_bit+((cache_empty||cache_singleton)?1:0))
 
 const_int_nodef (cardinality_1_bit, cardinality_0_bit+(cache_empty?1:0))
 
 const_int_nodef (next_bit, cardinality_1_bit+(cache_singleton?1:0))
 
 Interval_Info_Bitset ()
 
void clear ()
 
void clear_boundary_properties (Boundary_Type t)
 
void set_boundary_property (Boundary_Type t, const Boundary_NS::Property &p, bool value=true)
 
bool get_boundary_property (Boundary_Type t, const Boundary_NS::Property &p) const
 
void set_interval_property (const Interval_NS::Property &p, bool value=true)
 
bool get_interval_property (Interval_NS::Property p) const
 
void m_swap (Interval_Info_Bitset &y)
 Swaps *this with y. More...
 
void ascii_dump (std::ostream &s) const
 
bool ascii_load (std::istream &s)
 

Protected Attributes

bitset
 

Related Functions

(Note that these are not member functions.)

template<typename T , typename Policy >
void swap (Interval_Info_Bitset< T, Policy > &x, Interval_Info_Bitset< T, Policy > &y)
 

Detailed Description

template<typename T, typename Policy>
class Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >

Definition at line 166 of file Interval_Info_defs.hh.

Constructor & Destructor Documentation

template<typename T, typename Policy>
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::Interval_Info_Bitset ( )
inline

Definition at line 185 of file Interval_Info_defs.hh.

185  {
186  // FIXME: would we have speed benefits with uninitialized info?
187  // (Dirty_Temp)
188  clear();
189  }

Member Function Documentation

template<typename T , typename Policy >
void Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::ascii_dump ( std::ostream &  s) const
inline

Definition at line 80 of file Interval_Info_inlines.hh.

80  {
81  const std::ios::fmtflags old_flags = s.setf(std::ios::hex,
82  std::ios::basefield);
83  s << bitset;
84  s.flags(old_flags);
85 }
template<typename T , typename Policy >
bool Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::ascii_load ( std::istream &  s)
inline

Definition at line 89 of file Interval_Info_inlines.hh.

89  {
90  const std::ios::fmtflags old_flags = s.setf(std::ios::hex,
91  std::ios::basefield);
92  s >> bitset;
93  s.flags(old_flags);
94  return !s.fail();
95 }
template<typename T, typename Policy>
void Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::clear ( )
inline
template<typename T, typename Policy>
void Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::clear_boundary_properties ( Boundary_Type  t)
inline

Definition at line 194 of file Interval_Info_defs.hh.

References Parma_Polyhedra_Library::Boundary_NS::OPEN, and Parma_Polyhedra_Library::Boundary_NS::SPECIAL.

194  {
195  set_boundary_property(t, SPECIAL, false);
196  set_boundary_property(t, OPEN, false);
197  }
static const Property OPEN(Property::OPEN_)
static const Property SPECIAL(Property::SPECIAL_)
void set_boundary_property(Boundary_Type t, const Boundary_NS::Property &p, bool value=true)
template<typename T, typename Policy>
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_bool_nodef ( may_be_empty  ,
Policy::may_be_empty   
)
template<typename T, typename Policy>
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_bool_nodef ( may_contain_infinity  ,
Policy::may_contain_infinity   
)
template<typename T, typename Policy>
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_bool_nodef ( check_inexact  ,
Policy::check_inexact   
)
template<typename T, typename Policy>
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_bool_nodef ( store_special  ,
Policy::store_special   
)
template<typename T, typename Policy>
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_bool_nodef ( store_open  ,
Policy::store_open   
)
template<typename T, typename Policy>
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_bool_nodef ( cache_empty  ,
Policy::cache_empty   
)
template<typename T, typename Policy>
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_bool_nodef ( cache_singleton  ,
Policy::cache_singleton   
)
template<typename T, typename Policy>
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_int_nodef ( lower_special_bit  ,
Policy::next_bit   
)
template<typename T, typename Policy>
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_int_nodef ( lower_open_bit  ,
lower_special_bit+  store_special?1:0 
)
template<typename T, typename Policy>
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_int_nodef ( upper_special_bit  ,
lower_open_bit+  store_open?1:0 
)
template<typename T, typename Policy>
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_int_nodef ( upper_open_bit  ,
upper_special_bit+  store_special?1:0 
)
template<typename T, typename Policy>
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_int_nodef ( cardinality_is_bit  ,
upper_open_bit+  store_open?1:0 
)
template<typename T, typename Policy>
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_int_nodef ( cardinality_0_bit  ,
cardinality_is_bit+  (cache_empty||cache_singleton)?1:0 
)
template<typename T, typename Policy>
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_int_nodef ( cardinality_1_bit  ,
cardinality_0_bit+  cache_empty?1:0 
)
template<typename T, typename Policy>
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_int_nodef ( next_bit  ,
cardinality_1_bit+  cache_singleton?1:0 
)
template<typename T, typename Policy>
bool Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::get_boundary_property ( Boundary_Type  t,
const Boundary_NS::Property p 
) const
inline

Definition at line 226 of file Interval_Info_defs.hh.

References Parma_Polyhedra_Library::Interval_NS::get_bit(), Parma_Polyhedra_Library::Boundary_NS::LOWER, Parma_Polyhedra_Library::Boundary_NS::Property::OPEN_, Parma_Polyhedra_Library::Boundary_NS::Property::SPECIAL_, and Parma_Polyhedra_Library::Boundary_NS::Property::type.

226  {
227  switch (p.type) {
229  if (!store_special) {
230  return false;
231  }
232  if (t == LOWER) {
233  return get_bit(bitset, lower_special_bit);
234  }
235  else {
236  return get_bit(bitset, upper_special_bit);
237  }
239  if (!store_open) {
240  return false;
241  }
242  else if (t == LOWER) {
243  return get_bit(bitset, lower_open_bit);
244  }
245  else {
246  return get_bit(bitset, upper_open_bit);
247  }
248  default:
249  return false;
250  }
251  }
bool get_bit(const T &bits, unsigned int bit)
template<typename T, typename Policy>
bool Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::get_interval_property ( Interval_NS::Property  p) const
inline
template<typename T , typename Policy >
void Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::m_swap ( Interval_Info_Bitset< T, Policy > &  y)
inline

Swaps *this with y.

Definition at line 73 of file Interval_Info_inlines.hh.

References Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::bitset, and Parma_Polyhedra_Library::swap().

Referenced by Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::swap().

73  {
74  using std::swap;
75  swap(bitset, y.bitset);
76 }
void swap(CO_Tree &x, CO_Tree &y)
void swap(Interval_Info_Bitset< T, Policy > &x, Interval_Info_Bitset< T, Policy > &y)
template<typename T, typename Policy>
void Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::set_boundary_property ( Boundary_Type  t,
const Boundary_NS::Property p,
bool  value = true 
)
inline

Definition at line 198 of file Interval_Info_defs.hh.

References Parma_Polyhedra_Library::Boundary_NS::LOWER, Parma_Polyhedra_Library::Boundary_NS::Property::OPEN_, Parma_Polyhedra_Library::Interval_NS::set_bit(), Parma_Polyhedra_Library::Boundary_NS::Property::SPECIAL_, Parma_Polyhedra_Library::Boundary_NS::Property::type, and value.

200  {
201  switch (p.type) {
203  if (store_special) {
204  if (t == LOWER) {
205  set_bit(bitset, lower_special_bit, value);
206  }
207  else {
208  set_bit(bitset, upper_special_bit, value);
209  }
210  }
211  break;
213  if (store_open) {
214  if (t == LOWER) {
215  set_bit(bitset, lower_open_bit, value);
216  }
217  else {
218  set_bit(bitset, upper_open_bit, value);
219  }
220  }
221  break;
222  default:
223  break;
224  }
225  }
void set_bit(T &bits, unsigned int bit, bool value)
Coefficient value
Definition: PIP_Tree.cc:618
template<typename T, typename Policy>
void Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::set_interval_property ( const Interval_NS::Property p,
bool  value = true 
)
inline

Friends And Related Function Documentation

template<typename T , typename Policy >
void swap ( Interval_Info_Bitset< T, Policy > &  x,
Interval_Info_Bitset< T, Policy > &  y 
)
related

Definition at line 111 of file Interval_Info_inlines.hh.

References Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::m_swap().

111  {
112  x.m_swap(y);
113 }

Member Data Documentation

template<typename T, typename Policy>
T Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::bitset
protected

The documentation for this class was generated from the following files: