Merge pull request #5008 from OPM/avoid-virtual-method-constructors

Avoid virtual calls in constructor and desctructors
This commit is contained in:
Magne Sjaastad 2019-11-07 09:46:36 +01:00 committed by GitHub
commit c7e97b4447
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 115 additions and 35 deletions

View File

@ -41,8 +41,6 @@ RifEclipseRestartFilesetAccess::RifEclipseRestartFilesetAccess()
//--------------------------------------------------------------------------------------------------
RifEclipseRestartFilesetAccess::~RifEclipseRestartFilesetAccess()
{
close();
for ( size_t i = 0; i < m_ecl_files.size(); i++ )
{
if ( m_ecl_files[i] )

View File

@ -72,7 +72,8 @@ const RigFemPartGrid* RigFemPart::getOrCreateStructGrid() const
{
if ( m_structGrid.isNull() )
{
m_structGrid = new RigFemPartGrid( this );
m_structGrid = new RigFemPartGrid();
m_structGrid->setFemPart( this );
}
return m_structGrid.p();

View File

@ -26,10 +26,9 @@
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RigFemPartGrid::RigFemPartGrid( const RigFemPart* femPart )
RigFemPartGrid::RigFemPartGrid()
: m_femPart( nullptr )
{
m_femPart = femPart;
generateStructGridData();
}
//--------------------------------------------------------------------------------------------------
@ -37,6 +36,15 @@ RigFemPartGrid::RigFemPartGrid( const RigFemPart* femPart )
//--------------------------------------------------------------------------------------------------
RigFemPartGrid::~RigFemPartGrid() {}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RigFemPartGrid::setFemPart( const RigFemPart* femPart )
{
m_femPart = femPart;
generateStructGridData();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -26,9 +26,11 @@ class RigFemPart;
class RigFemPartGrid : public cvf::StructGridInterface
{
public:
explicit RigFemPartGrid( const RigFemPart* femPart );
RigFemPartGrid();
~RigFemPartGrid() override;
void setFemPart( const RigFemPart* femPart );
bool ijkFromCellIndex( size_t cellIndex, size_t* i, size_t* j, size_t* k ) const override;
size_t cellIndexFromIJK( size_t i, size_t j, size_t k ) const override;

View File

@ -116,7 +116,11 @@ RimFlowCharacteristicsPlot::~RimFlowCharacteristicsPlot()
{
removeMdiWindowFromMdiArea();
deleteViewWidget();
if ( m_flowCharPlotWidget )
{
m_flowCharPlotWidget->deleteLater();
m_flowCharPlotWidget = nullptr;
}
}
//--------------------------------------------------------------------------------------------------

View File

@ -69,7 +69,11 @@ RimTofAccumulatedPhaseFractionsPlot::~RimTofAccumulatedPhaseFractionsPlot()
{
removeMdiWindowFromMdiArea();
deleteViewWidget();
if ( m_tofAccumulatedPhaseFractionsPlotWidget )
{
m_tofAccumulatedPhaseFractionsPlotWidget->deleteLater();
m_tofAccumulatedPhaseFractionsPlotWidget = nullptr;
}
}
//--------------------------------------------------------------------------------------------------

View File

@ -57,7 +57,11 @@ RimTotalWellAllocationPlot::~RimTotalWellAllocationPlot()
{
removeMdiWindowFromMdiArea();
deleteViewWidget();
if ( m_wellTotalAllocationPlotWidget )
{
m_wellTotalAllocationPlotWidget->deleteLater();
m_wellTotalAllocationPlotWidget = nullptr;
}
}
//--------------------------------------------------------------------------------------------------

View File

@ -140,7 +140,11 @@ RimWellAllocationPlot::~RimWellAllocationPlot()
delete m_totalWellAllocationPlot();
delete m_tofAccumulatedPhaseFractionsPlot();
deleteViewWidget();
if ( m_wellAllocationPlotWidget )
{
m_wellAllocationPlotWidget->deleteLater();
m_wellAllocationPlotWidget = nullptr;
}
}
//--------------------------------------------------------------------------------------------------

View File

@ -87,7 +87,7 @@ RimGridCrossPlot::RimGridCrossPlot()
RimGridCrossPlot::~RimGridCrossPlot()
{
removeMdiWindowFromMdiArea();
deleteViewWidget();
cleanupBeforeClose();
}
//--------------------------------------------------------------------------------------------------
@ -481,12 +481,7 @@ QWidget* RimGridCrossPlot::createViewWidget( QWidget* mainWindowParent )
//--------------------------------------------------------------------------------------------------
void RimGridCrossPlot::deleteViewWidget()
{
detachAllCurves();
if ( m_plotWidget )
{
m_plotWidget->deleteLater();
m_plotWidget = nullptr;
}
cleanupBeforeClose();
}
//--------------------------------------------------------------------------------------------------
@ -1115,6 +1110,23 @@ void RimGridCrossPlot::updatePlotTitle()
updateCurveNamesAndPlotTitle();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimGridCrossPlot::cleanupBeforeClose()
{
for ( auto dataSet : m_crossPlotDataSets() )
{
dataSet->detachAllCurves();
}
if ( m_plotWidget )
{
m_plotWidget->deleteLater();
m_plotWidget = nullptr;
}
}
//--------------------------------------------------------------------------------------------------
/// Name Configuration
///

View File

@ -153,6 +153,9 @@ protected:
void updatePlotTitle() override;
private:
void cleanupBeforeClose();
private:
caf::PdmField<bool> m_showInfoBox;
caf::PdmField<bool> m_showLegend_OBSOLETE;

View File

@ -164,7 +164,8 @@ Rim3dView::~Rim3dView( void )
}
removeMdiWindowFromMdiArea();
deleteViewWidget();
delete m_viewer;
m_viewer = nullptr;
}
//--------------------------------------------------------------------------------------------------

View File

@ -66,7 +66,7 @@ RimGridPlotWindow::~RimGridPlotWindow()
removeMdiWindowFromMdiArea();
m_plots.deleteAllChildObjects();
deleteViewWidget();
cleanupBeforeClose();
}
//--------------------------------------------------------------------------------------------------
@ -387,13 +387,7 @@ QWidget* RimGridPlotWindow::createViewWidget( QWidget* mainWindowParent )
//--------------------------------------------------------------------------------------------------
void RimGridPlotWindow::deleteViewWidget()
{
detachAllCurves();
if ( m_viewer )
{
m_viewer->deleteLater();
m_viewer = nullptr;
}
cleanupBeforeClose();
}
//--------------------------------------------------------------------------------------------------
@ -622,6 +616,24 @@ void RimGridPlotWindow::detachAllCurves()
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimGridPlotWindow::cleanupBeforeClose()
{
auto plotVector = plots();
for ( size_t tIdx = 0; tIdx < plotVector.size(); ++tIdx )
{
plotVector[tIdx]->detachAllCurves();
}
if ( m_viewer )
{
m_viewer->deleteLater();
m_viewer = nullptr;
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -118,6 +118,8 @@ protected:
private:
void detachAllCurves() override;
void cleanupBeforeClose();
static RimPlotInterface* toPlotInterfaceAsserted( caf::PdmObject* pdmObject );
static const RimPlotInterface* toPlotInterfaceAsserted( const caf::PdmObject* pdmObject );
static caf::PdmObject* toPdmObjectAsserted( RimPlotInterface* plotInterface );

View File

@ -226,7 +226,7 @@ RimSummaryPlot::~RimSummaryPlot()
{
removeMdiWindowFromMdiArea();
deleteViewWidget();
cleanupBeforeClose();
m_summaryCurves_OBSOLETE.deleteAllChildObjects();
m_curveFilters_OBSOLETE.deleteAllChildObjects();
@ -1508,6 +1508,35 @@ std::set<RimPlotAxisPropertiesInterface*> RimSummaryPlot::allPlotAxes() const
return {m_timeAxisProperties, m_bottomAxisProperties, m_leftYAxisProperties, m_rightYAxisProperties};
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryPlot::cleanupBeforeClose()
{
if ( m_summaryCurveCollection )
{
m_summaryCurveCollection->detachQwtCurves();
}
m_ensembleCurveSetCollection->detachQwtCurves();
for ( RimGridTimeHistoryCurve* curve : m_gridTimeHistoryCurves )
{
curve->detachQwtCurve();
}
for ( RimAsciiDataCurve* curve : m_asciiDataCurves )
{
curve->detachQwtCurve();
}
if ( m_plotWidget )
{
m_plotWidget->deleteLater();
m_plotWidget = nullptr;
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -1736,13 +1765,7 @@ QWidget* RimSummaryPlot::createViewWidget( QWidget* mainWindowParent )
//--------------------------------------------------------------------------------------------------
void RimSummaryPlot::deleteViewWidget()
{
detachAllCurves();
if ( m_plotWidget )
{
m_plotWidget->deleteLater();
m_plotWidget = nullptr;
}
cleanupBeforeClose();
}
//--------------------------------------------------------------------------------------------------

View File

@ -224,6 +224,8 @@ private:
std::set<RimPlotAxisPropertiesInterface*> allPlotAxes() const;
void cleanupBeforeClose();
private:
caf::PdmField<bool> m_normalizeCurveYValues;