@@ -6,6 +6,14 @@ bool llm_isDigit(const std::string &str) { | |||||
str.find_first_not_of("0123456789") == std::string::npos; | str.find_first_not_of("0123456789") == std::string::npos; | ||||
} | } | ||||
bool llm_startsWith( | |||||
const std::string &str, | |||||
const std::string &prefix | |||||
) { | |||||
// https://stackoverflow.com/a/40441240 | |||||
return str.rfind(prefix, 0) == 0; | |||||
} | |||||
int llm_strToInt(const std::string &str) { | int llm_strToInt(const std::string &str) { | ||||
return std::stoi(str); | return std::stoi(str); | ||||
} | } |
@@ -4,6 +4,7 @@ | |||||
#include <string> | #include <string> | ||||
bool llm_isDigit(const std::string &str); | bool llm_isDigit(const std::string &str); | ||||
bool llm_startsWith(const std::string &str, const std::string &prefix); | |||||
int llm_strToInt(const std::string &str); | int llm_strToInt(const std::string &str); | ||||
#endif // llm_HEADER | #endif // llm_HEADER |
@@ -13,6 +13,10 @@ def llm_by_value(f): | |||||
def llm_isDigit(s): | def llm_isDigit(s): | ||||
return s.isdigit() | return s.isdigit() | ||||
# Tell if string starts with certain prefix. | |||||
def llm_startsWith(s, prefix): | |||||
return s.startswith(prefix) | |||||
# Convert string to integer | # Convert string to integer | ||||
def llm_strToInt(s): | def llm_strToInt(s): | ||||
return int(s) | return int(s) |
@@ -1,7 +1,9 @@ | |||||
#include <iostream> | #include <iostream> | ||||
#include <string> | #include <string> | ||||
#include <vector> | #include <vector> | ||||
#include "any.h" | |||||
#include "ctx_test2.h" | #include "ctx_test2.h" | ||||
#include "llm.h" | |||||
#include "main.h" | #include "main.h" | ||||
#include "memory_Context.h" | #include "memory_Context.h" | ||||
@@ -94,6 +96,18 @@ int main() { | |||||
memory_hideMatchingItems, | memory_hideMatchingItems, | ||||
memory_selectItem, | memory_selectItem, | ||||
}); | }); | ||||
auto printOutput = [](memory_Context c) { | |||||
if (llm_startsWith(c.recentField, "output")) { | |||||
std::cout | |||||
<< libany::any_cast<std::string>(c.field(c.recentField)) | |||||
<< std::endl; | |||||
} | |||||
}; | |||||
ctrl.registerCallback(printOutput); | |||||
ctrl.registerFieldCallback("exit", [](memory_Context c) { exit(0); }); | |||||
/* | /* | ||||
auto c = shell_createContext(); | auto c = shell_createContext(); | ||||