From 96751f7e024d3694c55cfb647dcb5efd06d2f0e3 Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@Germany> Date: Mon, 19 Jan 2009 14:31:31 +0100 Subject: [PATCH] Applied Mattijs' DynamicList copy constructor patch --- applications/test/DynamicList/DynamicListTest.C | 13 +++++++++++++ .../containers/Lists/DynamicList/DynamicList.H | 7 +++++++ .../containers/Lists/DynamicList/DynamicListI.H | 12 +++++++++++- 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/applications/test/DynamicList/DynamicListTest.C b/applications/test/DynamicList/DynamicListTest.C index 7e72651294f..324c5361bb7 100644 --- a/applications/test/DynamicList/DynamicListTest.C +++ b/applications/test/DynamicList/DynamicListTest.C @@ -160,6 +160,19 @@ int main(int argc, char *argv[]) << " " << lstB.size() << endl; Info<< "<dlD>" << dlD << "</dlD>" << nl << "sizes: " << " " << dlD.size() << "/" << dlD.capacity() << endl; + + DynamicList<label,10> dlE1(10); + DynamicList<label> dlE2(dlE1); + + Info<< "<dlE1>" << dlE1 << "</dlE1>" << nl << "sizes: " + << " " << dlE1.size() << "/" << dlE1.capacity() << endl; + Info<< "<dlE2>" << dlE2 << "</dlE2>" << nl << "sizes: " + << " " << dlE2.size() << "/" << dlE2.capacity() << endl; + + dlE2.append(100); + Info<< "<dlE2>" << dlE2 << "</dlE2>" << endl; + + Info<< "\nEnd\n"; return 0; } diff --git a/src/OpenFOAM/containers/Lists/DynamicList/DynamicList.H b/src/OpenFOAM/containers/Lists/DynamicList/DynamicList.H index dbbcb82b801..1e62ceb96c9 100644 --- a/src/OpenFOAM/containers/Lists/DynamicList/DynamicList.H +++ b/src/OpenFOAM/containers/Lists/DynamicList/DynamicList.H @@ -101,7 +101,14 @@ public: //- Construct given size. explicit inline DynamicList(const label); + //- Construct copy. + explicit inline DynamicList + ( + const DynamicList<T, SizeInc, SizeMult, SizeDiv>& + ); + //- Construct from UList. Size set to UList size. + // Also constructs from DynamicList with different sizing parameters. explicit inline DynamicList(const UList<T>&); //- Construct by transferring the parameter contents diff --git a/src/OpenFOAM/containers/Lists/DynamicList/DynamicListI.H b/src/OpenFOAM/containers/Lists/DynamicList/DynamicListI.H index 8357ee5889e..5f65f0e6657 100644 --- a/src/OpenFOAM/containers/Lists/DynamicList/DynamicListI.H +++ b/src/OpenFOAM/containers/Lists/DynamicList/DynamicListI.H @@ -50,6 +50,17 @@ inline Foam::DynamicList<T, SizeInc, SizeMult, SizeDiv>::DynamicList } +template<class T, unsigned SizeInc, unsigned SizeMult, unsigned SizeDiv> +inline Foam::DynamicList<T, SizeInc, SizeMult, SizeDiv>::DynamicList +( + const DynamicList<T, SizeInc, SizeMult, SizeDiv>& lst +) +: + List<T>(lst), + capacity_(lst.size()) +{} + + template<class T, unsigned SizeInc, unsigned SizeMult, unsigned SizeDiv> inline Foam::DynamicList<T, SizeInc, SizeMult, SizeDiv>::DynamicList ( @@ -99,7 +110,6 @@ inline void Foam::DynamicList<T, SizeInc, SizeMult, SizeDiv>::setCapacity } // we could also enforce SizeInc granularity when (!SizeMult || !SizeDiv) - List<T>::setSize(capacity_); List<T>::size(nextFree); } -- GitLab