#include <Partially_Reduced_Product.defs.hh>
Public Member Functions | |
Smash_Reduction () | |
Default constructor. | |
void | product_reduce (D1 &d1, D2 &d2) |
~Smash_Reduction () | |
Destructor. |
The reduction classes are used to instantiate the Partially_Reduced_Product domain. This class propagates emptiness between its components.
Definition at line 92 of file Partially_Reduced_Product.defs.hh.
Parma_Polyhedra_Library::Smash_Reduction< D1, D2 >::Smash_Reduction | ( | ) | [inline] |
Parma_Polyhedra_Library::Smash_Reduction< D1, D2 >::~Smash_Reduction | ( | ) | [inline] |
void Parma_Polyhedra_Library::Smash_Reduction< D1, D2 >::product_reduce | ( | D1 & | d1, | |
D2 & | d2 | |||
) | [inline] |
brief The smash reduction operator for propagating emptiness between the domain elements d1
and d2
.
If either of the the domain elements d1
or d2
is empty then the other is also set empty.
d1 | A pointset domain element; | |
d2 | A pointset domain element; |
Definition at line 451 of file Partially_Reduced_Product.templates.hh.
References Parma_Polyhedra_Library::EMPTY, and Parma_Polyhedra_Library::swap().
00451 { 00452 if (d2.is_empty()) { 00453 if (!d1.is_empty()) { 00454 D1 new_d1(d1.space_dimension(), EMPTY); 00455 std::swap(d1, new_d1); 00456 } 00457 } 00458 else if (d1.is_empty()) { 00459 D2 new_d2(d2.space_dimension(), EMPTY); 00460 std::swap(d2, new_d2); 00461 } 00462 }