// This file is part of the PACPUS framework distributed under the // CECILL-C License, Version 1.0. // /// @version $Id$ #include #include #include #include #include #include using namespace pacpus; DECLARE_STATIC_LOGGER("pacpus.core.ComponentFactoryBase"); ComponentFactoryBase::ComponentFactoryBase() : mgr_(NULL) { LOG_TRACE("constructor"); // get the adress of the ComponentManager instance mgr_ = ComponentManager::getInstance(); } ComponentFactoryBase::~ComponentFactoryBase() { LOG_TRACE("destructor"); } void ComponentFactoryBase::addFactory(ComponentFactoryBase* addr, const QString& type) { LOG_DEBUG("addFactory(type="<< type << ")"); assert(mgr_); if (!mgr_->registerComponentFactory(addr, type)) { /* // FIXME: delete in a secure manner (no double delete) delete addr; addr = NULL; */ } } void ComponentFactoryBase::addComponent(const QString& name) { LOG_DEBUG("addComponent(" << name << ")"); // FIXME: instantiated component is never deleted! // who should do it? ComponentManager? ComponentBase * addr = instantiateComponent(name); assert(mgr_); if (!mgr_->registerComponent(addr, name)) { delete addr; addr = NULL; } }