//--------------------------------------------------------------------------- // // Project: OpenWalnut ( http://www.openwalnut.org ) // // Copyright 2009 OpenWalnut Community, BSV@Uni-Leipzig and CNCF@MPI-CBS // For more information see http://www.openwalnut.org/copying // // This file is part of OpenWalnut. // // OpenWalnut is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // OpenWalnut is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with OpenWalnut. If not, see . // //--------------------------------------------------------------------------- #include "WModuleFactory.h" // factory instance as singleton boost::shared_ptr< WModuleFactory > WModuleFactory::m_instance = boost::shared_ptr< WModuleFactory >(); WModuleFactory::WModuleFactory() { // initialize members } WModuleFactory::~WModuleFactory() { // cleanup } boost::shared_ptr< WModule > WModuleFactory::create( boost::shared_ptr< WModule > prototype ) { // call prototypes factory function boost::shared_ptr< WModule > clone = boost::shared_ptr< WModule >( prototype->factory() ); clone->initialize(); return clone; } boost::shared_ptr< WModuleFactory > WModuleFactory::getModuleFactory() { if ( !m_instance ) { m_instance = boost::shared_ptr< WModuleFactory >( new WModuleFactory() ); } return m_instance; }