From 1f8eae408c17d81d1c351ec893127d0314779427 Mon Sep 17 00:00:00 2001 From: "Jay Freeman (saurik)" Date: Fri, 2 Oct 2009 23:49:15 +0000 Subject: [PATCH] Added console commands. --- Application.mm | 68 ++++++++++++++++++++++++++++++++------------------ 1 file changed, 44 insertions(+), 24 deletions(-) diff --git a/Application.mm b/Application.mm index d5478a3..7b58023 100644 --- a/Application.mm +++ b/Application.mm @@ -20,6 +20,9 @@ void sigint(int) { } int main(int argc, const char *argv[]) { + bool bypass(false); + bool debug(false); + FILE *fout(stdout); rl_bind_key('\t', rl_insert); @@ -51,6 +54,16 @@ int main(int argc, const char *argv[]) { if (!extra) { extra = true; if (line[0] == '\\') { + std::string data(line + 1); + if (data == "bypass") { + bypass = !bypass; + fprintf(fout, "bypass == %s\n", bypass ? "true" : "false"); + fflush(fout); + } else if (data == "debug") { + debug = !debug; + fprintf(fout, "debug == %s\n", debug ? "true" : "false"); + fflush(fout); + } add_history(line); goto restart; } @@ -60,39 +73,46 @@ int main(int argc, const char *argv[]) { command += line; free(line); - CYDriver driver(""); - cy::parser parser(driver); + std::string code; + + if (bypass) + code = command; + else { + CYDriver driver(""); + cy::parser parser(driver); + + driver.data_ = command.c_str(); + driver.size_ = command.size(); + + if (parser.parse() != 0 || !driver.errors_.empty()) { + for (CYDriver::Errors::const_iterator i(driver.errors_.begin()); i != driver.errors_.end(); ++i) { + cy::position begin(i->location_.begin); + if (begin.line != lines.size() || begin.column - 1 != lines.back().size()) { + std::cerr << i->message_ << std::endl; + add_history(command.c_str()); + goto restart; + } + } - driver.data_ = command.c_str(); - driver.size_ = command.size(); + driver.errors_.clear(); - if (parser.parse() != 0 || !driver.errors_.empty()) { - for (CYDriver::Errors::const_iterator i(driver.errors_.begin()); i != driver.errors_.end(); ++i) { - cy::position begin(i->location_.begin); - if (begin.line != lines.size() || begin.column - 1 != lines.back().size()) { - std::cerr << i->message_ << std::endl; - add_history(command.c_str()); - goto restart; - } + command += '\n'; + prompt = "cy> "; + goto read; } - driver.errors_.clear(); + if (driver.source_ == NULL) + goto restart; - command += '\n'; - prompt = "cy> "; - goto read; + std::ostringstream str; + driver.source_->Show(str); + code = str.str(); } - if (driver.source_ == NULL) - goto restart; - add_history(command.c_str()); - std::ostringstream str; - driver.source_->Show(str); - - std::string code(str.str()); - std::cout << code << std::endl; + if (debug) + std::cout << code << std::endl; _pooled -- 2.47.2