diff options
author | 2014-11-08 05:23:05 +0900 | |
---|---|---|
committer | 2014-11-09 06:22:28 +0900 | |
commit | bd48963bdf20aa58b2f4d0cca762aba0f2917858 (patch) | |
tree | 8e2b0fc52981ebd6993d62588200ccdc0cda85f1 /native/dicttoolkit/src/utils | |
parent | 4bfa3b273ea9d23fa642b5b87b1113429f5f539b (diff) | |
download | latinime-bd48963bdf20aa58b2f4d0cca762aba0f2917858.tar.gz latinime-bd48963bdf20aa58b2f4d0cca762aba0f2917858.tar.xz latinime-bd48963bdf20aa58b2f4d0cca762aba0f2917858.zip |
Add CommandExecutor for dicttoolkit.
Bug: 10059681
Change-Id: I90334caaf37c84ce7d1b93d12efbfb5f244a9420
Diffstat (limited to '')
-rw-r--r-- | native/dicttoolkit/src/utils/command_utils.cpp | 51 | ||||
-rw-r--r-- | native/dicttoolkit/src/utils/command_utils.h | 16 |
2 files changed, 44 insertions, 23 deletions
diff --git a/native/dicttoolkit/src/utils/command_utils.cpp b/native/dicttoolkit/src/utils/command_utils.cpp index 14fd47781..34196425e 100644 --- a/native/dicttoolkit/src/utils/command_utils.cpp +++ b/native/dicttoolkit/src/utils/command_utils.cpp @@ -16,30 +16,59 @@ #include "utils/command_utils.h" +#include <cstdio> + +#include "command_executors/diff_executor.h" +#include "command_executors/header_executor.h" +#include "command_executors/help_executor.h" +#include "command_executors/info_executor.h" +#include "command_executors/makedict_executor.h" + namespace latinime { namespace dicttoolkit { -const char *const CommandUtils::COMMAND_NAME_INFO = "info"; -const char *const CommandUtils::COMMAND_NAME_DIFF = "diff"; -const char *const CommandUtils::COMMAND_NAME_MAKEDICT = "makedict"; -const char *const CommandUtils::COMMAND_NAME_HEADER = "header"; -const char *const CommandUtils::COMMAND_NAME_HELP = "help"; - /* static */ CommandType CommandUtils::getCommandType(const std::string &commandName) { - if (commandName == COMMAND_NAME_INFO) { + if (commandName == InfoExecutor::COMMAND_NAME) { return CommandType::Info; - } else if (commandName == COMMAND_NAME_DIFF) { + } else if (commandName == DiffExecutor::COMMAND_NAME) { return CommandType::Diff; - } else if (commandName == COMMAND_NAME_MAKEDICT) { + } else if (commandName == MakedictExecutor::COMMAND_NAME) { return CommandType::Makedict; - } else if (commandName == COMMAND_NAME_HEADER) { + } else if (commandName == HeaderExecutor::COMMAND_NAME) { return CommandType::Header; - } else if (commandName == COMMAND_NAME_HELP) { + } else if (commandName == HelpExecutor::COMMAND_NAME) { return CommandType::Help; } else { return CommandType::Unknown; } } +/* static */ void CommandUtils::printCommandUnknownMessage(const std::string &programName, + const std::string &commandName) { + fprintf(stderr, "Command '%s' is unknown. Try '%s %s' for more information.\n", + commandName.c_str(), programName.c_str(), HelpExecutor::COMMAND_NAME); +} + +/* static */ std::function<int(int, char **)> CommandUtils::getCommandExecutor( + const CommandType commandType) { + switch (commandType) { + case CommandType::Info: + return InfoExecutor::run; + case CommandType::Diff: + return DiffExecutor::run; + case CommandType::Makedict: + return MakedictExecutor::run; + case CommandType::Header: + return HeaderExecutor::run; + case CommandType::Help: + return HelpExecutor::run; + default: + return [] (int, char **) -> int { + printf("Command executor not found."); + return 1; + }; + } +} + } // namespace dicttoolkit } // namespace latinime diff --git a/native/dicttoolkit/src/utils/command_utils.h b/native/dicttoolkit/src/utils/command_utils.h index 7df0dd970..4a181f194 100644 --- a/native/dicttoolkit/src/utils/command_utils.h +++ b/native/dicttoolkit/src/utils/command_utils.h @@ -17,7 +17,8 @@ #ifndef LATINIME_DICT_TOOLKIT_COMMAND_UTILS_H #define LATINIME_DICT_TOOLKIT_COMMAND_UTILS_H -#include <cstdio> +#include <functional> +#include <memory> #include <string> #include "dict_toolkit_defines.h" @@ -37,21 +38,12 @@ enum class CommandType : int { class CommandUtils { public: static CommandType getCommandType(const std::string &commandName); - static void printCommandUnknownMessage(const std::string &programName, - const std::string &commandName) { - fprintf(stderr, "Command '%s' is unknown. Try '%s %s' for more information.\n", - commandName.c_str(), programName.c_str(), COMMAND_NAME_HELP); - } + const std::string &commandName); + static std::function<int(int, char **)> getCommandExecutor(const CommandType commandType); private: DISALLOW_IMPLICIT_CONSTRUCTORS(CommandUtils); - - static const char *const COMMAND_NAME_INFO; - static const char *const COMMAND_NAME_DIFF; - static const char *const COMMAND_NAME_MAKEDICT; - static const char *const COMMAND_NAME_HEADER; - static const char *const COMMAND_NAME_HELP; }; } // namespace dicttoolkit } // namespace latinime |