فهرست منبع

AK: Add convenience substring wrappers to String to exclude a length

These overloads exist on other string classes and are used throughout
the code base.
Timothy Flynn 2 سال پیش
والد
کامیت
76fd5f2756
2فایلهای تغییر یافته به همراه14 افزوده شده و 0 حذف شده
  1. 12 0
      AK/String.cpp
  2. 2 0
      AK/String.h

+ 12 - 0
AK/String.cpp

@@ -354,6 +354,12 @@ ErrorOr<String> String::substring_from_byte_offset(size_t start, size_t byte_cou
     return String::from_utf8(bytes_as_string_view().substring_view(start, byte_count));
 }
 
+ErrorOr<String> String::substring_from_byte_offset(size_t start) const
+{
+    VERIFY(start <= bytes_as_string_view().length());
+    return substring_from_byte_offset(start, bytes_as_string_view().length() - start);
+}
+
 ErrorOr<String> String::substring_from_byte_offset_with_shared_superstring(size_t start, size_t byte_count) const
 {
     if (!byte_count)
@@ -363,6 +369,12 @@ ErrorOr<String> String::substring_from_byte_offset_with_shared_superstring(size_
     return String { TRY(Detail::StringData::create_substring(*m_data, start, byte_count)) };
 }
 
+ErrorOr<String> String::substring_from_byte_offset_with_shared_superstring(size_t start) const
+{
+    VERIFY(start <= bytes_as_string_view().length());
+    return substring_from_byte_offset_with_shared_superstring(start, bytes_as_string_view().length() - start);
+}
+
 bool String::operator==(char const* c_string) const
 {
     return bytes_as_string_view() == c_string;

+ 2 - 0
AK/String.h

@@ -107,9 +107,11 @@ public:
 
     // Creates a substring with a deep copy of the specified data window.
     ErrorOr<String> substring_from_byte_offset(size_t start, size_t byte_count) const;
+    ErrorOr<String> substring_from_byte_offset(size_t start) const;
 
     // Creates a substring that strongly references the origin superstring instead of making a deep copy of the data.
     ErrorOr<String> substring_from_byte_offset_with_shared_superstring(size_t start, size_t byte_count) const;
+    ErrorOr<String> substring_from_byte_offset_with_shared_superstring(size_t start) const;
 
     // Returns an iterable view over the Unicode code points.
     [[nodiscard]] Utf8View code_points() const;