mirror of
https://github.com/ChaiScript/ChaiScript.git
synced 2025-12-06 08:46:53 +08:00
I initially tried to use the existing .clang-format file, but it does not match the code style (at least with clang-format 11) and the formatting is not consistent across files. Therefore, I decided to rewrite the .clang-format with some personal preferences. Used command find . -iname "*.hpp" -o -iname "*.cpp" | xargs clang-format -i -style=file
71 lines
1.6 KiB
C++
71 lines
1.6 KiB
C++
#include <iostream>
|
|
|
|
#include <chaiscript/chaiscript.hpp>
|
|
|
|
#ifdef READLINE_AVAILABLE
|
|
#include <readline/history.h>
|
|
#include <readline/readline.h>
|
|
#endif
|
|
|
|
std::string get_next_command() {
|
|
#ifdef READLINE_AVAILABLE
|
|
char *input_raw;
|
|
input_raw = readline("eval> ");
|
|
add_history(input_raw);
|
|
return std::string(input_raw);
|
|
#else
|
|
std::string retval;
|
|
std::cout << "eval> ";
|
|
std::getline(std::cin, retval);
|
|
return retval;
|
|
#endif
|
|
}
|
|
|
|
void function(void) {
|
|
// do nothing
|
|
}
|
|
|
|
class test {
|
|
chaiscript::ChaiScript chai;
|
|
chaiscript::ChaiScript::State backupState = chai.get_state();
|
|
|
|
public:
|
|
void ResetState() {
|
|
chai.set_state(backupState);
|
|
chai.add(chaiscript::fun(&function), "Whatever()");
|
|
}
|
|
|
|
void RunFile(std::string sFile) {
|
|
try {
|
|
chaiscript::Boxed_Value val = chai.eval_file(sFile);
|
|
} catch (std::exception &e) {
|
|
std::cout << e.what() << '\n';
|
|
}
|
|
}
|
|
};
|
|
|
|
int main(int /*argc*/, char * /*argv*/[]) {
|
|
test myChai;
|
|
|
|
std::string command = "";
|
|
|
|
//
|
|
// this loop increases memory usage, if RunFile is not called (just hitting enter)
|
|
// as soon RunFile gets called, memory will be freed.
|
|
//
|
|
// scenario1 - RunFile gets called every Loop: memory usage does not change
|
|
// scenario2 - RunFile gets never called (just hitting enter): memory usage increases every loop
|
|
// scenario3 - RunFile gets in changing intervals: memory usage goes up and down, but never as
|
|
// low as in case 1 scenario3 :
|
|
|
|
while (command != "quit") {
|
|
for (int i = 1; i < 200; i++)
|
|
myChai.ResetState();
|
|
|
|
if (command == "runfile")
|
|
myChai.RunFile("Test.chai");
|
|
|
|
command = get_next_command();
|
|
}
|
|
}
|