diff interpreter.cpp @ 7:04867eba6428

function objects and signals/slots for errors and results
author John W. Eaton <jwe@octave.org>
date Thu, 23 May 2019 09:27:09 -0400
parents 1b575145197e
children 822a2fe5bb51
line wrap: on
line diff
--- a/interpreter.cpp	Thu May 23 07:41:18 2019 -0400
+++ b/interpreter.cpp	Thu May 23 09:27:09 2019 -0400
@@ -15,6 +15,10 @@
   interpreter *interpreter::the_interpreter = nullptr;
 
   interpreter::interpreter (void)
+    : m_error_handler ([] (const char *msg)
+                       { std::cerr << "error: " << msg << std::endl; }),
+      m_result_handler ([] (double value)
+                        { std::cout << value << std::endl; })
   {
     if (the_interpreter)
       {
@@ -42,17 +46,11 @@
     // Simulate a delay in calculation.
     sleep (1);
 
-    if (calc::tty_mode)
-      tty::emit_result (value);
-    else
-      gui::emit_result (value);
+    m_result_handler (value);
   }
 
   void interpreter::emit_error (const char *msg)
   {
-    if (calc::tty_mode)
-      tty::emit_error (msg);
-    else
-      gui::emit_error (msg);
+    m_error_handler (msg);
   }
 }