Alien-libpanda
view release on metacpan or search on metacpan
src/panda/basic_string.h view on Meta::CPAN
* - SSO support (small string optimization). Up to 23 bytes for 64bit / 11 bytes for 32bit.
* It does not mean that all strings <= MAX_SSO_CHARS are in SSO mode. SSO mode is used only when otherwise panda::string would have to allocate
* and copy something. For example if you call "otherstr = mystr.substr(offset, len)", then otherstr will not use SSO even if len <= MAX_SSO_CHARS,
* because it prefers to do nothing (COW-mode) instead of copying content to SSO location.
* - Support for getting r/w internal data buffer to manually fill it.
* The content of other strings which shares the data with current string will not be affected.
* - Reallocate instead of deallocate/allocate when possible, which in many cases is much faster
* - Supports auto convertations between basic_strings with different Allocator template parameter without copying and allocating anything.
* For example any basic_string<...> can be assigned to/from string as if they were of the same class.
*
* All these features covers almost all generic use cases, including creating zero-copy cascade parsers which in other case would lead to a lot of
* pain.
*
* c_str() is not supported, because strings are not null-terminated
*/
namespace string_detail {
template <typename S>
struct mutable_charref {
using value_type = typename S::value_type;
using size_type = typename S::size_type;
( run in 0.521 second using v1.01-cache-2.11-cpan-49f99fa48dc )