Fixed allocation bug.

This commit is contained in:
Hans-Christian Ebke
2016-01-08 00:49:04 +01:00
parent 8ece0770a3
commit 63985edd59
2 changed files with 17 additions and 1 deletions

View File

@@ -211,6 +211,11 @@ public:
[_n](BaseProperty* p) { if (p) p->resize(_n); });
}
void resize_if_smaller(size_t _n) const {
std::for_each(properties_.begin(), properties_.end(),
[_n](BaseProperty* p) { if (p && p->n_elements() < _n) p->resize(_n); });
}
void swap(size_t _i0, size_t _i1) const {
std::for_each(properties_.begin(), properties_.end(),
[_i0, _i1](BaseProperty* p) { if (p) p->swap(_i0, _i1); });
@@ -224,6 +229,10 @@ public:
std::for_each(properties_.begin(), properties_.end(), Resize(_n));
}
void resize_if_smaller(size_t _n) const {
std::for_each(properties_.begin(), properties_.end(), ResizeIfSmaller(_n));
}
void swap(size_t _i0, size_t _i1) const {
std::for_each(properties_.begin(), properties_.end(), Swap(_i0, _i1));
}
@@ -290,6 +299,13 @@ private:
size_t n_;
};
struct ResizeIfSmaller
{
ResizeIfSmaller(size_t _n) : n_(_n) {}
void operator()(BaseProperty* _p) const { if (_p && _p->n_elements() < n_) _p->resize(n_); }
size_t n_;
};
struct ClearAll
{
ClearAll() {}