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