forked from boostorg/static_string
Define small functions inline, improve replace and insert coverage
This commit is contained in:
@ -647,13 +647,6 @@ class basic_static_string
|
|||||||
private:
|
private:
|
||||||
template<std::size_t, class, class>
|
template<std::size_t, class, class>
|
||||||
friend class basic_static_string;
|
friend class basic_static_string;
|
||||||
|
|
||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
|
||||||
void
|
|
||||||
term() noexcept
|
|
||||||
{
|
|
||||||
this->term_impl();
|
|
||||||
}
|
|
||||||
public:
|
public:
|
||||||
//--------------------------------------------------------------------------
|
//--------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
@ -705,7 +698,12 @@ public:
|
|||||||
Construct an empty string
|
Construct an empty string
|
||||||
*/
|
*/
|
||||||
BOOST_STATIC_STRING_CPP11_CONSTEXPR
|
BOOST_STATIC_STRING_CPP11_CONSTEXPR
|
||||||
basic_static_string() noexcept;
|
basic_static_string() noexcept
|
||||||
|
{
|
||||||
|
#ifdef BOOST_STATIC_STRING_CPP20
|
||||||
|
term();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/** Construct a `basic_static_string`.
|
/** Construct a `basic_static_string`.
|
||||||
|
|
||||||
@ -716,7 +714,10 @@ public:
|
|||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
||||||
basic_static_string(
|
basic_static_string(
|
||||||
size_type count,
|
size_type count,
|
||||||
value_type ch);
|
value_type ch)
|
||||||
|
{
|
||||||
|
assign(count, ch);
|
||||||
|
}
|
||||||
|
|
||||||
/** Construct a `basic_static_string`.
|
/** Construct a `basic_static_string`.
|
||||||
|
|
||||||
@ -726,7 +727,10 @@ public:
|
|||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
||||||
basic_static_string(
|
basic_static_string(
|
||||||
const basic_static_string<M, CharT, Traits>& other,
|
const basic_static_string<M, CharT, Traits>& other,
|
||||||
size_type pos);
|
size_type pos)
|
||||||
|
{
|
||||||
|
assign(other, pos);
|
||||||
|
}
|
||||||
|
|
||||||
/** Construct a `basic_static_string`.
|
/** Construct a `basic_static_string`.
|
||||||
|
|
||||||
@ -737,7 +741,10 @@ public:
|
|||||||
basic_static_string(
|
basic_static_string(
|
||||||
const basic_static_string<M, CharT, Traits>& other,
|
const basic_static_string<M, CharT, Traits>& other,
|
||||||
size_type pos,
|
size_type pos,
|
||||||
size_type count);
|
size_type count)
|
||||||
|
{
|
||||||
|
assign(other, pos, count);
|
||||||
|
}
|
||||||
|
|
||||||
/** Construct a `basic_static_string`.
|
/** Construct a `basic_static_string`.
|
||||||
|
|
||||||
@ -746,7 +753,10 @@ public:
|
|||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
||||||
basic_static_string(
|
basic_static_string(
|
||||||
const_pointer s,
|
const_pointer s,
|
||||||
size_type count);
|
size_type count)
|
||||||
|
{
|
||||||
|
assign(s, count);
|
||||||
|
}
|
||||||
|
|
||||||
/** Construct a `basic_static_string`.
|
/** Construct a `basic_static_string`.
|
||||||
|
|
||||||
@ -755,6 +765,7 @@ public:
|
|||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
||||||
basic_static_string(const_pointer s);
|
basic_static_string(const_pointer s);
|
||||||
|
|
||||||
|
// KRYSTIAN TODO: we can use a better algorithm if this is a forward iterator
|
||||||
/** Construct a `basic_static_string`.
|
/** Construct a `basic_static_string`.
|
||||||
|
|
||||||
Construct from a range of characters
|
Construct from a range of characters
|
||||||
@ -769,14 +780,20 @@ public:
|
|||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
||||||
basic_static_string(
|
basic_static_string(
|
||||||
InputIterator first,
|
InputIterator first,
|
||||||
InputIterator last);
|
InputIterator last)
|
||||||
|
{
|
||||||
|
assign(first, last);
|
||||||
|
}
|
||||||
|
|
||||||
/** Construct a `basic_static_string`.
|
/** Construct a `basic_static_string`.
|
||||||
|
|
||||||
Copy constructor.
|
Copy constructor.
|
||||||
*/
|
*/
|
||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
||||||
basic_static_string(const basic_static_string& other) noexcept;
|
basic_static_string(const basic_static_string& other) noexcept
|
||||||
|
{
|
||||||
|
assign(other);
|
||||||
|
}
|
||||||
|
|
||||||
/** Construct a `basic_static_string`.
|
/** Construct a `basic_static_string`.
|
||||||
|
|
||||||
@ -785,22 +802,32 @@ public:
|
|||||||
template<std::size_t M>
|
template<std::size_t M>
|
||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
||||||
basic_static_string(
|
basic_static_string(
|
||||||
const basic_static_string<M, CharT, Traits>& other);
|
const basic_static_string<M, CharT, Traits>& other)
|
||||||
|
{
|
||||||
|
assign(other);
|
||||||
|
}
|
||||||
|
|
||||||
/** Construct a `basic_static_string`.
|
/** Construct a `basic_static_string`.
|
||||||
|
|
||||||
Construct from an initializer list
|
Construct from an initializer list
|
||||||
*/
|
*/
|
||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
||||||
basic_static_string(std::initializer_list<value_type> init);
|
basic_static_string(std::initializer_list<value_type> init)
|
||||||
|
{
|
||||||
|
assign(init.begin(), init.end());
|
||||||
|
}
|
||||||
|
|
||||||
|
// KRYSTIAN TODO: this may need to be templated
|
||||||
/** Construct a `basic_static_string`.
|
/** Construct a `basic_static_string`.
|
||||||
|
|
||||||
Construct from a `string_view_type`
|
Construct from a `string_view_type`
|
||||||
*/
|
*/
|
||||||
explicit
|
explicit
|
||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
||||||
basic_static_string(string_view_type sv);
|
basic_static_string(string_view_type sv)
|
||||||
|
{
|
||||||
|
assign(sv);
|
||||||
|
}
|
||||||
|
|
||||||
/** Construct a `basic_static_string`.
|
/** Construct a `basic_static_string`.
|
||||||
|
|
||||||
@ -820,7 +847,10 @@ public:
|
|||||||
basic_static_string(
|
basic_static_string(
|
||||||
const T& t,
|
const T& t,
|
||||||
size_type pos,
|
size_type pos,
|
||||||
size_type n);
|
size_type n)
|
||||||
|
{
|
||||||
|
assign(t, pos, n);
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------
|
//--------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
@ -1083,7 +1113,12 @@ public:
|
|||||||
*/
|
*/
|
||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
||||||
reference
|
reference
|
||||||
at(size_type pos);
|
at(size_type pos)
|
||||||
|
{
|
||||||
|
BOOST_STATIC_STRING_THROW_IF(
|
||||||
|
pos >= size(), std::out_of_range{"pos >= size()"});
|
||||||
|
return data()[pos];
|
||||||
|
}
|
||||||
|
|
||||||
/** Access specified character with bounds checking.
|
/** Access specified character with bounds checking.
|
||||||
|
|
||||||
@ -1091,7 +1126,12 @@ public:
|
|||||||
*/
|
*/
|
||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
||||||
const_reference
|
const_reference
|
||||||
at(size_type pos) const;
|
at(size_type pos) const
|
||||||
|
{
|
||||||
|
BOOST_STATIC_STRING_THROW_IF(
|
||||||
|
pos >= size(), std::out_of_range{"pos >= size()"});
|
||||||
|
return data()[pos];
|
||||||
|
}
|
||||||
|
|
||||||
/** Access specified character
|
/** Access specified character
|
||||||
|
|
||||||
@ -1342,7 +1382,11 @@ public:
|
|||||||
*/
|
*/
|
||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
||||||
void
|
void
|
||||||
reserve(size_type n);
|
reserve(size_type n)
|
||||||
|
{
|
||||||
|
BOOST_STATIC_STRING_THROW_IF(
|
||||||
|
n > max_size(), std::length_error{"n > max_size()"});
|
||||||
|
}
|
||||||
|
|
||||||
/** Returns the number of characters that can be held in currently allocated storage.
|
/** Returns the number of characters that can be held in currently allocated storage.
|
||||||
|
|
||||||
@ -1372,7 +1416,11 @@ public:
|
|||||||
/// Clears the contents
|
/// Clears the contents
|
||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
||||||
void
|
void
|
||||||
clear() noexcept;
|
clear() noexcept
|
||||||
|
{
|
||||||
|
this->set_size(0);
|
||||||
|
term();
|
||||||
|
}
|
||||||
|
|
||||||
/** Insert a character.
|
/** Insert a character.
|
||||||
|
|
||||||
@ -2360,7 +2408,12 @@ public:
|
|||||||
basic_static_string
|
basic_static_string
|
||||||
substr(
|
substr(
|
||||||
size_type pos = 0,
|
size_type pos = 0,
|
||||||
size_type count = npos) const;
|
size_type count = npos) const
|
||||||
|
{
|
||||||
|
BOOST_STATIC_STRING_THROW_IF(
|
||||||
|
pos > size(), std::out_of_range{"pos > size()"});
|
||||||
|
return basic_static_string(&data()[pos], (std::min)(count, size() - pos));
|
||||||
|
}
|
||||||
|
|
||||||
/** Return a view of a substring.
|
/** Return a view of a substring.
|
||||||
|
|
||||||
@ -2384,7 +2437,12 @@ public:
|
|||||||
string_view_type
|
string_view_type
|
||||||
subview(
|
subview(
|
||||||
size_type pos = 0,
|
size_type pos = 0,
|
||||||
size_type count = npos) const;
|
size_type count = npos) const
|
||||||
|
{
|
||||||
|
BOOST_STATIC_STRING_THROW_IF(
|
||||||
|
pos > size(), std::out_of_range{"pos > size()"});
|
||||||
|
return string_view_type(&data()[pos], (std::min)(count, size() - pos));
|
||||||
|
}
|
||||||
|
|
||||||
/** Copy a substring to another string.
|
/** Copy a substring to another string.
|
||||||
|
|
||||||
@ -2543,6 +2601,7 @@ public:
|
|||||||
size_type pos2,
|
size_type pos2,
|
||||||
size_type n2 = npos)
|
size_type n2 = npos)
|
||||||
{
|
{
|
||||||
|
// this check is not redundant, its for the substr operation performed on str
|
||||||
BOOST_STATIC_STRING_THROW_IF(
|
BOOST_STATIC_STRING_THROW_IF(
|
||||||
pos2 > str.size(), std::out_of_range{"pos2 > str.size()"});
|
pos2 > str.size(), std::out_of_range{"pos2 > str.size()"});
|
||||||
return replace_unchecked(pos1, n1, str.data() + pos2, (std::min)(n2, str.size() - pos2));
|
return replace_unchecked(pos1, n1, str.data() + pos2, (std::min)(n2, str.size() - pos2));
|
||||||
@ -4052,10 +4111,28 @@ public:
|
|||||||
private:
|
private:
|
||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
||||||
basic_static_string&
|
basic_static_string&
|
||||||
assign_char(value_type ch, std::true_type) noexcept;
|
term() noexcept
|
||||||
|
{
|
||||||
|
this->term_impl();
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
||||||
|
basic_static_string&
|
||||||
|
assign_char(value_type ch, std::true_type) noexcept
|
||||||
|
{
|
||||||
|
this->set_size(1);
|
||||||
|
traits_type::assign(data()[0], ch);
|
||||||
|
return term();
|
||||||
|
}
|
||||||
|
|
||||||
basic_static_string&
|
basic_static_string&
|
||||||
assign_char(value_type ch, std::false_type);
|
assign_char(value_type ch, std::false_type)
|
||||||
|
{
|
||||||
|
BOOST_STATIC_STRING_THROW(
|
||||||
|
std::length_error{"max_size() == 0"});
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
// Returns the size of data read from input iterator. Read data begins at data() + size() + 1.
|
// Returns the size of data read from input iterator. Read data begins at data() + size() + 1.
|
||||||
template<typename InputIterator>
|
template<typename InputIterator>
|
||||||
@ -4693,55 +4770,6 @@ struct hash<
|
|||||||
namespace boost {
|
namespace boost {
|
||||||
namespace static_string {
|
namespace static_string {
|
||||||
|
|
||||||
template<std::size_t N, typename CharT, typename Traits>
|
|
||||||
BOOST_STATIC_STRING_CPP11_CONSTEXPR
|
|
||||||
basic_static_string<N, CharT, Traits>::
|
|
||||||
basic_static_string() noexcept
|
|
||||||
{
|
|
||||||
#ifdef BOOST_STATIC_STRING_CPP20
|
|
||||||
term();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
template<std::size_t N, typename CharT, typename Traits>
|
|
||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
|
||||||
basic_static_string<N, CharT, Traits>::
|
|
||||||
basic_static_string(size_type count, value_type ch)
|
|
||||||
{
|
|
||||||
assign(count, ch);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<std::size_t N, typename CharT, typename Traits>
|
|
||||||
template<std::size_t M>
|
|
||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
|
||||||
basic_static_string<N, CharT, Traits>::
|
|
||||||
basic_static_string(
|
|
||||||
const basic_static_string<M, CharT, Traits>& other,
|
|
||||||
size_type pos)
|
|
||||||
{
|
|
||||||
assign(other, pos);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<std::size_t N, typename CharT, typename Traits>
|
|
||||||
template<std::size_t M>
|
|
||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
|
||||||
basic_static_string<N, CharT, Traits>::
|
|
||||||
basic_static_string(
|
|
||||||
const basic_static_string<M, CharT, Traits>& other,
|
|
||||||
size_type pos,
|
|
||||||
size_type count)
|
|
||||||
{
|
|
||||||
assign(other, pos, count);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<std::size_t N, typename CharT, typename Traits>
|
|
||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
|
||||||
basic_static_string<N, CharT, Traits>::
|
|
||||||
basic_static_string(const_pointer s, size_type count)
|
|
||||||
{
|
|
||||||
assign(s, count);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<std::size_t N, typename CharT, typename Traits>
|
template<std::size_t N, typename CharT, typename Traits>
|
||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
||||||
basic_static_string<N, CharT, Traits>::
|
basic_static_string<N, CharT, Traits>::
|
||||||
@ -4754,64 +4782,6 @@ basic_static_string(const_pointer s)
|
|||||||
this->set_size(count);
|
this->set_size(count);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<std::size_t N, typename CharT, typename Traits>
|
|
||||||
template<class InputIterator,
|
|
||||||
typename std::enable_if<
|
|
||||||
detail::is_input_iterator<InputIterator>
|
|
||||||
::value>::type*>
|
|
||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
|
||||||
basic_static_string<N, CharT, Traits>::
|
|
||||||
basic_static_string(
|
|
||||||
InputIterator first,
|
|
||||||
InputIterator last)
|
|
||||||
{
|
|
||||||
assign(first, last);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<std::size_t N, typename CharT, typename Traits>
|
|
||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
|
||||||
basic_static_string<N, CharT, Traits>::
|
|
||||||
basic_static_string(
|
|
||||||
const basic_static_string& s) noexcept
|
|
||||||
{
|
|
||||||
assign(s);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<std::size_t N, typename CharT, typename Traits>
|
|
||||||
template<std::size_t M>
|
|
||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
|
||||||
basic_static_string<N, CharT, Traits>::
|
|
||||||
basic_static_string(
|
|
||||||
const basic_static_string<M, CharT, Traits>& s)
|
|
||||||
{
|
|
||||||
assign(s);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<std::size_t N, typename CharT, typename Traits>
|
|
||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
|
||||||
basic_static_string<N, CharT, Traits>::
|
|
||||||
basic_static_string(std::initializer_list<value_type> init)
|
|
||||||
{
|
|
||||||
assign(init.begin(), init.end());
|
|
||||||
}
|
|
||||||
|
|
||||||
template<std::size_t N, typename CharT, typename Traits>
|
|
||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
|
||||||
basic_static_string<N, CharT, Traits>::
|
|
||||||
basic_static_string(string_view_type sv)
|
|
||||||
{
|
|
||||||
assign(sv);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<std::size_t N, typename CharT, typename Traits>
|
|
||||||
template<class T, class>
|
|
||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
|
||||||
basic_static_string<N, CharT, Traits>::
|
|
||||||
basic_static_string(const T& t, size_type pos, size_type n)
|
|
||||||
{
|
|
||||||
assign(t, pos, n);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<std::size_t N, typename CharT, typename Traits>
|
template<std::size_t N, typename CharT, typename Traits>
|
||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
||||||
auto
|
auto
|
||||||
@ -4825,8 +4795,7 @@ assign(
|
|||||||
std::length_error{"count > max_size()"});
|
std::length_error{"count > max_size()"});
|
||||||
this->set_size(count);
|
this->set_size(count);
|
||||||
traits_type::assign(data(), size(), ch);
|
traits_type::assign(data(), size(), ch);
|
||||||
term();
|
return term();
|
||||||
return *this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
template<std::size_t N, typename CharT, typename Traits>
|
template<std::size_t N, typename CharT, typename Traits>
|
||||||
@ -4873,8 +4842,7 @@ assign(
|
|||||||
std::length_error{"count > max_size()"});
|
std::length_error{"count > max_size()"});
|
||||||
this->set_size(count);
|
this->set_size(count);
|
||||||
traits_type::move(data(), s, size());
|
traits_type::move(data(), s, size());
|
||||||
term();
|
return term();
|
||||||
return *this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
template<std::size_t N, typename CharT, typename Traits>
|
template<std::size_t N, typename CharT, typename Traits>
|
||||||
@ -4901,52 +4869,7 @@ assign(
|
|||||||
traits_type::assign(*ptr, *first);
|
traits_type::assign(*ptr, *first);
|
||||||
}
|
}
|
||||||
this->set_size(ptr - data());
|
this->set_size(ptr - data());
|
||||||
term();
|
return term();
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<std::size_t N, typename CharT, typename Traits>
|
|
||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
|
||||||
auto
|
|
||||||
basic_static_string<N, CharT, Traits>::
|
|
||||||
at(size_type pos) ->
|
|
||||||
reference
|
|
||||||
{
|
|
||||||
BOOST_STATIC_STRING_THROW_IF(
|
|
||||||
pos >= size(), std::out_of_range{"pos >= size()"});
|
|
||||||
return data()[pos];
|
|
||||||
}
|
|
||||||
|
|
||||||
template<std::size_t N, typename CharT, typename Traits>
|
|
||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
|
||||||
auto
|
|
||||||
basic_static_string<N, CharT, Traits>::
|
|
||||||
at(size_type pos) const ->
|
|
||||||
const_reference
|
|
||||||
{
|
|
||||||
BOOST_STATIC_STRING_THROW_IF(
|
|
||||||
pos >= size(), std::out_of_range{"pos >= size()"});
|
|
||||||
return data()[pos];
|
|
||||||
}
|
|
||||||
|
|
||||||
template<std::size_t N, typename CharT, typename Traits>
|
|
||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
|
||||||
void
|
|
||||||
basic_static_string<N, CharT, Traits>::
|
|
||||||
reserve(size_type n)
|
|
||||||
{
|
|
||||||
BOOST_STATIC_STRING_THROW_IF(
|
|
||||||
n > max_size(), std::length_error{"n > max_size()"});
|
|
||||||
}
|
|
||||||
|
|
||||||
template<std::size_t N, typename CharT, typename Traits>
|
|
||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
|
||||||
void
|
|
||||||
basic_static_string<N, CharT, Traits>::
|
|
||||||
clear() noexcept
|
|
||||||
{
|
|
||||||
this->set_size(0);
|
|
||||||
term();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
template<std::size_t N, typename CharT, typename Traits>
|
template<std::size_t N, typename CharT, typename Traits>
|
||||||
@ -5099,32 +5022,7 @@ append(
|
|||||||
count > max_size() - curr_size, std::length_error{"count > max_size() - size()"});
|
count > max_size() - curr_size, std::length_error{"count > max_size() - size()"});
|
||||||
traits_type::copy(&data()[curr_size], s, count);
|
traits_type::copy(&data()[curr_size], s, count);
|
||||||
this->set_size(curr_size + count);
|
this->set_size(curr_size + count);
|
||||||
term();
|
return term();
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<std::size_t N, typename CharT, typename Traits>
|
|
||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
|
||||||
auto
|
|
||||||
basic_static_string<N, CharT, Traits>::
|
|
||||||
substr(size_type pos, size_type count) const ->
|
|
||||||
basic_static_string
|
|
||||||
{
|
|
||||||
BOOST_STATIC_STRING_THROW_IF(
|
|
||||||
pos > size(), std::out_of_range{"pos > size()"});
|
|
||||||
return {&data()[pos], (std::min)(count, size() - pos)};
|
|
||||||
}
|
|
||||||
|
|
||||||
template<std::size_t N, typename CharT, typename Traits>
|
|
||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
|
||||||
auto
|
|
||||||
basic_static_string<N, CharT, Traits>::
|
|
||||||
subview(size_type pos, size_type count) const ->
|
|
||||||
string_view_type
|
|
||||||
{
|
|
||||||
BOOST_STATIC_STRING_THROW_IF(
|
|
||||||
pos > size(), std::out_of_range{"pos > size()"});
|
|
||||||
return {&data()[pos], (std::min)(count, size() - pos)};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
template<std::size_t N, typename CharT, typename Traits>
|
template<std::size_t N, typename CharT, typename Traits>
|
||||||
@ -5446,29 +5344,6 @@ find_last_not_of(
|
|||||||
return res == rend() ? npos : curr_size - 1 - detail::distance(rbegin(), res);
|
return res == rend() ? npos : curr_size - 1 - detail::distance(rbegin(), res);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<std::size_t N, typename CharT, typename Traits>
|
|
||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
|
||||||
auto
|
|
||||||
basic_static_string<N, CharT, Traits>::
|
|
||||||
assign_char(value_type ch, std::true_type) noexcept ->
|
|
||||||
basic_static_string&
|
|
||||||
{
|
|
||||||
this->set_size(1);
|
|
||||||
traits_type::assign(data()[0], ch);
|
|
||||||
term();
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<std::size_t N, typename CharT, typename Traits>
|
|
||||||
auto
|
|
||||||
basic_static_string<N, CharT, Traits>::
|
|
||||||
assign_char(value_type, std::false_type) ->
|
|
||||||
basic_static_string&
|
|
||||||
{
|
|
||||||
BOOST_STATIC_STRING_THROW(std::length_error{"max_size() == 0"});
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<std::size_t N, typename CharT, typename Traits>
|
template<std::size_t N, typename CharT, typename Traits>
|
||||||
template<typename InputIterator>
|
template<typename InputIterator>
|
||||||
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
BOOST_STATIC_STRING_CPP14_CONSTEXPR
|
||||||
|
@ -937,6 +937,20 @@ testInsert()
|
|||||||
BOOST_TEST(s == "abcd");
|
BOOST_TEST(s == "abcd");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// insert(size_type, static_string) checked
|
||||||
|
{
|
||||||
|
static_string<10> s1 = "ad";
|
||||||
|
static_string<10> s2 = "bc";
|
||||||
|
BOOST_TEST(s1.insert(1, s2) == "abcd");
|
||||||
|
}
|
||||||
|
|
||||||
|
// insert(size_type, static_string, size_type, size_type)
|
||||||
|
{
|
||||||
|
static_string<10> s1 = "ad";
|
||||||
|
static_string<10> s2 = "abcd";
|
||||||
|
BOOST_TEST(s1.insert(1, s2, 1, 2) == "abcd");
|
||||||
|
}
|
||||||
|
|
||||||
// insert(size_type index, T const& t)
|
// insert(size_type index, T const& t)
|
||||||
{
|
{
|
||||||
struct T
|
struct T
|
||||||
@ -5735,11 +5749,23 @@ testReplace()
|
|||||||
static_string<20> fs1 = "helloworld";
|
static_string<20> fs1 = "helloworld";
|
||||||
BOOST_TEST(fs1.replace(0, fs1.size(), fs1) == "helloworld");
|
BOOST_TEST(fs1.replace(0, fs1.size(), fs1) == "helloworld");
|
||||||
}
|
}
|
||||||
|
// replace(size_type pos1, size_type n1, const basic_string& str); unchecked
|
||||||
|
{
|
||||||
|
static_string<20> fs1 = "helloworld";
|
||||||
|
static_string<15> fs2 = "helloworld";
|
||||||
|
BOOST_TEST(fs1.replace(0, fs1.size(), fs2) == "helloworld");
|
||||||
|
}
|
||||||
// replace(size_type pos1, size_type n1, const basic_string& str, size_type pos2, size_type n2 = npos);
|
// replace(size_type pos1, size_type n1, const basic_string& str, size_type pos2, size_type n2 = npos);
|
||||||
{
|
{
|
||||||
static_string<20> fs1 = "helloworld";
|
static_string<20> fs1 = "helloworld";
|
||||||
BOOST_TEST(fs1.replace(0, fs1.size(), fs1, 0, fs1.size()) == "helloworld");
|
BOOST_TEST(fs1.replace(0, fs1.size(), fs1, 0, fs1.size()) == "helloworld");
|
||||||
}
|
}
|
||||||
|
// replace(size_type pos1, size_type n1, const basic_string& str, size_type pos2, size_type n2 = npos); unchecked
|
||||||
|
{
|
||||||
|
static_string<20> fs1 = "helloworld";
|
||||||
|
static_string<15> fs2 = "helloworld";
|
||||||
|
BOOST_TEST(fs1.replace(0, fs1.size(), fs2, 0, fs2.size()) == "helloworld");
|
||||||
|
}
|
||||||
// replace(size_type pos1, size_type n1, const T& t);
|
// replace(size_type pos1, size_type n1, const T& t);
|
||||||
{
|
{
|
||||||
static_string<20> fs1 = "helloworld";
|
static_string<20> fs1 = "helloworld";
|
||||||
@ -5765,6 +5791,12 @@ testReplace()
|
|||||||
static_string<20> fs1 = "helloworld";
|
static_string<20> fs1 = "helloworld";
|
||||||
BOOST_TEST(fs1.replace(fs1.begin(), fs1.end(), fs1) == "helloworld");
|
BOOST_TEST(fs1.replace(fs1.begin(), fs1.end(), fs1) == "helloworld");
|
||||||
}
|
}
|
||||||
|
// replace(const_iterator i1, const_iterator i2, const basic_string& str); unchecked
|
||||||
|
{
|
||||||
|
static_string<20> fs1 = "helloworld";
|
||||||
|
static_string<15> fs2 = "helloworld";
|
||||||
|
BOOST_TEST(fs1.replace(fs1.begin(), fs1.end(), fs2) == "helloworld");
|
||||||
|
}
|
||||||
// replace(const_iterator i1, const_iterator i2, const T& t);
|
// replace(const_iterator i1, const_iterator i2, const T& t);
|
||||||
{
|
{
|
||||||
static_string<20> fs1 = "helloworld";
|
static_string<20> fs1 = "helloworld";
|
||||||
|
Reference in New Issue
Block a user