diff options
author | rubidium <rubidium@openttd.org> | 2010-02-03 17:25:56 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2010-02-03 17:25:56 +0000 |
commit | c75f19f40b047b829321dd0386d391940b942644 (patch) | |
tree | f9ffd2148bd599845a8940b30a9a2785f70b455c | |
parent | e437362c7babbdc4d4dff812e88b77bb521be6c5 (diff) | |
download | openttd-c75f19f40b047b829321dd0386d391940b942644.tar.xz |
(svn r18993) -Codechange: allow allocating multiple items in a SmallVector with one call.
-rw-r--r-- | src/core/smallvec_type.hpp | 12 | ||||
-rw-r--r-- | src/newgrf_sound.cpp | 2 |
2 files changed, 9 insertions, 5 deletions
diff --git a/src/core/smallvec_type.hpp b/src/core/smallvec_type.hpp index 5e4e17365..832ba4792 100644 --- a/src/core/smallvec_type.hpp +++ b/src/core/smallvec_type.hpp @@ -76,16 +76,20 @@ public: /** * Append an item and return it. + * @param to_add the number of items to append * @return pointer to newly allocated item */ - FORCEINLINE T *Append() + FORCEINLINE T *Append(size_t to_add = 1) { - if (this->items == this->capacity) { - this->capacity += S; + size_t begin = this->items; + this->items += to_add; + + if (this->items > this->capacity) { + this->capacity = Align(this->items, S); this->data = ReallocT(this->data, this->capacity); } - return &this->data[this->items++]; + return &this->data[begin]; } /** diff --git a/src/newgrf_sound.cpp b/src/newgrf_sound.cpp index a386f5b58..48623647e 100644 --- a/src/newgrf_sound.cpp +++ b/src/newgrf_sound.cpp @@ -18,7 +18,7 @@ #include "sound_func.h" #include "core/mem_func.hpp" -static SmallVector<SoundEntry, ORIGINAL_SAMPLE_COUNT> _sounds; +static SmallVector<SoundEntry, 8> _sounds; /* Allocate a new Sound */ |