diff --git a/IDEHelper/Compiler/BfAutoComplete.cpp b/IDEHelper/Compiler/BfAutoComplete.cpp index 105ed529..ce092574 100644 --- a/IDEHelper/Compiler/BfAutoComplete.cpp +++ b/IDEHelper/Compiler/BfAutoComplete.cpp @@ -29,7 +29,7 @@ AutoCompleteBase::~AutoCompleteBase() Clear(); } -inline void UpdateEntryMatchindices(uint8* matches, AutoCompleteEntry& entry) +inline void UpdateEntryMatchIndices(uint8* matches, const AutoCompleteEntry& entry) { if (matches[0] != UINT8_MAX) { @@ -55,14 +55,14 @@ inline void UpdateEntryMatchindices(uint8* matches, AutoCompleteEntry& entry) } } -AutoCompleteEntry* AutoCompleteBase::AddEntry(AutoCompleteEntry& entry, const StringImpl& filter) +AutoCompleteEntry* AutoCompleteBase::AddEntry(const AutoCompleteEntry& entry, const StringImpl& filter) { uint8 matches[256]; if (!DoesFilterMatch(entry.mDisplay, filter.c_str(), entry.mScore, matches, 256) || (entry.mNamePrefixCount < 0)) return NULL; - UpdateEntryMatchindices(matches, entry); + UpdateEntryMatchIndices(matches, entry); auto result = AddEntry(entry); @@ -73,14 +73,14 @@ AutoCompleteEntry* AutoCompleteBase::AddEntry(AutoCompleteEntry& entry, const St return result; } -AutoCompleteEntry* AutoCompleteBase::AddEntry(AutoCompleteEntry& entry, const char* filter) +AutoCompleteEntry* AutoCompleteBase::AddEntry(const AutoCompleteEntry& entry, const char* filter) { uint8 matches[256]; if (!DoesFilterMatch(entry.mDisplay, filter, entry.mScore, matches, 256) || (entry.mNamePrefixCount < 0)) return NULL; - UpdateEntryMatchindices(matches, entry); + UpdateEntryMatchIndices(matches, entry); auto result = AddEntry(entry); diff --git a/IDEHelper/Compiler/BfAutoComplete.h b/IDEHelper/Compiler/BfAutoComplete.h index 6e610512..5f1b7c7d 100644 --- a/IDEHelper/Compiler/BfAutoComplete.h +++ b/IDEHelper/Compiler/BfAutoComplete.h @@ -15,10 +15,10 @@ public: const char* mEntryType; const char* mDisplay; const char* mDocumentation; - int8 mNamePrefixCount; - int mScore; - uint8* mMatches; - uint8 mMatchesLength; + mutable int8 mNamePrefixCount; + mutable int mScore; + mutable uint8* mMatches; + mutable uint8 mMatchesLength; public: AutoCompleteEntry() @@ -62,7 +62,7 @@ public: } bool operator==(const AutoCompleteEntry& other) const - { + { return strcmp(mDisplay, other.mDisplay) == 0; } }; @@ -75,16 +75,16 @@ struct BeefHash size_t operator()(const Beefy::AutoCompleteEntry& val) { intptr hash = 0; - const char* curPtr = val.mDisplay; + const char* curPtr = val.mDisplay; while (true) { char c = *(curPtr++); if (c == 0) break; - hash = (hash ^ (intptr)c) - hash; + hash = ((hash ^ (intptr)c) << 5) - hash; } - return (size_t)hash; + return hash; } }; @@ -116,8 +116,8 @@ public: int mInsertEndIdx; bool DoesFilterMatch(const char* entry, const char* filter, int& score, uint8* matches, int maxMatches); - AutoCompleteEntry* AddEntry(AutoCompleteEntry& entry, const StringImpl& filter); - AutoCompleteEntry* AddEntry(AutoCompleteEntry& entry, const char* filter); + AutoCompleteEntry* AddEntry(const AutoCompleteEntry& entry, const StringImpl& filter); + AutoCompleteEntry* AddEntry(const AutoCompleteEntry& entry, const char* filter); AutoCompleteEntry* AddEntry(const AutoCompleteEntry& entry); AutoCompleteBase();