mirror of https://github.com/CGAL/cgal
1. Arranging the constructors.
2. Adding a copy constructor and an assignment operator.
This commit is contained in:
parent
cde159c5ec
commit
1049314a85
|
|
@ -63,7 +63,7 @@ public:
|
|||
|
||||
Map_overlay() : sub_division1(0), sub_division2(0),
|
||||
ovl_change_notf(new Change_notification),
|
||||
ovl(new Map_ovl_sweep),
|
||||
ovl_alg(new Map_ovl_sweep),
|
||||
use_delete_notf(true),
|
||||
use_delete_ovl(true) {
|
||||
|
||||
|
|
@ -77,7 +77,7 @@ public:
|
|||
Map_overlay (const Arrangement &arr) : arr_(arr),
|
||||
sub_division1(0), sub_division2(0),
|
||||
ovl_change_notf(new Change_notification),
|
||||
ovl(new Map_ovl_sweep),
|
||||
ovl_alg(new Map_ovl_sweep),
|
||||
use_delete_notf(true),
|
||||
use_delete_ovl(true)
|
||||
{
|
||||
|
|
@ -95,7 +95,7 @@ public:
|
|||
Map_overlay (const Arrangement &arr,
|
||||
Change_notification* pmwx_change_notf) :
|
||||
arr_(arr), sub_division1(0), sub_division2(0),
|
||||
ovl_change_notf(pmwx_change_notf), ovl(new Map_ovl_sweep),
|
||||
ovl_change_notf(pmwx_change_notf), ovl_alg(new Map_ovl_sweep),
|
||||
use_delete_notf(false), use_delete_ovl(true)
|
||||
{
|
||||
// here we can't use copy Constructor since we have to update arr attributres due to the notifier.
|
||||
|
|
@ -108,21 +108,21 @@ public:
|
|||
Map_overlay (const Arrangement &arr,
|
||||
Map_ovl_base *ovl_ptr) :
|
||||
arr_(arr), sub_division1(0), sub_division2(0),
|
||||
ovl_change_notf(new Change_notification), ovl(ovl_ptr),
|
||||
ovl_change_notf(new Change_notification), ovl_alg(ovl_ptr),
|
||||
use_delete_notf(true), use_delete_ovl(false) {}
|
||||
|
||||
Map_overlay (const Arrangement &arr,
|
||||
Change_notification* pmwx_change_notf,
|
||||
Map_ovl_base *ovl_ptr) :
|
||||
arr_(arr), sub_division1(0), sub_division2(0),
|
||||
ovl_change_notf(pmwx_change_notf), ovl(ovl_ptr),
|
||||
ovl_change_notf(pmwx_change_notf), ovl_alg(ovl_ptr),
|
||||
use_delete_notf(false), use_delete_ovl(false) {}
|
||||
|
||||
Map_overlay (const Self &ovl1, const Self &ovl2) :
|
||||
sub_division1(&ovl1), sub_division2(&ovl2),
|
||||
ovl_change_notf(new Change_notification(&(ovl1.subdivision()),
|
||||
&(ovl2.subdivision()) )),
|
||||
ovl(new Map_ovl_sweep),
|
||||
ovl_alg(new Map_ovl_sweep),
|
||||
use_delete_notf(true), use_delete_ovl(true)
|
||||
{
|
||||
//ovl = new Map_ovl_sweep;
|
||||
|
|
@ -134,7 +134,7 @@ public:
|
|||
|
||||
//int c_sweep_t;
|
||||
//c_sweep_t = clock();
|
||||
ovl->map_overlay(ovl1.subdivision(), ovl2.subdivision(), ovl_change_notf, arr_);
|
||||
ovl_alg->map_overlay(ovl1.subdivision(), ovl2.subdivision(), ovl_change_notf, arr_);
|
||||
//c_sweep_t = clock() - c_sweep_t;
|
||||
//std::cout<<"The time required by sweep line : "<< (double) c_sweep_t / (double) CLOCKS_PER_SEC<<std::endl;
|
||||
|
||||
|
|
@ -148,7 +148,7 @@ public:
|
|||
sub_division1(&ovl1), sub_division2(&ovl2),
|
||||
ovl_change_notf(new Change_notification(&(ovl1.subdivision()),
|
||||
&(ovl2.subdivision()) )),
|
||||
ovl(new Map_ovl_sweep),
|
||||
ovl_alg(new Map_ovl_sweep),
|
||||
use_delete_notf(true), use_delete_ovl(true)
|
||||
{
|
||||
//ovl = new Map_ovl_sweep;
|
||||
|
|
@ -160,7 +160,7 @@ public:
|
|||
|
||||
int c_sweep_t;
|
||||
c_sweep_t = clock();
|
||||
ovl->map_overlay(ovl1.subdivision(), ovl2.subdivision(), ovl_change_notf, arr_);
|
||||
ovl_alg->map_overlay(ovl1.subdivision(), ovl2.subdivision(), ovl_change_notf, arr_);
|
||||
c_sweep_t = clock() - c_sweep_t;
|
||||
std::cout<<"The time required by sweep line : "<< (double) c_sweep_t / (double) CLOCKS_PER_SEC<<std::endl;
|
||||
|
||||
|
|
@ -170,57 +170,87 @@ public:
|
|||
|
||||
Map_overlay (const Self &ovl1,
|
||||
const Self &ovl2,
|
||||
Change_notification* pmwx_change_notf)
|
||||
: ovl_change_notf(pmwx_change_notf)
|
||||
Change_notification* pmwx_change_notf) :
|
||||
sub_division1(&ovl1), sub_division2(&ovl2),
|
||||
ovl_change_notf(pmwx_change_notf), ovl_alg(new Map_ovl_sweep),
|
||||
use_delete_notf(false), use_delete_ovl(true)
|
||||
{
|
||||
ovl = new Map_ovl_sweep;
|
||||
use_delete_ovl = true;
|
||||
use_delete_notf = false;
|
||||
// ovl_alg = new Map_ovl_sweep;
|
||||
//use_delete_ovl = true;
|
||||
//use_delete_notf = false;
|
||||
|
||||
ovl->map_overlay(ovl1.subdivision(), ovl2.subdivision(), ovl_change_notf, arr_);
|
||||
ovl_alg->map_overlay(ovl1.subdivision(), ovl2.subdivision(), ovl_change_notf, arr_);
|
||||
|
||||
sub_division1 = (Self *) &ovl1;
|
||||
sub_division2 = (Self *) &ovl2;
|
||||
//sub_division1 = (Self *) &ovl1;
|
||||
//sub_division2 = (Self *) &ovl2;
|
||||
}
|
||||
|
||||
Map_overlay (const Self &ovl1, const Self &ovl2, Map_ovl_base *ovl_ptr)
|
||||
: ovl(ovl_ptr)
|
||||
Map_overlay (const Self &ovl1, const Self &ovl2, Map_ovl_base *ovl_ptr) :
|
||||
sub_division1(&ovl1), sub_division2(&ovl2),
|
||||
ovl_change_notf(new Change_notification(&(ovl1.subdivision()),
|
||||
&(ovl2.subdivision()) )),
|
||||
ovl_alg(ovl_ptr),
|
||||
use_delete_notf(true), use_delete_ovl(false)
|
||||
{
|
||||
ovl_change_notf = new Change_notification( &(ovl1.subdivision()),
|
||||
&(ovl2.subdivision()) );
|
||||
use_delete_notf = true;
|
||||
use_delete_ovl = false;
|
||||
//ovl_change_notf = new Change_notification( &(ovl1.subdivision()),
|
||||
// &(ovl2.subdivision()) );
|
||||
//use_delete_notf = true;
|
||||
//use_delete_ovl = false;
|
||||
|
||||
ovl->map_overlay(ovl1.subdivision(), ovl2.subdivision(), ovl_change_notf, arr_);
|
||||
ovl_alg->map_overlay(ovl1.subdivision(), ovl2.subdivision(), ovl_change_notf, arr_);
|
||||
|
||||
sub_division1 = (Self *) &ovl1;
|
||||
sub_division2 = (Self *) &ovl2;
|
||||
//sub_division1 = (Self *) &ovl1;
|
||||
//sub_division2 = (Self *) &ovl2;
|
||||
}
|
||||
|
||||
Map_overlay (const Self &ovl1,
|
||||
const Self &ovl2,
|
||||
Change_notification* pmwx_change_notf,
|
||||
Map_ovl_base *ovl_ptr)
|
||||
: ovl_change_notf(pmwx_change_notf) , ovl(ovl_ptr)
|
||||
Map_ovl_base *ovl_ptr) :
|
||||
sub_division1(&ovl1), sub_division2(&ovl2),
|
||||
ovl_change_notf(pmwx_change_notf), ovl_alg(ovl_ptr),
|
||||
use_delete_notf(false), use_delete_ovl(false)
|
||||
{
|
||||
use_delete_notf = false;
|
||||
use_delete_ovl = false;
|
||||
//use_delete_notf = false;
|
||||
//use_delete_ovl = false;
|
||||
|
||||
ovl->map_overlay(ovl1.subdivision(), ovl2.subdivision(), ovl_change_notf, arr_);
|
||||
ovl_alg->map_overlay(ovl1.subdivision(), ovl2.subdivision(), ovl_change_notf, arr_);
|
||||
|
||||
sub_division1 = (Self *) &ovl1;
|
||||
sub_division2 = (Self *) &ovl2;
|
||||
//sub_division1 = (Self *) &ovl1;
|
||||
//sub_division2 = (Self *) &ovl2;
|
||||
}
|
||||
|
||||
virtual ~Map_overlay()
|
||||
{
|
||||
if (use_delete_notf) delete ovl_change_notf;
|
||||
if (use_delete_ovl) delete ovl;
|
||||
if (use_delete_ovl) delete ovl_alg;
|
||||
}
|
||||
|
||||
// ------------------- Add a copy contr'
|
||||
// -------------------- Add assignement operator.
|
||||
// ------------------- Copy contr'
|
||||
Map_overlay (const Self &ovl) :
|
||||
arr_(ovl.arr_),
|
||||
sub_division1(ovl.sub_division1),
|
||||
sub_division2(ovl.sub_division2),
|
||||
ovl_change_notf(new Change_notification(ovl.ovl_change_notf)),
|
||||
ovl_alg(ovl.ovl_alg),
|
||||
use_delete_notf(true), use_delete_ovl(false) {}
|
||||
|
||||
// -------------------- Assignement operator.
|
||||
const Self& operator=(const Self& ovl)
|
||||
{
|
||||
arr_ = ovl.arr_;
|
||||
sub_division1 = ovl.sub_division1;
|
||||
sub_division2 = ovl.sub_division2;
|
||||
|
||||
// The notifier and ovl algorithm remain their initial values obtained
|
||||
// in the defualt constructor (or other constructor taken for *this).
|
||||
//ovl_change_notf(new Change_notification(ovl.ovl_change_notf));
|
||||
//ovl_alg = ovl.ovl_alg;
|
||||
//use_delete_notf=true; use_delete_ovl=false;
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
void delete_subtree() {
|
||||
arr_ = Map_overlay(arr_);
|
||||
|
||||
|
|
@ -309,7 +339,7 @@ private:
|
|||
Arrangement arr_;
|
||||
const Self *sub_division1, *sub_division2;
|
||||
Change_notification *ovl_change_notf;
|
||||
Map_ovl_base *ovl;
|
||||
Map_ovl_base *ovl_alg;
|
||||
bool use_delete_notf;
|
||||
bool use_delete_ovl;
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue