aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/include
diff options
context:
space:
mode:
Diffstat (limited to 'toolsrc/include')
-rw-r--r--toolsrc/include/vcpkg/base/strings.h6
-rw-r--r--toolsrc/include/vcpkg/base/stringview.h31
2 files changed, 21 insertions, 16 deletions
diff --git a/toolsrc/include/vcpkg/base/strings.h b/toolsrc/include/vcpkg/base/strings.h
index 5113ff2fc..16b39001b 100644
--- a/toolsrc/include/vcpkg/base/strings.h
+++ b/toolsrc/include/vcpkg/base/strings.h
@@ -188,7 +188,11 @@ namespace vcpkg::Strings
return join(delimiter, v, [](const Element& x) -> const Element& { return x; });
}
- std::string replace_all(std::string&& s, const std::string& search, StringView rep);
+ std::string replace_all(std::string&& s, StringView search, StringView rep);
+
+ void inplace_replace_all(std::string& s, StringView search, StringView rep);
+
+ void inplace_replace_all(std::string& s, char search, char rep) noexcept;
std::string trim(std::string&& s);
diff --git a/toolsrc/include/vcpkg/base/stringview.h b/toolsrc/include/vcpkg/base/stringview.h
index 9238990fe..aba27f9d1 100644
--- a/toolsrc/include/vcpkg/base/stringview.h
+++ b/toolsrc/include/vcpkg/base/stringview.h
@@ -14,43 +14,44 @@ namespace vcpkg
{
static std::vector<StringView> find_all_enclosed(const StringView& input,
const std::string& left_delim,
- const std::string& right_delim);
+ const std::string& right_delim) noexcept;
static StringView find_exactly_one_enclosed(const StringView& input,
const std::string& left_tag,
- const std::string& right_tag);
+ const std::string& right_tag) noexcept;
static Optional<StringView> find_at_most_one_enclosed(const StringView& input,
const std::string& left_tag,
- const std::string& right_tag);
+ const std::string& right_tag) noexcept;
constexpr StringView() = default;
- StringView(const std::string& s); // Implicit by design
+ StringView(const std::string& s) noexcept; // Implicit by design
// NOTE: we do this instead of the delegating constructor since delegating ctors are a perf footgun
template<size_t Sz>
- constexpr StringView(const char (&arr)[Sz]) : m_ptr(arr), m_size(Sz - 1)
+ constexpr StringView(const char (&arr)[Sz]) noexcept : m_ptr(arr), m_size(Sz - 1)
{
}
- constexpr StringView(const char* ptr, size_t size) : m_ptr(ptr), m_size(size) { }
- constexpr StringView(const char* b, const char* e) : m_ptr(b), m_size(static_cast<size_t>(e - b)) { }
+ constexpr StringView(const char* ptr, size_t size) noexcept : m_ptr(ptr), m_size(size) { }
+ constexpr StringView(const char* b, const char* e) noexcept : m_ptr(b), m_size(static_cast<size_t>(e - b)) { }
- constexpr const char* begin() const { return m_ptr; }
- constexpr const char* end() const { return m_ptr + m_size; }
+ constexpr const char* begin() const noexcept { return m_ptr; }
+ constexpr const char* end() const noexcept { return m_ptr + m_size; }
- std::reverse_iterator<const char*> rbegin() const { return std::make_reverse_iterator(end()); }
- std::reverse_iterator<const char*> rend() const { return std::make_reverse_iterator(begin()); }
+ std::reverse_iterator<const char*> rbegin() const noexcept { return std::make_reverse_iterator(end()); }
+ std::reverse_iterator<const char*> rend() const noexcept { return std::make_reverse_iterator(begin()); }
- constexpr const char* data() const { return m_ptr; }
- constexpr size_t size() const { return m_size; }
+ constexpr const char* data() const noexcept { return m_ptr; }
+ constexpr size_t size() const noexcept { return m_size; }
+ constexpr bool empty() const noexcept { return m_size == 0; }
std::string to_string() const;
void to_string(std::string& out) const;
- StringView substr(size_t pos, size_t count = std::numeric_limits<size_t>::max()) const;
+ StringView substr(size_t pos, size_t count = std::numeric_limits<size_t>::max()) const noexcept;
- constexpr char byte_at_index(size_t pos) const { return m_ptr[pos]; }
+ constexpr char byte_at_index(size_t pos) const noexcept { return m_ptr[pos]; }
private:
const char* m_ptr = 0;