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 <[email protected]>
Reviewed-By: Zeyu Yang <[email protected]>
Reviewed-By: Juan José Arboleda <[email protected]>
Reviewed-By: David Carlier <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Anna Henningsen <[email protected]>
  • Loading branch information
bnoordhuis authored and codebytere committed Jun 18, 2020
1 parent 7725ff3 commit c3728c6
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 @@ -326,6 +326,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 @@ -365,8 +370,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 @@ -408,6 +412,7 @@ class MaybeStackBuffer {
// be used.
void Invalidate() {
CHECK(!IsAllocated());
capacity_ = 0;
length_ = 0;
buf_ = nullptr;
}
Expand All @@ -428,10 +433,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 @@ -707,11 +713,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 c3728c6

Please sign in to comment.