diff options
-rw-r--r-- | include/ctables.h | 15 | ||||
-rw-r--r-- | src/command_parse.cpp | 15 |
2 files changed, 24 insertions, 6 deletions
diff --git a/include/ctables.h b/include/ctables.h index e5cdddefb..14b12610f 100644 --- a/include/ctables.h +++ b/include/ctables.h @@ -18,7 +18,18 @@ #define __CTABLES_H__ #include "inspircd_config.h" -#include <map> + +#ifdef GCC3 +#include <ext/hash_map> +#else +#include <hash_map> +#endif + +#ifdef GCC3 +#define nspace __gnu_cxx +#else +#define nspace std +#endif class userrec; @@ -59,7 +70,7 @@ class command_t virtual ~command_t() {} }; -typedef std::map<std::string,command_t*> command_table; +typedef nspace::hash_map<std::string,command_t*> command_table; #endif diff --git a/src/command_parse.cpp b/src/command_parse.cpp index 5e89c2841..02db6258f 100644 --- a/src/command_parse.cpp +++ b/src/command_parse.cpp @@ -60,6 +60,13 @@ using namespace std; #include "command_parse.h" #include "ctables.h" +#ifdef GCC3 +#define nspace __gnu_cxx +#else +#define nspace std +#endif + + extern InspIRCd* ServerInstance; extern std::vector<Module*> modules; @@ -248,7 +255,7 @@ int CommandParser::LoopCall(command_t* fn, char **parameters, int pcnt, userrec bool CommandParser::IsValidCommand(std::string &commandname, int pcnt, userrec * user) { - std::map<std::string,command_t*>::iterator n = cmdlist.find(commandname); + nspace::hash_map<std::string,command_t*>::iterator n = cmdlist.find(commandname); if (n != cmdlist.end()) { if ((pcnt>=n->second->min_params) && (n->second->source != "<core>")) @@ -277,7 +284,7 @@ bool CommandParser::IsValidCommand(std::string &commandname, int pcnt, userrec * void CommandParser::CallHandler(std::string &commandname,char **parameters, int pcnt, userrec *user) { - std::map<std::string,command_t*>::iterator n = cmdlist.find(commandname); + nspace::hash_map<std::string,command_t*>::iterator n = cmdlist.find(commandname); if (n != cmdlist.end()) { if (pcnt >= n->second->min_params) @@ -527,7 +534,7 @@ void CommandParser::ProcessCommand(userrec *user, char* cmd) return; } - std::map<std::string,command_t*>::iterator cm = cmdlist.find(xcommand); + nspace::hash_map<std::string,command_t*>::iterator cm = cmdlist.find(xcommand); if (cm != cmdlist.end()) { @@ -624,7 +631,7 @@ bool CommandParser::RemoveCommands(const char* source) while (go_again) { go_again = false; - for (std::map<std::string,command_t*>::iterator i = cmdlist.begin(); i != cmdlist.end(); i++) + for (nspace::hash_map<std::string,command_t*>::iterator i = cmdlist.begin(); i != cmdlist.end(); i++) { command_t* x = i->second; if (x->source == std::string(source)) |