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

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

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


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 78 of file Interval_Info.inlines.hh.

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

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

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

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

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

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

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

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

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

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_bool_nodef ( cache_empty  ,
Policy::cache_empty   
)
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 ( store_open  ,
Policy::store_open   
)
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 ( check_inexact  ,
Policy::check_inexact   
)
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 ( may_be_empty  ,
Policy::may_be_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>
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 ( 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_is_bit  ,
upper_normalized_bit+  cache_normalized 
)
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 ( 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_special_bit  ,
lower_normalized_bit+  cache_normalized 
)
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 ( 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_special_bit  ,
Policy::next_bit   
)
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 227 of file Interval_Info.defs.hh.

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

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

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 272 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.

00272                                                           {
00273     switch (p.type) {
00274     case Interval_NS::Property::CARDINALITY_0_:
00275       return cache_empty && get_bit(bitset, cardinality_0_bit);
00276     case Interval_NS::Property::CARDINALITY_1_:
00277       return cache_singleton && get_bit(bitset, cardinality_1_bit);
00278     case Interval_NS::Property::CARDINALITY_IS_:
00279       return (cache_empty || cache_singleton)
00280         && 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 >::set_boundary_property ( Boundary_Type  t,
const Boundary_NS::Property &  p,
bool  value = true 
) [inline]

Definition at line 197 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().

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

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 254 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.

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

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

Swaps *this with y.

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

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

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

00072                                                                         {
00073   std::swap(bitset, y.bitset);
00074 }


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 115 of file Interval_Info.inlines.hh.

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

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


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 Sun Feb 27 16:20:28 2011 for PPL by  doxygen 1.6.3