#include <Interval_Info.defs.hh>
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 | |
T | 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) |
Definition at line 164 of file Interval_Info.defs.hh.
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 }
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_bool_nodef | ( | may_be_empty | , | |
Policy::may_be_empty | ||||
) |
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_bool_nodef | ( | may_contain_infinity | , | |
Policy::may_contain_infinity | ||||
) |
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_bool_nodef | ( | check_empty_result | , | |
Policy::check_empty_result | ||||
) |
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_bool_nodef | ( | check_inexact | , | |
Policy::check_inexact | ||||
) |
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_bool_nodef | ( | store_special | , | |
Policy::store_special | ||||
) |
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_bool_nodef | ( | store_open | , | |
Policy::store_open | ||||
) |
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_bool_nodef | ( | cache_normalized | , | |
Policy::cache_normalized | ||||
) |
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_bool_nodef | ( | cache_empty | , | |
Policy::cache_empty | ||||
) |
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_bool_nodef | ( | cache_singleton | , | |
Policy::cache_singleton | ||||
) |
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_int_nodef | ( | lower_special_bit | , | |
Policy::next_bit | ||||
) |
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_int_nodef | ( | lower_open_bit | , | |
lower_special_bit+ | store_special | |||
) |
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_int_nodef | ( | lower_normalized_bit | , | |
lower_open_bit+ | store_open | |||
) |
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_int_nodef | ( | upper_special_bit | , | |
lower_normalized_bit+ | cache_normalized | |||
) |
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_int_nodef | ( | upper_open_bit | , | |
upper_special_bit+ | store_special | |||
) |
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_int_nodef | ( | upper_normalized_bit | , | |
upper_open_bit+ | store_open | |||
) |
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_int_nodef | ( | cardinality_is_bit | , | |
upper_normalized_bit+ | cache_normalized | |||
) |
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_int_nodef | ( | cardinality_0_bit | , | |
cardinality_is_bit+ | cache_empty||cache_singleton | |||
) |
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_int_nodef | ( | cardinality_1_bit | , | |
cardinality_0_bit+ | cache_empty | |||
) |
Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::const_int_nodef | ( | next_bit | , | |
cardinality_1_bit+ | cache_singleton | |||
) |
void Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::clear | ( | ) | [inline] |
Definition at line 191 of file Interval_Info.defs.hh.
References Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::bitset, and Parma_Polyhedra_Library::Interval_NS::reset_bits().
Referenced by Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::Interval_Info_Bitset().
00191 { 00192 reset_bits(bitset); 00193 }
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 }
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 }
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 }
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 }
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 }
void Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::swap | ( | Interval_Info_Bitset< T, Policy > & | y | ) | [inline] |
Swaps *this
with y
.
Definition at line 71 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().
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 }
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 }
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 }
T Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::bitset [protected] |
Definition at line 293 of file Interval_Info.defs.hh.
Referenced by Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::ascii_dump(), Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::ascii_load(), Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::clear(), Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::get_boundary_property(), Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::get_interval_property(), Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::set_boundary_property(), Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::set_interval_property(), and Parma_Polyhedra_Library::Interval_Info_Bitset< T, Policy >::swap().