PMDK C++ bindings
1.12-git53.g67ba2be4
This is the C++ bindings documentation for PMDK's libpmemobj.
|
pmem::obj::string - persistent container with std::basic_string compatible interface. More...
#include <libpmemobj++/container/basic_string.hpp>
Public Member Functions | |
basic_string () | |
Default constructor. More... | |
basic_string (size_type count, CharT ch) | |
Construct the container with count copies of elements with value ch. More... | |
basic_string (const basic_string &other, size_type pos, size_type count=npos) | |
Construct the string with a substring [pos, min(pos+count, other.size()) of other. More... | |
basic_string (const std::basic_string< CharT > &other, size_type pos, size_type count=npos) | |
Construct the string with a substring [pos, min(pos+count, other.size()) of std::basic_string<CharT> other. More... | |
basic_string (const CharT *s, size_type count) | |
Construct the string with the first count elements of C-style string s. More... | |
basic_string (const CharT *s) | |
Construct the string with the contents of s. More... | |
template<typename InputIt , typename Enable = typename std::enable_if< pmem::detail::is_input_iterator<InputIt>::value>::type> | |
basic_string (InputIt first, InputIt last) | |
Construct the string with the contents of the range [first, last). More... | |
basic_string (const basic_string &other) | |
Copy constructor. More... | |
basic_string (const std::basic_string< CharT > &other) | |
Copy constructor. More... | |
basic_string (basic_string &&other) | |
Move constructor. More... | |
basic_string (std::initializer_list< CharT > ilist) | |
Construct the container with the contents of the initializer list init. More... | |
template<class T , typename Enable = typename std::enable_if< std::is_convertible<const T &, pmem::obj::basic_string_view< CharT, Traits>>::value && !std::is_convertible<const T &, const CharT *>::value>> | |
basic_string (const T &t) | |
Implicitly converts argument to a string view then initilizes the string with the content of string view. More... | |
template<class T , typename Enable = typename std::enable_if<std::is_convertible< const T &, pmem::obj::basic_string_view<CharT, Traits>>::value>> | |
basic_string (const T &t, size_type pos, size_type n) | |
Implicitly converts argument to a string view then initilizes the string with the subrange [pos, pos + n) of string view. More... | |
~basic_string () | |
Destructor. | |
basic_string & | operator= (const basic_string &other) |
Copy assignment operator. More... | |
basic_string & | operator= (const std::basic_string< CharT > &other) |
Copy assignment operator. More... | |
basic_string & | operator= (basic_string &&other) |
Move assignment operator. More... | |
basic_string & | operator= (const CharT *s) |
Replace the contents with copy of C-style string s transactionally. More... | |
basic_string & | operator= (CharT ch) |
Replace the contents with character ch transactionally. More... | |
basic_string & | operator= (std::initializer_list< CharT > ilist) |
Replace the contents with those of the initializer list ilist transactionally. More... | |
basic_string & | assign (size_type count, CharT ch) |
Replace the contents with count copies of character ch transactionally. More... | |
basic_string & | assign (const basic_string &other) |
Replace the string with the copy of the contents of other transactionally. More... | |
basic_string & | assign (const std::basic_string< CharT > &other) |
Replace the string with the copy of the contents of std::basic_string<CharT> other. More... | |
basic_string & | assign (const basic_string &other, size_type pos, size_type count=npos) |
Replace the contents with a substring [pos, std::min(pos+count, other.size()) of other transactionally. More... | |
basic_string & | assign (const std::basic_string< CharT > &other, size_type pos, size_type count=npos) |
Replace the contents with a substring [pos, std::min(pos+count, other.size()) of std::basic_string<CharT> other transactionally. More... | |
basic_string & | assign (const CharT *s, size_type count) |
Replace the contents with the first count elements of C-style string s transactionally. More... | |
basic_string & | assign (const CharT *s) |
Replace the contents with copy of C-style string s transactionally. More... | |
basic_string & | assign (basic_string &&other) |
Replace the string with the contents of other using move semantics transactionally. More... | |
basic_string & | assign (std::initializer_list< CharT > ilist) |
replace_content the contents with those of the initializer list ilist transactionally. More... | |
reference | at (size_type n) |
Access element at specific index with bounds checking and snapshot it if there is an active transaction. More... | |
const_reference | at (size_type n) const |
Access element at specific index with bounds checking. More... | |
const_reference | const_at (size_type n) const |
Access element at specific index with bounds checking. More... | |
reference | operator[] (size_type n) |
Access element at specific index and snapshot it if there is an active transaction. More... | |
const_reference | operator[] (size_type n) const |
Access element at specific index. More... | |
CharT & | front () |
Access first element and snapshot it if there is an active transaction. More... | |
const CharT & | front () const |
Access first element. More... | |
const CharT & | cfront () const |
Access first element. More... | |
CharT & | back () |
Access last element and snapshot it if there is an active transaction. More... | |
const CharT & | back () const |
Access last element. More... | |
const CharT & | cback () const |
Access last element. More... | |
CharT * | data () |
const CharT * | data () const noexcept |
const CharT * | cdata () const noexcept |
const CharT * | c_str () const noexcept |
void | for_each_ptr (for_each_ptr_function func) |
Iterates over all internal pointers and executes a callback function on each of them. More... | |
slice< pointer > | range (size_type p, size_type count) |
Returns slice and snapshots requested range. More... | |
slice< range_snapshotting_iterator > | range (size_type start, size_type n, size_type snapshot_size) |
Returns slice. More... | |
slice< const_iterator > | range (size_type start, size_type n) const |
Returns const slice. More... | |
slice< const_iterator > | crange (size_type start, size_type n) const |
Returns const slice. More... | |
iterator | begin () |
Return an iterator to the beginning. More... | |
const_iterator | begin () const noexcept |
Return const iterator to the beginning. More... | |
const_iterator | cbegin () const noexcept |
Return const iterator to the beginning. More... | |
iterator | end () |
Return an iterator to past the end. More... | |
const_iterator | end () const noexcept |
Return const iterator to past the end. More... | |
const_iterator | cend () const noexcept |
Return const iterator to past the end. More... | |
reverse_iterator | rbegin () |
Return a reverse iterator to the beginning. More... | |
const_reverse_iterator | rbegin () const noexcept |
Return a const reverse iterator to the beginning. More... | |
const_reverse_iterator | crbegin () const noexcept |
Return a const reverse iterator to the beginning. More... | |
reverse_iterator | rend () |
Return a reverse iterator to the end. More... | |
const_reverse_iterator | rend () const noexcept |
Return a const reverse iterator to the end. More... | |
const_reverse_iterator | crend () const noexcept |
Return a const reverse iterator to the end. More... | |
bool | empty () const noexcept |
size_type | size () const noexcept |
size_type | length () const noexcept |
size_type | max_size () const noexcept |
size_type | capacity () const noexcept |
void | resize (size_type count, CharT ch) |
Resize the string to count characters transactionally. More... | |
void | resize (size_type n) |
Resize the string to count characters transactionally. More... | |
void | reserve (size_type new_cap=0) |
Increase the capacity of the string to new_cap transactionally. More... | |
void | shrink_to_fit () |
Remove unused capacity transactionally. More... | |
void | clear () |
Remove all characters from the string transactionally. More... | |
void | free_data () |
Clears the content of a string and frees all allocated persistent memory for data transactionally. More... | |
basic_string & | erase (size_type index=0, size_type count=npos) |
Remove characters from string starting at index transactionally. More... | |
iterator | erase (const_iterator pos) |
Remove character from string at pos position transactionally. More... | |
iterator | erase (const_iterator first, const_iterator last) |
Remove characters from string at [first, last) range transactionally. More... | |
template<typename T , typename Enable = typename std::enable_if< !std::is_convertible<T, size_type>::value>::type> | |
iterator | erase (T param) |
Participate in overload resolution only if T is not convertible to size_type. More... | |
void | pop_back () |
Remove the last character from the string transactionally. More... | |
basic_string & | append (size_type count, CharT ch) |
Append count copies of character ch to the string transactionally. More... | |
basic_string & | append (const basic_string &str) |
Append string str transactionally. More... | |
basic_string & | append (const basic_string &str, size_type pos, size_type count=npos) |
Append substring [pos, pos + count) of str string transactionally. More... | |
basic_string & | append (const CharT *s, size_type count) |
Append characters in the range [s, s + count) transactionally. More... | |
basic_string & | append (const CharT *s) |
Append C-style string transactionally. More... | |
basic_string & | append (std::initializer_list< CharT > ilist) |
Append characters from the ilist initializer list transactionally. More... | |
void | push_back (CharT ch) |
Append character ch at the end of the string transactionally. More... | |
basic_string & | operator+= (const basic_string &str) |
Append string str transactionally. More... | |
basic_string & | operator+= (const CharT *s) |
Append C-style string transactionally. More... | |
basic_string & | operator+= (CharT c) |
Append character ch at the end of the string transactionally. More... | |
basic_string & | operator+= (std::initializer_list< CharT > ilist) |
Append characters from the ilist initializer list transactionally. More... | |
basic_string & | insert (size_type index, size_type count, CharT ch) |
Insert count copies of ch character at index transactionally. More... | |
basic_string & | insert (size_type index, const CharT *s) |
Insert null-terminated C-style string pointed by s of the length determined by the first null character at index transactionally. More... | |
basic_string & | insert (size_type index, const CharT *s, size_type count) |
Insert characters in the range [s, s+ count) at index transactionally. More... | |
basic_string & | insert (size_type index, const basic_string &str) |
Insert str string at index transactionally. More... | |
basic_string & | insert (size_type index1, const basic_string &str, size_type index2, size_type count=npos) |
Insert a str.substr(index2, count) string at index1 transactionally. More... | |
iterator | insert (const_iterator pos, CharT ch) |
Insert character ch before the character pointed by pos transactionally. More... | |
iterator | insert (const_iterator pos, size_type count, CharT ch) |
Insert count copies of character ch before the character pointed by pos transactionally. More... | |
template<typename InputIt , typename Enable = typename pmem::detail::is_input_iterator< InputIt>::type> | |
iterator | insert (const_iterator pos, InputIt first, InputIt last) |
Insert characters from [first, last) range before the character pointed by pos transactionally. More... | |
iterator | insert (const_iterator pos, std::initializer_list< CharT > ilist) |
Insert characters from initializer list ilist before the character pointed by pos transactionally. More... | |
template<typename T , typename Enable = typename std::enable_if< !std::is_convertible<T, size_type>::value>::type> | |
iterator | insert (T param, size_type count, CharT ch) |
Participate in overload resolution only if T is not convertible to size_type. More... | |
basic_string & | replace (size_type index, size_type count, const basic_string &str) |
Replace range [index, index + count) with the content of str string transactionally. More... | |
basic_string & | replace (const_iterator first, const_iterator last, const basic_string &str) |
Replace range [first, last) with the content of str string transactionally. More... | |
basic_string & | replace (size_type index, size_type count, const basic_string &str, size_type index2, size_type count2=npos) |
Replace range [index, index + count) with the substring [index2, index2 + count2) of str string transactionally. More... | |
basic_string & | replace (const_iterator first, const_iterator last, const CharT *s, size_type count2) |
Replace range [first, last) with the characters in [s, s + count2) range transactionally. More... | |
basic_string & | replace (const_iterator first, const_iterator last, const CharT *s) |
Replace range [first, last) with the characters in [s, s + traits::length(s)) range transactionally. More... | |
basic_string & | replace (size_type index, size_type count, size_type count2, CharT ch) |
Replace range [index, index + count) with count2 copies of ch character transactionally. More... | |
basic_string & | replace (const_iterator first, const_iterator last, size_type count2, CharT ch) |
Replace range [first, last) with count2 copies of ch character transactionally. More... | |
basic_string & | replace (size_type index, size_type count, const CharT *s, size_type count2) |
Replace range [index, index + count) with the characters in [s, s + count2) range transactionally. More... | |
basic_string & | replace (size_type index, size_type count, const CharT *s) |
Replace range [index, index + count) with the characters in [s, s + traits::length(s)) range transactionally. More... | |
basic_string & | replace (const_iterator first, const_iterator last, std::initializer_list< CharT > ilist) |
Replace range [first, last) with characters in initializer list ilist transactionally. More... | |
size_type | copy (CharT *s, size_type count, size_type index=0) const |
Copy [index, index + count) substring of *this to C-style string. More... | |
int | compare (const basic_string &other) const |
Compares this string to other. More... | |
int | compare (const std::basic_string< CharT > &other) const |
Compares this string to std::basic_string<CharT> other. More... | |
int | compare (size_type pos, size_type count, const basic_string &other) const |
Compares [pos, pos + count) substring of this to other. More... | |
int | compare (size_type pos, size_type count, const std::basic_string< CharT > &other) const |
Compares [pos, pos + count) substring of this to std::basic_string<CharT> other. More... | |
int | compare (size_type pos1, size_type count1, const basic_string &other, size_type pos2, size_type count2=npos) const |
Compares [pos1, pos1 + count1) substring of this to [pos2, pos2 + count2) substring of other. More... | |
int | compare (size_type pos1, size_type count1, const std::basic_string< CharT > &other, size_type pos2, size_type count2=npos) const |
Compares [pos1, pos1 + count1) substring of this to [pos2, pos2 + count2) substring of std::basic_string<CharT> other. More... | |
int | compare (const CharT *s) const |
Compares this string to s. More... | |
int | compare (size_type pos, size_type count, const CharT *s) const |
Compares [pos, pos + count) substring of this to s. More... | |
int | compare (size_type pos, size_type count1, const CharT *s, size_type count2) const |
Compares [pos, pos + count1) substring of this to [s, s + count2) substring of s. More... | |
size_type | find (const basic_string &str, size_type pos=0) const noexcept |
Finds the first substring equal str. More... | |
size_type | find (const CharT *s, size_type pos, size_type count) const |
Finds the first substring equal to the range [s, s+count). More... | |
size_type | find (const CharT *s, size_type pos=0) const |
Finds the first substring equal to the C-style string pointed to by s. More... | |
size_type | find (CharT ch, size_type pos=0) const noexcept |
Finds the first character ch. More... | |
size_type | rfind (const basic_string &str, size_type pos=npos) const noexcept |
Finds the last substring equal to str. More... | |
size_type | rfind (const CharT *s, size_type pos, size_type count) const |
Finds the last substring equal to the range [s, s+count). More... | |
size_type | rfind (const CharT *s, size_type pos=npos) const |
Finds the last substring equal to the C-style string pointed to by s. More... | |
size_type | rfind (CharT ch, size_type pos=npos) const noexcept |
Finds the last character equal to ch. More... | |
size_type | find_first_of (const basic_string &str, size_type pos=0) const noexcept |
Finds the first character equal to any of the characters in str. More... | |
size_type | find_first_of (const CharT *s, size_type pos, size_type count) const |
Finds the first character equal to any of the characters in the range [s, s+count). More... | |
size_type | find_first_of (const CharT *s, size_type pos=0) const |
Finds the first character equal to any of the characters in the C-style string pointed to by s. More... | |
size_type | find_first_of (CharT ch, size_type pos=0) const noexcept |
Finds the first character equal to ch. More... | |
size_type | find_first_not_of (const basic_string &str, size_type pos=0) const noexcept |
Finds the first character equal to none of the characters in str. More... | |
size_type | find_first_not_of (const CharT *s, size_type pos, size_type count) const |
Finds the first character equal to none of the characters in the range [s, s+count). More... | |
size_type | find_first_not_of (const CharT *s, size_type pos=0) const |
Finds the first character equal to none of the characters in the C-style string pointed to by s. More... | |
size_type | find_first_not_of (CharT ch, size_type pos=0) const noexcept |
Finds the first character not equal to ch. More... | |
size_type | find_last_of (const basic_string &str, size_type pos=npos) const noexcept |
Finds the last character equal to any of the characters in str. More... | |
size_type | find_last_of (const CharT *s, size_type pos, size_type count) const |
Finds the last character equal to any of the characters in the range [s, s+count). More... | |
size_type | find_last_of (const CharT *s, size_type pos=npos) const |
Finds the last character equal to any of the characters in the C-style string pointed to by s. More... | |
size_type | find_last_of (CharT ch, size_type pos=npos) const noexcept |
Finds the last character equal to ch. More... | |
size_type | find_last_not_of (const basic_string &str, size_type pos=npos) const noexcept |
Finds the last character equal to none of the characters in str. More... | |
size_type | find_last_not_of (const CharT *s, size_type pos, size_type count) const |
Finds the last character equal to none of the characters in the range [s, s+count). More... | |
size_type | find_last_not_of (const CharT *s, size_type pos=npos) const |
Finds the last character equal to none of the characters in the C-style string pointed to by s. More... | |
size_type | find_last_not_of (CharT ch, size_type pos=npos) const noexcept |
Finds the last character not equal to ch. More... | |
void | swap (basic_string &other) |
Swap the content of persistent strings. | |
operator basic_string_view< CharT, Traits > () const | |
Return new view from this string object. | |
template<class T , typename Enable > | |
basic_string< CharT, Traits > & | operator= (const T &t) |
Replace the contents with implicitly converted argument transactionally. More... | |
template<typename InputIt , typename Enable > | |
basic_string< CharT, Traits > & | assign (InputIt first, InputIt last) |
Replace the contents with copies of elements in the range [first, last) transactionally. More... | |
template<typename InputIt , typename Enable > | |
basic_string< CharT, Traits > & | append (InputIt first, InputIt last) |
Append characters in the range [first, last) transactionally. More... | |
template<typename InputIt , typename Enable > | |
basic_string< CharT, Traits > & | replace (const_iterator first, const_iterator last, InputIt first2, InputIt last2) |
Replace range [first, last) with the characters in [first2, last2) range transactionally. More... | |
template<typename T , typename Enable > | |
basic_string< CharT, Traits > & | erase (T param) |
Participate in overload resolution only if T is convertible to size_type. More... | |
template<typename T , typename Enable > | |
basic_string< CharT, Traits > & | insert (T param, size_type count, CharT ch) |
Participate in overload resolution only if T is convertible to size_type. More... | |
Private Member Functions | |
template<typename InputIt , typename Enable = typename std::enable_if< pmem::detail::is_input_iterator<InputIt>::value>::type> | |
size_type | get_size (InputIt first, InputIt last) const |
Overload of generic get_size method used to calculate size based on provided parameters. More... | |
size_type | get_size (size_type count, value_type ch) const |
Overload of generic get_size method used to calculate size based on provided parameters. More... | |
size_type | get_size (const basic_string &other) const |
Overload of generic get_size method used to calculate size based on provided parameters. More... | |
template<typename... Args> | |
pointer | replace_content (Args &&... args) |
Generic function which replace_content current content based on provided parameters. More... | |
template<typename... Args> | |
pointer | initialize (Args &&... args) |
Generic function which initializes memory based on provided parameters - forwards parameters to initialize function of either non_sso.data or sso.data. More... | |
void | allocate (size_type capacity) |
Allocate storage for container of n elements. More... | |
template<typename InputIt , typename Enable = typename std::enable_if< pmem::detail::is_input_iterator<InputIt>::value>::type> | |
pointer | assign_sso_data (InputIt first, InputIt last) |
Initialize sso data. More... | |
pointer | assign_sso_data (size_type count, value_type ch) |
Initialize sso data. More... | |
pointer | move_data (basic_string &&other) |
Move initialize for basic_string. More... | |
template<typename InputIt , typename Enable = typename std::enable_if< pmem::detail::is_input_iterator<InputIt>::value>::type> | |
pointer | assign_large_data (InputIt first, InputIt last) |
Initialize non_sso.data - call constructor of non_sso.data. More... | |
pointer | assign_large_data (size_type count, value_type ch) |
Initialize non_sso.data - call constructor of non_sso.data. More... | |
pool_base | get_pool () const |
Return pool_base instance and assert that object is on pmem. | |
void | check_pmem () const |
void | check_tx_stage_work () const |
void | check_pmem_tx () const |
void | add_sso_to_tx (size_type first, size_type num) const |
Snapshot sso data. | |
size_type | get_sso_size () const |
Return size of sso string. | |
void | enable_sso () |
Enable sso string. | |
void | disable_sso () |
Disable sso string. | |
void | set_sso_size (size_type new_size) |
Set size for sso. | |
void | sso_to_large (size_t new_capacity) |
Resize sso string to large string. More... | |
void | large_to_sso () |
Resize large string to sso string of size() size. More... | |
Private Attributes | |
union { | |
}; | |
This union holds sso data inside of an array and non sso data inside a vector. More... | |
pmem::obj::string - persistent container with std::basic_string compatible interface.
The implementation is still missing some methods.
Simple example of pmem::obj::string usage
pmem::obj::basic_string< CharT, Traits >::basic_string |
Default constructor.
Construct an empty container.
pmem::pool_error | if an object is not in persistent memory. |
pmem::transaction_scope_error | if constructor wasn't called in transaction. |
pmem::obj::basic_string< CharT, Traits >::basic_string | ( | size_type | count, |
CharT | ch | ||
) |
Construct the container with count copies of elements with value ch.
[in] | count | number of elements to construct. |
[in] | ch | value of all constructed elements. |
pmem::pool_error | if an object is not in persistent memory. |
pmem::transaction_alloc_error | when allocating memory for underlying storage in transaction failed. |
pmem::transaction_scope_error | if constructor wasn't called in transaction. |
pmem::obj::basic_string< CharT, Traits >::basic_string | ( | const basic_string< CharT, Traits > & | other, |
size_type | pos, | ||
size_type | count = npos |
||
) |
Construct the string with a substring [pos, min(pos+count, other.size()) of other.
[in] | other | string from which substring will be copied. |
[in] | pos | start position of substring in other. |
[in] | count | length of substring. |
std::out_of_range | is pos > other.size() |
pmem::pool_error | if an object is not in persistent memory. |
pmem::transaction_alloc_error | when allocating memory for underlying storage in transaction failed. |
pmem::transaction_scope_error | if constructor wasn't called in transaction. |
pmem::obj::basic_string< CharT, Traits >::basic_string | ( | const std::basic_string< CharT > & | other, |
size_type | pos, | ||
size_type | count = npos |
||
) |
Construct the string with a substring [pos, min(pos+count, other.size()) of std::basic_string<CharT> other.
[in] | other | std::basic_string<CharT> from which substring will be copied. |
[in] | pos | start position of substring in other. |
[in] | count | length of substring. |
std::out_of_range | is pos > other.size() |
pmem::pool_error | if an object is not in persistent memory. |
pmem::transaction_alloc_error | when allocating memory for underlying storage in transaction failed. |
pmem::transaction_scope_error | if constructor wasn't called in transaction. |
pmem::obj::basic_string< CharT, Traits >::basic_string | ( | const CharT * | s, |
size_type | count | ||
) |
Construct the string with the first count elements of C-style string s.
[in] | s | pointer to source string. |
[in] | count | length of the resulting string. |
pmem::pool_error | if an object is not in persistent memory. |
pmem::transaction_alloc_error | when allocating memory for underlying storage in transaction failed. |
pmem::transaction_scope_error | if constructor wasn't called in transaction. |
pmem::obj::basic_string< CharT, Traits >::basic_string | ( | const CharT * | s | ) |
Construct the string with the contents of s.
[in] | s | pointer to source string. |
pmem::pool_error | if an object is not in persistent memory. |
pmem::transaction_alloc_error | when allocating memory for underlying storage in transaction failed. |
pmem::transaction_scope_error | if constructor wasn't called in transaction. |
pmem::obj::basic_string< CharT, Traits >::basic_string | ( | InputIt | first, |
InputIt | last | ||
) |
Construct the string with the contents of the range [first, last).
This constructor only participates in overload resolution if InputIt satisfies InputIterator.
[in] | first | iterator to beginning of the range. |
[in] | last | iterator to end of the range. |
pmem::pool_error | if an object is not in persistent memory. |
pmem::transaction_alloc_error | when allocating memory for underlying storage in transaction failed. |
pmem::transaction_scope_error | if constructor wasn't called in transaction. |
pmem::obj::basic_string< CharT, Traits >::basic_string | ( | const basic_string< CharT, Traits > & | other | ) |
Copy constructor.
Construct the string with the copy of the contents of other.
[in] | other | reference to the string to be copied. |
pmem::pool_error | if an object is not in persistent memory. |
pmem::transaction_alloc_error | when allocating memory for underlying storage in transaction failed. |
pmem::transaction_scope_error | if constructor wasn't called in transaction. |
pmem::obj::basic_string< CharT, Traits >::basic_string | ( | const std::basic_string< CharT > & | other | ) |
Copy constructor.
Construct the string with the copy of the contents of std::basic_string<CharT> other.
[in] | other | reference to the std::basic_string<CharT> to be copied. |
pmem::pool_error | if an object is not in persistent memory. |
pmem::transaction_alloc_error | when allocating memory for underlying storage in transaction failed. |
pmem::transaction_scope_error | if constructor wasn't called in transaction. |
pmem::obj::basic_string< CharT, Traits >::basic_string | ( | basic_string< CharT, Traits > && | other | ) |
Move constructor.
Construct the string with the contents of other using move semantics.
[in] | other | rvalue reference to the string to be moved from. |
pmem::pool_error | if an object is not in persistent memory. |
pmem::transaction_alloc_error | when allocating memory for underlying storage in transaction failed. |
pmem::transaction_scope_error | if constructor wasn't called in transaction. |
pmem::obj::basic_string< CharT, Traits >::basic_string | ( | std::initializer_list< CharT > | ilist | ) |
Construct the container with the contents of the initializer list init.
[in] | ilist | initializer list with content to be constructed. |
pmem::pool_error | if an object is not in persistent memory. |
pmem::transaction_alloc_error | when allocating memory for underlying storage in transaction failed. |
pmem::transaction_scope_error | if constructor wasn't called in transaction. |
|
explicit |
Implicitly converts argument to a string view then initilizes the string with the content of string view.
[in] | t | object (convertible to std::basic_string_view) to initialize the string with. |
pmem::pool_error | if an object is not in persistent memory. |
pmem::transaction_alloc_error | when allocating memory for underlying storage in transaction failed. |
pmem::transaction_scope_error | if constructor wasn't called in transaction. |
pmem::obj::basic_string< CharT, Traits >::basic_string | ( | const T & | t, |
size_type | pos, | ||
size_type | n | ||
) |
Implicitly converts argument to a string view then initilizes the string with the subrange [pos, pos + n) of string view.
[in] | t | object (convertible to std::basic_string_view) to initialize the string with. |
[in] | pos | position of the first character to include. |
[in] | n | characters to include |
pmem::pool_error | if an object is not in persistent memory. |
pmem::transaction_alloc_error | when allocating memory for underlying storage in transaction failed. |
pmem::transaction_scope_error | if constructor wasn't called in transaction. |
|
private |
Allocate storage for container of n elements.
Based on n determine if sso or large string is used.
[in] | n | elements to allocate. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::append | ( | const basic_string< CharT, Traits > & | str | ) |
Append string str transactionally.
[in] | str | string to append. |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::append | ( | const basic_string< CharT, Traits > & | str, |
size_type | pos, | ||
size_type | count = npos |
||
) |
Append substring [pos, pos + count) of str string transactionally.
Length of the string to append is determined as the smaller of count and str.size() - pos.
[in] | str | string to append. |
[in] | pos | index of the first character to append. |
[in] | count | characters to append. |
std::out_of_range | if pos > str.size(). |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::append | ( | const CharT * | s | ) |
Append C-style string transactionally.
Length of the string is determined by the first null character.
[in] | s | pointer to C-style string to append. |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::append | ( | const CharT * | s, |
size_type | count | ||
) |
Append characters in the range [s, s + count) transactionally.
[in] | s | pointer to C-style string to append. |
[in] | count | characters to append. |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
basic_string<CharT, Traits>& pmem::obj::basic_string< CharT, Traits >::append | ( | InputIt | first, |
InputIt | last | ||
) |
Append characters in the range [first, last) transactionally.
This overload participates in overload resolution only if InputIt qualifies as InputIterator.
[in] | first | begin of the range of characters to append. |
[in] | last | end of the range of characters to append. |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::append | ( | size_type | count, |
CharT | ch | ||
) |
Append count copies of character ch to the string transactionally.
[in] | count | number of characters to append. |
[in] | ch | character value to append. |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::append | ( | std::initializer_list< CharT > | ilist | ) |
Append characters from the ilist initializer list transactionally.
[in] | ilist | initializer list with characters to append from |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::assign | ( | basic_string< CharT, Traits > && | other | ) |
Replace the string with the contents of other using move semantics transactionally.
Other is left in valid state with size equal to 0.
[in] | other | rvalue reference to the string to be moved from. |
pmem::transaction_alloc_error | when allocating memory for underlying storage in transaction failed. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::assign | ( | const basic_string< CharT, Traits > & | other | ) |
Replace the string with the copy of the contents of other transactionally.
[in] | other | reference to the string to be copied. |
pmem::transaction_alloc_error | when allocating memory for underlying storage in transaction failed. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::assign | ( | const basic_string< CharT, Traits > & | other, |
size_type | pos, | ||
size_type | count = npos |
||
) |
Replace the contents with a substring [pos, std::min(pos+count, other.size()) of other transactionally.
[in] | other | string from which substring will be copied. |
[in] | pos | start position of substring in other. |
[in] | count | length of substring. |
std::out_of_range | is pos > other.size() |
pmem::transaction_alloc_error | when allocating memory for underlying storage in transaction failed. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::assign | ( | const CharT * | s | ) |
Replace the contents with copy of C-style string s transactionally.
[in] | s | pointer to source string. |
pmem::transaction_alloc_error | when allocating memory for underlying storage in transaction failed. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::assign | ( | const CharT * | s, |
size_type | count | ||
) |
Replace the contents with the first count elements of C-style string s transactionally.
[in] | s | pointer to source string. |
[in] | count | length of the string. |
pmem::transaction_alloc_error | when allocating memory for underlying storage in transaction failed. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::assign | ( | const std::basic_string< CharT > & | other | ) |
Replace the string with the copy of the contents of std::basic_string<CharT> other.
[in] | other | reference to the std::basic_string<CharT> to be copied. |
pmem::transaction_alloc_error | when allocating memory for underlying storage in transaction failed. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::assign | ( | const std::basic_string< CharT > & | other, |
size_type | pos, | ||
size_type | count = npos |
||
) |
Replace the contents with a substring [pos, std::min(pos+count, other.size()) of std::basic_string<CharT> other transactionally.
[in] | other | std::basic_string<CharT> from which substring will be copied. |
[in] | pos | start position of substring in other. |
[in] | count | length of substring. |
std::out_of_range | is pos > other.size() |
pmem::transaction_alloc_error | when allocating memory for underlying storage in transaction failed. |
basic_string<CharT, Traits>& pmem::obj::basic_string< CharT, Traits >::assign | ( | InputIt | first, |
InputIt | last | ||
) |
Replace the contents with copies of elements in the range [first, last) transactionally.
This function participates in overload resolution only if InputIt satisfies InputIterator.
[in] | first | iterator to beginning of the range. |
[in] | last | iterator to end of the range. |
pmem::transaction_alloc_error | when allocating memory for underlying storage in transaction failed. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::assign | ( | size_type | count, |
CharT | ch | ||
) |
Replace the contents with count copies of character ch transactionally.
[in] | count | number of characters. |
[in] | ch | character. |
pmem::transaction_alloc_error | when allocating memory for underlying storage in transaction failed. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::assign | ( | std::initializer_list< CharT > | ilist | ) |
replace_content the contents with those of the initializer list ilist transactionally.
[in] | ilist | initializer_list of characters. |
pmem::transaction_alloc_error | when allocating memory for underlying storage in transaction failed. |
|
private |
Initialize non_sso.data - call constructor of non_sso.data.
Overload for pair of iterators.
|
private |
Initialize non_sso.data - call constructor of non_sso.data.
Overload for (count, value).
|
private |
Initialize sso data.
Overload for pair of iterators
|
private |
Initialize sso data.
Overload for (count, value).
basic_string< CharT, Traits >::reference pmem::obj::basic_string< CharT, Traits >::at | ( | size_type | n | ) |
Access element at specific index with bounds checking and snapshot it if there is an active transaction.
[in] | n | index number. |
std::out_of_range | if n is not within the range of the container. |
pmem::transaction_error | when adding the object to the transaction failed. |
basic_string< CharT, Traits >::const_reference pmem::obj::basic_string< CharT, Traits >::at | ( | size_type | n | ) | const |
Access element at specific index with bounds checking.
[in] | n | index number. |
std::out_of_range | if n is not within the range of the container. |
CharT & pmem::obj::basic_string< CharT, Traits >::back |
Access last element and snapshot it if there is an active transaction.
pmem::transaction_error | when adding the object to the transaction failed. |
const CharT & pmem::obj::basic_string< CharT, Traits >::back |
Access last element.
basic_string< CharT, Traits >::iterator pmem::obj::basic_string< CharT, Traits >::begin |
Return an iterator to the beginning.
|
noexcept |
Return const iterator to the beginning.
|
noexcept |
|
noexcept |
const CharT & pmem::obj::basic_string< CharT, Traits >::cback |
|
noexcept |
Return const iterator to the beginning.
|
noexcept |
|
noexcept |
Return const iterator to past the end.
const CharT & pmem::obj::basic_string< CharT, Traits >::cfront |
|
private |
pmem::pool_error | if an object is not in persistent memory. |
|
private |
pmem::pool_error | if an object is not in persistent memory. |
pmem::transaction_scope_error | if called outside of a transaction. |
|
private |
pmem::transaction_scope_error | if called outside of a transaction. |
void pmem::obj::basic_string< CharT, Traits >::clear |
Remove all characters from the string transactionally.
All pointers, references, and iterators are invalidated.
pmem::transaction_error | when snapshotting failed. |
rethrows | destructor exception. |
int pmem::obj::basic_string< CharT, Traits >::compare | ( | const basic_string< CharT, Traits > & | other | ) | const |
Compares this string to other.
[in] | other | string to compare to. |
int pmem::obj::basic_string< CharT, Traits >::compare | ( | const CharT * | s | ) | const |
Compares this string to s.
[in] | s | C-style string to compare to. |
int pmem::obj::basic_string< CharT, Traits >::compare | ( | const std::basic_string< CharT > & | other | ) | const |
Compares this string to std::basic_string<CharT> other.
[in] | other | std::basic_string<CharT> to compare to. |
int pmem::obj::basic_string< CharT, Traits >::compare | ( | size_type | pos, |
size_type | count, | ||
const basic_string< CharT, Traits > & | other | ||
) | const |
Compares [pos, pos + count) substring of this to other.
If count > size() - pos, substring is equal to [pos, size()).
[in] | pos | beginning of the substring. |
[in] | count | length of the substring. |
[in] | other | string to compare to. |
std::out_of_range | is pos > size() |
int pmem::obj::basic_string< CharT, Traits >::compare | ( | size_type | pos, |
size_type | count, | ||
const CharT * | s | ||
) | const |
Compares [pos, pos + count) substring of this to s.
If count > size() - pos, substring is equal to [pos, size()).
[in] | pos | beginning of the substring. |
[in] | count | length of the substring. |
[in] | s | C-style string to compare to. |
std::out_of_range | is pos > size() |
int pmem::obj::basic_string< CharT, Traits >::compare | ( | size_type | pos, |
size_type | count, | ||
const std::basic_string< CharT > & | other | ||
) | const |
Compares [pos, pos + count) substring of this to std::basic_string<CharT> other.
If count > size() - pos, substring is equal to [pos, size()).
[in] | pos | beginning of the substring. |
[in] | count | length of the substring. |
[in] | other | std::basic_string<CharT> to compare to. |
std::out_of_range | is pos > size() |
int pmem::obj::basic_string< CharT, Traits >::compare | ( | size_type | pos, |
size_type | count1, | ||
const CharT * | s, | ||
size_type | count2 | ||
) | const |
Compares [pos, pos + count1) substring of this to [s, s + count2) substring of s.
If count > size() - pos, substring is equal to [pos, size()).
[in] | pos | beginning of substring of this. |
[in] | count1 | length of substring of this. |
[in] | s | C-style string to compare to. |
[in] | count2 | length of substring of s. |
std::out_of_range | is pos > size() |
int pmem::obj::basic_string< CharT, Traits >::compare | ( | size_type | pos1, |
size_type | count1, | ||
const basic_string< CharT, Traits > & | other, | ||
size_type | pos2, | ||
size_type | count2 = npos |
||
) | const |
Compares [pos1, pos1 + count1) substring of this to [pos2, pos2 + count2) substring of other.
If count1 > size() - pos, substring is equal to [pos1, size()).
[in] | pos1 | beginning of substring of this. |
[in] | count1 | length of substring of this. |
[in] | other | string to compare to. |
[in] | pos2 | beginning of substring of other. |
[in] | count2 | length of substring of other. |
std::out_of_range | is pos1 > size() or pos2 > other.size() |
int pmem::obj::basic_string< CharT, Traits >::compare | ( | size_type | pos1, |
size_type | count1, | ||
const std::basic_string< CharT > & | other, | ||
size_type | pos2, | ||
size_type | count2 = npos |
||
) | const |
Compares [pos1, pos1 + count1) substring of this to [pos2, pos2 + count2) substring of std::basic_string<CharT> other.
If count1 > size() - pos, substring is equal to [pos1, size()).
[in] | pos1 | beginning of substring of this. |
[in] | count1 | length of substring of this. |
[in] | other | std::basic_string<CharT> to compare to. |
[in] | pos2 | beginning of substring of other. |
[in] | count2 | length of substring of other. |
std::out_of_range | is pos1 > size() or pos2 > other.size() |
basic_string< CharT, Traits >::const_reference pmem::obj::basic_string< CharT, Traits >::const_at | ( | size_type | n | ) | const |
Access element at specific index with bounds checking.
In contradiction to at(), const_at() will return const_reference not depending on the const-qualification of the object it is called on. std::basic_string doesn't provide const_at() method.
[in] | n | index number. |
std::out_of_range | if n is not within the range of the container. |
basic_string< CharT, Traits >::size_type pmem::obj::basic_string< CharT, Traits >::copy | ( | CharT * | s, |
size_type | count, | ||
size_type | index = 0 |
||
) | const |
Copy [index, index + count) substring of *this to C-style string.
If either count == npos or count exceeds size of *this string then substring [index, size()) is used. Resulting C-style string is not null-terminated.
[in] | s | pointer to destination C-style string. |
[in] | count | length of the substring. |
[in] | index | start of the substring that will be copied. |
std::out_of_range | if index > size(). |
slice< typename basic_string< CharT, Traits >::const_iterator > pmem::obj::basic_string< CharT, Traits >::crange | ( | size_type | start, |
size_type | n | ||
) | const |
Returns const slice.
This method is not specified by STL standards.
[in] | start | start index of requested range. |
[in] | n | number of elements in range. |
std::out_of_range | if any element of the range would be outside of the string. |
|
noexcept |
Return a const reverse iterator to the beginning.
|
noexcept |
Return a const reverse iterator to the end.
CharT * pmem::obj::basic_string< CharT, Traits >::data |
transaction_error | when adding data to the transaction failed. |
|
noexcept |
|
noexcept |
basic_string< CharT, Traits >::iterator pmem::obj::basic_string< CharT, Traits >::end |
Return an iterator to past the end.
|
noexcept |
Return const iterator to past the end.
basic_string< CharT, Traits >::iterator pmem::obj::basic_string< CharT, Traits >::erase | ( | const_iterator | first, |
const_iterator | last | ||
) |
Remove characters from string at [first, last) range transactionally.
[in] | first | begin of the range of characters to be removed. |
[in] | last | end of the range of characters to be removed. |
std::out_of_range | if [first, last) is not a valid range of *this. |
pmem::transaction_error | when snapshotting failed. |
rethrows | destructor exception. |
basic_string< CharT, Traits >::iterator pmem::obj::basic_string< CharT, Traits >::erase | ( | const_iterator | pos | ) |
Remove character from string at pos position transactionally.
[in] | pos | position of character to be removed. |
std::out_of_range | if pos > size(). |
pmem::transaction_error | when snapshotting failed. |
rethrows | destructor exception. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::erase | ( | size_type | index = 0 , |
size_type | count = npos |
||
) |
Remove characters from string starting at index transactionally.
Length of the string to erase is determined as the smaller of count and size() - index.
[in] | index | first character to remove. |
[in] | count | number of characters to remove. |
std::out_of_range | if index > size(). |
pmem::transaction_error | when snapshotting failed. |
rethrows | destructor exception. |
basic_string< CharT, Traits >::iterator pmem::obj::basic_string< CharT, Traits >::erase | ( | T | param | ) |
Participate in overload resolution only if T is not convertible to size_type.
Call iterator erase(const_iterator pos) if enabled.
basic_string<CharT, Traits>& pmem::obj::basic_string< CharT, Traits >::erase | ( | T | param | ) |
Participate in overload resolution only if T is convertible to size_type.
Call basic_string &erase(size_type index, size_type count = npos) if enabled.
|
noexcept |
Finds the first character ch.
[in] | ch | character to search for |
[in] | pos | position where the search starts from |
|
noexcept |
Finds the first substring equal str.
[in] | str | string to search for |
[in] | pos | position where the search starts from |
basic_string< CharT, Traits >::size_type pmem::obj::basic_string< CharT, Traits >::find | ( | const CharT * | s, |
size_type | pos, | ||
size_type | count | ||
) | const |
Finds the first substring equal to the range [s, s+count).
This range may contain null characters.
[in] | s | pointer to the C-style string to search for |
[in] | pos | position where the search starts from |
[in] | count | length of the substring to search for |
basic_string< CharT, Traits >::size_type pmem::obj::basic_string< CharT, Traits >::find | ( | const CharT * | s, |
size_type | pos = 0 |
||
) | const |
Finds the first substring equal to the C-style string pointed to by s.
The length of the string is determined by the first null character.
[in] | s | pointer to the C-style string to search for |
[in] | pos | position where the search starts from |
|
noexcept |
Finds the first character not equal to ch.
[in] | ch | character to search for |
[in] | pos | position at which to start the search |
|
noexcept |
Finds the first character equal to none of the characters in str.
[in] | str | string identifying characters to search for |
[in] | pos | position at which to start the search |
basic_string< CharT, Traits >::size_type pmem::obj::basic_string< CharT, Traits >::find_first_not_of | ( | const CharT * | s, |
size_type | pos, | ||
size_type | count | ||
) | const |
Finds the first character equal to none of the characters in the range [s, s+count).
This range can include null characters.
[in] | s | pointer to the C-style string identifying characters to search for |
[in] | pos | position at which to start the search |
[in] | count | length of the C-style string identifying characters to search for |
basic_string< CharT, Traits >::size_type pmem::obj::basic_string< CharT, Traits >::find_first_not_of | ( | const CharT * | s, |
size_type | pos = 0 |
||
) | const |
Finds the first character equal to none of the characters in the C-style string pointed to by s.
The length of the string is determined by the first null character
[in] | s | pointer to the C-style string identifying characters to search for |
[in] | pos | position at which to start the search |
|
noexcept |
Finds the first character equal to ch.
[in] | ch | character to search for |
[in] | pos | position at which to start the search |
|
noexcept |
Finds the first character equal to any of the characters in str.
[in] | str | string identifying characters to search for |
[in] | pos | position at which to start the search |
basic_string< CharT, Traits >::size_type pmem::obj::basic_string< CharT, Traits >::find_first_of | ( | const CharT * | s, |
size_type | pos, | ||
size_type | count | ||
) | const |
Finds the first character equal to any of the characters in the range [s, s+count).
This range can include null characters.
[in] | s | pointer to the C-style string identifying characters to search for |
[in] | pos | position at which to start the search |
[in] | count | length of the C-style string identifying characters to search for |
basic_string< CharT, Traits >::size_type pmem::obj::basic_string< CharT, Traits >::find_first_of | ( | const CharT * | s, |
size_type | pos = 0 |
||
) | const |
Finds the first character equal to any of the characters in the C-style string pointed to by s.
The length of the string is determined by the first null character
[in] | s | pointer to the C-style string identifying characters to search for |
[in] | pos | position at which to start the search |
|
noexcept |
Finds the last character not equal to ch.
[in] | ch | character to search for |
[in] | pos | position at which to start the search |
|
noexcept |
Finds the last character equal to none of the characters in str.
[in] | str | string identifying characters to search for |
[in] | pos | position at which to start the search |
basic_string< CharT, Traits >::size_type pmem::obj::basic_string< CharT, Traits >::find_last_not_of | ( | const CharT * | s, |
size_type | pos, | ||
size_type | count | ||
) | const |
Finds the last character equal to none of the characters in the range [s, s+count).
This range can include null characters.
[in] | s | pointer to the C-style string identifying characters to search for |
[in] | pos | position at which to start the search |
[in] | count | length of the C-style string identifying characters to search for |
basic_string< CharT, Traits >::size_type pmem::obj::basic_string< CharT, Traits >::find_last_not_of | ( | const CharT * | s, |
size_type | pos = npos |
||
) | const |
Finds the last character equal to none of the characters in the C-style string pointed to by s.
The length of the string is determined by the first null character
[in] | s | pointer to the C-style string identifying characters to search for |
[in] | pos | position at which to start the search |
|
noexcept |
Finds the last character equal to ch.
[in] | ch | character to search for |
[in] | pos | position at which to start the search |
|
noexcept |
Finds the last character equal to any of the characters in str.
[in] | str | string identifying characters to search for |
[in] | pos | position at which to start the search |
basic_string< CharT, Traits >::size_type pmem::obj::basic_string< CharT, Traits >::find_last_of | ( | const CharT * | s, |
size_type | pos, | ||
size_type | count | ||
) | const |
Finds the last character equal to any of the characters in the range [s, s+count).
This range can include null characters.
[in] | s | pointer to the C-style string identifying characters to search for |
[in] | pos | position at which to start the search |
[in] | count | length of the C-style string identifying characters to search for |
basic_string< CharT, Traits >::size_type pmem::obj::basic_string< CharT, Traits >::find_last_of | ( | const CharT * | s, |
size_type | pos = npos |
||
) | const |
Finds the last character equal to any of the characters in the C-style string pointed to by s.
The length of the string is determined by the first null character
[in] | s | pointer to the C-style string identifying characters to search for |
[in] | pos | position at which to start the search |
void pmem::obj::basic_string< CharT, Traits >::for_each_ptr | ( | for_each_ptr_function | func | ) |
Iterates over all internal pointers and executes a callback function on each of them.
In this implementation, it just calls for_each_ptr() of the vector stored in SSO.
func | callback function to call on internal pointer. |
void pmem::obj::basic_string< CharT, Traits >::free_data |
Clears the content of a string and frees all allocated persistent memory for data transactionally.
pmem::transaction_error | when snapshotting failed. |
pmem::transaction_free_error | when freeing of underlying structure failed. |
CharT & pmem::obj::basic_string< CharT, Traits >::front |
Access first element and snapshot it if there is an active transaction.
pmem::transaction_error | when adding the object to the transaction failed. |
const CharT & pmem::obj::basic_string< CharT, Traits >::front |
Access first element.
|
private |
Overload of generic get_size method used to calculate size based on provided parameters.
Return size of other basic_string
|
private |
Overload of generic get_size method used to calculate size based on provided parameters.
Return std::distance(first, last) for pair of iterators.
|
private |
Overload of generic get_size method used to calculate size based on provided parameters.
Return count for (count, value)
|
private |
Generic function which initializes memory based on provided parameters - forwards parameters to initialize function of either non_sso.data or sso.data.
Allowed parameters are:
basic_string< CharT, Traits >::iterator pmem::obj::basic_string< CharT, Traits >::insert | ( | const_iterator | pos, |
CharT | ch | ||
) |
Insert character ch before the character pointed by pos transactionally.
[in] | pos | iterator before which the character will be inserted. |
[in] | ch | character to insert. |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
basic_string< CharT, Traits >::iterator pmem::obj::basic_string< CharT, Traits >::insert | ( | const_iterator | pos, |
InputIt | first, | ||
InputIt | last | ||
) |
Insert characters from [first, last) range before the character pointed by pos transactionally.
[in] | pos | iterator before which the character will be inserted. |
[in] | first | begin of the range of characters to insert. |
[in] | last | end of the range of characters to insert. |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
basic_string< CharT, Traits >::iterator pmem::obj::basic_string< CharT, Traits >::insert | ( | const_iterator | pos, |
size_type | count, | ||
CharT | ch | ||
) |
Insert count copies of character ch before the character pointed by pos transactionally.
[in] | pos | iterator before which the character will be inserted. |
[in] | count | number of characters to insert. |
[in] | ch | character to insert. |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
basic_string< CharT, Traits >::iterator pmem::obj::basic_string< CharT, Traits >::insert | ( | const_iterator | pos, |
std::initializer_list< CharT > | ilist | ||
) |
Insert characters from initializer list ilist before the character pointed by pos transactionally.
[in] | pos | iterator before which the character will be inserted. |
[in] | ilist | initializer list of characters to insert. |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::insert | ( | size_type | index, |
const basic_string< CharT, Traits > & | str | ||
) |
Insert str string at index transactionally.
[in] | index | position at which the content will be inserted. |
[in] | str | string to insert. |
std::out_of_range | if index > size(). |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::insert | ( | size_type | index, |
const CharT * | s | ||
) |
Insert null-terminated C-style string pointed by s of the length determined by the first null character at index transactionally.
[in] | index | position at which the content will be inserted. |
[in] | s | pointer to C-style string to insert. |
std::out_of_range | if index > size(). |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::insert | ( | size_type | index, |
const CharT * | s, | ||
size_type | count | ||
) |
Insert characters in the range [s, s+ count) at index transactionally.
[in] | index | position at which the content will be inserted. |
[in] | s | pointer to C-style string to insert. |
[in] | count | number of characters to insert. |
std::out_of_range | if index > size(). |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::insert | ( | size_type | index, |
size_type | count, | ||
CharT | ch | ||
) |
Insert count copies of ch character at index transactionally.
[in] | index | position at which the content will be inserted |
[in] | count | number of characters to insert |
[in] | ch | character to insert |
std::out_of_range | if index > size(). |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::insert | ( | size_type | index1, |
const basic_string< CharT, Traits > & | str, | ||
size_type | index2, | ||
size_type | count = npos |
||
) |
Insert a str.substr(index2, count) string at index1 transactionally.
[in] | index1 | position at which the content will be inserted. |
[in] | str | string to insert. |
[in] | index2 | position of the first character in str to insert. |
[in] | count | number of characters to insert. |
std::out_of_range | if index1 > size() or str.size() > index2. |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
basic_string< CharT, Traits >::iterator pmem::obj::basic_string< CharT, Traits >::insert | ( | T | param, |
size_type | count, | ||
CharT | ch | ||
) |
Participate in overload resolution only if T is not convertible to size_type.
Call iterator insert(const_iterator pos, size_type count, CharT ch) if enabled.
basic_string<CharT, Traits>& pmem::obj::basic_string< CharT, Traits >::insert | ( | T | param, |
size_type | count, | ||
CharT | ch | ||
) |
Participate in overload resolution only if T is convertible to size_type.
Call basic_string &insert(size_type index, size_type count, CharT ch) if enabled.
|
private |
|
noexcept |
|
noexcept |
|
private |
Move initialize for basic_string.
Expects data is not initialized.
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::operator+= | ( | CharT | ch | ) |
Append character ch at the end of the string transactionally.
[in] | ch | character to append |
std::length_error | if new_size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::operator+= | ( | const basic_string< CharT, Traits > & | str | ) |
Append string str transactionally.
[in] | str | string to append. |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::operator+= | ( | const CharT * | s | ) |
Append C-style string transactionally.
Length of the string is determined by the first null character.
[in] | s | pointer to C-style string to append. |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::operator+= | ( | std::initializer_list< CharT > | ilist | ) |
Append characters from the ilist initializer list transactionally.
[in] | ilist | initializer list with characters to append from |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::operator= | ( | basic_string< CharT, Traits > && | other | ) |
Move assignment operator.
Replace the string with the contents of other using move semantics transactionally.
[in] | other | rvalue reference to the string to be moved from. |
pmem::transaction_alloc_error | when allocating memory for underlying storage in transaction failed. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::operator= | ( | CharT | ch | ) |
Replace the contents with character ch transactionally.
[in] | ch | character. |
pmem::transaction_alloc_error | when allocating memory for underlying storage in transaction failed. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::operator= | ( | const basic_string< CharT, Traits > & | other | ) |
Copy assignment operator.
Replace the string with contents of other transactionally.
[in] | other | reference to the string to be copied. |
pmem::transaction_alloc_error | when allocating memory for underlying storage in transaction failed. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::operator= | ( | const CharT * | s | ) |
Replace the contents with copy of C-style string s transactionally.
[in] | s | pointer to source string. |
pmem::transaction_alloc_error | when allocating memory for underlying storage in transaction failed. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::operator= | ( | const std::basic_string< CharT > & | other | ) |
Copy assignment operator.
Replace the string with contents of std::basic_string<CharT> other.
[in] | other | reference to the std::basic_string<CharT> to be copied. |
pmem::transaction_alloc_error | when allocating memory for underlying storage in transaction failed. |
basic_string<CharT, Traits>& pmem::obj::basic_string< CharT, Traits >::operator= | ( | const T & | t | ) |
Replace the contents with implicitly converted argument transactionally.
[in] | t | object (convertible to basic_string_view). |
pmem::transaction_alloc_error | when allocating memory for underlying storage in transaction failed. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::operator= | ( | std::initializer_list< CharT > | ilist | ) |
Replace the contents with those of the initializer list ilist transactionally.
[in] | ilist | initializer_list of characters. |
pmem::transaction_alloc_error | when allocating memory for underlying storage in transaction failed. |
basic_string< CharT, Traits >::reference pmem::obj::basic_string< CharT, Traits >::operator[] | ( | size_type | n | ) |
Access element at specific index and snapshot it if there is an active transaction.
No bounds checking is performed.
[in] | n | index number. |
pmem::transaction_error | when adding the object to the transaction failed. |
basic_string< CharT, Traits >::const_reference pmem::obj::basic_string< CharT, Traits >::operator[] | ( | size_type | n | ) | const |
Access element at specific index.
No bounds checking is performed.
[in] | n | index number. |
void pmem::obj::basic_string< CharT, Traits >::pop_back |
Remove the last character from the string transactionally.
pmem::transaction_error | when snapshotting failed. |
rethrows | destructor exception. |
void pmem::obj::basic_string< CharT, Traits >::push_back | ( | CharT | ch | ) |
Append character ch at the end of the string transactionally.
[in] | ch | character to append |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
slice< typename basic_string< CharT, Traits >::pointer > pmem::obj::basic_string< CharT, Traits >::range | ( | size_type | start, |
size_type | n | ||
) |
Returns slice and snapshots requested range.
This method is not specified by STL standards.
[in] | start | start index of requested range. |
[in] | n | number of elements in range. |
std::out_of_range | if any element of the range would be outside of the string. |
pmem::transaction_error | when snapshotting failed. |
slice< typename basic_string< CharT, Traits >::const_iterator > pmem::obj::basic_string< CharT, Traits >::range | ( | size_type | start, |
size_type | n | ||
) | const |
Returns const slice.
This method is not specified by STL standards.
[in] | start | start index of requested range. |
[in] | n | number of elements in range. |
std::out_of_range | if any element of the range would be outside of the string. |
slice< typename basic_string< CharT, Traits >::range_snapshotting_iterator > pmem::obj::basic_string< CharT, Traits >::range | ( | size_type | start, |
size_type | n, | ||
size_type | snapshot_size | ||
) |
Returns slice.
This method is not specified by STL standards.
[in] | start | start index of requested range. |
[in] | n | number of elements in range. |
[in] | snapshot_size | number of elements which should be snapshotted in a bulk while traversing this slice. If provided value is larger or equal to n, entire range is added to a transaction. If value is equal to 0 no snapshotting happens. |
std::out_of_range | if any element of the range would be outside of the string. |
pmem::transaction_error | when snapshotting failed. |
basic_string< CharT, Traits >::reverse_iterator pmem::obj::basic_string< CharT, Traits >::rbegin |
Return a reverse iterator to the beginning.
|
noexcept |
Return a const reverse iterator to the beginning.
basic_string< CharT, Traits >::reverse_iterator pmem::obj::basic_string< CharT, Traits >::rend |
Return a reverse iterator to the end.
|
noexcept |
Return a const reverse iterator to the end.
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::replace | ( | const_iterator | first, |
const_iterator | last, | ||
const basic_string< CharT, Traits > & | str | ||
) |
Replace range [first, last) with the content of str string transactionally.
[in] | first | begin of the range of characters that will be replaced. |
[in] | last | end of the range of characters that will be replaced. |
[in] | str | that that will be used for replacement. |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::replace | ( | const_iterator | first, |
const_iterator | last, | ||
const CharT * | s | ||
) |
Replace range [first, last) with the characters in [s, s + traits::length(s)) range transactionally.
[in] | first | begin of the range of characters that will be replaced. |
[in] | last | end of the range of characters that will be replaced. |
[in] | s | pointer to C-style string that will be used for replacement. |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::replace | ( | const_iterator | first, |
const_iterator | last, | ||
const CharT * | s, | ||
size_type | count2 | ||
) |
Replace range [first, last) with the characters in [s, s + count2) range transactionally.
[in] | first | begin of the range of characters that will be replaced. |
[in] | last | end of the range of characters that will be replaced. |
[in] | s | pointer to C-style string that will be used for replacement. |
[in] | count2 | number of characters that will be used for replacement. |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
basic_string<CharT, Traits>& pmem::obj::basic_string< CharT, Traits >::replace | ( | const_iterator | first, |
const_iterator | last, | ||
InputIt | first2, | ||
InputIt | last2 | ||
) |
Replace range [first, last) with the characters in [first2, last2) range transactionally.
[in] | first | begin of the range of characters that will be replaced. |
[in] | last | end of the range of characters that will be replaced. |
[in] | first2 | begin of the range of characters that will be used for replacement. |
[in] | last2 | end of the range of characters that will be used for replacement. |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::replace | ( | const_iterator | first, |
const_iterator | last, | ||
size_type | count2, | ||
CharT | ch | ||
) |
Replace range [first, last) with count2 copies of ch character transactionally.
[in] | first | begin of the range of characters that will be replaced. |
[in] | last | end of the range of characters that will be replaced. |
[in] | count2 | number of characters that will be used for replacement. |
[in] | ch | character that will be used for replacement. |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::replace | ( | const_iterator | first, |
const_iterator | last, | ||
std::initializer_list< CharT > | ilist | ||
) |
Replace range [first, last) with characters in initializer list ilist transactionally.
[in] | first | begin of the range of characters that will be replaced. |
[in] | last | end of the range of characters that will be replaced. |
[in] | ilist | initializer list of characters that will be used for replacement. |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::replace | ( | size_type | index, |
size_type | count, | ||
const basic_string< CharT, Traits > & | str | ||
) |
Replace range [index, index + count) with the content of str string transactionally.
[in] | index | start of the substring that will be replaced. |
[in] | count | length of the substring that will be replaced. |
[in] | str | that is used for the replacement. |
std::out_of_range | if index > size(). |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::replace | ( | size_type | index, |
size_type | count, | ||
const basic_string< CharT, Traits > & | str, | ||
size_type | index2, | ||
size_type | count2 = npos |
||
) |
Replace range [index, index + count) with the substring [index2, index2 + count2) of str string transactionally.
If either count2 == npos or count2 exceeds size of str string then substring [index2, str.size()) is used.
[in] | index | start of the substring that will be replaced. |
[in] | count | length of the substring that will be replaced. |
[in] | str | that is used for the replacement. |
[in] | index2 | start of the substring that will be used for replacement. |
[in] | count2 | length of the substring that will be used for replacement. |
std::out_of_range | if index > size() or index2 > str.size(). |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::replace | ( | size_type | index, |
size_type | count, | ||
const CharT * | s | ||
) |
Replace range [index, index + count) with the characters in [s, s + traits::length(s)) range transactionally.
[in] | index | start of the substring that will be replaced. |
[in] | count | length of the substring that will be replaced. |
[in] | s | pointer to C-style string that will be used for replacement. |
std::out_of_range | if index > size(). |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::replace | ( | size_type | index, |
size_type | count, | ||
const CharT * | s, | ||
size_type | count2 | ||
) |
Replace range [index, index + count) with the characters in [s, s + count2) range transactionally.
[in] | index | start of the substring that will be replaced. |
[in] | count | length of the substring that will be replaced. |
[in] | s | pointer to C-style string that will be used for replacement. |
[in] | count2 | number of characters that will be used for replacement. |
std::out_of_range | if index > size(). |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
basic_string< CharT, Traits > & pmem::obj::basic_string< CharT, Traits >::replace | ( | size_type | index, |
size_type | count, | ||
size_type | count2, | ||
CharT | ch | ||
) |
Replace range [index, index + count) with count2 copies of ch character transactionally.
[in] | index | start of the substring that will be replaced. |
[in] | count | length of the substring that will be replaced. |
[in] | count2 | number of characters that will be used for replacement. |
[in] | ch | character that will be used for replacement. |
std::out_of_range | if index > size(). |
std::length_error | if new size > max_size(). |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
|
private |
Generic function which replace_content current content based on provided parameters.
Allowed parameters are:
void pmem::obj::basic_string< CharT, Traits >::reserve | ( | size_type | new_cap = 0 | ) |
Increase the capacity of the string to new_cap transactionally.
If new_cap is greater than the current capacity(), new storage is allocated, otherwise the method does nothing. If new_cap is greater than capacity(), all iterators, including the past-the-end iterator, and all references to the elements are invalidated. Otherwise, no iterators or references are invalidated.
[in] | new_cap | new capacity. |
rethrows | destructor exception. |
std::length_error | if new_cap > max_size(). |
pmem::transaction_error | when snapshotting failed. |
pmem::transaction_alloc_error | when allocating new memory failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
void pmem::obj::basic_string< CharT, Traits >::resize | ( | size_type | count, |
CharT | ch | ||
) |
Resize the string to count characters transactionally.
If the current size is greater than count, the string is reduced to its first count elements. If the current size is less than count, additional characters of ch value are appended.
[in] | count | new size of the container. |
[in] | ch | character to initialize elements. |
std::length_error | if count > max_size() |
rethrows | constructor's exception. |
rethrows | destructor exception. |
pmem::transaction_error | when snapshotting failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
void pmem::obj::basic_string< CharT, Traits >::resize | ( | size_type | count | ) |
Resize the string to count characters transactionally.
If the current size is greater than count, the string is reduced to its first count elements. If the current size is less than count, additional default-initialized characters are appended.
[in] | count | new size of the container. |
std::length_error | if count > max_size() |
rethrows | constructor's exception. |
rethrows | destructor exception. |
pmem::transaction_error | when snapshotting failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
|
noexcept |
Finds the last character equal to ch.
If npos or any value not smaller than size()-1 is passed as pos, whole string will be searched.
[in] | ch | character to search for |
[in] | pos | position at which to start the search |
|
noexcept |
Finds the last substring equal to str.
If npos or any value not smaller than size()-1 is passed as pos, whole string will be searched.
[in] | str | string to search for |
[in] | pos | position at which to start the search |
basic_string< CharT, Traits >::size_type pmem::obj::basic_string< CharT, Traits >::rfind | ( | const CharT * | s, |
size_type | pos, | ||
size_type | count | ||
) | const |
Finds the last substring equal to the range [s, s+count).
This range can include null characters. When pos is specified, the search only includes sequences of characters that begin at or before position pos, ignoring any possible match beginning after pos. If npos or any value not smaller than size()-1 is passed as pos, whole string will be searched.
[in] | s | pointer to the C-style string to search for |
[in] | pos | position at which to start the search |
[in] | count | length of the substring to search for |
basic_string< CharT, Traits >::size_type pmem::obj::basic_string< CharT, Traits >::rfind | ( | const CharT * | s, |
size_type | pos = npos |
||
) | const |
Finds the last substring equal to the C-style string pointed to by s.
The length of the string is determined by the first null character. If npos or any value not smaller than size()-1 is passed as pos, whole string will be searched.
[in] | s | pointer to the C-style string to search for |
[in] | pos | position at which to start the search |
void pmem::obj::basic_string< CharT, Traits >::shrink_to_fit |
Remove unused capacity transactionally.
If large string is used capacity will be set to current size. If sso is used nothing happens.
pmem::transaction_error | when snapshotting failed. |
pmem::transaction_alloc_error | when reallocating failed. |
pmem::transaction_free_error | when freeing old underlying array failed. |
rethrows | constructor's exception. |
rethrows | destructor exception. |
|
noexcept |
|
private |
Resize sso string to large string.
Capacity is equal new_capacity plus sizeof(CharT) bytes for null character. Content of sso string is preserved and copied to the large string object.
[in] | new_capacity | capacity of constructed large string. |
union { ... } |
This union holds sso data inside of an array and non sso data inside a vector.
If vector is used, it must be manually created and destroyed.
_size is used to store length in case when SSO is used. It is the same type as first member of data field. This means that it can be safely accessed through both sso (_size variable) and non_sso (as size in a vector) no matter which one is used.
C++11 ยง9.2/18 says: If a standard-layout union contains two or more standard-layout structs that share a common initial sequence, and if the standard-layout union object currently contains one of these standard-layout structs, it is permitted to inspect the common initial part of any of them.