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 >:

Collaboration graph
[legend]

List of all members.

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_empty_result, Policy::check_empty_result)
 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_normalized, Policy::cache_normalized)
 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)
 const_int_nodef (lower_normalized_bit, lower_open_bit+store_open)
 const_int_nodef (upper_special_bit, lower_normalized_bit+cache_normalized)
 const_int_nodef (upper_open_bit, upper_special_bit+store_special)
 const_int_nodef (upper_normalized_bit, upper_open_bit+store_open)
 const_int_nodef (cardinality_is_bit, upper_normalized_bit+cache_normalized)
 const_int_nodef (cardinality_0_bit, cardinality_is_bit+(cache_empty||cache_singleton))
 const_int_nodef (cardinality_1_bit, cardinality_0_bit+cache_empty)
 const_int_nodef (next_bit, cardinality_1_bit+cache_singleton)
 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 swap (Interval_Info_Bitset &y)
 Swaps *this with y.
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 (Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy > &x, Parma_Polyhedra_Library::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 164 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.

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

00185                          {
00186     // FIXME: would we have speed benefits with uninitialized info?
00187     // (Dirty_Temp)
00188     clear();
00189   }


Member Function Documentation

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_empty_result  ,
Policy::check_empty_result   
)

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_normalized  ,
Policy::cache_normalized   
)

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 
)

template<typename T, typename Policy>
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_int_nodef ( lower_normalized_bit  ,
lower_open_bit+  store_open 
)

template<typename T, typename Policy>
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_int_nodef ( upper_special_bit  ,
lower_normalized_bit+  cache_normalized 
)

template<typename T, typename Policy>
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_int_nodef ( upper_open_bit  ,
upper_special_bit+  store_special 
)

template<typename T, typename Policy>
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_int_nodef ( upper_normalized_bit  ,
upper_open_bit+  store_open 
)

template<typename T, typename Policy>
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_int_nodef ( cardinality_is_bit  ,
upper_normalized_bit+  cache_normalized 
)

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 
)

template<typename T, typename Policy>
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_int_nodef ( cardinality_1_bit  ,
cardinality_0_bit+  cache_empty 
)

template<typename T, typename Policy>
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_int_nodef ( next_bit  ,
cardinality_1_bit+  cache_singleton 
)

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::Interval_Info_Bitset< T, Policy >::set_boundary_property().

00194                                                   {
00195     set_boundary_property(t, SPECIAL, false);
00196     set_boundary_property(t, OPEN, false);
00197   }

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::Interval_Info_Bitset< T, Policy >::bitset, and Parma_Polyhedra_Library::Interval_NS::set_bit().

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

00198                                                                                                {
00199     switch (p.type) {
00200     case Boundary_NS::Property::SPECIAL_:
00201       if (store_special) {
00202         if (t == LOWER)
00203           set_bit(bitset, lower_special_bit, value);
00204         else
00205           set_bit(bitset, upper_special_bit, value);
00206       }
00207       break;
00208     case Boundary_NS::Property::OPEN_:
00209       if (store_open) {
00210         if (t == LOWER)
00211           set_bit(bitset, lower_open_bit, value);
00212         else
00213           set_bit(bitset, upper_open_bit, value);
00214       }
00215       break;
00216     case Boundary_NS::Property::NORMALIZED_:
00217       if (cache_normalized) {
00218         if (t == LOWER)
00219           set_bit(bitset, lower_normalized_bit, value);
00220         else
00221           set_bit(bitset, upper_normalized_bit, value);
00222       }
00223       break;
00224     default:
00225       break;
00226     }
00227   }

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 228 of file Interval_Info.defs.hh.

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

