Skip to content

Commit

Permalink
src: simplify MaybeStackBuffer::capacity()
Browse files Browse the repository at this point in the history
PR-URL: #33602
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Zeyu Yang <himself65@outlook.com>
Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com>
Reviewed-By: David Carlier <devnexen@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
  • Loading branch information
bnoordhuis authored and codebytere committed Jul 8, 2020
1 parent e3beb78 commit eb8d6f5
Showing 1 changed file with 10 additions and 9 deletions.
19 changes: 10 additions & 9 deletions src/util.h
Original file line number Diff line number Diff line change
Expand Up @@ -321,6 +321,11 @@ inline bool StringEqualNoCase(const char* a, const char* b);
// strncasecmp() is locale-sensitive. Use StringEqualNoCaseN() instead.
inline bool StringEqualNoCaseN(const char* a, const char* b, size_t length);

template <typename T, size_t N>
constexpr size_t arraysize(const T (&)[N]) {
return N;
}

// Allocates an array of member type T. For up to kStackStorageSize items,
// the stack is used, otherwise malloc().
template <typename T, size_t kStackStorageSize = 1024>
Expand Down Expand Up @@ -360,8 +365,7 @@ class MaybeStackBuffer {
// Current maximum capacity of the buffer with which SetLength() can be used
// without first calling AllocateSufficientStorage().
size_t capacity() const {
return IsAllocated() ? capacity_ :
IsInvalidated() ? 0 : kStackStorageSize;
return capacity_;
}

// Make sure enough space for `storage` entries is available.
Expand Down Expand Up @@ -403,6 +407,7 @@ class MaybeStackBuffer {
// be used.
void Invalidate() {
CHECK(!IsAllocated());
capacity_ = 0;
length_ = 0;
buf_ = nullptr;
}
Expand All @@ -423,10 +428,11 @@ class MaybeStackBuffer {
CHECK(IsAllocated());
buf_ = buf_st_;
length_ = 0;
capacity_ = 0;
capacity_ = arraysize(buf_st_);
}

MaybeStackBuffer() : length_(0), capacity_(0), buf_(buf_st_) {
MaybeStackBuffer()
: length_(0), capacity_(arraysize(buf_st_)), buf_(buf_st_) {
// Default to a zero-length, null-terminated buffer.
buf_[0] = T();
}
Expand Down Expand Up @@ -701,11 +707,6 @@ inline bool IsBigEndian() {
return GetEndianness() == kBigEndian;
}

template <typename T, size_t N>
constexpr size_t arraysize(const T (&)[N]) {
return N;
}

// Round up a to the next highest multiple of b.
template <typename T>
constexpr T RoundUp(T a, T b) {
Expand Down

0 comments on commit eb8d6f5

Please sign in to comment.