diff --git a/applications/test/DynamicList/DynamicListTest.C b/applications/test/DynamicList/DynamicListTest.C index 7e72651294f9a33834af148583f55f75ffa3dcae..324c5361bb78b967522476d2e58c69b83473e35f 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 dbbcb82b80189e745400cfb5431030c7f1be5a23..1e62ceb96c938819917bfc4800e7c58f34f8b617 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 8357ee5889ed0f213e087c9b0c943eace75f4650..5f65f0e665762a1bf82ce369234ff7c1985701dd 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); }