diff options
Diffstat (limited to 'bruiser')
-rw-r--r-- | bruiser/CompletionHints.cpp | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/bruiser/CompletionHints.cpp b/bruiser/CompletionHints.cpp new file mode 100644 index 0000000..ed0eb2e --- /dev/null +++ b/bruiser/CompletionHints.cpp @@ -0,0 +1,99 @@ + +/***************************************************Project Mutator****************************************************/ +//-*-c++-*- +/*first line intentionally left blank.*/ +/*the source code for bruiser's auto-completion and suggestions.*/ +/*Copyright (C) 2017 Farzad Sadeghi + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.*/ +/**********************************************************************************************************************/ +/*included modules*/ +#include "bruiser-extra.h" +/*project headers*/ +/*standard headers*/ +#include <iostream> +#include <string> +/*LLVM headers*/ +/*other*/ +#include "linenoise/linenoise.h" +/**********************************************************************************************************************/ +/*used namespaces*/ +/**********************************************************************************************************************/ +/*macros*/ + +/**********************************************************************************************************************/ +namespace bruiser +{ + void ShellCompletion(const char* __buf, linenoiseCompletions* __lc) + { + if (__buf != NULL) + { + for(auto &iter : LUA_FUNCS) + { + if (iter.find(__buf) == 0U) + { + linenoiseAddCompletion(__lc, iter.c_str()); + } + } + } + } + + char* ShellHints(const char* __buf, int* __color, int* __bold) + { + if (__buf != NULL) + { + auto dummy = std::string(__buf); + + for(auto &iter : LUA_FUNCS) + { + if (dummy == "") + { + break; + } + + if (iter.find(dummy) == 0U) + { + *__color = 35; + *__bold = 0; + int sizet = dummy.length(); + + std::string dummy2 = iter.substr(sizet, iter.length() - sizet + 1); + + /*LEAKS MEMORY*/ + char* returnchar = new char[dummy2.size() + 1]; + std::copy(dummy2.begin(), dummy2.end(), returnchar); + returnchar[dummy2.size()] = '\0'; + +#if 0 + std::vector<char> retchar(dummy2.begin(), dummy2.end()); + retchar.push_back('\0'); + //std::cout << "\n" << retchar.data() << "\n"; + char* c = (char*)retchar.data(); + //std::cout << "\n" << c << "\n"; +#endif + + return returnchar; + //return c; + //return &*retchar.data(); + } + } + } + + return NULL; + } +} //end of namespace bruiser +/**********************************************************************************************************************/ +/*last line intentionally left blank*/ + |