line |
true |
false |
branch |
103
|
0 |
0 |
if (!mem) throw std::bad_alloc(); |
425
|
2 |
0 |
operator std::basic_string () const { return std::basic_string(_str, _length); } |
884
|
8 |
0 |
if (count) { |
1161
|
0 |
0 |
if (capacity <= MAX_SSO_CHARS) { |
1165
|
0 |
0 |
if (capacity > MAX_SIZE) throw std::length_error("basic_string::_new_auto"); |
|
0 |
0 |
if (capacity > MAX_SIZE) throw std::length_error("basic_string::_new_auto"); |
1256
|
0 |
0 |
if (oth._state == State::SSO) _str = _sso + (oth._str - oth._sso); |
1335
|
0 |
0 |
if (capacity < _length) capacity = _length; |
1345
|
0 |
0 |
if (_storage.internal->refcnt > 1) _detach_cow(capacity * extra); |
1346
|
0 |
0 |
else if (_storage.internal->capacity < capacity) _internal_realloc(capacity * extra); // need to grow storage |
1347
|
0 |
0 |
else if (_capacity_internal() < capacity) { // may not to grow storage if str is moved to the beginning |
1356
|
0 |
0 |
if (_storage.dtor == &Alloc::deallocate && _str == _storage.internal->start) { |
|
0 |
0 |
if (_storage.dtor == &Alloc::deallocate && _str == _storage.internal->start) { |
1357
|
0 |
0 |
if (capacity > MAX_SIZE) throw std::length_error("basic_string::_internal_realloc"); |
|
0 |
0 |
if (capacity > MAX_SIZE) throw std::length_error("basic_string::_internal_realloc"); |
1372
|
0 |
0 |
if (_storage.external->refcnt > 1) _detach_cow(capacity * extra); |
1373
|
0 |
0 |
else if (_storage.external->capacity < capacity) _external_realloc(capacity * extra); // need to grow storage, switch to INTERNAL/SSO |
1374
|
0 |
0 |
else if (_capacity_external() < capacity) { // may not to grow storage if str is moved to the beginning |
1390
|
0 |
0 |
if (MAX_SSO_CHARS < capacity) { |
1394
|
0 |
0 |
else if (_capacity_sso() < capacity) { |
1501
|
0 |
0 |
static void _release_internal (Buffer* buf, dtor_fn dtor) { if (!--buf->refcnt) _free_internal(buf, dtor); } |
1502
|
0 |
0 |
static void _release_external (ExternalShared* ebuf, dtor_fn dtor) { if (!--ebuf->refcnt) _free_external(ebuf, dtor); } |