changeset 23107:3f72b4b9b50f

* examples/code/embedded.cc: Update.
author John W. Eaton <jwe@octave.org>
date Fri, 27 Jan 2017 17:47:44 -0500
parents 1a53f9d42ec1
children 48a0bb5d5150
files examples/code/embedded.cc
diffstat 1 files changed, 36 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/examples/code/embedded.cc	Fri Jan 27 17:44:07 2017 -0500
+++ b/examples/code/embedded.cc	Fri Jan 27 17:47:44 2017 -0500
@@ -11,25 +11,45 @@
   argv(0) = "embedded";
   argv(1) = "-q";
 
-  octave_main (2, argv.c_str_vec (), 1);
+  octave::embedded_application app (2, argv.c_str_vec ());
+
+  int status = app.execute ();
 
-  octave_idx_type n = 2;
-  octave_value_list in;
+  if (status != 0)
+    {
+      std::cerr << "creating embedded Octave interpreter failed!" << std::endl;
+      return status;
+    }
 
-  for (octave_idx_type i = 0; i < n; i++)
-    in(i) = octave_value (5 * (i + 2));
+  try
+    {
+      octave_idx_type n = 2;
+      octave_value_list in;
 
-  octave_value_list out = feval ("gcd", in, 1);
+      for (octave_idx_type i = 0; i < n; i++)
+        in(i) = octave_value (5 * (i + 2));
+
+      octave_value_list out = octave::feval ("gcd", in, 1);
 
-  if (out.length () > 0)
-    std::cout << "GCD of ["
-              << in(0).int_value ()
-              << ", "
-              << in(1).int_value ()
-              << "] is " << out(0).int_value ()
-              << std::endl;
-  else
-    std::cout << "invalid\n";
+      if (out.length () > 0)
+        std::cout << "GCD of ["
+                  << in(0).int_value ()
+                  << ", "
+                  << in(1).int_value ()
+                  << "] is " << out(0).int_value ()
+                  << std::endl;
+      else
+        std::cout << "invalid\n";
+    }
+  catch (const octave::exit_exception& ex)
+    {
+      std::cerr << "Octave evaluator exited with status = "
+                << ex.exit_status () << std::endl;
+    }
+  catch (const octave::execution_exception&)
+    {
+      std::cerr << "error encountered in Octave evaluator!" << std::endl;
+    }
 
-  clean_up_and_exit (0);
+  return 0;
 }