DynamicList: minor cleanup

This commit is contained in:
Henry Weller 2016-06-04 17:45:11 +01:00
parent 91e84b9004
commit ca45cf1614

View file

@ -28,11 +28,8 @@ License
template<class T, unsigned SizeInc, unsigned SizeMult, unsigned SizeDiv> template<class T, unsigned SizeInc, unsigned SizeMult, unsigned SizeDiv>
inline Foam::DynamicList<T, SizeInc, SizeMult, SizeDiv>::DynamicList() inline Foam::DynamicList<T, SizeInc, SizeMult, SizeDiv>::DynamicList()
: :
List<T>(0),
capacity_(0) capacity_(0)
{ {}
List<T>::size(0);
}
template<class T, unsigned SizeInc, unsigned SizeMult, unsigned SizeDiv> template<class T, unsigned SizeInc, unsigned SizeMult, unsigned SizeDiv>
@ -144,28 +141,14 @@ inline void Foam::DynamicList<T, SizeInc, SizeMult, SizeDiv>::reserve
const label nElem const label nElem
) )
{ {
// Allocate more capacity? // Allocate more capacity if necessary
if (nElem > capacity_) if (nElem > capacity_)
{ {
// TODO: convince the compiler that division by zero does not occur capacity_ = max
// if (SizeInc && (!SizeMult || !SizeDiv)) (
// { nElem,
// // resize with SizeInc as the granularity label(SizeInc + capacity_ * SizeMult / SizeDiv)
// capacity_ = nElem; );
// unsigned pad = SizeInc - (capacity_ % SizeInc);
// if (pad != SizeInc)
// {
// capacity_ += pad;
// }
// }
// else
{
capacity_ = max
(
nElem,
label(SizeInc + capacity_ * SizeMult / SizeDiv)
);
}
// Adjust allocated size, leave addressed size untouched // Adjust allocated size, leave addressed size untouched
label nextFree = List<T>::size(); label nextFree = List<T>::size();
@ -181,28 +164,14 @@ inline void Foam::DynamicList<T, SizeInc, SizeMult, SizeDiv>::setSize
const label nElem const label nElem
) )
{ {
// Allocate more capacity? // Allocate more capacity if necessary
if (nElem > capacity_) if (nElem > capacity_)
{ {
// TODO: convince the compiler that division by zero does not occur capacity_ = max
// if (SizeInc && (!SizeMult || !SizeDiv)) (
// { nElem,
// // resize with SizeInc as the granularity label(SizeInc + capacity_ * SizeMult / SizeDiv)
// capacity_ = nElem; );
// unsigned pad = SizeInc - (capacity_ % SizeInc);
// if (pad != SizeInc)
// {
// capacity_ += pad;
// }
// }
// else
{
capacity_ = max
(
nElem,
label(SizeInc + capacity_ * SizeMult / SizeDiv)
);
}
List<T>::setSize(capacity_); List<T>::setSize(capacity_);
} }
@ -289,8 +258,9 @@ template<class T, unsigned SizeInc, unsigned SizeMult, unsigned SizeDiv>
inline void inline void
Foam::DynamicList<T, SizeInc, SizeMult, SizeDiv>::transfer(List<T>& lst) Foam::DynamicList<T, SizeInc, SizeMult, SizeDiv>::transfer(List<T>& lst)
{ {
// Take over storage, clear addressing for lst.
capacity_ = lst.size(); capacity_ = lst.size();
List<T>::transfer(lst); // Take over storage, clear addressing for lst. List<T>::transfer(lst);
} }
@ -304,7 +274,6 @@ Foam::DynamicList<T, SizeInc, SizeMult, SizeDiv>::transfer
// Take over storage as-is (without shrink), clear addressing for lst. // Take over storage as-is (without shrink), clear addressing for lst.
capacity_ = lst.capacity_; capacity_ = lst.capacity_;
lst.capacity_ = 0; lst.capacity_ = 0;
List<T>::transfer(static_cast<List<T>&>(lst)); List<T>::transfer(static_cast<List<T>&>(lst));
} }
@ -342,7 +311,7 @@ Foam::DynamicList<T, SizeInc, SizeMult, SizeDiv>::append
if (this == &lst) if (this == &lst)
{ {
FatalErrorInFunction FatalErrorInFunction
<< "attempted appending to self" << abort(FatalError); << "Attempted appending to self" << abort(FatalError);
} }
label nextFree = List<T>::size(); label nextFree = List<T>::size();
@ -429,7 +398,7 @@ inline void Foam::DynamicList<T, SizeInc, SizeMult, SizeDiv>::operator=
if (this == &lst) if (this == &lst)
{ {
FatalErrorInFunction FatalErrorInFunction
<< "attempted assignment to self" << abort(FatalError); << "Attempted assignment to self" << abort(FatalError);
} }
if (capacity_ >= lst.size()) if (capacity_ >= lst.size())