diff --git a/src/OpenFOAM/memory/autoPtr/autoPtr.H b/src/OpenFOAM/memory/autoPtr/autoPtr.H index a8802f23a92ad193948fd9b18f427a563439500c..00b8ed7809ff7b5c335574dadcec10c230052f62 100644 --- a/src/OpenFOAM/memory/autoPtr/autoPtr.H +++ b/src/OpenFOAM/memory/autoPtr/autoPtr.H @@ -106,11 +106,19 @@ public: // Access - //- Return reference, without checking pointer validity. - inline T& refOrNull(); + //- Return the pointer, without nullptr checking. + // Pointer remains under autoPtr management. + inline T* rawPtr(); - //- Return const reference, without checking pointer validity. - inline const T& refOrNull() const; + //- Const access to the pointer, without nullptr checking. + // Pointer remains under autoPtr management. + inline const T* rawPtr() const; + + //- Return the reference, without nullptr checking. + inline T& rawRef(); + + //- Return the const reference, without nullptr checking. + inline const T& rawRef() const; // Member operators diff --git a/src/OpenFOAM/memory/autoPtr/autoPtrI.H b/src/OpenFOAM/memory/autoPtr/autoPtrI.H index 7440bdce690c581572bc0a567e121be7c26defff..c1e6b144643f11ede8e1e4795dfa0e7434e30c82 100644 --- a/src/OpenFOAM/memory/autoPtr/autoPtrI.H +++ b/src/OpenFOAM/memory/autoPtr/autoPtrI.H @@ -130,14 +130,28 @@ inline void Foam::autoPtr<T>::clear() template<class T> -inline T& Foam::autoPtr<T>::refOrNull() +inline T* Foam::autoPtr<T>::rawPtr() +{ + return ptr_; +} + + +template<class T> +inline const T* Foam::autoPtr<T>::rawPtr() const +{ + return ptr_; +} + + +template<class T> +inline T& Foam::autoPtr<T>::rawRef() { return *ptr_; } template<class T> -inline const T& Foam::autoPtr<T>::refOrNull() const +inline const T& Foam::autoPtr<T>::rawRef() const { return *ptr_; }