1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
#include <BALL/STRUCTURE/mutator.h>
#include <BALL/STRUCTURE/fragmentDB.h>
namespace BALL
{
Mutator::Mutator(FragmentDB* db)
: db_(db), keep_db_(true)
{
}
Mutator::~Mutator()
{
freeDB_();
}
void Mutator::setup()
{
if(!db_) {
keep_db_ = false;
db_ = new FragmentDB("");
}
}
void Mutator::mutate(MutatorOptions opts)
{
setup();
mutate_impl_(opts);
if(opts & OPTIMIZE) {
optimize();
}
}
void Mutator::setFragmentDB(FragmentDB* db)
{
freeDB_();
db_ = db;
keep_db_ = true;
}
void Mutator::freeDB_()
{
if(!keep_db_ && db_) {
delete db_;
db_ = 0;
}
}
}
|