00228                                                                                   {
00229     switch (p.type) {
00230     case Boundary_NS::Property::SPECIAL_:
00231       if (!store_special)
00232         return false;
00233       if (t == LOWER)
00234         return get_bit(bitset, lower_special_bit);
00235       else
00236         return get_bit(bitset, upper_special_bit);
00237     case Boundary_NS::Property::OPEN_:
00238       if (!store_open)
00239         return false;
00240       else if (t == LOWER)
00241         return get_bit(bitset, lower_open_bit);
00242       else
00243         return get_bit(bitset, upper_open_bit);
00244     case Boundary_NS::Property::NORMALIZED_:
00245       if (!cache_normalized)
00246         return false;
00247       else if (t == LOWER)
00248         return get_bit(bitset, lower_normalized_bit);
00249       else
00250         return get_bit(bitset, upper_normalized_bit);
00251     default:
00252       return false;
00253     }
00254   }

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]

Definition at line 255 of file Interval_Info.defs.hh.

References Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::bitset, Parma_Polyhedra_Library::Interval_NS::Property::CARDINALITY_0_, Parma_Polyhedra_Library::Interval_NS::Property::CARDINALITY_1_, Parma_Polyhedra_Library::Interval_NS::Property::CARDINALITY_IS_, Parma_Polyhedra_Library::Interval_NS::set_bit(), and Parma_Polyhedra_Library::Interval_NS::Property::type.

00255                                                                               {
00256     switch (p.type) {
00257     case Interval_NS::Property::CARDINALITY_0_:
00258       if (cache_empty)
00259         set_bit(bitset, cardinality_0_bit, value);
00260       break;
00261     case Interval_NS::Property::CARDINALITY_1_:
00262       if (cache_singleton)
00263         set_bit(bitset, cardinality_1_bit, value);
00264       break;
00265     case Interval_NS::Property::CARDINALITY_IS_:
00266       if (cache_empty || cache_singleton)
00267         set_bit(bitset, cardinality_is_bit, value);
00268       break;
00269     default:
00270       break;
00271     }
00272   }

template<typename T, typename Policy>
bool Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::get_interval_property ( Interval_NS::Property  p  )  const [inline]

Definition at line 273 of file Interval_Info.defs.hh.

References Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::bitset, Parma_Polyhedra_Library::Interval_NS::Property::CARDINALITY_0_, Parma_Polyhedra_Library::Interval_NS::Property::CARDINALITY_1_, Parma_Polyhedra_Library::Interval_NS::Property::CARDINALITY_IS_, Parma_Polyhedra_Library::Interval_NS::get_bit(), and Parma_Polyhedra_Library::Interval_NS::Property::type.

00273                                                           {
00274     switch (p.type) {
00275     case Interval_NS::Property::CARDINALITY_0_:
00276       return cache_empty && get_bit(bitset, cardinality_0_bit);
00277     case Interval_NS::Property::CARDINALITY_1_:
00278       return cache_singleton && get_bit(bitset, cardinality_1_bit);
00279     case Interval_NS::Property::CARDINALITY_IS_:
00280       return (cache_empty || cache_singleton) && get_bit(bitset, cardinality_is_bit);
00281     default:
00282       return false;
00283     }
00284   }

template<typename T, typename Policy>
void Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::swap ( Interval_Info_Bitset< T, Policy > &  y  )  [inline]

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

Definition at line 77 of file Interval_Info.inlines.hh.

References Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::bitset.

00077                                                                {
00078   std::ios_base::fmtflags old = s.flags();
00079   s << std::hex << bitset;
00080   s.flags(old);
00081 }

template<typename T, typename Policy>
bool Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::ascii_load ( std::istream &  s  )  [inline]

Definition at line 85 of file Interval_Info.inlines.hh.

References Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::bitset.

00085                                                          {
00086   std::ios_base::fmtflags old = s.flags();
00087   if (s >> std::hex >> bitset) {
00088     s.flags(old);
00089     return s;
00090   }
00091   else
00092     return false;
00093 }


Friends And Related Function Documentation

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

Definition at line 114 of file Interval_Info.inlines.hh.

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

00115                                                                 {
00116   x.swap(y);
00117 }


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:

Generated on Sat Oct 11 10:41:12 2008 for PPL by  doxygen 1.5.6