diff --git a/core/UserMessages.cpp b/core/UserMessages.cpp index ef9339e5..a4f7c301 100644 --- a/core/UserMessages.cpp +++ b/core/UserMessages.cpp @@ -1,5 +1,5 @@ /** - * vim: set ts=4 : + * vim: set ts=4 sw=4 tw=99 noet : * ============================================================================= * SourceMod * Copyright (C) 2004-2010 AlliedModders LLC. All rights reserved. @@ -56,7 +56,6 @@ UserMessages::UserMessages() #ifndef USE_PROTOBUF_USERMESSAGES : m_InterceptBuffer(m_pBase, 2500) { - m_Names = sm_trie_create(); #else : m_InterceptBuffer(NULL) { @@ -70,10 +69,6 @@ UserMessages::UserMessages() UserMessages::~UserMessages() { -#ifndef USE_PROTOBUF_USERMESSAGES - sm_trie_destroy(m_Names); -#endif - CStack::iterator iter; for (iter=m_FreeListeners.begin(); iter!=m_FreeListeners.end(); iter++) { @@ -121,9 +116,9 @@ int UserMessages::GetMessageIndex(const char *msg) // Can split this per engine and/or game later return g_Cstrike15UsermessageHelpers.GetIndex(msg); #else - int msgid; - if (!sm_trie_retrieve(m_Names, msg, reinterpret_cast(&msgid))) + int msgid; + if (!m_Names.retrieve(msg, &msgid)) { if (m_FallbackSearch) { @@ -135,7 +130,7 @@ int UserMessages::GetMessageIndex(const char *msg) { if (strcmp(msgbuf, msg) == 0) { - sm_trie_insert(m_Names, msg, reinterpret_cast(msgid)); + m_Names.insert(msg, msgid); return msgid; } msgid++; @@ -145,9 +140,7 @@ int UserMessages::GetMessageIndex(const char *msg) msgid = g_SMAPI->FindUserMessage(msg); if (msgid != INVALID_MESSAGE_ID) - { - sm_trie_insert(m_Names, msg, reinterpret_cast(msgid)); - } + m_Names.insert(msg, msgid); } return msgid; diff --git a/core/UserMessages.h b/core/UserMessages.h index b882bae3..c9f7fc24 100644 --- a/core/UserMessages.h +++ b/core/UserMessages.h @@ -1,5 +1,5 @@ /** - * vim: set ts=4 : + * vim: set ts=4 sw=4 tw=99 noet : * ============================================================================= * SourceMod * Copyright (C) 2004-2010 AlliedModders LLC. All rights reserved. @@ -34,7 +34,7 @@ #include #include "sourcemm_api.h" -#include "sm_trie.h" +#include #include "sm_stringutil.h" #include "CellRecipientFilter.h" #include "sm_globals.h" @@ -153,7 +153,7 @@ private: #ifndef USE_PROTOBUF_USERMESSAGES bool m_FallbackSearch; - Trie *m_Names; + StringHashMap m_Names; #endif CellRecipientFilter m_CellRecFilter; bool m_InExec; diff --git a/core/smn_console.cpp b/core/smn_console.cpp index c371efc0..61dc682a 100644 --- a/core/smn_console.cpp +++ b/core/smn_console.cpp @@ -40,7 +40,6 @@ #include "AdminCache.h" #include #include -#include #include #include "Logger.h" #include "ConsoleDetours.h" diff --git a/core/smn_core.cpp b/core/smn_core.cpp index 80a33b5f..1a569fbf 100644 --- a/core/smn_core.cpp +++ b/core/smn_core.cpp @@ -39,7 +39,6 @@ #include "TimerSys.h" #include "ForwardSys.h" #include "Logger.h" -#include #include #include "logic_bridge.h" diff --git a/public/sm_trie_tpl.h b/public/sm_trie_tpl.h index 2d6ed9b9..37f4ce4e 100644 --- a/public/sm_trie_tpl.h +++ b/public/sm_trie_tpl.h @@ -108,6 +108,22 @@ public: return &node->value; } + /** + * @brief Wrapper around retrieve(key) for a cleaner API. + * + * @param key Key to retrieve. + * @param result Pointer to store the result, must be non-NULL. + * @return True if found, false otherwise. + */ + bool retrieve(const char *key, K *result) + { + KTrieNode *node = internal_retrieve(key); + if (!node || !node->valset) + return false; + *result = node->value; + return true; + } + /** * @brief Inserts or updates the object stored at a key. *