Mercurial > octave
view examples/code/unwinddemo.cc @ 29253:28913793f678
prefer unwind_action over unwind_protect in more places
* Files affected: unwinddemo.cc, __ftp__.cc, graphics.cc, input.cc,
interpreter.cc, mex.cc, oct-hist.cc, toplev.cc, urlwrite.cc,
cdef-class.cc, ov-fcn-handle.cc, oct-parse.yy, pt-eval.cc,
pt-jit.cc, url-transfer.cc, and url-transfer.h.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Sun, 03 Jan 2021 14:39:31 -0500 |
parents | f4d7d0eb5b0c |
children |
line wrap: on
line source
#include <octave/oct.h> #include <octave/unwind-prot.h> void my_err_handler (const char *fmt, ...) { // Do nothing!! } void my_err_with_id_handler (const char *id, const char *fmt, ...) { // Do nothing!! } DEFUN_DLD (unwinddemo, args, nargout, "Unwind Demo") { if (args.length () < 2) print_usage (); NDArray a = args(0).array_value (); NDArray b = args(1).array_value (); // Create unwind_action objects. At the end of the enclosing scope, // destructors for these objects will call the given functions with // the specified arguments. octave::unwind_action restore_warning_handler (set_liboctave_warning_handler, current_liboctave_warning_handler); octave::unwind_action restore_warning_with_id_handler (set_liboctave_warning_with_id_handler, current_liboctave_warning_with_id_handler); set_liboctave_warning_handler (my_err_handler); set_liboctave_warning_with_id_handler (my_err_with_id_handler); return octave_value (quotient (a, b)); }