]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Add CommandParser::GetCommands() and typedef CommandMap and use it instead of directl...
authorAttila Molnar <attilamolnar@hush.com>
Fri, 13 Jun 2014 13:40:03 +0000 (15:40 +0200)
committerAttila Molnar <attilamolnar@hush.com>
Fri, 13 Jun 2014 13:40:03 +0000 (15:40 +0200)
include/command_parse.h
src/configreader.cpp
src/coremods/core_info/cmd_commands.cpp
src/coremods/core_stats.cpp
src/modules/m_abbreviation.cpp

index 70544b0c8e17d1752d6f67814e5b0c2bbab10e9d..bdbc12757ecfea56c1f9d3147879058b954538e6 100644 (file)
@@ -29,6 +29,9 @@
  */
 class CoreExport CommandParser
 {
+ public:
+       typedef Commandtable CommandMap;
+
  private:
        /** Process a command from a user.
         * @param user The user to parse the command for
@@ -45,6 +48,11 @@ class CoreExport CommandParser
         */
        CommandParser();
 
+       /** Get a command name -> Command* map containing all client to server commands
+        * @return A map of command handlers keyed by command names
+        */
+       const CommandMap& GetCommands() const { return cmdlist; }
+
        /** Calls the handler for a given command.
         * @param commandname The command to find. This should be in uppercase.
         * @param parameters Parameter list
index 1ac075557d1ec4703d5ccba64407a1addf1a6baf..945600e6c06f14eb4eb7f1b1aa1b13d4030a89cc 100644 (file)
@@ -69,7 +69,8 @@ bool ServerConfig::ApplyDisabledCommands(const std::string& data)
        std::string thiscmd;
 
        /* Enable everything first */
-       for (Commandtable::iterator x = ServerInstance->Parser->cmdlist.begin(); x != ServerInstance->Parser->cmdlist.end(); x++)
+       const CommandParser::CommandMap& commands = ServerInstance->Parser->GetCommands();
+       for (CommandParser::CommandMap::const_iterator x = commands.begin(); x != commands.end(); ++x)
                x->second->Disable(false);
 
        /* Now disable all the ones which the user wants disabled */
index 9ae258a9cb67af76def83fc5cbe136aa18e79231..8b255a928a1382392732b1fa2513aef051b7efb5 100644 (file)
@@ -31,9 +31,10 @@ CommandCommands::CommandCommands(Module* parent)
  */
 CmdResult CommandCommands::Handle (const std::vector<std::string>&, User *user)
 {
+       const CommandParser::CommandMap& commands = ServerInstance->Parser->GetCommands();
        std::vector<std::string> list;
-       list.reserve(ServerInstance->Parser->cmdlist.size());
-       for (Commandtable::iterator i = ServerInstance->Parser->cmdlist.begin(); i != ServerInstance->Parser->cmdlist.end(); i++)
+       list.reserve(commands.size());
+       for (CommandParser::CommandMap::const_iterator i = commands.begin(); i != commands.end(); ++i)
        {
                // Don't show S2S commands to users
                if (i->second->flags_needed == FLAG_SERVERONLY)
index b8ea21731a85d3149e49ba4a3f844cc479e2c23e..1e90ed2bfb00c87725e995cc442e12b92084272f 100644 (file)
@@ -189,7 +189,9 @@ void CommandStats::DoStats(char statschar, User* user, string_list &results)
 
                /* stats m (list number of times each command has been used, plus bytecount) */
                case 'm':
-                       for (Commandtable::iterator i = ServerInstance->Parser->cmdlist.begin(); i != ServerInstance->Parser->cmdlist.end(); i++)
+               {
+                       const CommandParser::CommandMap& commands = ServerInstance->Parser->GetCommands();
+                       for (CommandParser::CommandMap::const_iterator i = commands.begin(); i != commands.end(); ++i)
                        {
                                if (i->second->use_count)
                                {
@@ -197,6 +199,7 @@ void CommandStats::DoStats(char statschar, User* user, string_list &results)
                                        results.push_back("212 "+user->nick+" "+i->second->name+" "+ConvToStr(i->second->use_count));
                                }
                        }
+               }
                break;
 
                /* stats z (debug and memory info) */
@@ -204,7 +207,7 @@ void CommandStats::DoStats(char statschar, User* user, string_list &results)
                {
                        results.push_back("249 "+user->nick+" :Users: "+ConvToStr(ServerInstance->Users->GetUsers().size()));
                        results.push_back("249 "+user->nick+" :Channels: "+ConvToStr(ServerInstance->GetChans().size()));
-                       results.push_back("249 "+user->nick+" :Commands: "+ConvToStr(ServerInstance->Parser->cmdlist.size()));
+                       results.push_back("249 "+user->nick+" :Commands: "+ConvToStr(ServerInstance->Parser->GetCommands().size()));
 
                        float kbitpersec_in, kbitpersec_out, kbitpersec_total;
                        char kbitpersec_in_s[30], kbitpersec_out_s[30], kbitpersec_total_s[30];
index f69d26749727a7700fb4c5a08c00fbdb676d877b..a7bf8ceeebd8532e3b60b3ad81f72ecba1b41ac9 100644 (file)
@@ -42,7 +42,8 @@ class ModuleAbbreviation : public Module
                size_t clen = command.length() - 1;
                std::string foundcommand, matchlist;
                bool foundmatch = false;
-               for (Commandtable::iterator n = ServerInstance->Parser->cmdlist.begin(); n != ServerInstance->Parser->cmdlist.end(); ++n)
+               const CommandParser::CommandMap& commands = ServerInstance->Parser->GetCommands();
+               for (CommandParser::CommandMap::const_iterator n = commands.begin(); n != commands.end(); ++n)
                {
                        if (!command.compare(0, clen, n->first, 0, clen))
                        {