Fixed allocation bug.
This commit is contained in:
@@ -648,7 +648,7 @@ protected: //------------------------------------------- synchronize properties
|
|||||||
|
|
||||||
void vprops_reserve(size_t _n) const { vprops_.reserve(_n); }
|
void vprops_reserve(size_t _n) const { vprops_.reserve(_n); }
|
||||||
void vprops_resize(size_t _n) const { vprops_.resize(_n); }
|
void vprops_resize(size_t _n) const { vprops_.resize(_n); }
|
||||||
void vprops_resize_if_smaller(size_t _n) const { if (vprops_.size() < _n) vprops_.resize(_n); }
|
void vprops_resize_if_smaller(size_t _n) const { vprops_.resize_if_smaller(_n); }
|
||||||
void vprops_clear() {
|
void vprops_clear() {
|
||||||
vprops_.clear();
|
vprops_.clear();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -211,6 +211,11 @@ public:
|
|||||||
[_n](BaseProperty* p) { if (p) p->resize(_n); });
|
[_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 {
|
void swap(size_t _i0, size_t _i1) const {
|
||||||
std::for_each(properties_.begin(), properties_.end(),
|
std::for_each(properties_.begin(), properties_.end(),
|
||||||
[_i0, _i1](BaseProperty* p) { if (p) p->swap(_i0, _i1); });
|
[_i0, _i1](BaseProperty* p) { if (p) p->swap(_i0, _i1); });
|
||||||
@@ -224,6 +229,10 @@ public:
|
|||||||
std::for_each(properties_.begin(), properties_.end(), Resize(_n));
|
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 {
|
void swap(size_t _i0, size_t _i1) const {
|
||||||
std::for_each(properties_.begin(), properties_.end(), Swap(_i0, _i1));
|
std::for_each(properties_.begin(), properties_.end(), Swap(_i0, _i1));
|
||||||
}
|
}
|
||||||
@@ -290,6 +299,13 @@ private:
|
|||||||
size_t n_;
|
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
|
struct ClearAll
|
||||||
{
|
{
|
||||||
ClearAll() {}
|
ClearAll() {}
|
||||||
|
|||||||
Reference in New Issue
Block a user