Mercurial > jwe > qt-gui-with-push-parser
comparison interpreter.cpp @ 6:1b575145197e
interpreter is now a class instead of a namespace with functions
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 23 May 2019 07:41:18 -0400 |
parents | 0e154787183d |
children | 04867eba6428 |
comparison
equal
deleted
inserted
replaced
5:54edd85237ab | 6:1b575145197e |
---|---|
1 #include <iostream> | |
1 #include <string> | 2 #include <string> |
2 | 3 |
3 #include <unistd.h> | 4 #include <unistd.h> |
4 | 5 |
5 #include "interpreter.h" | 6 #include "interpreter.h" |
7 | 8 |
8 #include "main.h" | 9 #include "main.h" |
9 #include "gui-main.h" | 10 #include "gui-main.h" |
10 #include "tty-main.h" | 11 #include "tty-main.h" |
11 | 12 |
12 namespace interpreter | 13 namespace calc |
13 { | 14 { |
14 void init (void) | 15 interpreter *interpreter::the_interpreter = nullptr; |
16 | |
17 interpreter::interpreter (void) | |
15 { | 18 { |
19 if (the_interpreter) | |
20 { | |
21 std::cerr << "multiple interpreters are not possible!" << std::endl; | |
22 exit (1); | |
23 } | |
24 | |
25 the_interpreter = this; | |
26 | |
16 parser::init (); | 27 parser::init (); |
17 } | 28 } |
18 | 29 |
19 void fini (void) | 30 interpreter::~interpreter (void) |
20 { | 31 { |
21 parser::fini (); | 32 parser::fini (); |
22 } | 33 } |
23 | 34 |
24 int parse_and_execute (const std::string& line) | 35 int interpreter::parse_and_execute (const std::string& line) |
25 { | 36 { |
26 return parser::parse_and_execute (line); | 37 return parser::parse_and_execute (line); |
27 } | 38 } |
28 | 39 |
29 void emit_result (double value) | 40 void interpreter::emit_result (double value) |
30 { | 41 { |
31 // Simulate a delay in calculation. | 42 // Simulate a delay in calculation. |
32 sleep (1); | 43 sleep (1); |
33 | 44 |
34 if (calc::tty_mode) | 45 if (calc::tty_mode) |
35 tty::emit_result (value); | 46 tty::emit_result (value); |
36 else | 47 else |
37 gui::emit_result (value); | 48 gui::emit_result (value); |
38 } | 49 } |
39 | 50 |
40 void emit_error (const char *msg) | 51 void interpreter::emit_error (const char *msg) |
41 { | 52 { |
42 if (calc::tty_mode) | 53 if (calc::tty_mode) |
43 tty::emit_error (msg); | 54 tty::emit_error (msg); |
44 else | 55 else |
45 gui::emit_error (msg); | 56 gui::emit_error (msg); |