Skip to content

Commit 517f70e

Browse files
committed
put assert in header
1 parent e267777 commit 517f70e

File tree

2 files changed

+25
-23
lines changed

2 files changed

+25
-23
lines changed

Src/Base/AMReX_PODVector.H

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -259,9 +259,18 @@ namespace amrex
259259

260260
void Initialize ();
261261

262-
std::size_t GetNewCapacity (std::size_t old_size, std::size_t old_capacity,
263-
std::size_t new_size, GrowthStrategy strategy,
264-
std::size_t sizeof_T);
262+
std::size_t GetNewCapacityImp (std::size_t old_size, std::size_t old_capacity,
263+
std::size_t new_size, GrowthStrategy strategy,
264+
std::size_t sizeof_T);
265+
266+
inline std::size_t GetNewCapacity (std::size_t old_size, std::size_t old_capacity,
267+
std::size_t new_size, GrowthStrategy strategy,
268+
std::size_t sizeof_T) {
269+
std::size_t new_capacity =
270+
GetNewCapacityImp(old_size, old_capacity, new_size, strategy, sizeof_T);
271+
AMREX_ALWAYS_ASSERT(new_capacity >= new_size);
272+
return new_capacity;
273+
}
265274
}
266275

267276
template <class T, class Allocator = std::allocator<T> >

Src/Base/AMReX_PODVector.cpp

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -49,51 +49,44 @@ namespace amrex::VectorGrowthStrategy
4949
detail::ValidateUserInput();
5050
}
5151

52-
std::size_t GetNewCapacity ([[maybe_unused]] std::size_t old_size, std::size_t old_capacity,
53-
std::size_t new_size, amrex::GrowthStrategy strategy,
54-
std::size_t sizeof_T) {
55-
56-
std::size_t new_capacity = 0;
52+
std::size_t GetNewCapacityImp ([[maybe_unused]] std::size_t old_size, std::size_t old_capacity,
53+
std::size_t new_size, amrex::GrowthStrategy strategy,
54+
std::size_t sizeof_T) {
5755

5856
if (override_strategy != amrex::GrowthStrategy::Default) {
59-
return GetNewCapacity(old_size, old_capacity, new_size, override_strategy, sizeof_T);
57+
return GetNewCapacityImp(old_size, old_capacity, new_size, override_strategy, sizeof_T);
6058
}
6159

6260
switch (strategy) {
6361
case GrowthStrategy::Default:
6462
AMREX_ALWAYS_ASSERT_WITH_MESSAGE(default_strategy != GrowthStrategy::Default,
6563
"Must set default growth strategy to something other than Default");
66-
return GetNewCapacity(old_size, old_capacity, new_size, default_strategy, sizeof_T);
64+
return GetNewCapacityImp(old_size, old_capacity, new_size,
65+
default_strategy, sizeof_T);
6766
case GrowthStrategy::Exact:
6867
if (new_size > old_capacity) {
69-
new_capacity = new_size;
68+
return new_size;
7069
} else {
71-
new_capacity = old_capacity;
70+
return old_capacity;
7271
}
73-
break;
7472
case GrowthStrategy::Geometric:
7573
if (new_size > old_capacity) {
7674
const std::size_t min_capacity = std::max(64/sizeof_T, new_size);
7775
Real const gf = GetGrowthFactor();
7876
if (amrex::almostEqual(gf, Real(1.5))) {
79-
new_capacity = std::max((old_capacity*3+1)/2, min_capacity);
77+
return std::max((old_capacity*3+1)/2, min_capacity);
8078
} else {
81-
new_capacity = std::max(std::size_t(gf*Real(old_capacity+1)), min_capacity);
79+
return std::max(std::size_t(gf*Real(old_capacity+1)), min_capacity);
8280
}
8381
} else {
84-
new_capacity = old_capacity;
82+
return old_capacity;
8583
}
86-
break;
8784
case GrowthStrategy::Poisson:
8885
if (new_size > old_capacity) {
89-
new_capacity = new_size + static_cast<std::size_t>(3 * std::sqrt(new_size));
86+
return new_size + static_cast<std::size_t>(3 * std::sqrt(new_size));
9087
} else {
91-
new_capacity = old_capacity;
88+
return old_capacity;
9289
}
93-
break;
9490
}
95-
96-
AMREX_ALWAYS_ASSERT(new_capacity >= new_size);
97-
return new_capacity;
9891
}
9992
}

0 commit comments

Comments
 (0)