diff options
author | Juan Linietsky <reduzio@gmail.com> | 2017-12-27 15:44:45 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-27 15:44:45 -0300 |
commit | a663dbfdd8465d45a03e4880c0d907334236b260 (patch) | |
tree | 3bd3c01a2697b8892e10fe28e8dac8f035d1e8e8 /core/ustring.cpp | |
parent | 988d29bdd8f1d6fc74280cceb76a8b4edb54138d (diff) | |
parent | b47ce5e5d6299533dd8ccafc85d2d2283dd27da6 (diff) | |
download | redot-engine-a663dbfdd8465d45a03e4880c0d907334236b260.tar.gz |
Merge pull request #14744 from poke1024/stringname-compare
Avoid string allocations in AlphCompare
Diffstat (limited to 'core/ustring.cpp')
-rw-r--r-- | core/ustring.cpp | 61 |
1 files changed, 3 insertions, 58 deletions
diff --git a/core/ustring.cpp b/core/ustring.cpp index ceafe209ea..261cc0778c 100644 --- a/core/ustring.cpp +++ b/core/ustring.cpp @@ -64,26 +64,7 @@ bool CharString::operator<(const CharString &p_right) const { return p_right.length() != 0; } - const char *this_str = get_data(); - const char *that_str = p_right.get_data(); - while (true) { - - if (*that_str == 0 && *this_str == 0) - return false; //this can't be equal, sadly - else if (*this_str == 0) - return true; //if this is empty, and the other one is not, then we're less.. I think? - else if (*that_str == 0) - return false; //otherwise the other one is smaller.. - else if (*this_str < *that_str) //more than - return true; - else if (*this_str > *that_str) //less than - return false; - - this_str++; - that_str++; - } - - return false; //should never reach here anyway + return is_str_less(get_data(), p_right.get_data()); } const char *CharString::get_data() const { @@ -372,25 +353,7 @@ bool String::operator<(const CharType *p_str) const { if (empty()) return true; - const CharType *this_str = c_str(); - while (true) { - - if (*p_str == 0 && *this_str == 0) - return false; //this can't be equal, sadly - else if (*this_str == 0) - return true; //if this is empty, and the other one is not, then we're less.. I think? - else if (*p_str == 0) - return false; //otherwise the other one is smaller.. - else if (*this_str < *p_str) //more than - return true; - else if (*this_str > *p_str) //less than - return false; - - this_str++; - p_str++; - } - - return false; //should never reach here anyway + return is_str_less(c_str(), p_str); } bool String::operator<=(const String &p_str) const { @@ -405,25 +368,7 @@ bool String::operator<(const char *p_str) const { if (empty()) return true; - const CharType *this_str = c_str(); - while (true) { - - if (*p_str == 0 && *this_str == 0) - return false; //this can't be equal, sadly - else if (*this_str == 0) - return true; //if this is empty, and the other one is not, then we're less.. I think? - else if (*p_str == 0) - return false; //otherwise the other one is smaller.. - else if (*this_str < *p_str) //more than - return true; - else if (*this_str > *p_str) //less than - return false; - - this_str++; - p_str++; - } - - return false; //should never reach here anyway + return is_str_less(c_str(), p_str); } bool String::operator<(const String &p_str) const { |