diff --git a/app/CalypAppModuleIf.cpp b/app/CalypAppModuleIf.cpp index 98e600d..4355952 100644 --- a/app/CalypAppModuleIf.cpp +++ b/app/CalypAppModuleIf.cpp @@ -29,11 +29,13 @@ #include #include "VideoSubWindow.h" +#include "lib/CalypFrame.h" +#include "lib/CalypStream.h" -CalypAppModuleIf::CalypAppModuleIf( QObject* parent, QAction* action, CalypModuleIf* module ) +CalypAppModuleIf::CalypAppModuleIf( QObject* parent, QAction* action, CalypModulePtr&& module ) : m_bIsRunning( false ) , m_pcModuleAction( action ) - , m_pcModule( module ) + , m_pcModule( std ::move( module ) ) , m_pcDisplaySubWindow( NULL ) , m_pcDockWidget( NULL ) , m_pcModuleDock( NULL ) @@ -184,7 +186,7 @@ void CalypAppModuleIf::show() } break; case CLP_FRAME_MEASUREMENT_MODULE: - m_pcModuleDock->setModulueReturnValue( m_dMeasurementResult ); + m_pcModuleDock->setModuleReturnValue( m_dMeasurementResult ); break; } } @@ -230,7 +232,6 @@ void CalypAppModuleIf::destroy() if( m_pcModule ) { m_pcModule->destroy(); - m_pcModule->Delete(); - m_pcModule = NULL; + m_pcModule = nullptr; } } diff --git a/app/CalypAppModuleIf.h b/app/CalypAppModuleIf.h index 410f4f2..16f4fc5 100644 --- a/app/CalypAppModuleIf.h +++ b/app/CalypAppModuleIf.h @@ -38,12 +38,14 @@ #include "CommonDefs.h" #include "ModuleHandleDock.h" -#include "lib/CalypFrame.h" +// #include "lib/CalypFrame.h" #include "lib/CalypModuleIf.h" -#include "lib/CalypStream.h" +// #include "lib/CalypStream.h" class QAction; class QDockWidget; +class CalypStream; +class CalypFrame; #define CLP_MODULE_MAX_NUM_FRAMES 5 @@ -65,7 +67,7 @@ private: bool m_bSuccess; QAction* m_pcModuleAction; - CalypModuleIf* m_pcModule; + CalypModulePtr m_pcModule; VideoSubWindow* m_pcSubWindow[CLP_MODULE_MAX_NUM_FRAMES]; @@ -92,7 +94,7 @@ public: CalypAppModuleIf* m_pcModule; }; - CalypAppModuleIf( QObject* parent, QAction* action, CalypModuleIf* module ); + CalypAppModuleIf( QObject* parent, QAction* action, CalypModulePtr&& module ); virtual ~CalypAppModuleIf() {} QList getSubWindowList() { @@ -103,7 +105,7 @@ public: return arraySubWindows; } - CalypModuleIf* getModule() { return m_pcModule; } + CalypModuleIf* getModule() { return m_pcModule.get(); } unsigned int getModuleRequirements() { return m_pcModule->m_uiModuleRequirements; } ClpString moduleInfo() { return m_pcModule->moduleInfo(); } void update( bool isPlaying ); diff --git a/app/ModulesHandle.cpp b/app/ModulesHandle.cpp index 19a605b..01d94e6 100644 --- a/app/ModulesHandle.cpp +++ b/app/ModulesHandle.cpp @@ -91,7 +91,6 @@ QMenu* ModulesHandle::createMenu() void ModulesHandle::buildMenu() { - CalypModuleIf* pcCurrModuleIf; QString ModuleIfinternalName; QAction* currAction; QMenu* currSubMenu; @@ -108,7 +107,7 @@ void ModulesHandle::buildMenu() CalypModulesFactoryMap::iterator it = moduleFactoryMap.begin(); for( ; it != moduleFactoryMap.end(); ++it ) { - pcCurrModuleIf = it->second(); + auto pcCurrModuleIf = it->second(); ModuleIfinternalName = QString::fromLocal8Bit( it->first ); currSubMenu = NULL; @@ -147,8 +146,6 @@ void ModulesHandle::buildMenu() currSubMenu->addAction( currAction ); else m_pcModulesMenu->addAction( currAction ); - - pcCurrModuleIf->Delete(); } m_pcModulesMenu->addAction( m_arrayActions[LOAD_EXTERNAL_ACT] ); @@ -278,9 +275,8 @@ void ModulesHandle::activateModule() } QString ModuleIfName = pcAction->data().toString(); - CalypModuleIf* pcCurrModuleIf = - CalypModulesFactory::Get()->CreateModule( ModuleIfName.toLocal8Bit().constData() ); - CalypAppModuleIf* pcCurrAppModuleIf = new CalypAppModuleIf( this, pcAction, pcCurrModuleIf ); + auto pcCurrModuleIf = CalypModulesFactory::Get()->CreateModule( ModuleIfName.toLocal8Bit().constData() ); + CalypAppModuleIf* pcCurrAppModuleIf = new CalypAppModuleIf( this, pcAction, std::move( pcCurrModuleIf ) ); QList videoSubWindowList; int numberOfFrames = pcCurrAppModuleIf->m_pcModule->m_uiNumberOfFrames; diff --git a/app/docks/ModuleHandleDock.cpp b/app/docks/ModuleHandleDock.cpp index 874de98..a74c57f 100644 --- a/app/docks/ModuleHandleDock.cpp +++ b/app/docks/ModuleHandleDock.cpp @@ -60,7 +60,7 @@ ModuleHandleDock::ModuleHandleDock( QWidget* parent, CalypAppModuleIf* moduleIf ModuleHandleDock::~ModuleHandleDock() {} -void ModuleHandleDock::setModulueReturnValue( double value ) +void ModuleHandleDock::setModuleReturnValue( double value ) { labelModulueReturnValue->clear(); QString strValue = QString( "%1" ).arg( value ); diff --git a/app/docks/ModuleHandleDock.h b/app/docks/ModuleHandleDock.h index b4fbf7e..b388862 100644 --- a/app/docks/ModuleHandleDock.h +++ b/app/docks/ModuleHandleDock.h @@ -42,7 +42,7 @@ public: ModuleHandleDock( QWidget* parent, CalypAppModuleIf* moduleIf ); ~ModuleHandleDock(); - void setModulueReturnValue( double value ); + void setModuleReturnValue( double value ); QSize sizeHint() const; diff --git a/lib/CalypModuleIf.h b/lib/CalypModuleIf.h index ee01fcd..f9b1f9c 100644 --- a/lib/CalypModuleIf.h +++ b/lib/CalypModuleIf.h @@ -34,17 +34,17 @@ * @} */ +#include #include #include "CalypFrame.h" #include "CalypOptions.h" #define REGISTER_CLASS_MAKER( X ) \ - extern "C" CalypModuleIf* Maker() { return new X; } -#define REGISTER_CLASS_FACTORY( X ) \ -public: \ - static CalypModuleIf* Create() { return new X(); } \ - void Delete() { delete this; } + extern "C" CalypModulePtr Maker() { return std::make_unique(); } +#define REGISTER_CLASS_FACTORY( X ) \ +public: \ + static CalypModulePtr Create() { return std::make_unique(); } #define _BASIC_MODULE_API_2_CHECK_ \ if( apcFrameList.size() != m_uiNumberOfFrames ) \ return false; \ @@ -140,7 +140,6 @@ public: m_iFrameBufferCount = 0; } virtual ~CalypModuleIf() {} - virtual void Delete() = 0; virtual void destroy() = 0; const char* getModuleLongName() @@ -174,4 +173,6 @@ public: }; }; +using CalypModulePtr = std::unique_ptr; + #endif // __CALYPMODULESIF_H__ diff --git a/modules/CalypModulesFactory.cpp b/modules/CalypModulesFactory.cpp index b4bf387..be41a09 100644 --- a/modules/CalypModulesFactory.cpp +++ b/modules/CalypModulesFactory.cpp @@ -39,10 +39,6 @@ CalypModulesFactory::CalypModulesFactory(){ REGISTER_ALL_MODULES } -CalypModulesFactory::~CalypModulesFactory() -{ - m_FactoryMap.clear(); -} void CalypModulesFactory::Register( const char* moduleName, CreateModuleFn pfnCreate ) { @@ -70,7 +66,7 @@ bool CalypModulesFactory::RegisterDl( const char* dlName ) #endif } -CalypModuleIf* CalypModulesFactory::CreateModule( const char* moduleName ) +CalypModulePtr CalypModulesFactory::CreateModule( const char* moduleName ) { CalypModulesFactoryMap& moduleFactoryMap = CalypModulesFactory::Get()->getMap(); CalypModulesFactoryMap::iterator it = moduleFactoryMap.begin(); @@ -81,5 +77,5 @@ CalypModuleIf* CalypModulesFactory::CreateModule( const char* moduleName ) return it->second(); } } - return NULL; + return nullptr; } diff --git a/modules/CalypModulesFactory.h b/modules/CalypModulesFactory.h index e80629d..1e66222 100644 --- a/modules/CalypModulesFactory.h +++ b/modules/CalypModulesFactory.h @@ -32,7 +32,7 @@ #define REGISTER_MODULE( X ) Register( "X", &( X::Create ) ); -typedef CalypModuleIf* ( *CreateModuleFn )( void ); +typedef CalypModulePtr ( *CreateModuleFn )( void ); typedef std::map CalypModulesFactoryMap; // Factory for creating instances of CalypModuleIf @@ -44,7 +44,7 @@ private: CalypModulesFactoryMap m_FactoryMap; public: - ~CalypModulesFactory(); + ~CalypModulesFactory() = default; static CalypModulesFactory* Get() { @@ -55,7 +55,7 @@ public: void Register( const char* moduleName, CreateModuleFn pfnCreate ); bool RegisterDl( const char* dlName ); - CalypModuleIf* CreateModule( const char* moduleName ); + CalypModulePtr CreateModule( const char* moduleName ); CalypModulesFactoryMap& getMap() { return m_FactoryMap; } }; diff --git a/tools/CalypTools.h b/tools/CalypTools.h index a7a96c1..87fc39a 100644 --- a/tools/CalypTools.h +++ b/tools/CalypTools.h @@ -47,11 +47,10 @@ #include #include "CalypToolsCmdParser.h" -#include "lib/CalypFrame.h" +#include "lib/CalypModuleIf.h" class CalypFrame; class CalypStream; -class CalypModuleIf; #define MAX_NUMBER_INPUTS 255 #define MAX_NUMBER_CHANNELS 4 @@ -101,8 +100,7 @@ private: int m_uiQualityMetric; int QualityOperation(); - CalypModuleIf* m_pcCurrModuleIf; - //CalypFrame* applyFrameModule(); + CalypModulePtr m_pcCurrModuleIf; int ModuleOperation(); int ListStatistics(); }; diff --git a/tools/CalypToolsCmdParser.cpp b/tools/CalypToolsCmdParser.cpp index 9d28a21..d875931 100644 --- a/tools/CalypToolsCmdParser.cpp +++ b/tools/CalypToolsCmdParser.cpp @@ -110,7 +110,6 @@ int CalypToolsCmdParser::parseToolsArgs( int argc, char* argv[] ) void CalypToolsCmdParser::listModuleHelp() { ClpString moduleName = m_strModule; - CalypModuleIf* pcCurrModuleIf = NULL; CalypModulesFactoryMap& moduleFactoryMap = CalypModulesFactory::Get()->getMap(); CalypModulesFactoryMap::iterator it = moduleFactoryMap.begin(); @@ -118,10 +117,10 @@ void CalypToolsCmdParser::listModuleHelp() { if( strcmp( it->first, moduleName.c_str() ) == 0 ) { - pcCurrModuleIf = it->second(); break; } } + auto pcCurrModuleIf = it->second(); if( pcCurrModuleIf ) { printf( "Usage: calypTools --module=%s options:\n", it->first ); @@ -136,7 +135,6 @@ void CalypToolsCmdParser::listModules() if( m_cOptions.hasOpt( "module_list_full" ) ) bDetailed = true; - CalypModuleIf* pcCurrModuleIf; CalypModulesFactoryMap& moduleFactoryMap = CalypModulesFactory::Get()->getMap(); CalypModulesFactoryMap::iterator it = moduleFactoryMap.begin(); @@ -157,7 +155,7 @@ void CalypToolsCmdParser::listModules() if( bDetailed ) { ClpString ModuleNameString; - pcCurrModuleIf = it->second(); + auto pcCurrModuleIf = it->second(); if( pcCurrModuleIf->m_pchModuleCategory ) { @@ -176,7 +174,6 @@ void CalypToolsCmdParser::listModules() break; } printf( " %s", pcCurrModuleIf->m_pchModuleTooltip ); - pcCurrModuleIf->Delete(); } printf( "\n" ); }