From af2cc52dd5e566a8fdbcbc90d2509de6c5ab1a0e Mon Sep 17 00:00:00 2001 From: Milot Mirdita Date: Sun, 19 Nov 2023 22:54:02 +0900 Subject: [PATCH] Fix previous refactoring of module inheritance refactoring --- src/commons/Application.cpp | 70 +++++++++++++++++++++++-------------- 1 file changed, 44 insertions(+), 26 deletions(-) diff --git a/src/commons/Application.cpp b/src/commons/Application.cpp index aa29c9c54..bfa921bf8 100644 --- a/src/commons/Application.cpp +++ b/src/commons/Application.cpp @@ -27,7 +27,7 @@ const Command* getCommandByName(const char *s) { const char *prefix = "base:"; const char *check = strncmp(s, prefix, strlen(prefix)) == 0 ? s + strlen(prefix) : s; - for (size_t i = 0; i < commands.size(); i++) { + for (size_t i = commands.size() - 1; true; i--) { for (size_t j = 0; j < commands[i]->size(); j++) { const Command &p = (*commands[i])[j]; if (!strcmp(s, p.cmd)) @@ -35,6 +35,9 @@ const Command* getCommandByName(const char *s) { if (i == 0 && !strcmp(check, p.cmd)) return &p; } + if (i == 0) { + break; + } } return NULL; } @@ -60,7 +63,7 @@ void printUsage(bool showExtended) { if (hide_base_commands) { start = commands.size() - 1; } - for (size_t j = start; j < commands.size(); j++) { + for (size_t j = commands.size() - 1; j >= start; j--) { for (size_t k = 0; k < commands[j]->size(); k++) { const Command &p = (*commands[j])[k]; if (p.mode & categories[i].mode) { @@ -68,6 +71,9 @@ void printUsage(bool showExtended) { break; } } + if (j == 0) { + break; + } } } @@ -87,12 +93,12 @@ void printUsage(bool showExtended) { } usage << "\n" << std::setw(20) << categories[i].title << "\n"; - for (size_t j = 0; j < commands.size(); j++) { - size_t start = 0; - if (hide_base_commands) { - start = commands.size() - 1; - } - for (size_t k = start; k < commands[j]->size(); k++) { + size_t start = 0; + if (hide_base_commands) { + start = commands.size() - 1; + } + for (size_t j = commands.size() - 1; j >= start; j--) { + for (size_t k = 0; k < commands[j]->size(); k++) { const Command &p = (*commands[j])[k]; if (showExtended == false && (p.mode & COMMAND_EXPERT) != 0) { continue; @@ -101,6 +107,9 @@ void printUsage(bool showExtended) { usage << std::left << std::setw(20) << " " + std::string(p.cmd) << "\t" << p.description << "\n"; } } + if (j == 0) { + break; + } } } @@ -118,29 +127,32 @@ void printUsage(bool showExtended) { int shellcompletion(int argc, const char **argv) { // mmseqs programs if (argc == 0) { - for (size_t i = 0; i < commands.size(); i++) { - size_t start = 0; - if (hide_base_commands) { - start = commands.size() - 1; - } - for (size_t j = start; j < commands[i]->size(); j++) { + size_t start = 0; + if (hide_base_commands) { + start = commands.size() - 1; + } + for (size_t i = commands.size() - 1; i >= start; i--) { + for (size_t j = 0; j < commands[i]->size(); j++) { const Command &p = (*commands[i])[j]; if (p.mode & COMMAND_HIDDEN) continue; Debug(Debug::INFO) << p.cmd << " "; } + if (i == 0) { + break; + } } Debug(Debug::INFO) << "\n"; } // mmseqs parameters for given program if (argc == 1) { - for (size_t i = 0; i < commands.size(); i++) { - size_t start = 0; - if (hide_base_commands) { - start = commands.size() - 1; - } - for (size_t j = start; j < commands[i]->size(); j++) { + size_t start = 0; + if (hide_base_commands) { + start = commands.size() - 1; + } + for (size_t i = commands.size() - 1; i >= start; i--) { + for (size_t j = 0; j < commands[i]->size(); j++) { const Command &p = (*commands[i])[j]; if (strcmp(p.cmd, argv[0]) != 0) { continue; @@ -154,6 +166,9 @@ int shellcompletion(int argc, const char **argv) { Debug(Debug::INFO) << "\n"; break; } + if (i == 0) { + break; + } } Debug(Debug::INFO) << "\n"; } @@ -194,12 +209,12 @@ int main(int argc, const char **argv) { size_t indexI = SIZE_MAX; size_t indexJ = SIZE_MAX; int maxDistance = 0; - for (size_t i = 0; i < commands.size(); i++) { - size_t start = 0; - if (hide_base_commands) { - start = commands.size() - 1; - } - for (size_t j = start; j < commands[i]->size(); j++) { + size_t start = 0; + if (hide_base_commands) { + start = commands.size() - 1; + } + for (size_t i = commands.size() - 1; i >= start; i--) { + for (size_t j = 0; j < commands[i]->size(); j++) { const Command &p = (*commands[i])[j]; if (p.mode & COMMAND_HIDDEN) { continue; @@ -212,6 +227,9 @@ int main(int argc, const char **argv) { indexJ = j; } } + if (i == 0) { + break; + } } if (indexI != SIZE_MAX && indexJ != SIZE_MAX) {