From f9a07338b9c7c0af19d64d24c47eaa9f7fe1ba38 Mon Sep 17 00:00:00 2001 From: Josh Blum <josh@joshknows.com> Date: Fri, 16 Mar 2012 13:09:23 -0700 Subject: gruel: created common swig include file This work taken from gruel_work_squashed Common swig file includes: * Language independent exception handler * Wrapper for python calls that may block Benefits: * More common swig code, less copy pasta * Wrapper for blocking python calls handles the case where the call throws, python is not left in a bad state --- gnuradio-core/src/lib/runtime/gr_msg_queue.i | 14 +++++++------- gnuradio-core/src/lib/swig/gnuradio.i | 18 +----------------- 2 files changed, 8 insertions(+), 24 deletions(-) (limited to 'gnuradio-core/src') diff --git a/gnuradio-core/src/lib/runtime/gr_msg_queue.i b/gnuradio-core/src/lib/runtime/gr_msg_queue.i index c9214bef32..0a4eda78a2 100644 --- a/gnuradio-core/src/lib/runtime/gr_msg_queue.i +++ b/gnuradio-core/src/lib/runtime/gr_msg_queue.i @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2005,2009,2010 Free Software Foundation, Inc. + * Copyright 2005,2009,2010,2011 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -85,16 +85,16 @@ public: %inline %{ gr_message_sptr gr_py_msg_queue__delete_head(gr_msg_queue_sptr q) { gr_message_sptr msg; - Py_BEGIN_ALLOW_THREADS; // release global interpreter lock - msg = q->delete_head(); // possibly blocking call - Py_END_ALLOW_THREADS; // acquire global interpreter lock + GR_PYTHON_BLOCKING_CODE( + msg = q->delete_head(); + ) return msg; } void gr_py_msg_queue__insert_tail(gr_msg_queue_sptr q, gr_message_sptr msg) { - Py_BEGIN_ALLOW_THREADS; // release global interpreter lock - q->insert_tail(msg); // possibly blocking call - Py_END_ALLOW_THREADS; // acquire global interpreter lock + GR_PYTHON_BLOCKING_CODE( + q->insert_tail(msg); + ) } %} diff --git a/gnuradio-core/src/lib/swig/gnuradio.i b/gnuradio-core/src/lib/swig/gnuradio.i index e365aeac7d..972d56c84d 100644 --- a/gnuradio-core/src/lib/swig/gnuradio.i +++ b/gnuradio-core/src/lib/swig/gnuradio.i @@ -25,23 +25,7 @@ // SWIG interface definition //////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////// -// Language independent exception handler -//////////////////////////////////////////////////////////////////////// -%include exception.i - -%exception { - try { - $action - } - catch(std::exception &e) { - SWIG_exception(SWIG_RuntimeError, e.what()); - } - catch(...) { - SWIG_exception(SWIG_RuntimeError, "Unknown exception"); - } - -} +%include <gruel_common.i> //////////////////////////////////////////////////////////////////////// // Headers -- cgit v1.2.3