diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-08-31 03:14:48 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-08-31 03:14:48 +1000 |
commit | 182d3052c5da17701b6407164a6505b8aeafa867 (patch) | |
tree | cab0cfbb55e9ba4662c80ec591927cbaa5eff553 /source/core/StarDirectives.cpp | |
parent | 6f7f3800d3bf5dfca3bd05eb2636b4c3c5639100 (diff) |
operator== for Directives, skips reparse if equal
Diffstat (limited to 'source/core/StarDirectives.cpp')
-rw-r--r-- | source/core/StarDirectives.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/source/core/StarDirectives.cpp b/source/core/StarDirectives.cpp index 3381f1f..dfea7b0 100644 --- a/source/core/StarDirectives.cpp +++ b/source/core/StarDirectives.cpp @@ -62,6 +62,32 @@ Directives::Directives(const char* directives) { parse(directives); } +Directives& Directives::operator=(String const& directives) { + if (shared && shared->string == directives) + return *this; + + parse(String(directives)); + return *this; +} + +Directives& Directives::operator=(String&& directives) { + if (shared && shared->string == directives) { + directives.clear(); + return *this; + } + + parse(move(directives)); + return *this; +} + +Directives& Directives::operator=(const char* directives) { + if (shared && shared->string.utf8().compare(directives) == 0) + return *this; + + parse(directives); + return *this; +} + void Directives::loadOperations() const { if (!shared) return; |