#12631 Refactors RFT readers to use unique_ptr

This commit is contained in:
Magne Sjaastad authored and GitHub committed 2025-07-16 13:10:47 +02:00
1 parent 61504636b2
commit 0d0c8f5505
18 files changed
+54 -37

No files matched your search

@@ -425,11 +425,11 @@ void RimEclipseResultCase::ensureRftDataIsImported()
{
if ( m_useOpmRftReader )
{
m_readerOpmRft = new RifReaderOpmRft( rftFileInfo.filePath() );
m_readerOpmRft = std::make_unique<RifReaderOpmRft>( rftFileInfo.filePath() );
}
else
{
m_readerEclipseRft = new RifReaderEclipseRft( rftFileInfo.filePath() );
m_readerEclipseRft = std::make_unique<RifReaderEclipseRft>( rftFileInfo.filePath() );
}
}
@@ -612,9 +612,9 @@ RifReaderRftInterface* RimEclipseResultCase::rftReader()
{
ensureRftDataIsImported();
if ( m_useOpmRftReader ) return m_readerOpmRft.p();
if ( m_useOpmRftReader ) return m_readerOpmRft.get();
return m_readerEclipseRft.p();
return m_readerEclipseRft.get();
}
//--------------------------------------------------------------------------------------------------
@@ -27,6 +27,8 @@
#include "cafFilePath.h"
#include "cafPdmProxyValueField.h"
#include <memory>
class RifReaderRftInterface;
class RifReaderEclipseRft;
class RifReaderOpmRft;
@@ -94,8 +96,8 @@ private:
private:
cvf::ref<RigFlowDiagSolverInterface> m_flowDagSolverInterface;
cvf::ref<RifReaderEclipseRft> m_readerEclipseRft;
cvf::ref<RifReaderOpmRft> m_readerOpmRft;
std::unique_ptr<RifReaderEclipseRft> m_readerEclipseRft;
std::unique_ptr<RifReaderOpmRft> m_readerOpmRft;
caf::PdmProxyValueField<caf::AppEnum<RiaDefines::EclipseUnitSystem>> m_unitSystem;
caf::PdmChildArrayField<RimFlowDiagSolution*> m_flowDiagSolutions;
@@ -57,7 +57,7 @@ void RimObservedFmuRftData::setDirectoryPath( const QString& path )
//--------------------------------------------------------------------------------------------------
void RimObservedFmuRftData::createRftReaderInterface()
{
m_fmuRftReader = new RifReaderFmuRft( m_directoryPath().path() );
m_fmuRftReader = std::make_unique<RifReaderFmuRft>( m_directoryPath().path() );
m_fmuRftReader->importData();
}
@@ -66,12 +66,12 @@ void RimObservedFmuRftData::createRftReaderInterface()
//--------------------------------------------------------------------------------------------------
RifReaderRftInterface* RimObservedFmuRftData::rftReader()
{
if ( m_fmuRftReader.isNull() )
if ( !m_fmuRftReader )
{
createRftReaderInterface();
}
return m_fmuRftReader.p();
return m_fmuRftReader.get();
}
//--------------------------------------------------------------------------------------------------
@@ -95,9 +95,9 @@ bool RimObservedFmuRftData::hasWell( const QString& wellPathName ) const
//--------------------------------------------------------------------------------------------------
std::vector<QString> RimObservedFmuRftData::wells() const
{
if ( m_fmuRftReader.p() )
if ( m_fmuRftReader )
{
std::set<QString> wellNames = const_cast<RifReaderFmuRft*>( m_fmuRftReader.p() )->wellNames();
std::set<QString> wellNames = m_fmuRftReader->wellNames();
return std::vector<QString>( wellNames.begin(), wellNames.end() );
}
return std::vector<QString>();
@@ -108,9 +108,9 @@ std::vector<QString> RimObservedFmuRftData::wells() const
//--------------------------------------------------------------------------------------------------
std::vector<QString> RimObservedFmuRftData::labels( const RifEclipseRftAddress& rftAddress )
{
if ( m_fmuRftReader.p() )
if ( m_fmuRftReader )
{
return const_cast<RifReaderFmuRft*>( m_fmuRftReader.p() )->labels( rftAddress );
return m_fmuRftReader->labels( rftAddress );
}
return {};
}
@@ -19,12 +19,15 @@
#pragma once
#include "RifReaderFmuRft.h"
#include "RimNamedObject.h"
#include "cafPdmField.h"
#include "cafPdmObject.h"
#include "cafPdmProxyValueField.h"
#include <memory>
class RimObservedFmuRftData : public RimNamedObject
{
CAF_PDM_HEADER_INIT;
@@ -44,7 +47,7 @@ protected:
void initAfterRead() override;
private:
cvf::ref<RifReaderFmuRft> m_fmuRftReader;
std::unique_ptr<RifReaderFmuRft> m_fmuRftReader;
caf::PdmField<caf::FilePath> m_directoryPath;
caf::PdmField<QString> m_directoryPath_OBSOLETE;
@@ -63,7 +63,7 @@ void RimPressureDepthData::setFilePath( const QString& path )
//--------------------------------------------------------------------------------------------------
void RimPressureDepthData::createRftReaderInterface()
{
m_fmuRftReader = new RifReaderPressureDepthData( m_filePath().path() );
m_fmuRftReader = std::make_unique<RifReaderPressureDepthData>( m_filePath().path() );
m_fmuRftReader->load();
}
@@ -72,12 +72,12 @@ void RimPressureDepthData::createRftReaderInterface()
//--------------------------------------------------------------------------------------------------
RifReaderRftInterface* RimPressureDepthData::rftReader()
{
if ( m_fmuRftReader.isNull() )
if ( !m_fmuRftReader )
{
createRftReaderInterface();
}
return m_fmuRftReader.p();
return m_fmuRftReader.get();
}
//--------------------------------------------------------------------------------------------------
@@ -101,9 +101,9 @@ bool RimPressureDepthData::hasWell( const QString& wellPathName ) const
//--------------------------------------------------------------------------------------------------
std::vector<QString> RimPressureDepthData::wellNames() const
{
if ( m_fmuRftReader.p() )
if ( m_fmuRftReader )
{
std::set<QString> wellNames = const_cast<RifReaderPressureDepthData*>( m_fmuRftReader.p() )->wellNames();
std::set<QString> wellNames = m_fmuRftReader->wellNames();
return std::vector<QString>( wellNames.begin(), wellNames.end() );
}
return {};
@@ -43,7 +43,7 @@ public:
std::vector<QString> wellNames() const;
private:
cvf::ref<RifReaderPressureDepthData> m_fmuRftReader;
std::unique_ptr<RifReaderPressureDepthData> m_fmuRftReader;
caf::PdmField<caf::FilePath> m_filePath;
caf::PdmProxyValueField<std::vector<QString>> m_wells;
@@ -215,13 +215,13 @@ RifSummaryReaderInterface* RimFileSummaryCase::findRelatedFilesAndCreateReader(
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RifReaderOpmRft* RimFileSummaryCase::createOpmRftReader( const QString& rftFileName, const QString& dataDeckFileName )
std::unique_ptr<RifReaderOpmRft> RimFileSummaryCase::createOpmRftReader( const QString& rftFileName, const QString& dataDeckFileName )
{
QFileInfo fi( rftFileName );
if ( fi.exists() )
{
return new RifReaderOpmRft( rftFileName, dataDeckFileName );
return std::make_unique<RifReaderOpmRft>( rftFileName, dataDeckFileName );
}
return nullptr;
@@ -293,11 +293,11 @@ RifSummaryReaderInterface* RimFileSummaryCase::summaryReader()
//--------------------------------------------------------------------------------------------------
RifReaderRftInterface* RimFileSummaryCase::rftReader()
{
if ( m_summaryEclipseRftReader.isNull() )
if ( !m_summaryEclipseRftReader )
{
createRftReaderInterface();
}
return m_summaryEclipseRftReader.p();
return m_summaryEclipseRftReader.get();
}
//--------------------------------------------------------------------------------------------------
@@ -22,6 +22,8 @@
#include "cafPdmField.h"
#include "cvfObject.h"
#include <memory>
class RifReaderRftInterface;
class RifReaderOpmRft;
class RifReaderEclipseSummary;
@@ -73,13 +75,13 @@ private:
QString additionalSummaryDataFilePath() const;
static QString createAdditionalSummaryFileName();
static RifReaderOpmRft* createOpmRftReader( const QString& rftFileName, const QString& dataDeckFileName );
static std::unique_ptr<RifReaderOpmRft> createOpmRftReader( const QString& rftFileName, const QString& dataDeckFileName );
private:
cvf::ref<RifSummaryReaderInterface> m_fileSummaryReader;
cvf::ref<RifCalculatedSummaryCurveReader> m_calculatedSummaryReader;
cvf::ref<RifMultipleSummaryReaders> m_multiSummaryReader;
cvf::ref<RifReaderOpmRft> m_summaryEclipseRftReader;
std::unique_ptr<RifReaderOpmRft> m_summaryEclipseRftReader;
caf::PdmField<bool> m_includeRestartFiles;
caf::PdmField<caf::FilePath> m_additionalSummaryFilePath;