From d2dbb75f36f52ccb17f515a0f9fa91a861cd78fe Mon Sep 17 00:00:00 2001 From: Walter Van Herck <w.van.herck@fz-juelich.de> Date: Tue, 21 Apr 2015 13:23:05 +0200 Subject: [PATCH] Fixed some scoped_ptr issues in Particle --- Core/Samples/src/Particle.cpp | 90 +++++++++++++++++------------------ 1 file changed, 43 insertions(+), 47 deletions(-) diff --git a/Core/Samples/src/Particle.cpp b/Core/Samples/src/Particle.cpp index ceef4df0b5e..ada4acbf64c 100644 --- a/Core/Samples/src/Particle.cpp +++ b/Core/Samples/src/Particle.cpp @@ -18,120 +18,116 @@ #include "Materials.h" #include <boost/scoped_ptr.hpp> - Particle::Particle() { setName("Particle"); } - -Particle::Particle(const IMaterial &p_material) - : mP_material(p_material.clone()) +Particle::Particle(const IMaterial &p_material) : mP_material(p_material.clone()) { setName("Particle"); } - Particle::Particle(const IMaterial &p_material, const IFormFactor &form_factor) - : mP_material(p_material.clone()) - , mP_form_factor(form_factor.clone()) + : mP_material(p_material.clone()), mP_form_factor(form_factor.clone()) { setName("Particle"); registerChild(mP_form_factor.get()); } - -Particle::Particle(const IMaterial &p_material, const IFormFactor& form_factor, - const IRotation &rotation) - : mP_material(p_material.clone()) - , mP_form_factor(form_factor.clone()) +Particle::Particle(const IMaterial &p_material, const IFormFactor &form_factor, + const IRotation &rotation) + : mP_material(p_material.clone()), mP_form_factor(form_factor.clone()) { setName("Particle"); mP_rotation.reset(rotation.clone()); registerChild(mP_form_factor.get()); } - Particle::~Particle() { } - -Particle* Particle::clone() const +Particle *Particle::clone() const { Particle *result = new Particle(); - if(mP_form_factor.get()) result->setFormFactor(*mP_form_factor); - result->setMaterial(*mP_material); - result->setAmbientMaterial(*mP_ambient_material); - if(mP_rotation.get()) result->setTransformation(*mP_rotation); + if (mP_form_factor.get()) + result->setFormFactor(*mP_form_factor); + if (mP_material.get()) + result->setMaterial(*mP_material); + if (mP_ambient_material.get()) + result->setAmbientMaterial(*mP_ambient_material); + if (mP_rotation.get()) + result->setTransformation(*mP_rotation); result->setName(getName()); return result; } - -Particle* Particle::cloneInvertB() const +Particle *Particle::cloneInvertB() const { Particle *result = new Particle(); - if(mP_form_factor.get()) result->setFormFactor(*mP_form_factor); + if (mP_form_factor.get()) + result->setFormFactor(*mP_form_factor); - if(mP_material.get()) + if (mP_material.get()) result->mP_material.reset(Materials::createInvertedMaterial(mP_material.get())); - if(mP_ambient_material) - result->mP_ambient_material.reset(Materials::createInvertedMaterial(mP_ambient_material.get())); + if (mP_ambient_material.get()) + result->mP_ambient_material.reset( + Materials::createInvertedMaterial(mP_ambient_material.get())); - if(mP_rotation.get()) result->mP_rotation.reset(mP_rotation->clone()); + if (mP_rotation.get()) + result->mP_rotation.reset(mP_rotation->clone()); result->setName(getName() + "_inv"); return result; } -IFormFactor* Particle::createFormFactor( - complex_t wavevector_scattering_factor) const +IFormFactor *Particle::createFormFactor(complex_t wavevector_scattering_factor) const { IFormFactor *p_transformed_ff = createTransformedFormFactor(); if (!p_transformed_ff) { return 0; } - FormFactorDecoratorMaterial *p_ff = - new FormFactorDecoratorMaterial( - p_transformed_ff, wavevector_scattering_factor); - if (mP_rotation.get()) { - boost::scoped_ptr<const IMaterial> transformed_material(mP_material-> - createTransformedMaterial(*mP_rotation)); - p_ff->setMaterial(*transformed_material); - } else { - p_ff->setMaterial(*mP_material); + FormFactorDecoratorMaterial *p_ff + = new FormFactorDecoratorMaterial(p_transformed_ff, wavevector_scattering_factor); + if (mP_material.get()) { + if (mP_rotation.get()) { + boost::scoped_ptr<const IMaterial> transformed_material( + mP_material->createTransformedMaterial(*mP_rotation)); + p_ff->setMaterial(*transformed_material); + } else { + p_ff->setMaterial(*mP_material); + } } - p_ff->setAmbientMaterial(*mP_ambient_material); + if (mP_ambient_material.get()) p_ff->setAmbientMaterial(*mP_ambient_material); return p_ff; } void Particle::setFormFactor(const IFormFactor &form_factor) { if (&form_factor != mP_form_factor.get()) { - deregisterChild(mP_form_factor.get()); + if (mP_form_factor.get()) deregisterChild(mP_form_factor.get()); mP_form_factor.reset(form_factor.clone()); registerChild(mP_form_factor.get()); } } -IFormFactor* Particle::createTransformedFormFactor() const +IFormFactor *Particle::createTransformedFormFactor() const { - if(!mP_form_factor.get()) return 0; + if (!mP_form_factor.get()) + return 0; IFormFactor *p_result; - if(mP_rotation.get()) { - p_result = new FormFactorDecoratorTransformation( - mP_form_factor->clone(), *mP_rotation); - } - else { + if (mP_rotation.get()) { + p_result = new FormFactorDecoratorTransformation(mP_form_factor->clone(), *mP_rotation); + } else { p_result = mP_form_factor->clone(); } return p_result; } -void Particle::applyTransformationToSubParticles(const IRotation& rotation) +void Particle::applyTransformationToSubParticles(const IRotation &rotation) { (void)rotation; return; -- GitLab