#include #include #include extern "C" { #include "lex.h" #include "parser.h" #include "canvas_graph.h" } static void draw_graph_impl(struct error_buffer *eb, const char *expr, const struct graph_range *range) { struct parser parser; struct expr_node *node; error_buffer_init(eb); /* zpracování výrazu */ node = parser_parse(&parser, expr, "x"); if (!node) { /* vypsání chyby */ error_set(eb, parser_get_error(&parser)); error_printf(eb, "%s", parser_get_error_text(&parser)); return; } /* vygenerování grafu */ canvas_generate_graph(node, range, expr); /* uvolnění paměti */ node_free(node); return; } int main() { } using namespace emscripten; extern "C" void draw_graph(const char *expr, double xmin, double xmax, double ymin, double ymax) { const val document = val::global("document"); val p = document.call("getElementById", val("output")); struct error_buffer eb; struct graph_range range = {xmin, xmax, ymin, ymax}; draw_graph_impl(&eb, expr, &range); if (error_get(&eb) != ERR_NO_ERR) { p.set("innerText", error_get_text(&eb)); } else { p.set("innerText", ""); } }