diff options
Diffstat (limited to 'core/ustring.cpp')
-rw-r--r-- | core/ustring.cpp | 311 |
1 files changed, 0 insertions, 311 deletions
diff --git a/core/ustring.cpp b/core/ustring.cpp index 992424f057..249a61f3f9 100644 --- a/core/ustring.cpp +++ b/core/ustring.cpp @@ -69,13 +69,11 @@ bool is_symbol(CharType c) { } bool select_word(const String &p_s, int p_col, int &r_beg, int &r_end) { - const String &s = p_s; int beg = CLAMP(p_col, 0, s.length()); int end = beg; if (s[beg] > 32 || beg == s.length()) { - bool symbol = beg < s.length() && is_symbol(s[beg]); while (beg > 0 && s[beg - 1] > 32 && (symbol == is_symbol(s[beg - 1]))) { @@ -93,7 +91,6 @@ bool select_word(const String &p_s, int p_col, int &r_beg, int &r_end) { return true; } else { - return false; } } @@ -101,7 +98,6 @@ bool select_word(const String &p_s, int p_col, int &r_beg, int &r_end) { /** STRING **/ bool CharString::operator<(const CharString &p_right) const { - if (length() == 0) { return p_right.length() != 0; } @@ -110,7 +106,6 @@ bool CharString::operator<(const CharString &p_right) const { } CharString &CharString::operator+=(char p_char) { - resize(size() ? size() + 1 : 2); set(length(), 0); set(length() - 1, p_char); @@ -119,7 +114,6 @@ CharString &CharString::operator+=(char p_char) { } const char *CharString::get_data() const { - if (size()) return &operator[](0); else @@ -127,13 +121,11 @@ const char *CharString::get_data() const { } CharString &CharString::operator=(const char *p_cstr) { - copy_from(p_cstr); return *this; } void CharString::copy_from(const char *p_cstr) { - if (!p_cstr) { resize(0); return; @@ -154,9 +146,7 @@ void CharString::copy_from(const char *p_cstr) { } void String::copy_from(const char *p_cstr) { - if (!p_cstr) { - resize(0); return; } @@ -167,7 +157,6 @@ void String::copy_from(const char *p_cstr) { len++; if (len == 0) { - resize(0); return; } @@ -177,15 +166,12 @@ void String::copy_from(const char *p_cstr) { CharType *dst = this->ptrw(); for (int i = 0; i < len + 1; i++) { - dst[i] = p_cstr[i]; } } void String::copy_from(const CharType *p_cstr, const int p_clip_to) { - if (!p_cstr) { - resize(0); return; } @@ -196,7 +182,6 @@ void String::copy_from(const CharType *p_cstr, const int p_clip_to) { len++; if (len == 0) { - resize(0); return; } @@ -220,14 +205,12 @@ void String::copy_from_unchecked(const CharType *p_char, const int p_length) { } void String::copy_from(const CharType &p_char) { - resize(2); set(0, p_char); set(1, 0); } bool String::operator==(const String &p_str) const { - if (length() != p_str.length()) return false; if (empty()) @@ -240,7 +223,6 @@ bool String::operator==(const String &p_str) const { /* Compare char by char */ for (int i = 0; i < l; i++) { - if (src[i] != dst[i]) return false; } @@ -249,12 +231,10 @@ bool String::operator==(const String &p_str) const { } bool String::operator!=(const String &p_str) const { - return !(*this == p_str); } String String::operator+(const String &p_str) const { - String res = *this; res += p_str; return res; @@ -269,7 +249,6 @@ String String::operator+(CharType p_chr) const { } */ String &String::operator+=(const String &p_str) { - if (empty()) { *this = p_str; return *this; @@ -294,13 +273,11 @@ String &String::operator+=(const String &p_str) { } String &String::operator+=(const CharType *p_str) { - *this += String(p_str); return *this; } String &String::operator+=(CharType p_char) { - resize(size() ? size() + 1 : 2); set(length(), 0); set(length() - 1, p_char); @@ -309,7 +286,6 @@ String &String::operator+=(CharType p_char) { } String &String::operator+=(const char *p_str) { - if (!p_str || p_str[0] == 0) return *this; @@ -333,17 +309,14 @@ String &String::operator+=(const char *p_str) { } void String::operator=(const char *p_str) { - copy_from(p_str); } void String::operator=(const CharType *p_str) { - copy_from(p_str); } bool String::operator==(const StrRange &p_str_range) const { - int len = p_str_range.len; if (length() != len) @@ -356,7 +329,6 @@ bool String::operator==(const StrRange &p_str_range) const { /* Compare char by char */ for (int i = 0; i < len; i++) { - if (c_str[i] != dst[i]) return false; } @@ -365,7 +337,6 @@ bool String::operator==(const StrRange &p_str_range) const { } bool String::operator==(const char *p_str) const { - int len = 0; const char *aux = p_str; @@ -383,7 +354,6 @@ bool String::operator==(const char *p_str) const { /* Compare char by char */ for (int i = 0; i < l; i++) { - if (p_str[i] != dst[i]) return false; } @@ -392,7 +362,6 @@ bool String::operator==(const char *p_str) const { } bool String::operator==(const CharType *p_str) const { - int len = 0; const CharType *aux = p_str; @@ -410,7 +379,6 @@ bool String::operator==(const CharType *p_str) const { /* Compare char by char */ for (int i = 0; i < l; i++) { - if (p_str[i] != dst[i]) return false; } @@ -419,17 +387,14 @@ bool String::operator==(const CharType *p_str) const { } bool String::operator!=(const char *p_str) const { - return (!(*this == p_str)); } bool String::operator!=(const CharType *p_str) const { - return (!(*this == p_str)); } bool String::operator<(const CharType *p_str) const { - if (empty() && p_str[0] == 0) return false; if (empty()) @@ -439,12 +404,10 @@ bool String::operator<(const CharType *p_str) const { } bool String::operator<=(const String &p_str) const { - return (*this < p_str) || (*this == p_str); } bool String::operator<(const char *p_str) const { - if (empty() && p_str[0] == 0) return false; if (empty()) @@ -454,12 +417,10 @@ bool String::operator<(const char *p_str) const { } bool String::operator<(const String &p_str) const { - return operator<(p_str.c_str()); } signed char String::nocasecmp_to(const String &p_str) const { - if (empty() && p_str.empty()) return 0; if (empty()) @@ -471,7 +432,6 @@ signed char String::nocasecmp_to(const String &p_str) const { const CharType *this_str = c_str(); while (true) { - if (*that_str == 0 && *this_str == 0) return 0; //we're equal else if (*this_str == 0) @@ -489,7 +449,6 @@ signed char String::nocasecmp_to(const String &p_str) const { } signed char String::casecmp_to(const String &p_str) const { - if (empty() && p_str.empty()) return 0; if (empty()) @@ -501,7 +460,6 @@ signed char String::casecmp_to(const String &p_str) const { const CharType *this_str = c_str(); while (true) { - if (*that_str == 0 && *this_str == 0) return 0; //we're equal else if (*this_str == 0) @@ -519,12 +477,10 @@ signed char String::casecmp_to(const String &p_str) const { } signed char String::naturalnocasecmp_to(const String &p_str) const { - const CharType *this_str = c_str(); const CharType *that_str = p_str.c_str(); if (this_str && that_str) { - while (*this_str == '.' || *that_str == '.') { if (*this_str++ != '.') return 1; @@ -537,11 +493,9 @@ signed char String::naturalnocasecmp_to(const String &p_str) const { } while (*this_str) { - if (!*that_str) return 1; else if (IS_DIGIT(*this_str)) { - int64_t this_int, that_int; if (!IS_DIGIT(*that_str)) @@ -581,19 +535,15 @@ signed char String::naturalnocasecmp_to(const String &p_str) const { } void String::erase(int p_pos, int p_chars) { - *this = left(p_pos) + substr(p_pos + p_chars, length() - ((p_pos + p_chars))); } String String::capitalize() const { - String aux = this->camelcase_to_underscore(true).replace("_", " ").strip_edges(); String cap; for (int i = 0; i < aux.get_slice_count(" "); i++) { - String slice = aux.get_slicec(' ', i); if (slice.length() > 0) { - slice[0] = _find_upper(slice[0]); if (i > 0) cap += " "; @@ -658,7 +608,6 @@ String String::get_with_code_lines() const { return ret; } int String::get_slice_count(String p_splitter) const { - if (empty()) return 0; if (p_splitter.empty()) @@ -668,7 +617,6 @@ int String::get_slice_count(String p_splitter) const { int slices = 1; while ((pos = find(p_splitter, pos)) >= 0) { - slices++; pos += p_splitter.length(); } @@ -677,7 +625,6 @@ int String::get_slice_count(String p_splitter) const { } String String::get_slice(String p_splitter, int p_slice) const { - if (empty() || p_splitter.empty()) return ""; @@ -691,7 +638,6 @@ String String::get_slice(String p_splitter, int p_slice) const { int i = 0; while (true) { - pos = find(p_splitter, pos); if (pos == -1) pos = length(); //reached end @@ -700,7 +646,6 @@ String String::get_slice(String p_splitter, int p_slice) const { //int to=pos; if (p_slice == i) { - return substr(from, pos - from); } @@ -715,7 +660,6 @@ String String::get_slice(String p_splitter, int p_slice) const { } String String::get_slicec(CharType p_splitter, int p_slice) const { - if (empty()) return String(); @@ -727,11 +671,8 @@ String String::get_slicec(CharType p_splitter, int p_slice) const { int prev = 0; int count = 0; while (true) { - if (c[i] == 0 || c[i] == p_splitter) { - if (p_slice == count) { - return substr(prev, i - prev); } else if (c[i] == 0) { return String(); @@ -746,7 +687,6 @@ String String::get_slicec(CharType p_splitter, int p_slice) const { } Vector<String> String::split_spaces() const { - Vector<String> ret; int from = 0; int i = 0; @@ -757,7 +697,6 @@ Vector<String> String::split_spaces() const { bool inside = false; while (true) { - bool empty = operator[](i) < 33; if (i == 0) @@ -769,7 +708,6 @@ Vector<String> String::split_spaces() const { } if (empty && inside) { - ret.push_back(substr(from, i - from)); inside = false; } @@ -783,13 +721,11 @@ Vector<String> String::split_spaces() const { } Vector<String> String::split(const String &p_splitter, bool p_allow_empty, int p_maxsplit) const { - Vector<String> ret; int from = 0; int len = length(); while (true) { - int end = find(p_splitter, from); if (end < 0) end = len; @@ -797,7 +733,6 @@ Vector<String> String::split(const String &p_splitter, bool p_allow_empty, int p if (p_maxsplit <= 0) ret.push_back(substr(from, end - from)); else { - // Put rest of the string and leave cycle. if (p_maxsplit == ret.size()) { ret.push_back(substr(from, len)); @@ -819,13 +754,11 @@ Vector<String> String::split(const String &p_splitter, bool p_allow_empty, int p } Vector<String> String::rsplit(const String &p_splitter, bool p_allow_empty, int p_maxsplit) const { - Vector<String> ret; const int len = length(); int remaining_len = len; while (true) { - if (remaining_len < p_splitter.length() || (p_maxsplit > 0 && p_maxsplit == ret.size())) { // no room for another splitter or hit max splits, push what's left and we're done if (p_allow_empty || remaining_len > 0) { @@ -855,13 +788,11 @@ Vector<String> String::rsplit(const String &p_splitter, bool p_allow_empty, int } Vector<float> String::split_floats(const String &p_splitter, bool p_allow_empty) const { - Vector<float> ret; int from = 0; int len = length(); while (true) { - int end = find(p_splitter, from); if (end < 0) end = len; @@ -878,13 +809,11 @@ Vector<float> String::split_floats(const String &p_splitter, bool p_allow_empty) } Vector<float> String::split_floats_mk(const Vector<String> &p_splitters, bool p_allow_empty) const { - Vector<float> ret; int from = 0; int len = length(); while (true) { - int idx; int end = findmk(p_splitters, from, &idx); int spl_len = 1; @@ -908,13 +837,11 @@ Vector<float> String::split_floats_mk(const Vector<String> &p_splitters, bool p_ } Vector<int> String::split_ints(const String &p_splitter, bool p_allow_empty) const { - Vector<int> ret; int from = 0; int len = length(); while (true) { - int end = find(p_splitter, from); if (end < 0) end = len; @@ -931,13 +858,11 @@ Vector<int> String::split_ints(const String &p_splitter, bool p_allow_empty) con } Vector<int> String::split_ints_mk(const Vector<String> &p_splitters, bool p_allow_empty) const { - Vector<int> ret; int from = 0; int len = length(); while (true) { - int idx; int end = findmk(p_splitters, from, &idx); int spl_len = 1; @@ -971,21 +896,17 @@ String String::join(Vector<String> parts) { } CharType String::char_uppercase(CharType p_char) { - return _find_upper(p_char); } CharType String::char_lowercase(CharType p_char) { - return _find_lower(p_char); } String String::to_upper() const { - String upper = *this; for (int i = 0; i < upper.size(); i++) { - const CharType s = upper[i]; const CharType t = _find_upper(s); if (s != t) // avoid copy on write @@ -996,11 +917,9 @@ String String::to_upper() const { } String String::to_lower() const { - String lower = *this; for (int i = 0; i < lower.size(); i++) { - const CharType s = lower[i]; const CharType t = _find_lower(s); if (s != t) // avoid copy on write @@ -1011,7 +930,6 @@ String String::to_lower() const { } const CharType *String::c_str() const { - static const CharType zero = 0; return size() ? &operator[](0) : &zero; @@ -1038,12 +956,10 @@ String String::hex_encode_buffer(const uint8_t *p_buffer, int p_len) { } String String::chr(CharType p_char) { - CharType c[2] = { p_char, 0 }; return String(c); } String String::num(double p_num, int p_decimals) { - #ifndef NO_USE_STDLIB if (p_decimals > 16) @@ -1054,7 +970,6 @@ String String::num(double p_num, int p_decimals) { fmt[1] = '.'; if (p_decimals < 0) { - fmt[1] = 'l'; fmt[2] = 'f'; fmt[3] = 0; @@ -1082,7 +997,6 @@ String String::num(double p_num, int p_decimals) { buf[255] = 0; //destroy trailing zeroes { - bool period = false; int z = 0; while (buf[z]) { @@ -1094,16 +1008,12 @@ String String::num(double p_num, int p_decimals) { if (period) { z--; while (z > 0) { - if (buf[z] == '0') { - buf[z] = 0; } else if (buf[z] == '.') { - buf[z] = 0; break; } else { - break; } @@ -1126,7 +1036,6 @@ String String::num(double p_num, int p_decimals) { /* decimal part */ if (p_decimals > 0 || (p_decimals == -1 && (int)p_num != p_num)) { - double dec = p_num - (float)((int)p_num); int digit = 0; @@ -1137,14 +1046,12 @@ String String::num(double p_num, int p_decimals) { int dec_max = 0; while (true) { - dec *= 10.0; dec_int = dec_int * 10 + (int)dec % 10; dec_max = dec_max * 10 + 9; digit++; if (p_decimals == -1) { - if (digit == MAX_DIGITS) //no point in going to infinite break; @@ -1160,18 +1067,15 @@ String String::num(double p_num, int p_decimals) { if (last > 5) { if (dec_int == dec_max) { - dec_int = 0; intn++; } else { - dec_int++; } } String decimal; for (int i = 0; i < digit; i++) { - char num[2] = { 0, 0 }; num[0] = '0' + dec_int % 10; decimal = num + decimal; @@ -1185,7 +1089,6 @@ String String::num(double p_num, int p_decimals) { s = "0"; else { while (intn) { - CharType num = '0' + (intn % 10); intn /= 10; s = num + s; @@ -1200,7 +1103,6 @@ String String::num(double p_num, int p_decimals) { } String String::num_int64(int64_t p_num, int base, bool capitalize_hex) { - bool sign = p_num < 0; int64_t n = p_num; @@ -1237,7 +1139,6 @@ String String::num_int64(int64_t p_num, int base, bool capitalize_hex) { } String String::num_uint64(uint64_t p_num, int base, bool capitalize_hex) { - uint64_t n = p_num; int chars = 0; @@ -1267,7 +1168,6 @@ String String::num_uint64(uint64_t p_num, int base, bool capitalize_hex) { } String String::num_real(double p_num) { - String s; String sd; /* integer part */ @@ -1279,7 +1179,6 @@ String String::num_real(double p_num) { /* decimal part */ if ((int)p_num != p_num) { - double dec = p_num - (float)((int)p_num); int digit = 0; @@ -1289,7 +1188,6 @@ String String::num_real(double p_num) { int dec_max = 0; while (true) { - dec *= 10.0; dec_int = dec_int * 10 + (int)dec % 10; dec_max = dec_max * 10 + 9; @@ -1307,18 +1205,15 @@ String String::num_real(double p_num) { if (last > 5) { if (dec_int == dec_max) { - dec_int = 0; intn++; } else { - dec_int++; } } String decimal; for (int i = 0; i < digit; i++) { - char num[2] = { 0, 0 }; num[0] = '0' + dec_int % 10; decimal = num + decimal; @@ -1334,7 +1229,6 @@ String String::num_real(double p_num) { s = "0"; else { while (intn) { - CharType num = '0' + (intn % 10); intn /= 10; s = num + s; @@ -1348,7 +1242,6 @@ String String::num_real(double p_num) { } String String::num_scientific(double p_num) { - #ifndef NO_USE_STDLIB char buf[256]; @@ -1379,7 +1272,6 @@ String String::num_scientific(double p_num) { } CharString String::ascii(bool p_allow_extended) const { - if (!length()) return CharString(); @@ -1393,7 +1285,6 @@ CharString String::ascii(bool p_allow_extended) const { } String String::utf8(const char *p_utf8, int p_len) { - String ret; ret.parse_utf8(p_utf8, p_len); @@ -1401,7 +1292,6 @@ String String::utf8(const char *p_utf8, int p_len) { }; bool String::parse_utf8(const char *p_utf8, int p_len) { - #define _UNICERROR(m_err) print_line("Unicode parsing error: " + String(m_err) + ". Is the string valid UTF-8?"); if (!p_utf8) @@ -1414,10 +1304,8 @@ bool String::parse_utf8(const char *p_utf8, int p_len) { /* HANDLE BOM (Byte Order Mark) */ if (p_len < 0 || p_len >= 3) { - bool has_bom = uint8_t(p_utf8[0]) == 0xEF && uint8_t(p_utf8[1]) == 0xBB && uint8_t(p_utf8[2]) == 0xBF; if (has_bom) { - //just skip it if (p_len >= 0) p_len -= 3; @@ -1430,9 +1318,7 @@ bool String::parse_utf8(const char *p_utf8, int p_len) { const char *ptrtmp_limit = &p_utf8[p_len]; int skip = 0; while (ptrtmp != ptrtmp_limit && *ptrtmp) { - if (skip == 0) { - uint8_t c = *ptrtmp >= 0 ? *ptrtmp : uint8_t(256 + *ptrtmp); /* Determine the number of characters in sequence */ @@ -1462,7 +1348,6 @@ bool String::parse_utf8(const char *p_utf8, int p_len) { str_size++; } else { - --skip; } @@ -1486,7 +1371,6 @@ bool String::parse_utf8(const char *p_utf8, int p_len) { dst[str_size] = 0; while (cstr_size) { - int len = 0; /* Determine the number of characters in sequence */ @@ -1526,11 +1410,9 @@ bool String::parse_utf8(const char *p_utf8, int p_len) { if (len == 1) unichar = *p_utf8; else { - unichar = (0xFF >> (len + 1)) & *p_utf8; for (int i = 1; i < len; i++) { - if ((p_utf8[i] & 0xC0) != 0x80) { _UNICERROR("invalid utf8"); return true; //invalid utf8 @@ -1557,7 +1439,6 @@ bool String::parse_utf8(const char *p_utf8, int p_len) { } CharString String::utf8() const { - int l = length(); if (!l) return CharString(); @@ -1565,7 +1446,6 @@ CharString String::utf8() const { const CharType *d = &operator[](0); int fl = 0; for (int i = 0; i < l; i++) { - uint32_t c = d[i]; if (c <= 0x7f) // 7 bits. fl += 1; @@ -1594,7 +1474,6 @@ CharString String::utf8() const { #define APPEND_CHAR(m_c) *(cdst++) = m_c for (int i = 0; i < l; i++) { - uint32_t c = d[i]; if (c <= 0x7f) // 7 bits. @@ -1646,17 +1525,14 @@ String::String(CharType p_char) { */ String::String(const char *p_str) { - copy_from(p_str); } String::String(const CharType *p_str, int p_clip_to_len) { - copy_from(p_str, p_clip_to_len); } String::String(const StrRange &p_range) { - if (!p_range.c_str) return; @@ -1664,7 +1540,6 @@ String::String(const StrRange &p_range) { } int String::hex_to_int(bool p_with_prefix) const { - if (p_with_prefix && length() < 3) return 0; @@ -1685,7 +1560,6 @@ int String::hex_to_int(bool p_with_prefix) const { int hex = 0; while (*s) { - CharType c = LOWERCASE(*s); int n; if (c >= '0' && c <= '9') { @@ -1706,7 +1580,6 @@ int String::hex_to_int(bool p_with_prefix) const { } int64_t String::hex_to_int64(bool p_with_prefix) const { - if (p_with_prefix && length() < 3) return 0; @@ -1727,7 +1600,6 @@ int64_t String::hex_to_int64(bool p_with_prefix) const { int64_t hex = 0; while (*s) { - CharType c = LOWERCASE(*s); int64_t n; if (c >= '0' && c <= '9') { @@ -1748,7 +1620,6 @@ int64_t String::hex_to_int64(bool p_with_prefix) const { } int64_t String::bin_to_int64(bool p_with_prefix) const { - if (p_with_prefix && length() < 3) return 0; @@ -1769,7 +1640,6 @@ int64_t String::bin_to_int64(bool p_with_prefix) const { int64_t binary = 0; while (*s) { - CharType c = LOWERCASE(*s); int64_t n; if (c == '0' || c == '1') { @@ -1788,7 +1658,6 @@ int64_t String::bin_to_int64(bool p_with_prefix) const { } int String::to_int() const { - if (length() == 0) return 0; @@ -1798,16 +1667,13 @@ int String::to_int() const { int sign = 1; for (int i = 0; i < to; i++) { - CharType c = operator[](i); if (c >= '0' && c <= '9') { - ERR_FAIL_COND_V_MSG(integer > INT32_MAX / 10, sign == 1 ? INT32_MAX : INT32_MIN, "Cannot represent " + *this + " as integer, provided value is " + (sign == 1 ? "too big." : "too small.")); integer *= 10; integer += c - '0'; } else if (integer == 0 && c == '-') { - sign = -sign; } } @@ -1816,7 +1682,6 @@ int String::to_int() const { } int64_t String::to_int64() const { - if (length() == 0) return 0; @@ -1826,16 +1691,13 @@ int64_t String::to_int64() const { int64_t sign = 1; for (int i = 0; i < to; i++) { - CharType c = operator[](i); if (c >= '0' && c <= '9') { - ERR_FAIL_COND_V_MSG(integer > INT64_MAX / 10, sign == 1 ? INT64_MAX : INT64_MIN, "Cannot represent " + *this + " as 64-bit integer, provided value is " + (sign == 1 ? "too big." : "too small.")); integer *= 10; integer += c - '0'; } else if (integer == 0 && c == '-') { - sign = -sign; } } @@ -1844,7 +1706,6 @@ int64_t String::to_int64() const { } int String::to_int(const char *p_str, int p_len) { - int to = 0; if (p_len >= 0) to = p_len; @@ -1857,16 +1718,13 @@ int String::to_int(const char *p_str, int p_len) { int sign = 1; for (int i = 0; i < to; i++) { - char c = p_str[i]; if (c >= '0' && c <= '9') { - ERR_FAIL_COND_V_MSG(integer > INT32_MAX / 10, sign == 1 ? INT32_MAX : INT32_MIN, "Cannot represent " + String(p_str).substr(0, to) + " as integer, provided value is " + (sign == 1 ? "too big." : "too small.")); integer *= 10; integer += c - '0'; } else if (c == '-' && integer == 0) { - sign = -sign; } else if (c != ' ') break; @@ -1876,7 +1734,6 @@ int String::to_int(const char *p_str, int p_len) { } bool String::is_numeric() const { - if (length() == 0) { return false; }; @@ -1886,7 +1743,6 @@ bool String::is_numeric() const { ++s; bool dot = false; for (int i = s; i < length(); i++) { - CharType c = operator[](i); if (c == '.') { if (dot) { @@ -1917,7 +1773,6 @@ static double built_in_strtod(const C *string, /* A decimal ASCII floating-point C **endPtr = nullptr) /* If non-nullptr, store terminating Cacter's * address here. */ { - static const int maxExponent = 511; /* Largest possible base 10 exponent. Any * exponent larger than this will already * produce underflow or overflow, so there's @@ -2119,7 +1974,6 @@ done: #define READING_DONE 4 double String::to_double(const char *p_str) { - #ifndef NO_USE_STDLIB return built_in_strtod<char>(p_str); //return atof(p_str); DOES NOT WORK ON ANDROID(??) @@ -2129,17 +1983,14 @@ double String::to_double(const char *p_str) { } float String::to_float() const { - return to_double(); } double String::to_double(const CharType *p_str, const CharType **r_end) { - return built_in_strtod<CharType>(p_str, (CharType **)r_end); } int64_t String::to_int(const CharType *p_str, int p_len, bool p_clamp) { - if (p_len == 0 || !p_str[0]) return 0; ///@todo make more exact so saving and loading does not lose precision @@ -2152,7 +2003,6 @@ int64_t String::to_int(const CharType *p_str, int p_len, bool p_clamp) { const CharType *limit = &p_str[p_len]; while (*str && reading != READING_DONE && str != limit) { - CharType c = *(str++); switch (reading) { case READING_SIGN: { @@ -2173,9 +2023,7 @@ int64_t String::to_int(const CharType *p_str, int p_len, bool p_clamp) { [[fallthrough]]; } case READING_INT: { - if (c >= '0' && c <= '9') { - if (integer > INT64_MAX / 10) { String number(""); str = p_str; @@ -2206,7 +2054,6 @@ int64_t String::to_int(const CharType *p_str, int p_len, bool p_clamp) { } double String::to_double() const { - if (empty()) return 0; #ifndef NO_USE_STDLIB @@ -2218,23 +2065,19 @@ double String::to_double() const { } bool operator==(const char *p_chr, const String &p_str) { - return p_str == p_chr; } String operator+(const char *p_chr, const String &p_str) { - String tmp = p_chr; tmp += p_str; return tmp; } String operator+(CharType p_chr, const String &p_str) { - return (String::chr(p_chr) + p_str); } uint32_t String::hash(const char *p_cstr) { - uint32_t hashv = 5381; uint32_t c; @@ -2245,7 +2088,6 @@ uint32_t String::hash(const char *p_cstr) { } uint32_t String::hash(const char *p_cstr, int p_len) { - uint32_t hashv = 5381; for (int i = 0; i < p_len; i++) hashv = ((hashv << 5) + hashv) + p_cstr[i]; /* hash * 33 + c */ @@ -2254,7 +2096,6 @@ uint32_t String::hash(const char *p_cstr, int p_len) { } uint32_t String::hash(const CharType *p_cstr, int p_len) { - uint32_t hashv = 5381; for (int i = 0; i < p_len; i++) hashv = ((hashv << 5) + hashv) + p_cstr[i]; /* hash * 33 + c */ @@ -2263,7 +2104,6 @@ uint32_t String::hash(const CharType *p_cstr, int p_len) { } uint32_t String::hash(const CharType *p_cstr) { - uint32_t hashv = 5381; uint32_t c; @@ -2274,7 +2114,6 @@ uint32_t String::hash(const CharType *p_cstr) { } uint32_t String::hash() const { - /* simple djb2 hashing */ const CharType *chr = c_str(); @@ -2288,7 +2127,6 @@ uint32_t String::hash() const { } uint64_t String::hash64() const { - /* simple djb2 hashing */ const CharType *chr = c_str(); @@ -2302,7 +2140,6 @@ uint64_t String::hash64() const { } String String::md5_text() const { - CharString cs = utf8(); unsigned char hash[16]; CryptoCore::md5((unsigned char *)cs.ptr(), cs.length(), hash); @@ -2324,7 +2161,6 @@ String String::sha256_text() const { } Vector<uint8_t> String::md5_buffer() const { - CharString cs = utf8(); unsigned char hash[16]; CryptoCore::md5((unsigned char *)cs.ptr(), cs.length(), hash); @@ -2365,7 +2201,6 @@ Vector<uint8_t> String::sha256_buffer() const { } String String::insert(int p_at_pos, const String &p_string) const { - if (p_at_pos < 0) return *this; @@ -2383,7 +2218,6 @@ String String::insert(int p_at_pos, const String &p_string) const { return pre + p_string + post; } String String::substr(int p_from, int p_chars) const { - if (p_chars == -1) p_chars = length() - p_from; @@ -2391,12 +2225,10 @@ String String::substr(int p_from, int p_chars) const { return ""; if ((p_from + p_chars) > length()) { - p_chars = length() - p_from; } if (p_from == 0 && p_chars >= length()) { - return String(*this); } @@ -2406,12 +2238,10 @@ String String::substr(int p_from, int p_chars) const { } int String::find_last(const String &p_str) const { - int pos = -1; int findfrom = 0; int findres = -1; while ((findres = find(p_str, findfrom)) != -1) { - pos = findres; findfrom = pos + 1; } @@ -2420,7 +2250,6 @@ int String::find_last(const String &p_str) const { } int String::find(const String &p_str, int p_from) const { - if (p_from < 0) return -1; @@ -2435,14 +2264,11 @@ int String::find(const String &p_str, int p_from) const { const CharType *str = p_str.c_str(); for (int i = p_from; i <= (len - src_len); i++) { - bool found = true; for (int j = 0; j < src_len; j++) { - int read_pos = i + j; if (read_pos >= len) { - ERR_PRINT("read_pos>=len"); return -1; }; @@ -2461,7 +2287,6 @@ int String::find(const String &p_str, int p_from) const { } int String::find(const char *p_str, int p_from) const { - if (p_from < 0) return -1; @@ -2477,27 +2302,21 @@ int String::find(const char *p_str, int p_from) const { src_len++; if (src_len == 1) { - const char needle = p_str[0]; for (int i = p_from; i < len; i++) { - if (src[i] == needle) { return i; } } } else { - for (int i = p_from; i <= (len - src_len); i++) { - bool found = true; for (int j = 0; j < src_len; j++) { - int read_pos = i + j; if (read_pos >= len) { - ERR_PRINT("read_pos>=len"); return -1; }; @@ -2521,7 +2340,6 @@ int String::find_char(const CharType &p_char, int p_from) const { } int String::findmk(const Vector<String> &p_keys, int p_from, int *r_key) const { - if (p_from < 0) return -1; if (p_keys.size() == 0) @@ -2538,10 +2356,8 @@ int String::findmk(const Vector<String> &p_keys, int p_from, int *r_key) const { const CharType *src = c_str(); for (int i = p_from; i < len; i++) { - bool found = true; for (int k = 0; k < key_count; k++) { - found = true; if (r_key) *r_key = k; @@ -2549,11 +2365,9 @@ int String::findmk(const Vector<String> &p_keys, int p_from, int *r_key) const { int l = keys[k].length(); for (int j = 0; j < l; j++) { - int read_pos = i + j; if (read_pos >= len) { - found = false; break; }; @@ -2575,7 +2389,6 @@ int String::findmk(const Vector<String> &p_keys, int p_from, int *r_key) const { } int String::findn(const String &p_str, int p_from) const { - if (p_from < 0) return -1; @@ -2587,14 +2400,11 @@ int String::findn(const String &p_str, int p_from) const { const CharType *srcd = c_str(); for (int i = p_from; i <= (length() - src_len); i++) { - bool found = true; for (int j = 0; j < src_len; j++) { - int read_pos = i + j; if (read_pos >= length()) { - ERR_PRINT("read_pos>=length()"); return -1; }; @@ -2616,7 +2426,6 @@ int String::findn(const String &p_str, int p_from) const { } int String::rfind(const String &p_str, int p_from) const { - // establish a limit int limit = length() - p_str.length(); if (limit < 0) @@ -2637,14 +2446,11 @@ int String::rfind(const String &p_str, int p_from) const { const CharType *src = c_str(); for (int i = p_from; i >= 0; i--) { - bool found = true; for (int j = 0; j < src_len; j++) { - int read_pos = i + j; if (read_pos >= len) { - ERR_PRINT("read_pos>=len"); return -1; }; @@ -2662,7 +2468,6 @@ int String::rfind(const String &p_str, int p_from) const { return -1; } int String::rfindn(const String &p_str, int p_from) const { - // establish a limit int limit = length() - p_str.length(); if (limit < 0) @@ -2683,14 +2488,11 @@ int String::rfindn(const String &p_str, int p_from) const { const CharType *src = c_str(); for (int i = p_from; i >= 0; i--) { - bool found = true; for (int j = 0; j < src_len; j++) { - int read_pos = i + j; if (read_pos >= len) { - ERR_PRINT("read_pos>=len"); return -1; }; @@ -2712,7 +2514,6 @@ int String::rfindn(const String &p_str, int p_from) const { } bool String::ends_with(const String &p_string) const { - int pos = find_last(p_string); if (pos == -1) return false; @@ -2720,7 +2521,6 @@ bool String::ends_with(const String &p_string) const { } bool String::begins_with(const String &p_string) const { - if (p_string.length() > length()) return false; @@ -2733,7 +2533,6 @@ bool String::begins_with(const String &p_string) const { int i = 0; for (; i < l; i++) { - if (src[i] != str[i]) return false; } @@ -2742,7 +2541,6 @@ bool String::begins_with(const String &p_string) const { return i == l; } bool String::begins_with(const char *p_string) const { - int l = length(); if (l == 0 || !p_string) return false; @@ -2751,7 +2549,6 @@ bool String::begins_with(const char *p_string) const { int i = 0; while (*p_string && i < l) { - if (*p_string != str[i]) return false; i++; @@ -2762,22 +2559,18 @@ bool String::begins_with(const char *p_string) const { } bool String::is_enclosed_in(const String &p_string) const { - return begins_with(p_string) && ends_with(p_string); } bool String::is_subsequence_of(const String &p_string) const { - return _base_is_subsequence_of(p_string, false); } bool String::is_subsequence_ofi(const String &p_string) const { - return _base_is_subsequence_of(p_string, true); } bool String::is_quoted() const { - return is_enclosed_in("\"") || is_enclosed_in("'"); } @@ -2827,7 +2620,6 @@ int String::countn(const String &p_string, int p_from, int p_to) const { } bool String::_base_is_subsequence_of(const String &p_string, bool case_insensitive) const { - int len = length(); if (len == 0) { // Technically an empty string is subsequence of any string @@ -2920,7 +2712,6 @@ static bool _wildcard_match(const CharType *p_pattern, const CharType *p_string, } bool String::match(const String &p_wildcard) const { - if (!p_wildcard.length() || !length()) return false; @@ -2928,14 +2719,12 @@ bool String::match(const String &p_wildcard) const { } bool String::matchn(const String &p_wildcard) const { - if (!p_wildcard.length() || !length()) return false; return _wildcard_match(p_wildcard.c_str(), c_str(), false); } String String::format(const Variant &values, String placeholder) const { - String new_string = String(this->ptr()); if (values.get_type() == Variant::ARRAY) { @@ -3007,20 +2796,17 @@ String String::format(const Variant &values, String placeholder) const { } String String::replace(const String &p_key, const String &p_with) const { - String new_string; int search_from = 0; int result = 0; while ((result = find(p_key, search_from)) >= 0) { - new_string += substr(search_from, result - search_from); new_string += p_with; search_from = result + p_key.length(); } if (search_from == 0) { - return *this; } @@ -3030,13 +2816,11 @@ String String::replace(const String &p_key, const String &p_with) const { } String String::replace(const char *p_key, const char *p_with) const { - String new_string; int search_from = 0; int result = 0; while ((result = find(p_key, search_from)) >= 0) { - new_string += substr(search_from, result - search_from); new_string += p_with; int k = 0; @@ -3046,7 +2830,6 @@ String String::replace(const char *p_key, const char *p_with) const { } if (search_from == 0) { - return *this; } @@ -3056,7 +2839,6 @@ String String::replace(const char *p_key, const char *p_with) const { } String String::replace_first(const String &p_key, const String &p_with) const { - int pos = find(p_key); if (pos >= 0) { return substr(0, pos) + p_with + substr(pos + p_key.length(), length()); @@ -3065,20 +2847,17 @@ String String::replace_first(const String &p_key, const String &p_with) const { return *this; } String String::replacen(const String &p_key, const String &p_with) const { - String new_string; int search_from = 0; int result = 0; while ((result = findn(p_key, search_from)) >= 0) { - new_string += substr(search_from, result - search_from); new_string += p_with; search_from = result + p_key.length(); } if (search_from == 0) { - return *this; } @@ -3087,7 +2866,6 @@ String String::replacen(const String &p_key, const String &p_with) const { } String String::repeat(int p_count) const { - ERR_FAIL_COND_V_MSG(p_count < 0, "", "Parameter count should be a positive number."); String new_string; @@ -3103,7 +2881,6 @@ String String::repeat(int p_count) const { } String String::left(int p_pos) const { - if (p_pos <= 0) return ""; @@ -3114,7 +2891,6 @@ String String::left(int p_pos) const { } String String::right(int p_pos) const { - if (p_pos >= length()) return ""; @@ -3125,13 +2901,11 @@ String String::right(int p_pos) const { } CharType String::ord_at(int p_idx) const { - ERR_FAIL_INDEX_V(p_idx, length(), 0); return operator[](p_idx); } String String::dedent() const { - String new_string; String indent; bool has_indent = false; @@ -3140,7 +2914,6 @@ String String::dedent() const { int indent_stop = -1; for (int i = 0; i < length(); i++) { - CharType c = operator[](i); if (c == '\n') { if (has_text) @@ -3173,13 +2946,11 @@ String String::dedent() const { } String String::strip_edges(bool left, bool right) const { - int len = length(); int beg = 0, end = len; if (left) { for (int i = 0; i < len; i++) { - if (operator[](i) <= 32) beg++; else @@ -3189,7 +2960,6 @@ String String::strip_edges(bool left, bool right) const { if (right) { for (int i = (int)(len - 1); i >= 0; i--) { - if (operator[](i) <= 32) end--; else @@ -3204,10 +2974,8 @@ String String::strip_edges(bool left, bool right) const { } String String::strip_escapes() const { - String new_string; for (int i = 0; i < length(); i++) { - // Escape characters on first page of the ASCII table, before 32 (Space). if (operator[](i) < 32) continue; @@ -3218,12 +2986,10 @@ String String::strip_escapes() const { } String String::lstrip(const String &p_chars) const { - int len = length(); int beg; for (beg = 0; beg < len; beg++) { - if (p_chars.find_char(get(beg)) == -1) break; } @@ -3235,12 +3001,10 @@ String String::lstrip(const String &p_chars) const { } String String::rstrip(const String &p_chars) const { - int len = length(); int end; for (end = len - 1; end >= 0; end--) { - if (p_chars.find_char(get(end)) == -1) break; } @@ -3252,31 +3016,25 @@ String String::rstrip(const String &p_chars) const { } String String::simplify_path() const { - String s = *this; String drive; if (s.begins_with("local://")) { drive = "local://"; s = s.substr(8, s.length()); } else if (s.begins_with("res://")) { - drive = "res://"; s = s.substr(6, s.length()); } else if (s.begins_with("user://")) { - drive = "user://"; s = s.substr(7, s.length()); } else if (s.begins_with("/") || s.begins_with("\\")) { - drive = s.substr(0, 1); s = s.substr(1, s.length() - 1); } else { - int p = s.find(":/"); if (p == -1) p = s.find(":\\"); if (p != -1 && p < s.find("/")) { - drive = s.substr(0, p + 2); s = s.substr(p + 2, s.length()); } @@ -3293,13 +3051,11 @@ String String::simplify_path() const { Vector<String> dirs = s.split("/", false); for (int i = 0; i < dirs.size(); i++) { - String d = dirs[i]; if (d == ".") { dirs.remove(i); i--; } else if (d == "..") { - if (i == 0) { dirs.remove(i); i--; @@ -3314,7 +3070,6 @@ String String::simplify_path() const { s = ""; for (int i = 0; i < dirs.size(); i++) { - if (i > 0) s += "/"; s += dirs[i]; @@ -3324,7 +3079,6 @@ String String::simplify_path() const { } static int _humanize_digits(int p_num) { - if (p_num < 100) return 2; else if (p_num < 1024) @@ -3334,7 +3088,6 @@ static int _humanize_digits(int p_num) { } String String::humanize_size(uint64_t p_size) { - uint64_t _div = 1; Vector<String> prefixes; prefixes.push_back(RTR("B")); @@ -3358,7 +3111,6 @@ String String::humanize_size(uint64_t p_size) { return String::num(p_size / divisor).pad_decimals(digits) + " " + prefixes[prefix_idx]; } bool String::is_abs_path() const { - if (length() > 1) return (operator[](0) == '/' || operator[](0) == '\\' || find(":/") != -1 || find(":\\") != -1); else if ((length()) == 1) @@ -3368,7 +3120,6 @@ bool String::is_abs_path() const { } bool String::is_valid_identifier() const { - int len = length(); if (len == 0) @@ -3377,7 +3128,6 @@ bool String::is_valid_identifier() const { const wchar_t *str = &operator[](0); for (int i = 0; i < len; i++) { - if (i == 0) { if (str[0] >= '0' && str[0] <= '9') return false; // no start with number plz @@ -3395,7 +3145,6 @@ bool String::is_valid_identifier() const { //kind of poor should be rewritten properly String String::word_wrap(int p_chars_per_line) const { - int from = 0; int last_space = 0; String ret; @@ -3472,7 +3221,6 @@ String String::http_unescape() const { } String String::c_unescape() const { - String escaped = *this; escaped = escaped.replace("\\a", "\a"); escaped = escaped.replace("\\b", "\b"); @@ -3490,7 +3238,6 @@ String String::c_unescape() const { } String String::c_escape() const { - String escaped = *this; escaped = escaped.replace("\\", "\\\\"); escaped = escaped.replace("\a", "\\a"); @@ -3508,7 +3255,6 @@ String String::c_escape() const { } String String::c_escape_multiline() const { - String escaped = *this; escaped = escaped.replace("\\", "\\\\"); escaped = escaped.replace("\"", "\\\""); @@ -3517,7 +3263,6 @@ String String::c_escape_multiline() const { } String String::json_escape() const { - String escaped = *this; escaped = escaped.replace("\\", "\\\\"); escaped = escaped.replace("\b", "\\b"); @@ -3532,7 +3277,6 @@ String String::json_escape() const { } String String::xml_escape(bool p_escape_quotes) const { - String str = *this; str = str.replace("&", "&"); str = str.replace("<", "<"); @@ -3551,20 +3295,15 @@ String String::xml_escape(bool p_escape_quotes) const { } static _FORCE_INLINE_ int _xml_unescape(const CharType *p_src, int p_src_len, CharType *p_dst) { - int len = 0; while (p_src_len) { - if (*p_src == '&') { - int eat = 0; if (p_src_len >= 4 && p_src[1] == '#') { - CharType c = 0; for (int i = 2; i < p_src_len; i++) { - eat = i + 1; CharType ct = p_src[i]; if (ct == ';') { @@ -3586,32 +3325,26 @@ static _FORCE_INLINE_ int _xml_unescape(const CharType *p_src, int p_src_len, Ch *p_dst = c; } else if (p_src_len >= 4 && p_src[1] == 'g' && p_src[2] == 't' && p_src[3] == ';') { - if (p_dst) *p_dst = '>'; eat = 4; } else if (p_src_len >= 4 && p_src[1] == 'l' && p_src[2] == 't' && p_src[3] == ';') { - if (p_dst) *p_dst = '<'; eat = 4; } else if (p_src_len >= 5 && p_src[1] == 'a' && p_src[2] == 'm' && p_src[3] == 'p' && p_src[4] == ';') { - if (p_dst) *p_dst = '&'; eat = 5; } else if (p_src_len >= 6 && p_src[1] == 'q' && p_src[2] == 'u' && p_src[3] == 'o' && p_src[4] == 't' && p_src[5] == ';') { - if (p_dst) *p_dst = '"'; eat = 6; } else if (p_src_len >= 6 && p_src[1] == 'a' && p_src[2] == 'p' && p_src[3] == 'o' && p_src[4] == 's' && p_src[5] == ';') { - if (p_dst) *p_dst = '\''; eat = 6; } else { - if (p_dst) *p_dst = *p_src; eat = 1; @@ -3624,7 +3357,6 @@ static _FORCE_INLINE_ int _xml_unescape(const CharType *p_src, int p_src_len, Ch p_src += eat; p_src_len -= eat; } else { - if (p_dst) { *p_dst = *p_src; p_dst++; @@ -3639,7 +3371,6 @@ static _FORCE_INLINE_ int _xml_unescape(const CharType *p_src, int p_src_len, Ch } String String::xml_unescape() const { - String str; int l = length(); int len = _xml_unescape(c_str(), l, nullptr); @@ -3652,7 +3383,6 @@ String String::xml_unescape() const { } String String::pad_decimals(int p_digits) const { - String s = *this; int c = s.find("."); @@ -3679,7 +3409,6 @@ String String::pad_decimals(int p_digits) const { } String String::pad_zeros(int p_digits) const { - String s = *this; int end = s.find("."); @@ -3700,7 +3429,6 @@ String String::pad_zeros(int p_digits) const { return s; while (end - begin < p_digits) { - s = s.insert(begin, "0"); end++; } @@ -3709,7 +3437,6 @@ String String::pad_zeros(int p_digits) const { } String String::trim_prefix(const String &p_prefix) const { - String s = *this; if (s.begins_with(p_prefix)) { return s.substr(p_prefix.length(), s.length() - p_prefix.length()); @@ -3718,7 +3445,6 @@ String String::trim_prefix(const String &p_prefix) const { } String String::trim_suffix(const String &p_suffix) const { - String s = *this; if (s.ends_with(p_suffix)) { return s.substr(0, s.length() - p_suffix.length()); @@ -3727,7 +3453,6 @@ String String::trim_suffix(const String &p_suffix) const { } bool String::is_valid_integer() const { - int len = length(); if (len == 0) @@ -3738,7 +3463,6 @@ bool String::is_valid_integer() const { from++; for (int i = from; i < len; i++) { - if (operator[](i) < '0' || operator[](i) > '9') return false; // no start with number plz } @@ -3747,7 +3471,6 @@ bool String::is_valid_integer() const { } bool String::is_valid_hex_number(bool p_with_prefix) const { - int len = length(); if (len == 0) @@ -3758,7 +3481,6 @@ bool String::is_valid_hex_number(bool p_with_prefix) const { from++; if (p_with_prefix) { - if (len < 3) return false; if (operator[](from) != '0' || operator[](from + 1) != 'x') { @@ -3768,7 +3490,6 @@ bool String::is_valid_hex_number(bool p_with_prefix) const { } for (int i = from; i < len; i++) { - CharType c = operator[](i); if ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F')) continue; @@ -3779,7 +3500,6 @@ bool String::is_valid_hex_number(bool p_with_prefix) const { }; bool String::is_valid_float() const { - int len = length(); if (len == 0) @@ -3797,9 +3517,7 @@ bool String::is_valid_float() const { bool numbers_found = false; for (int i = from; i < len; i++) { - if (operator[](i) >= '0' && operator[](i) <= '9') { - if (exponent_found) exponent_values_found = true; else @@ -3818,7 +3536,6 @@ bool String::is_valid_float() const { } String String::path_to_file(const String &p_path) const { - // Don't get base dir for src, this is expected to be a dir already. String src = this->replace("\\", "/"); String dst = p_path.replace("\\", "/").get_base_dir(); @@ -3830,7 +3547,6 @@ String String::path_to_file(const String &p_path) const { } String String::path_to(const String &p_path) const { - String src = this->replace("\\", "/"); String dst = p_path.replace("\\", "/"); if (!src.ends_with("/")) @@ -3841,19 +3557,16 @@ String String::path_to(const String &p_path) const { String base; if (src.begins_with("res://") && dst.begins_with("res://")) { - base = "res:/"; src = src.replace("res://", "/"); dst = dst.replace("res://", "/"); } else if (src.begins_with("user://") && dst.begins_with("user://")) { - base = "user:/"; src = src.replace("user://", "/"); dst = dst.replace("user://", "/"); } else if (src.begins_with("/") && dst.begins_with("/")) { - //nothing } else { //dos style @@ -3890,12 +3603,10 @@ String String::path_to(const String &p_path) const { String dir; for (int i = src_dirs.size() - 1; i > common_parent; i--) { - dir += "../"; } for (int i = common_parent + 1; i < dst_dirs.size(); i++) { - dir += dst_dirs[i] + "/"; } @@ -3905,12 +3616,10 @@ String String::path_to(const String &p_path) const { } bool String::is_valid_html_color() const { - return Color::html_is_valid(*this); } bool String::is_valid_filename() const { - String stripped = strip_edges(); if (*this != stripped) { return false; @@ -3924,12 +3633,9 @@ bool String::is_valid_filename() const { } bool String::is_valid_ip_address() const { - if (find(":") >= 0) { - Vector<String> ip = split(":"); for (int i = 0; i < ip.size(); i++) { - String n = ip[i]; if (n.empty()) continue; @@ -3948,7 +3654,6 @@ bool String::is_valid_ip_address() const { if (ip.size() != 4) return false; for (int i = 0; i < ip.size(); i++) { - String n = ip[i]; if (!n.is_valid_integer()) return false; @@ -3962,17 +3667,14 @@ bool String::is_valid_ip_address() const { } bool String::is_resource_file() const { - return begins_with("res://") && find("::") == -1; } bool String::is_rel_path() const { - return !is_abs_path(); } String String::get_base_dir() const { - int basepos = find("://"); String rs; String base; @@ -3985,7 +3687,6 @@ String String::get_base_dir() const { rs = substr(1, length()); base = "/"; } else { - rs = *this; } } @@ -3998,7 +3699,6 @@ String String::get_base_dir() const { } String String::get_file() const { - int sep = MAX(find_last("/"), find_last("\\")); if (sep == -1) return *this; @@ -4007,7 +3707,6 @@ String String::get_file() const { } String String::get_extension() const { - int pos = find_last("."); if (pos < 0 || pos < MAX(find_last("/"), find_last("\\"))) return ""; @@ -4024,13 +3723,11 @@ String String::plus_file(const String &p_file) const { } String String::percent_encode() const { - CharString cs = utf8(); String encoded; for (int i = 0; i < cs.length(); i++) { uint8_t c = cs[i]; if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9') || c == '-' || c == '_' || c == '~' || c == '.') { - char p[2] = { (char)c, 0 }; encoded += p; } else { @@ -4046,15 +3743,12 @@ String String::percent_encode() const { return encoded; } String String::percent_decode() const { - CharString pe; CharString cs = utf8(); for (int i = 0; i < cs.length(); i++) { - uint8_t c = cs[i]; if (c == '%' && i < length() - 2) { - uint8_t a = LOWERCASE(cs[i + 1]); uint8_t b = LOWERCASE(cs[i + 2]); @@ -4096,7 +3790,6 @@ String String::property_name_encode() const { } String String::get_basename() const { - int pos = find_last("."); if (pos < 0 || pos < MAX(find_last("/"), find_last("\\"))) return *this; @@ -4105,22 +3798,18 @@ String String::get_basename() const { } String itos(int64_t p_val) { - return String::num_int64(p_val); } String uitos(uint64_t p_val) { - return String::num_uint64(p_val); } String rtos(double p_val) { - return String::num(p_val); } String rtoss(double p_val) { - return String::num_scientific(p_val); } |