Make module instances unique ptrs

This commit is contained in:
jfmcarreira committed 2021-09-04 13:57:12 +01:00
1 parent 8ef5b31268
commit 463e1a58b9
10 files changed
+34 -43

No files matched your search

+6 -5
View File
@@ -29,11 +29,13 @@
#include <QDockWidget>
#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;
}
}
+7 -5
View File
@@ -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<VideoSubWindow*> 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 );
+3 -7
View File
@@ -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<VideoSubWindow*> videoSubWindowList;
int numberOfFrames = pcCurrAppModuleIf->m_pcModule->m_uiNumberOfFrames;
+1 -1
View File
@@ -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 );
+1 -1
View File
@@ -42,7 +42,7 @@ public:
ModuleHandleDock( QWidget* parent, CalypAppModuleIf* moduleIf );
~ModuleHandleDock();
void setModulueReturnValue( double value );
void setModuleReturnValue( double value );
QSize sizeHint() const;
+7 -6
View File
@@ -34,17 +34,17 @@
* @}
*/
#include <memory>
#include <vector>
#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<X>(); }
#define REGISTER_CLASS_FACTORY( X ) \
public: \
static CalypModulePtr Create() { return std::make_unique<X>(); }
#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<CalypModuleIf>;
#endif // __CALYPMODULESIF_H__
+2 -6
View File
@@ -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;
}
+3 -3
View File
@@ -32,7 +32,7 @@
#define REGISTER_MODULE( X ) Register( "X", &( X::Create ) );
typedef CalypModuleIf* ( *CreateModuleFn )( void );
typedef CalypModulePtr ( *CreateModuleFn )( void );
typedef std::map<const char*, CreateModuleFn> 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; }
};
+2 -4
View File
@@ -47,11 +47,10 @@
#include <vector>
#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();
};
+2 -5
View File
@@ -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" );
}