From db0fce493bbaa93a23e722c9358d5692f22291bf Mon Sep 17 00:00:00 2001 From: Kristian Bendiksen Date: Fri, 12 Dec 2025 15:03:34 +0100 Subject: [PATCH] Modernize memory management: Convert m_mainGrid to std::shared_ptr Replace cvf::ref with std::shared_ptr in RigEclipseCaseData and related classes to use standard C++ smart pointers. Changes: - RigEclipseCaseData: Convert m_mainGrid member to shared_ptr, add mainGridShared() accessor methods - RimIdenticalGridCaseGroup: Update grid sharing logic to use shared_ptr - RigGridManager: Store and return shared_ptr for grid deduplication - RimEclipseStatisticsCase: Update setMainGrid() signature - RimEclipseResultCase: Use mainGridShared() for grid copying - RimEclipseCaseCollection: Update grid deduplication to work with shared_ptr - RifReaderOpmCommonActive: Wrap RigActiveCellGrid in shared_ptr - Test updates: Convert tests to use std::shared_ptr and .use_count() Grid sharing and deduplication functionality preserved. RigMainGrid retains cvf::Object inheritance for framework compatibility, but std::shared_ptr handles all reference counting. All grid-related tests pass (26/26). --- .../RifReaderOpmCommonActive.cpp | 2 +- .../RimEclipseCaseCollection.cpp | 6 +-- .../ProjectDataModel/RimEclipseResultCase.cpp | 2 +- .../RimEclipseStatisticsCase.cpp | 6 +-- .../RimEclipseStatisticsCase.h | 4 +- .../RimIdenticalGridCaseGroup.cpp | 8 ++-- .../RimIdenticalGridCaseGroup.h | 8 +++- .../ReservoirDataModel/RigEclipseCaseData.cpp | 32 +++++++-------- .../ReservoirDataModel/RigEclipseCaseData.h | 13 +++--- .../ReservoirDataModel/RigGridManager.cpp | 10 ++--- .../ReservoirDataModel/RigGridManager.h | 9 +++-- .../UnitTests/RigReservoir-Test.cpp | 40 ++++++++++--------- 12 files changed, 75 insertions(+), 65 deletions(-) diff --git a/ApplicationLibCode/FileInterface/RifReaderOpmCommonActive.cpp b/ApplicationLibCode/FileInterface/RifReaderOpmCommonActive.cpp index cde53f49f3..f7812f5701 100644 --- a/ApplicationLibCode/FileInterface/RifReaderOpmCommonActive.cpp +++ b/ApplicationLibCode/FileInterface/RifReaderOpmCommonActive.cpp @@ -56,7 +56,7 @@ RifReaderOpmCommonActive::~RifReaderOpmCommonActive() bool RifReaderOpmCommonActive::importGrid( RigMainGrid* /* mainGrid*/, RigEclipseCaseData* eclipseCaseData ) { RigActiveCellGrid* activeGrid = new RigActiveCellGrid(); - eclipseCaseData->setMainGrid( activeGrid ); + eclipseCaseData->setMainGrid( std::shared_ptr( activeGrid ) ); caf::ProgressInfo progInfo( 4, "Importing Eclipse Grid" ); diff --git a/ApplicationLibCode/ProjectDataModel/RimEclipseCaseCollection.cpp b/ApplicationLibCode/ProjectDataModel/RimEclipseCaseCollection.cpp index 1f474e82c7..996dca2f35 100644 --- a/ApplicationLibCode/ProjectDataModel/RimEclipseCaseCollection.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimEclipseCaseCollection.cpp @@ -131,7 +131,7 @@ RigMainGrid* RimEclipseCaseCollection::registerCaseInGridCollection( RimEclipseC CVF_ASSERT( rimEclipseCase && rimEclipseCase->eclipseCaseData() ); RigEclipseCaseData* rigEclipseCase = rimEclipseCase->eclipseCaseData(); - RigMainGrid* equalGrid = m_gridCollection->findEqualGrid( rigEclipseCase->mainGrid() ); + auto equalGrid = m_gridCollection->findEqualGrid( rigEclipseCase->mainGrid() ); if ( equalGrid ) { @@ -145,12 +145,12 @@ RigMainGrid* RimEclipseCaseCollection::registerCaseInGridCollection( RimEclipseC rimEclipseCase->ensureFaultDataIsComputed(); - equalGrid = rigEclipseCase->mainGrid(); + equalGrid = rigEclipseCase->mainGridShared(); } m_gridCollection->addCase( rigEclipseCase ); - return equalGrid; + return equalGrid.get(); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/RimEclipseResultCase.cpp b/ApplicationLibCode/ProjectDataModel/RimEclipseResultCase.cpp index 9e40d6fe41..ed96313d68 100644 --- a/ApplicationLibCode/ProjectDataModel/RimEclipseResultCase.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimEclipseResultCase.cpp @@ -375,7 +375,7 @@ bool RimEclipseResultCase::openAndReadActiveCellData( RigEclipseCaseData* mainEc cvf::ref eclipseCase = new RigEclipseCaseData( this ); CVF_ASSERT( mainEclipseCase && mainEclipseCase->mainGrid() ); - eclipseCase->setMainGrid( mainEclipseCase->mainGrid() ); + eclipseCase->setMainGrid( mainEclipseCase->mainGridShared() ); std::vector timeStepDates = mainEclipseCase->results( RiaDefines::PorosityModelType::MATRIX_MODEL )->timeStepDates(); cvf::ref readerEclipseOutput = new RifReaderEclipseOutput; diff --git a/ApplicationLibCode/ProjectDataModel/RimEclipseStatisticsCase.cpp b/ApplicationLibCode/ProjectDataModel/RimEclipseStatisticsCase.cpp index 13f064dc38..4c98ea7419 100644 --- a/ApplicationLibCode/ProjectDataModel/RimEclipseStatisticsCase.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimEclipseStatisticsCase.cpp @@ -155,7 +155,7 @@ RimEclipseStatisticsCase::~RimEclipseStatisticsCase() //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimEclipseStatisticsCase::setMainGrid( RigMainGrid* mainGrid ) +void RimEclipseStatisticsCase::setMainGrid( std::shared_ptr mainGrid ) { CVF_ASSERT( mainGrid ); CVF_ASSERT( eclipseCaseData() ); @@ -177,9 +177,7 @@ bool RimEclipseStatisticsCase::openEclipseGridFile() RimIdenticalGridCaseGroup* gridCaseGroup = parentStatisticsCaseCollection()->parentCaseGroup(); CVF_ASSERT( gridCaseGroup ); - RigMainGrid* mainGrid = gridCaseGroup->mainGrid(); - - eclipseCase->setMainGrid( mainGrid ); + eclipseCase->setMainGrid( gridCaseGroup->mainGridShared() ); eclipseCase->setActiveCellInfo( RiaDefines::PorosityModelType::MATRIX_MODEL, gridCaseGroup->unionOfActiveCells( RiaDefines::PorosityModelType::MATRIX_MODEL ) ); diff --git a/ApplicationLibCode/ProjectDataModel/RimEclipseStatisticsCase.h b/ApplicationLibCode/ProjectDataModel/RimEclipseStatisticsCase.h index 8adea0a7be..7427fe1025 100644 --- a/ApplicationLibCode/ProjectDataModel/RimEclipseStatisticsCase.h +++ b/ApplicationLibCode/ProjectDataModel/RimEclipseStatisticsCase.h @@ -28,6 +28,8 @@ #include "cafPdmField.h" #include "cafPdmObject.h" +#include + class RigMainGrid; class RigSimWellData; class RimEclipseResultDefinition; @@ -62,7 +64,7 @@ public: RimEclipseStatisticsCase(); ~RimEclipseStatisticsCase() override; - void setMainGrid( RigMainGrid* mainGrid ); + void setMainGrid( std::shared_ptr mainGrid ); void computeStatistics(); bool hasComputedStatistics() const; diff --git a/ApplicationLibCode/ProjectDataModel/RimIdenticalGridCaseGroup.cpp b/ApplicationLibCode/ProjectDataModel/RimIdenticalGridCaseGroup.cpp index cc280d3ad5..a87b8c29b2 100644 --- a/ApplicationLibCode/ProjectDataModel/RimIdenticalGridCaseGroup.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimIdenticalGridCaseGroup.cpp @@ -108,7 +108,7 @@ void RimIdenticalGridCaseGroup::addCase( RimEclipseCase* reservoir ) if ( !m_mainGrid ) { - m_mainGrid = reservoir->eclipseCaseData()->mainGrid(); + m_mainGrid = reservoir->eclipseCaseData()->mainGridShared(); } else { @@ -149,7 +149,7 @@ void RimIdenticalGridCaseGroup::removeCase( RimEclipseCase* reservoir ) //-------------------------------------------------------------------------------------------------- RigMainGrid* RimIdenticalGridCaseGroup::mainGrid() { - if ( m_mainGrid ) return m_mainGrid; + if ( m_mainGrid ) return m_mainGrid.get(); return nullptr; } @@ -211,7 +211,7 @@ void RimIdenticalGridCaseGroup::loadMainCaseAndActiveCellInfo() info.incrementProgress(); } - m_mainGrid = rigCaseData->mainGrid(); + m_mainGrid = rigCaseData->mainGridShared(); // Check if we need to calculate the union of the active cells @@ -370,7 +370,7 @@ void RimIdenticalGridCaseGroup::updateMainGridAndActiveCellsForStatisticsCases() if ( rimStaticsCase->eclipseCaseData() ) { - rimStaticsCase->eclipseCaseData()->setMainGrid( mainGrid() ); + rimStaticsCase->eclipseCaseData()->setMainGrid( mainGridShared() ); if ( i == 0 ) { diff --git a/ApplicationLibCode/ProjectDataModel/RimIdenticalGridCaseGroup.h b/ApplicationLibCode/ProjectDataModel/RimIdenticalGridCaseGroup.h index c5d463d937..b3ca683fe9 100644 --- a/ApplicationLibCode/ProjectDataModel/RimIdenticalGridCaseGroup.h +++ b/ApplicationLibCode/ProjectDataModel/RimIdenticalGridCaseGroup.h @@ -28,6 +28,8 @@ #include "cvfObject.h" +#include + class RigActiveCellInfo; class RigMainGrid; @@ -64,7 +66,9 @@ public: RimEclipseCase* mainCase(); void loadMainCaseAndActiveCellInfo(); - RigMainGrid* mainGrid(); + RigMainGrid* mainGrid(); + std::shared_ptr mainGridShared() { return m_mainGrid; } + std::shared_ptr mainGridShared() const { return m_mainGrid; } RigActiveCellInfo* unionOfActiveCells( RiaDefines::PorosityModelType porosityType ); void computeUnionOfActiveCells(); @@ -82,7 +86,7 @@ private: RimEclipseStatisticsCase* createStatisticsCase( bool selectDefaultResults ); private: - RigMainGrid* m_mainGrid; + std::shared_ptr m_mainGrid; cvf::ref m_unionOfMatrixActiveCells; cvf::ref m_unionOfFractureActiveCells; diff --git a/ApplicationLibCode/ReservoirDataModel/RigEclipseCaseData.cpp b/ApplicationLibCode/ReservoirDataModel/RigEclipseCaseData.cpp index a3da59c145..40721685e5 100644 --- a/ApplicationLibCode/ReservoirDataModel/RigEclipseCaseData.cpp +++ b/ApplicationLibCode/ReservoirDataModel/RigEclipseCaseData.cpp @@ -47,7 +47,7 @@ RigEclipseCaseData::RigEclipseCaseData( RimEclipseCase* ownerCase ) : m_hasParsedDeckForEquilData( false ) { - m_mainGrid = new RigMainGrid(); + m_mainGrid = std::make_shared(); m_ownerCase = ownerCase; m_matrixModelResults = new RigCaseCellResultsData( this, RiaDefines::PorosityModelType::MATRIX_MODEL ); @@ -74,7 +74,7 @@ RigEclipseCaseData::~RigEclipseCaseData() //-------------------------------------------------------------------------------------------------- RigMainGrid* RigEclipseCaseData::mainGrid() { - return m_mainGrid.p(); + return m_mainGrid.get(); } //-------------------------------------------------------------------------------------------------- @@ -82,18 +82,18 @@ RigMainGrid* RigEclipseCaseData::mainGrid() //-------------------------------------------------------------------------------------------------- const RigMainGrid* RigEclipseCaseData::mainGrid() const { - return m_mainGrid.p(); + return m_mainGrid.get(); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RigEclipseCaseData::setMainGrid( RigMainGrid* mainGrid ) +void RigEclipseCaseData::setMainGrid( std::shared_ptr mainGrid ) { m_mainGrid = mainGrid; - m_matrixModelResults->setMainGrid( m_mainGrid.p() ); - m_fractureModelResults->setMainGrid( m_mainGrid.p() ); + m_matrixModelResults->setMainGrid( m_mainGrid.get() ); + m_fractureModelResults->setMainGrid( m_mainGrid.get() ); } //-------------------------------------------------------------------------------------------------- @@ -103,7 +103,7 @@ void RigEclipseCaseData::allGrids( std::vector* grids ) { CVF_ASSERT( grids ); - if ( m_mainGrid.isNull() ) + if ( !m_mainGrid ) { return; } @@ -122,7 +122,7 @@ void RigEclipseCaseData::allGrids( std::vector* grids ) cons { CVF_ASSERT( grids ); - if ( m_mainGrid.isNull() ) + if ( !m_mainGrid ) { return; } @@ -139,7 +139,7 @@ void RigEclipseCaseData::allGrids( std::vector* grids ) cons //-------------------------------------------------------------------------------------------------- const RigGridBase* RigEclipseCaseData::grid( size_t index ) const { - CVF_ASSERT( m_mainGrid.notNull() ); + CVF_ASSERT( m_mainGrid != nullptr ); return m_mainGrid->gridByIndex( index ); } @@ -148,7 +148,7 @@ const RigGridBase* RigEclipseCaseData::grid( size_t index ) const //-------------------------------------------------------------------------------------------------- RigGridBase* RigEclipseCaseData::grid( size_t index ) { - CVF_ASSERT( m_mainGrid.notNull() ); + CVF_ASSERT( m_mainGrid != nullptr ); return m_mainGrid->gridByIndex( index ); } @@ -157,14 +157,14 @@ RigGridBase* RigEclipseCaseData::grid( size_t index ) //-------------------------------------------------------------------------------------------------- const RigGridBase* RigEclipseCaseData::grid( const QString& gridName ) const { - if ( m_mainGrid.isNull() ) + if ( !m_mainGrid ) { return nullptr; } if ( gridName.isEmpty() ) { - return m_mainGrid.p(); + return m_mainGrid.get(); } size_t i; @@ -181,7 +181,7 @@ const RigGridBase* RigEclipseCaseData::grid( const QString& gridName ) const //-------------------------------------------------------------------------------------------------- size_t RigEclipseCaseData::gridCount() const { - CVF_ASSERT( m_mainGrid.notNull() ); + CVF_ASSERT( m_mainGrid != nullptr ); return m_mainGrid->gridCount(); } @@ -426,7 +426,7 @@ public: //-------------------------------------------------------------------------------------------------- void RigEclipseCaseData::computeActiveCellIJKBBox() { - if ( m_mainGrid.notNull() && m_activeCellInfo.notNull() && m_fractureActiveCellInfo.notNull() ) + if ( m_mainGrid != nullptr && m_activeCellInfo.notNull() && m_fractureActiveCellInfo.notNull() ) { CellRangeBB matrixModelActiveBB; CellRangeBB fractureModelActiveBB; @@ -641,7 +641,7 @@ void RigEclipseCaseData::computeActiveCellsGeometryBoundingBoxSlow() return; } - if ( m_mainGrid.isNull() ) + if ( !m_mainGrid ) { cvf::BoundingBox bb; m_activeCellInfo->setGeometryBoundingBox( bb ); @@ -694,7 +694,7 @@ void RigEclipseCaseData::computeActiveCellsGeometryBoundingBoxOptimized() return; } - if ( m_mainGrid.isNull() ) + if ( !m_mainGrid ) { cvf::BoundingBox bb; m_activeCellInfo->setGeometryBoundingBox( bb ); diff --git a/ApplicationLibCode/ReservoirDataModel/RigEclipseCaseData.h b/ApplicationLibCode/ReservoirDataModel/RigEclipseCaseData.h index 34913d8a26..cac631b34e 100644 --- a/ApplicationLibCode/ReservoirDataModel/RigEclipseCaseData.h +++ b/ApplicationLibCode/ReservoirDataModel/RigEclipseCaseData.h @@ -31,6 +31,7 @@ #include "cvfVector3.h" #include +#include #include #include @@ -61,9 +62,11 @@ public: RimEclipseCase* ownerCase() const { return m_ownerCase; } - RigMainGrid* mainGrid(); - const RigMainGrid* mainGrid() const; - void setMainGrid( RigMainGrid* mainGrid ); + RigMainGrid* mainGrid(); + const RigMainGrid* mainGrid() const; + std::shared_ptr mainGridShared() { return m_mainGrid; } + std::shared_ptr mainGridShared() const { return m_mainGrid; } + void setMainGrid( std::shared_ptr mainGrid ); void allGrids( std::vector* grids ); // To be removed void allGrids( std::vector* grids ) const; // To be removed @@ -134,8 +137,8 @@ private: const RigFormationNames* activeFormationNames() const; private: - cvf::ref m_mainGrid; - RimEclipseCase* m_ownerCase; + std::shared_ptr m_mainGrid; + RimEclipseCase* m_ownerCase; cvf::ref m_activeCellInfo; cvf::ref m_fractureActiveCellInfo; diff --git a/ApplicationLibCode/ReservoirDataModel/RigGridManager.cpp b/ApplicationLibCode/ReservoirDataModel/RigGridManager.cpp index 04bcc278ab..9527510b53 100644 --- a/ApplicationLibCode/ReservoirDataModel/RigGridManager.cpp +++ b/ApplicationLibCode/ReservoirDataModel/RigGridManager.cpp @@ -26,7 +26,7 @@ //-------------------------------------------------------------------------------------------------- void RigGridManager::addCase( RigEclipseCaseData* eclipseCase ) { - cvf::ref caseAndGrid = new CaseToGridMap( eclipseCase, eclipseCase->mainGrid() ); + cvf::ref caseAndGrid = new CaseToGridMap( eclipseCase, eclipseCase->mainGridShared() ); m_caseToGrid.push_back( caseAndGrid.p() ); } @@ -48,12 +48,12 @@ void RigGridManager::removeCase( RigEclipseCaseData* eclipseCase ) //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RigMainGrid* RigGridManager::findEqualGrid( RigMainGrid* candidateGrid ) +std::shared_ptr RigGridManager::findEqualGrid( RigMainGrid* candidateGrid ) { for ( size_t i = 0; i < m_caseToGrid.size(); i++ ) { - RigMainGrid* mainGrid = m_caseToGrid.at( i )->m_mainGrid; - if ( RigGridManager::isEqual( mainGrid, candidateGrid ) ) + auto mainGrid = m_caseToGrid.at( i )->m_mainGrid; + if ( RigGridManager::isEqual( mainGrid.get(), candidateGrid ) ) { return mainGrid; } @@ -136,7 +136,7 @@ bool RigGridManager::isMainGridDimensionsEqual( const RigMainGrid* gridA, const //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RigGridManager::CaseToGridMap::CaseToGridMap( RigEclipseCaseData* eclipseCase, RigMainGrid* mainGrid ) +RigGridManager::CaseToGridMap::CaseToGridMap( RigEclipseCaseData* eclipseCase, std::shared_ptr mainGrid ) : m_eclipseCase( eclipseCase ) , m_mainGrid( mainGrid ) { diff --git a/ApplicationLibCode/ReservoirDataModel/RigGridManager.h b/ApplicationLibCode/ReservoirDataModel/RigGridManager.h index e373871120..c95553b9bd 100644 --- a/ApplicationLibCode/ReservoirDataModel/RigGridManager.h +++ b/ApplicationLibCode/ReservoirDataModel/RigGridManager.h @@ -21,6 +21,7 @@ #include "cvfCollection.h" #include "cvfObject.h" +#include #include class RigMainGrid; @@ -33,7 +34,7 @@ public: void removeCase( RigEclipseCaseData* eclipseCase ); - RigMainGrid* findEqualGrid( RigMainGrid* candidateGrid ); + std::shared_ptr findEqualGrid( RigMainGrid* candidateGrid ); void clear(); @@ -46,10 +47,10 @@ private: class CaseToGridMap : public cvf::Object { public: - CaseToGridMap( RigEclipseCaseData* eclipseCase, RigMainGrid* mainGrid ); + CaseToGridMap( RigEclipseCaseData* eclipseCase, std::shared_ptr mainGrid ); - RigEclipseCaseData* m_eclipseCase; - RigMainGrid* m_mainGrid; + RigEclipseCaseData* m_eclipseCase; + std::shared_ptr m_mainGrid; }; private: diff --git a/ApplicationLibCode/UnitTests/RigReservoir-Test.cpp b/ApplicationLibCode/UnitTests/RigReservoir-Test.cpp index 33e1b03d9d..4273b72a9c 100644 --- a/ApplicationLibCode/UnitTests/RigReservoir-Test.cpp +++ b/ApplicationLibCode/UnitTests/RigReservoir-Test.cpp @@ -24,27 +24,29 @@ #include "RigGridManager.h" #include "RigMainGrid.h" +#include + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- TEST( RigGridManager, BasicTest ) { - cvf::ref mainGridA = new RigMainGrid; + auto mainGridA = std::make_shared(); cvf::ref eclipseCase = new RigEclipseCaseData( nullptr ); - eclipseCase->setMainGrid( mainGridA.p() ); + eclipseCase->setMainGrid( mainGridA ); - EXPECT_EQ( mainGridA->refCount(), 2 ); + EXPECT_EQ( mainGridA.use_count(), 2 ); RigGridManager gridCollection; gridCollection.addCase( eclipseCase.p() ); - EXPECT_EQ( mainGridA->refCount(), 2 ); + EXPECT_EQ( mainGridA.use_count(), 3 ); - cvf::ref mainGridB = mainGridA; - EXPECT_EQ( mainGridA->refCount(), 3 ); + auto mainGridB = mainGridA; + EXPECT_EQ( mainGridA.use_count(), 4 ); - cvf::ref existingGrid = gridCollection.findEqualGrid( mainGridB.p() ); - EXPECT_TRUE( existingGrid.notNull() ); + auto existingGrid = gridCollection.findEqualGrid( mainGridB.get() ); + EXPECT_TRUE( existingGrid != nullptr ); } //-------------------------------------------------------------------------------------------------- @@ -52,36 +54,36 @@ TEST( RigGridManager, BasicTest ) //-------------------------------------------------------------------------------------------------- TEST( RigGridManager, EqualTests ) { - cvf::ref mainGridA = new RigMainGrid; + auto mainGridA = std::make_shared(); mainGridA->nodes().push_back( cvf::Vec3d( 0, 0, 0 ) ); mainGridA->nodes().push_back( cvf::Vec3d( 0, 0, 1 ) ); mainGridA->nodes().push_back( cvf::Vec3d( 0, 0, 2 ) ); cvf::ref eclipseCase = new RigEclipseCaseData( nullptr ); - eclipseCase->setMainGrid( mainGridA.p() ); + eclipseCase->setMainGrid( mainGridA ); RigGridManager gridCollection; gridCollection.addCase( eclipseCase.p() ); - cvf::ref mainGridB = new RigMainGrid; - cvf::ref existingGrid = gridCollection.findEqualGrid( mainGridB.p() ); - EXPECT_TRUE( existingGrid.isNull() ); + auto mainGridB = std::make_shared(); + auto existingGrid = gridCollection.findEqualGrid( mainGridB.get() ); + EXPECT_TRUE( existingGrid == nullptr ); mainGridB->nodes().push_back( cvf::Vec3d( 0, 0, 0 ) ); - existingGrid = gridCollection.findEqualGrid( mainGridB.p() ); - EXPECT_TRUE( existingGrid.isNull() ); + existingGrid = gridCollection.findEqualGrid( mainGridB.get() ); + EXPECT_TRUE( existingGrid == nullptr ); // Insert nodes in opposite direction mainGridB->nodes().push_back( cvf::Vec3d( 0, 0, 2 ) ); mainGridB->nodes().push_back( cvf::Vec3d( 0, 0, 1 ) ); - existingGrid = gridCollection.findEqualGrid( mainGridB.p() ); - EXPECT_TRUE( existingGrid.isNull() ); + existingGrid = gridCollection.findEqualGrid( mainGridB.get() ); + EXPECT_TRUE( existingGrid == nullptr ); // Overwrite to match the node structure of mainGridA mainGridB->nodes()[1] = cvf::Vec3d( 0, 0, 1 ); mainGridB->nodes()[2] = cvf::Vec3d( 0, 0, 2 ); - existingGrid = gridCollection.findEqualGrid( mainGridB.p() ); - EXPECT_TRUE( existingGrid.notNull() ); + existingGrid = gridCollection.findEqualGrid( mainGridB.get() ); + EXPECT_TRUE( existingGrid != nullptr ); } /*