Switch sm_srvcmds off KTrie (bug 5884 part 12, r=ds).
This commit is contained in:
		
							parent
							
								
									3985dd639a
								
							
						
					
					
						commit
						80eba57e6b
					
				| @ -1,5 +1,5 @@ | |||||||
| /**
 | /**
 | ||||||
|  * vim: set ts=4 sw=4 : |  * vim: set ts=4 sw=4 tw=99 noet : | ||||||
|  * ============================================================================= |  * ============================================================================= | ||||||
|  * SourceMod |  * SourceMod | ||||||
|  * Copyright (C) 2004-2009 AlliedModders LLC.  All rights reserved. |  * Copyright (C) 2004-2009 AlliedModders LLC.  All rights reserved. | ||||||
| @ -42,14 +42,11 @@ ConVar sourcemod_version("sourcemod_version", SM_VERSION_STRING, FCVAR_SPONLY|FC | |||||||
| 
 | 
 | ||||||
| RootConsoleMenu::RootConsoleMenu() | RootConsoleMenu::RootConsoleMenu() | ||||||
| { | { | ||||||
| 	m_pCommands = sm_trie_create(); |  | ||||||
| 	m_CfgExecDone = false; | 	m_CfgExecDone = false; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| RootConsoleMenu::~RootConsoleMenu() | RootConsoleMenu::~RootConsoleMenu() | ||||||
| { | { | ||||||
| 	sm_trie_destroy(m_pCommands); |  | ||||||
| 
 |  | ||||||
| 	List<ConsoleEntry *>::iterator iter; | 	List<ConsoleEntry *>::iterator iter; | ||||||
| 	for (iter=m_Menu.begin(); iter!=m_Menu.end(); iter++) | 	for (iter=m_Menu.begin(); iter!=m_Menu.end(); iter++) | ||||||
| 	{ | 	{ | ||||||
| @ -129,10 +126,8 @@ bool RootConsoleMenu::_AddRootConsoleCommand(const char *cmd, | |||||||
| 											 IRootConsoleCommand *pHandler, | 											 IRootConsoleCommand *pHandler, | ||||||
| 											 bool version2) | 											 bool version2) | ||||||
| { | { | ||||||
| 	if (sm_trie_retrieve(m_pCommands, cmd, NULL)) | 	if (m_Commands.contains(cmd)) | ||||||
| 	{ |  | ||||||
| 		return false; | 		return false; | ||||||
| 	} |  | ||||||
| 
 | 
 | ||||||
| 	/* Sort this into the menu */ | 	/* Sort this into the menu */ | ||||||
| 	List<ConsoleEntry *>::iterator iter = m_Menu.begin(); | 	List<ConsoleEntry *>::iterator iter = m_Menu.begin(); | ||||||
| @ -148,7 +143,7 @@ bool RootConsoleMenu::_AddRootConsoleCommand(const char *cmd, | |||||||
| 			pNew->description.assign(text); | 			pNew->description.assign(text); | ||||||
| 			pNew->version2 = version2; | 			pNew->version2 = version2; | ||||||
| 			pNew->cmd = pHandler; | 			pNew->cmd = pHandler; | ||||||
| 			sm_trie_insert(m_pCommands, cmd, pNew); | 			m_Commands.insert(cmd, pNew); | ||||||
| 			m_Menu.insert(iter, pNew); | 			m_Menu.insert(iter, pNew); | ||||||
| 			inserted = true; | 			inserted = true; | ||||||
| 			break; | 			break; | ||||||
| @ -163,7 +158,7 @@ bool RootConsoleMenu::_AddRootConsoleCommand(const char *cmd, | |||||||
| 		pNew->description.assign(text); | 		pNew->description.assign(text); | ||||||
| 		pNew->version2 = version2; | 		pNew->version2 = version2; | ||||||
| 		pNew->cmd = pHandler; | 		pNew->cmd = pHandler; | ||||||
| 		sm_trie_insert(m_pCommands, cmd, pNew); | 		m_Commands.insert(cmd, pNew); | ||||||
| 		m_Menu.push_back(pNew); | 		m_Menu.push_back(pNew); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| @ -172,7 +167,7 @@ bool RootConsoleMenu::_AddRootConsoleCommand(const char *cmd, | |||||||
| 
 | 
 | ||||||
| bool RootConsoleMenu::RemoveRootConsoleCommand(const char *cmd, IRootConsoleCommand *pHandler) | bool RootConsoleMenu::RemoveRootConsoleCommand(const char *cmd, IRootConsoleCommand *pHandler) | ||||||
| { | { | ||||||
| 	sm_trie_delete(m_pCommands, cmd); | 	m_Commands.remove(cmd); | ||||||
| 
 | 
 | ||||||
| 	List<ConsoleEntry *>::iterator iter; | 	List<ConsoleEntry *>::iterator iter; | ||||||
| 	ConsoleEntry *pEntry; | 	ConsoleEntry *pEntry; | ||||||
| @ -291,7 +286,7 @@ void RootConsoleMenu::GotRootCmd(const CCommand &cmd) | |||||||
| 		CCommandArgs ocmd(cmd); | 		CCommandArgs ocmd(cmd); | ||||||
| 
 | 
 | ||||||
| 		ConsoleEntry *entry; | 		ConsoleEntry *entry; | ||||||
| 		if (sm_trie_retrieve(m_pCommands, cmdname, (void **)&entry)) | 		if (m_Commands.retrieve(cmdname, &entry)) | ||||||
| 		{ | 		{ | ||||||
| 			if (entry->version2) | 			if (entry->version2) | ||||||
| 			{ | 			{ | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| /**
 | /**
 | ||||||
|  * vim: set ts=4 sw=4 : |  * vim: set ts=4 sw=4 tw=99 noet : | ||||||
|  * ============================================================================= |  * ============================================================================= | ||||||
|  * SourceMod |  * SourceMod | ||||||
|  * Copyright (C) 2004-2009 AlliedModders LLC.  All rights reserved. |  * Copyright (C) 2004-2009 AlliedModders LLC.  All rights reserved. | ||||||
| @ -38,7 +38,7 @@ | |||||||
| #include <sh_list.h> | #include <sh_list.h> | ||||||
| #include <sh_string.h> | #include <sh_string.h> | ||||||
| #include <compat_wrappers.h> | #include <compat_wrappers.h> | ||||||
| #include "sm_trie.h" | #include <sm_namehashset.h> | ||||||
| 
 | 
 | ||||||
| using namespace SourceMod; | using namespace SourceMod; | ||||||
| using namespace SourceHook; | using namespace SourceHook; | ||||||
| @ -49,6 +49,11 @@ struct ConsoleEntry | |||||||
| 	String description; | 	String description; | ||||||
| 	bool   version2; | 	bool   version2; | ||||||
| 	IRootConsoleCommand *cmd; | 	IRootConsoleCommand *cmd; | ||||||
|  | 
 | ||||||
|  | 	static inline bool matches(const char *name, const ConsoleEntry *entry) | ||||||
|  | 	{ | ||||||
|  | 		return strcmp(name, entry->command.c_str()) == 0; | ||||||
|  | 	} | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| class RootConsoleMenu :  | class RootConsoleMenu :  | ||||||
| @ -87,7 +92,7 @@ public: | |||||||
| 	void GotRootCmd(const CCommand &cmd); | 	void GotRootCmd(const CCommand &cmd); | ||||||
| private: | private: | ||||||
| 	bool m_CfgExecDone; | 	bool m_CfgExecDone; | ||||||
| 	Trie *m_pCommands; | 	NameHashSet<ConsoleEntry *> m_Commands; | ||||||
| 	List<ConsoleEntry *> m_Menu; | 	List<ConsoleEntry *> m_Menu; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user