summaryrefslogtreecommitdiff
path: root/gruel
diff options
context:
space:
mode:
Diffstat (limited to 'gruel')
-rw-r--r--gruel/.gitignore3
-rw-r--r--gruel/CMakeLists.txt1
-rw-r--r--gruel/Makefile.am30
-rw-r--r--gruel/src/.gitignore2
-rw-r--r--gruel/src/Makefile.am29
-rw-r--r--gruel/src/include/.gitignore2
-rw-r--r--gruel/src/include/Makefile.am22
-rw-r--r--gruel/src/include/gruel/.gitignore4
-rw-r--r--gruel/src/include/gruel/Makefile.am45
-rw-r--r--gruel/src/include/gruel/pmt.h19
-rw-r--r--gruel/src/lib/.gitignore5
-rw-r--r--gruel/src/lib/Makefile.am68
-rw-r--r--gruel/src/lib/msg/.gitignore4
-rw-r--r--gruel/src/lib/msg/Makefile.am33
-rw-r--r--gruel/src/lib/pmt/.gitignore10
-rw-r--r--gruel/src/lib/pmt/CMakeLists.txt11
-rw-r--r--gruel/src/lib/pmt/Makefile.am105
-rw-r--r--gruel/src/lib/pmt/gen-serial-tags.py (renamed from gruel/src/scheme/gnuradio/gen-serial-tags.py)0
-rw-r--r--gruel/src/lib/pmt/pmt-serial-tags.scm (renamed from gruel/src/scheme/gnuradio/pmt-serial-tags.scm)0
-rw-r--r--gruel/src/lib/pmt/pmt.cc14
-rw-r--r--gruel/src/lib/pmt/pmt_int.h9
-rw-r--r--gruel/src/python/.gitignore3
-rw-r--r--gruel/src/python/Makefile.am43
-rw-r--r--gruel/src/python/run_tests.in17
-rw-r--r--gruel/src/scheme/.gitignore8
-rw-r--r--gruel/src/scheme/Makefile.am21
-rw-r--r--gruel/src/scheme/gnuradio/.gitignore8
-rw-r--r--gruel/src/scheme/gnuradio/CMakeLists.txt26
-rw-r--r--gruel/src/scheme/gnuradio/Makefile.am33
-rw-r--r--gruel/src/scheme/gnuradio/macros-etc.scm50
-rw-r--r--gruel/src/scheme/gnuradio/pmt-serialize.scm48
-rw-r--r--gruel/src/swig/.gitignore4
-rw-r--r--gruel/src/swig/CMakeLists.txt4
-rw-r--r--gruel/src/swig/Makefile.am66
-rw-r--r--gruel/src/swig/Makefile.swig.gen145
-rw-r--r--gruel/src/swig/gruel_common.i66
-rw-r--r--gruel/src/swig/pmt_swig.i17
37 files changed, 114 insertions, 861 deletions
diff --git a/gruel/.gitignore b/gruel/.gitignore
deleted file mode 100644
index ede973f11..000000000
--- a/gruel/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/Makefile
-/Makefile.in
-/gruel.pc
diff --git a/gruel/CMakeLists.txt b/gruel/CMakeLists.txt
index 5fdc2b218..558248d08 100644
--- a/gruel/CMakeLists.txt
+++ b/gruel/CMakeLists.txt
@@ -81,7 +81,6 @@ CPACK_COMPONENT("gruel_swig"
# Add subdirectories
########################################################################
add_subdirectory(src/include/gruel)
-add_subdirectory(src/scheme/gnuradio)
add_subdirectory(src/lib)
if(ENABLE_PYTHON)
add_subdirectory(src/swig)
diff --git a/gruel/Makefile.am b/gruel/Makefile.am
deleted file mode 100644
index c43e461f2..000000000
--- a/gruel/Makefile.am
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# Copyright 2008,2010 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-include $(top_srcdir)/Makefile.common
-
-EXTRA_DIST += \
- gruel.pc.in
-
-SUBDIRS = src
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = gruel.pc
diff --git a/gruel/src/.gitignore b/gruel/src/.gitignore
deleted file mode 100644
index b336cc7ce..000000000
--- a/gruel/src/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/Makefile
-/Makefile.in
diff --git a/gruel/src/Makefile.am b/gruel/src/Makefile.am
deleted file mode 100644
index 93b17d6db..000000000
--- a/gruel/src/Makefile.am
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# Copyright 2008 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-SUBDIRS = lib include scheme
-
-if PYTHON
-
-SUBDIRS += . swig python
-
-endif
-
diff --git a/gruel/src/include/.gitignore b/gruel/src/include/.gitignore
deleted file mode 100644
index b336cc7ce..000000000
--- a/gruel/src/include/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/Makefile
-/Makefile.in
diff --git a/gruel/src/include/Makefile.am b/gruel/src/include/Makefile.am
deleted file mode 100644
index 7a178810a..000000000
--- a/gruel/src/include/Makefile.am
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-# Copyright 2008 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-SUBDIRS = gruel
diff --git a/gruel/src/include/gruel/.gitignore b/gruel/src/include/gruel/.gitignore
deleted file mode 100644
index bbe96391c..000000000
--- a/gruel/src/include/gruel/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-/Makefile
-/Makefile.in
-/inet.h
-/pmt_serial_tags.h
diff --git a/gruel/src/include/gruel/Makefile.am b/gruel/src/include/gruel/Makefile.am
deleted file mode 100644
index fce739f08..000000000
--- a/gruel/src/include/gruel/Makefile.am
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-# Copyright 2008-2011 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-include $(top_srcdir)/Makefile.common
-
-EXTRA_DIST += inet.h.in
-
-gruelincludedir = $(prefix)/include/gruel
-
-gruelinclude_HEADERS = \
- api.h \
- attributes.h \
- high_res_timer.h \
- inet.h \
- msg_accepter.h \
- msg_accepter_msgq.h \
- msg_queue.h \
- msg_passing.h \
- pmt.h \
- pmt_pool.h \
- pmt_serial_tags.h \
- pmt_sugar.h \
- realtime.h \
- sys_pri.h \
- thread_body_wrapper.h \
- thread_group.h \
- thread.h
diff --git a/gruel/src/include/gruel/pmt.h b/gruel/src/include/gruel/pmt.h
index 58533e54e..f904d37e1 100644
--- a/gruel/src/include/gruel/pmt.h
+++ b/gruel/src/include/gruel/pmt.h
@@ -32,6 +32,7 @@
#include <stdint.h>
#include <iosfwd>
#include <stdexcept>
+#include <boost/function.hpp>
namespace gruel {
class msg_accepter;
@@ -805,6 +806,24 @@ GRUEL_API std::string pmt_serialize_str(pmt_t obj);
*/
GRUEL_API pmt_t pmt_deserialize_str(std::string str);
+/*
+ * ------------------------------------------------------------------------
+ * advanced
+ * ------------------------------------------------------------------------
+ */
+
+#define GRUEL_PMT_HAVE_PMT_SET_DELETER
+
+/*!
+ * Set a deleter function to be called when the PMT dereferences.
+ * User beware! This function is for extremely advanced use.
+ * Use boost bind to bind extra parameters into the deleter function.
+ * Set an empty function type to reset the PMT to the default deleter.
+ * \param obj the pmt object in which to set the deleter function
+ * \param deleter a function that gets an opaque PMT pointer type
+ */
+GRUEL_API void pmt_set_deleter(pmt_t obj, boost::function<void(pmt_base *)> &deleter);
+
} /* namespace pmt */
#include <gruel/pmt_sugar.h>
diff --git a/gruel/src/lib/.gitignore b/gruel/src/lib/.gitignore
deleted file mode 100644
index 165e179d6..000000000
--- a/gruel/src/lib/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-/Makefile
-/Makefile.in
-/.libs
-/.deps
-test_gruel
diff --git a/gruel/src/lib/Makefile.am b/gruel/src/lib/Makefile.am
deleted file mode 100644
index 773f3aefd..000000000
--- a/gruel/src/lib/Makefile.am
+++ /dev/null
@@ -1,68 +0,0 @@
-#
-# Copyright 2008,2009,2010,2011 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-include $(top_srcdir)/Makefile.common
-
-SUBDIRS = pmt msg
-
-AM_CPPFLAGS = $(DEFINES) $(GRUEL_INCLUDES) $(BOOST_CPPFLAGS) \
- $(CPPUNIT_INCLUDES) $(WITH_INCLUDES)
-
-TESTS = test_gruel
-
-noinst_PROGRAMS = test_gruel
-
-
-lib_LTLIBRARIES = libgruel.la
-
-# magic flags
-libgruel_la_LDFLAGS = $(NO_UNDEFINED) $(BOOST_LDFLAGS) $(LTVERSIONFLAGS)
-
-# ----------------------------------------------------------------
-
-PMT_LIB = pmt/libpmt.la
-MSG_LIB = msg/libmsg.la
-
-# These are the source files that go into the gruel shared library
-libgruel_la_SOURCES = \
- realtime.cc \
- sys_pri.cc \
- thread_body_wrapper.cc \
- thread_group.cc
-
-libgruel_la_LIBADD = \
- $(BOOST_THREAD_LIB) \
- $(BOOST_SYSTEM_LIB) \
- $(BOOST_FILESYSTEM_LIB) \
- $(PMT_LIB) \
- $(MSG_LIB) \
- -lstdc++
-
-
-# ----------------------------------------------------------------
-
-test_gruel_SOURCES = test_gruel.cc
-test_gruel_LDADD = \
- $(BOOST_THREAD_LIB) \
- $(BOOST_SYSTEM_LIB) \
- $(BOOST_FILESYSTEM_LIB) \
- pmt/libpmt-qa.la libgruel.la
-
diff --git a/gruel/src/lib/msg/.gitignore b/gruel/src/lib/msg/.gitignore
deleted file mode 100644
index c026fd667..000000000
--- a/gruel/src/lib/msg/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-/Makefile
-/Makefile.in
-/.deps
-/.libs
diff --git a/gruel/src/lib/msg/Makefile.am b/gruel/src/lib/msg/Makefile.am
deleted file mode 100644
index 9dbaf10f5..000000000
--- a/gruel/src/lib/msg/Makefile.am
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Copyright 2009,2010 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-include $(top_srcdir)/Makefile.common
-
-AM_CPPFLAGS = $(DEFINES) $(GRUEL_INCLUDES) \
- $(BOOST_CPPFLAGS) $(WITH_INCLUDES)
-
-noinst_LTLIBRARIES = libmsg.la
-
-libmsg_la_SOURCES = \
- msg_accepter.cc \
- msg_accepter_msgq.cc \
- msg_queue.cc
-
diff --git a/gruel/src/lib/pmt/.gitignore b/gruel/src/lib/pmt/.gitignore
deleted file mode 100644
index 035c0316b..000000000
--- a/gruel/src/lib/pmt/.gitignore
+++ /dev/null
@@ -1,10 +0,0 @@
-/Makefile
-/Makefile.in
-/.libs
-/.deps
-/test_pmt
-/qa_pmt_unv.cc
-/qa_pmt_unv.h
-/pmt_unv_int.h
-/pmt_unv.cc
-/stamp-sources-generate
diff --git a/gruel/src/lib/pmt/CMakeLists.txt b/gruel/src/lib/pmt/CMakeLists.txt
index a708fa7ad..a8e15cac6 100644
--- a/gruel/src/lib/pmt/CMakeLists.txt
+++ b/gruel/src/lib/pmt/CMakeLists.txt
@@ -26,9 +26,6 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR})
########################################################################
# Generate serial tags header file
########################################################################
-get_filename_component(SCHEME_DIR
- ${CMAKE_CURRENT_SOURCE_DIR}/../../scheme/gnuradio ABSOLUTE
-)
get_filename_component(PMT_SERIAL_TAGS_H
${CMAKE_CURRENT_BINARY_DIR}/../../include/gruel/pmt_serial_tags.h ABSOLUTE
@@ -36,11 +33,11 @@ get_filename_component(PMT_SERIAL_TAGS_H
add_custom_command(
OUTPUT ${PMT_SERIAL_TAGS_H}
- DEPENDS ${SCHEME_DIR}/gen-serial-tags.py
- DEPENDS ${SCHEME_DIR}/pmt-serial-tags.scm
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/gen-serial-tags.py
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/pmt-serial-tags.scm
COMMAND ${PYTHON_EXECUTABLE}
- ${SCHEME_DIR}/gen-serial-tags.py
- ${SCHEME_DIR}/pmt-serial-tags.scm
+ ${CMAKE_CURRENT_SOURCE_DIR}/gen-serial-tags.py
+ ${CMAKE_CURRENT_SOURCE_DIR}/pmt-serial-tags.scm
${PMT_SERIAL_TAGS_H}
)
diff --git a/gruel/src/lib/pmt/Makefile.am b/gruel/src/lib/pmt/Makefile.am
deleted file mode 100644
index 0c8e12dc3..000000000
--- a/gruel/src/lib/pmt/Makefile.am
+++ /dev/null
@@ -1,105 +0,0 @@
-#
-# Copyright 2008,2009,2010,2011 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-include $(top_srcdir)/Makefile.common
-
-AM_CPPFLAGS = $(DEFINES) $(GRUEL_INCLUDES) $(BOOST_CPPFLAGS) \
- $(CPPUNIT_INCLUDES) $(WITH_INCLUDES)
-
-noinst_LTLIBRARIES = libpmt.la
-
-# ----------------------------------------------------------------
-# these scripts generate code
-
-code_generator = \
- generate_unv.py \
- unv_template.h.t \
- unv_template.cc.t \
- unv_qa_template.cc.t
-
-GENERATED_H = \
- pmt_unv_int.h \
- qa_pmt_unv.h
-
-GENERATED_CC = \
- pmt_unv.cc \
- qa_pmt_unv.cc
-
-python_built_sources = $(GENERATED_H) $(GENERATED_CC)
-
-PMT_SERIAL_TAGS_H = $(abs_top_builddir)/gruel/src/include/gruel/pmt_serial_tags.h
-BUILT_SOURCES = $(python_built_sources) $(PMT_SERIAL_TAGS_H)
-
-EXTRA_DIST += $(code_generator)
-
-# ----------------------------------------------------------------
-
-libpmt_la_SOURCES = \
- pmt.cc \
- pmt_io.cc \
- pmt_pool.cc \
- pmt_serialize.cc \
- pmt_unv.cc
-
-libpmt_la_LIBADD = \
- $(BOOST_THREAD_LIB) \
- -lstdc++
-
-libpmt_la_LDFLAGS = \
- $(BOOST_LDFLAGS)
-
-noinst_HEADERS = \
- $(GENERATED_H) \
- pmt_int.h \
- qa_pmt.h \
- qa_pmt_prims.h
-
-# Build the qa code into its own library
-
-noinst_LTLIBRARIES += libpmt-qa.la
-
-libpmt_qa_la_SOURCES = \
- qa_pmt.cc \
- qa_pmt_prims.cc \
- qa_pmt_unv.cc
-
-# magic flags
-libpmt_qa_la_LDFLAGS = $(NO_UNDEFINED) -avoid version
-
-libpmt_qa_la_LIBADD = \
- libpmt.la \
- $(CPPUNIT_LIBS) \
- -lstdc++
-
-
-# Do creation and inclusion of other Makefiles last
-
-# common way for generating sources from templates when using
-# BUILT_SOURCES, using parallel build protection.
-gen_sources = $(python_built_sources)
-gen_sources_deps = $(core_generator)
-par_gen_command = PYTHONPATH=$(top_srcdir)/gruel/src/lib/pmt srcdir=$(srcdir) $(PYTHON) $(srcdir)/generate_unv.py
-include $(top_srcdir)/Makefile.par.gen
-
-# Rule to create the build header file using python
-# Doesn't need parallel protections because there is a single target
-$(PMT_SERIAL_TAGS_H): $(top_srcdir)/gruel/src/scheme/gnuradio/gen-serial-tags.py $(top_srcdir)/gruel/src/scheme/gnuradio/pmt-serial-tags.scm
- $(PYTHON) $^ $@
diff --git a/gruel/src/scheme/gnuradio/gen-serial-tags.py b/gruel/src/lib/pmt/gen-serial-tags.py
index 18e927beb..18e927beb 100644
--- a/gruel/src/scheme/gnuradio/gen-serial-tags.py
+++ b/gruel/src/lib/pmt/gen-serial-tags.py
diff --git a/gruel/src/scheme/gnuradio/pmt-serial-tags.scm b/gruel/src/lib/pmt/pmt-serial-tags.scm
index 646a751ea..646a751ea 100644
--- a/gruel/src/scheme/gnuradio/pmt-serial-tags.scm
+++ b/gruel/src/lib/pmt/pmt-serial-tags.scm
diff --git a/gruel/src/lib/pmt/pmt.cc b/gruel/src/lib/pmt/pmt.cc
index f9cf6b4bf..57b66b1a4 100644
--- a/gruel/src/lib/pmt/pmt.cc
+++ b/gruel/src/lib/pmt/pmt.cc
@@ -58,7 +58,7 @@ pmt_base::operator delete(void *p, size_t size)
#endif
void intrusive_ptr_add_ref(pmt_base* p) { ++(p->count_); }
-void intrusive_ptr_release(pmt_base* p) { if (--(p->count_) == 0 ) delete p; }
+void intrusive_ptr_release(pmt_base* p) { if (--(p->count_) == 0 ) p->deleter_(p); }
pmt_base::~pmt_base()
{
@@ -1383,4 +1383,16 @@ pmt_dump_sizeof()
printf("sizeof(pmt_uniform_vector) = %3zd\n", sizeof(pmt_uniform_vector));
}
+/*
+ * ------------------------------------------------------------------------
+ * advanced
+ * ------------------------------------------------------------------------
+ */
+
+void
+pmt_set_deleter(pmt_t obj, boost::function<void(pmt_base *)> &deleter)
+{
+ obj->deleter_ = (deleter)? deleter : &pmt_base::default_deleter;
+}
+
} /* namespace pmt */
diff --git a/gruel/src/lib/pmt/pmt_int.h b/gruel/src/lib/pmt/pmt_int.h
index 3a5cd382b..745dbc666 100644
--- a/gruel/src/lib/pmt/pmt_int.h
+++ b/gruel/src/lib/pmt/pmt_int.h
@@ -38,8 +38,15 @@ namespace pmt {
class GRUEL_API pmt_base : boost::noncopyable {
mutable boost::detail::atomic_count count_;
+public:
+ static void default_deleter(pmt_base *p){
+ delete p;
+ }
+
+ boost::function<void(pmt_base *)> deleter_;
+
protected:
- pmt_base() : count_(0) {};
+ pmt_base() : count_(0), deleter_(&pmt::pmt_base::default_deleter) {};
virtual ~pmt_base();
public:
diff --git a/gruel/src/python/.gitignore b/gruel/src/python/.gitignore
deleted file mode 100644
index 604b402c5..000000000
--- a/gruel/src/python/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/Makefile
-/Makefile.in
-/run_tests
diff --git a/gruel/src/python/Makefile.am b/gruel/src/python/Makefile.am
deleted file mode 100644
index 80cb04b24..000000000
--- a/gruel/src/python/Makefile.am
+++ /dev/null
@@ -1,43 +0,0 @@
-#
-# Copyright 2011 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-include $(top_srcdir)/Makefile.common
-
-TESTS =
-EXTRA_DIST += run_tests.in
-
-if PYTHON
-TESTS += run_tests
-
-grueldir = $(pythondir)/gruel
-
-noinst_PYTHON = \
- qa_pmt.py
-
-gruel_PYTHON = \
- __init__.py
-
-gruelpmtdir = $(pythondir)/gruel/pmt
-
-gruelpmt_PYTHON = pmt/__init__.py
-
-endif
-
diff --git a/gruel/src/python/run_tests.in b/gruel/src/python/run_tests.in
deleted file mode 100644
index ff399bcc6..000000000
--- a/gruel/src/python/run_tests.in
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/sh
-
-# 1st parameter is absolute path to component source directory
-# 2nd parameter is absolute path to component build directory
-# 3rd parameter is path to Python QA directory
-
-# For OS/X
-DYLD_LIBRARY_PATH=@abs_top_builddir@/gruel/src/lib/:@abs_top_builddir@/gruel/src/swig/.libs:$DYLD_LIBRARY_PATH
-export DYLD_LIBRARY_PATH
-
-# For Win32
-PATH=@abs_top_builddir@/gruel/:@abs_top_builddir@/gruel/.libs:$PATH
-
-@top_builddir@/run_tests.sh \
- @abs_top_srcdir@/gruel/src \
- @abs_top_builddir@/gruel/src \
- @srcdir@
diff --git a/gruel/src/scheme/.gitignore b/gruel/src/scheme/.gitignore
deleted file mode 100644
index a02b6ff73..000000000
--- a/gruel/src/scheme/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-/Makefile
-/Makefile.in
-/.la
-/.lo
-/.deps
-/.libs
-/*.la
-/*.lo
diff --git a/gruel/src/scheme/Makefile.am b/gruel/src/scheme/Makefile.am
deleted file mode 100644
index 4980063d7..000000000
--- a/gruel/src/scheme/Makefile.am
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-# Copyright 2007 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-
-SUBDIRS = gnuradio
diff --git a/gruel/src/scheme/gnuradio/.gitignore b/gruel/src/scheme/gnuradio/.gitignore
deleted file mode 100644
index a02b6ff73..000000000
--- a/gruel/src/scheme/gnuradio/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-/Makefile
-/Makefile.in
-/.la
-/.lo
-/.deps
-/.libs
-/*.la
-/*.lo
diff --git a/gruel/src/scheme/gnuradio/CMakeLists.txt b/gruel/src/scheme/gnuradio/CMakeLists.txt
deleted file mode 100644
index 4ff4f7feb..000000000
--- a/gruel/src/scheme/gnuradio/CMakeLists.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 2010 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-
-########################################################################
-
-install(FILES
- pmt-serial-tags.scm
- pmt-serialize.scm
- macros-etc.scm
-DESTINATION ${GR_PKG_DATA_DIR} COMPONENT "gruel_swig")
diff --git a/gruel/src/scheme/gnuradio/Makefile.am b/gruel/src/scheme/gnuradio/Makefile.am
deleted file mode 100644
index e7b6bf744..000000000
--- a/gruel/src/scheme/gnuradio/Makefile.am
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Copyright 2007,2009,2010,2011 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-
-include $(top_srcdir)/Makefile.common
-
-#pkgdatadir = $(datadir)/gnuradio
-
-EXTRA_DIST += \
- gen-serial-tags.py
-
-# really scheme source files FIXME wrong location
-dist_pkgdata_DATA = \
- pmt-serial-tags.scm \
- pmt-serialize.scm \
- macros-etc.scm
-
diff --git a/gruel/src/scheme/gnuradio/macros-etc.scm b/gruel/src/scheme/gnuradio/macros-etc.scm
deleted file mode 100644
index ac2a4a342..000000000
--- a/gruel/src/scheme/gnuradio/macros-etc.scm
+++ /dev/null
@@ -1,50 +0,0 @@
-;;; -*- scheme -*-
-;;;
-;;; Copyright 2007 Free Software Foundation, Inc.
-;;;
-;;; This file is part of GNU Radio
-;;;
-;;; GNU Radio is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 3, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Radio is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License along
-;;; with this program; if not, write to the Free Software Foundation, Inc.,
-;;; 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-;;;
-
-(define-module (gnuradio macros-etc)
- :export (atom? when unless for-each-in-file))
-
-(define (atom? obj)
- (not (pair? obj)))
-
-(defmacro when (pred . body)
- `(if ,pred (begin ,@body) #f))
-
-(defmacro unless (pred . body)
- `(if (not ,pred) (begin ,@body) #f))
-
-
-(define (for-each-in-file file f)
- (let ((port (if (port? file)
- file
- (open-input-file file))))
- (letrec
- ((loop
- (lambda (port form)
- (cond ((eof-object? form)
- (when (not (eq? port file))
- (close-input-port port))
- #t)
- (else
- (f form)
- (set! form #f) ; for GC
- (loop port (read port)))))))
- (loop port (read port)))))
diff --git a/gruel/src/scheme/gnuradio/pmt-serialize.scm b/gruel/src/scheme/gnuradio/pmt-serialize.scm
deleted file mode 100644
index c1d32d75b..000000000
--- a/gruel/src/scheme/gnuradio/pmt-serialize.scm
+++ /dev/null
@@ -1,48 +0,0 @@
-;;;
-;;; Copyright 2007 Free Software Foundation, Inc.
-;;;
-;;; This file is part of GNU Radio
-;;;
-;;; GNU Radio is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 3, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Radio is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License along
-;;; with this program; if not, write to the Free Software Foundation, Inc.,
-;;; 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-;;;
-
-;;; An implementation of pmt_serialize in scheme.
-;;; Currently handles only symbols and pairs. They're all we need for now.
-
-(define-module (gnuradio pmt-serialize)
- :export (pmt-serialize))
-
-(load-from-path "gnuradio/pmt-serial-tags")
-
-(define (pmt-serialize obj put-byte)
- (define (put-u16 x)
- (put-byte (logand (ash x -8) #xff))
- (put-byte (logand x #xff)))
-
- (cond ((null? obj)
- (put-byte pst-null))
- ((symbol? obj)
- (let* ((sym-as-bytes (map char->integer (string->list (symbol->string obj))))
- (len (length sym-as-bytes)))
- (put-byte pst-symbol)
- (put-u16 len)
- (for-each put-byte sym-as-bytes)))
-
- ((pair? obj)
- (put-byte pst-pair)
- (pmt-serialize (car obj) put-byte)
- (pmt-serialize (cdr obj) put-byte))
- (else
- (throw 'not-implemented "pmt-serialize" obj))))
diff --git a/gruel/src/swig/.gitignore b/gruel/src/swig/.gitignore
deleted file mode 100644
index f99fdb19b..000000000
--- a/gruel/src/swig/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-/Makefile
-/Makefile.in
-/python
-/pmt_swig.py
diff --git a/gruel/src/swig/CMakeLists.txt b/gruel/src/swig/CMakeLists.txt
index 7d69ee549..f9d1758ec 100644
--- a/gruel/src/swig/CMakeLists.txt
+++ b/gruel/src/swig/CMakeLists.txt
@@ -38,8 +38,8 @@ GR_SWIG_INSTALL(
)
install(
- FILES gr_intrusive_ptr.i pmt_swig.i
+ FILES gr_intrusive_ptr.i pmt_swig.i gruel_common.i
${CMAKE_CURRENT_BINARY_DIR}/pmt_swig_doc.i
- DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig
+ DESTINATION ${GR_INCLUDE_DIR}/gruel/swig
COMPONENT "gruel_swig"
)
diff --git a/gruel/src/swig/Makefile.am b/gruel/src/swig/Makefile.am
deleted file mode 100644
index 9953d5566..000000000
--- a/gruel/src/swig/Makefile.am
+++ /dev/null
@@ -1,66 +0,0 @@
-#
-# Copyright 2011 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-include $(top_srcdir)/Makefile.common
-include $(top_srcdir)/Makefile.swig
-
-TESTS =
-
-AM_CPPFLAGS = \
- -I$(top_srcdir)/gruel/src/lib \
- $(STD_DEFINES_AND_INCLUDES) \
- $(PYTHON_CPPFLAGS) \
- $(WITH_INCLUDES)
-
-##############################
-# SWIG interface and library
-TOP_SWIG_IFILES = \
- pmt_swig_doc.i \
- pmt_swig.i
-
-TOP_SWIG_DOC_IFILES = \
- pmt_swig_doc.i
-
-BUILT_SOURCES += \
- $(TOP_SWIG_DOC_IFILES)
-
-EXTRA_DIST += \
- $(TOP_SWIG_DOC_IFILES)
-
-$(TOP_SWIG_DOC_IFILES):
- `echo "" > $@`
-
-# Install so that they end up available as:
-# import gruel.pmt
-# This ends up at:
-# ${prefix}/lib/python${python_version}/site-packages/gruel/pmt
-pmt_swig_pythondir_category = \
- gruel/pmt
-
-# additional libraries for linking with the SWIG-generated library
-pmt_swig_la_swig_libadd = \
- $(abs_top_builddir)/gruel/src/lib/pmt/libpmt.la
-
-# additional SWIG files to be installed
-pmt_swig_swiginclude_headers = \
- gr_intrusive_ptr.i \
- $(TOP_SWIG_DOC_IFILES)
-
diff --git a/gruel/src/swig/Makefile.swig.gen b/gruel/src/swig/Makefile.swig.gen
deleted file mode 100644
index 0abba0299..000000000
--- a/gruel/src/swig/Makefile.swig.gen
+++ /dev/null
@@ -1,145 +0,0 @@
-# -*- Makefile -*-
-#
-# Copyright 2009 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-# Makefile.swig.gen for pmt_swig.i
-
-## Default install locations for these files:
-##
-## Default location for the Python directory is:
-## ${prefix}/lib/python${python_version}/site-packages/[category]/pmt_swig
-## Default location for the Python exec directory is:
-## ${exec_prefix}/lib/python${python_version}/site-packages/[category]/pmt_swig
-##
-## The following can be overloaded to change the install location, but
-## this has to be done in the including Makefile.am -before-
-## Makefile.swig is included.
-
-pmt_swig_pythondir_category ?= gnuradio/pmt_swig
-pmt_swig_pylibdir_category ?= $(pmt_swig_pythondir_category)
-pmt_swig_pythondir = $(pythondir)/$(pmt_swig_pythondir_category)
-pmt_swig_pylibdir = $(pyexecdir)/$(pmt_swig_pylibdir_category)
-
-# The .so libraries for the guile modules get installed whereever guile
-# is installed, usually /usr/lib/guile/gnuradio/
-# FIXME: determince whether these should be installed with gnuradio.
-pmt_swig_scmlibdir = $(libdir)
-
-# The scm files for the guile modules get installed where ever guile
-# is installed, usually /usr/share/guile/site/pmt_swig
-# FIXME: determince whether these should be installed with gnuradio.
-pmt_swig_scmdir = $(guiledir)
-
-## SWIG headers are always installed into the same directory.
-
-pmt_swig_swigincludedir = $(gruelswigincludedir)
-
-## This is a template file for a "generated" Makefile addition (in
-## this case, "Makefile.swig.gen"). By including the top-level
-## Makefile.swig, this file will be used to generate the SWIG
-## dependencies. Assign the variable TOP_SWIG_FILES to be the list of
-## SWIG .i files to generated wrappings for; there can be more than 1
-## so long as the names are unique (no sorting is done on the
-## TOP_SWIG_FILES list). This file explicitly assumes that a SWIG .i
-## file will generate .cc, .py, and possibly .h files -- meaning that
-## all of these files will have the same base name (that provided for
-## the SWIG .i file).
-##
-## This code is setup to ensure parallel MAKE ("-j" or "-jN") does the
-## right thing. For more info, see <
-## http://sources.redhat.com/automake/automake.html#Multiple-Outputs >
-
-## Other cleaned files: dependency files generated by SWIG or this Makefile
-
-MOSTLYCLEANFILES += $(DEPDIR)/*.S*
-
-## Various SWIG variables. These can be overloaded in the including
-## Makefile.am by setting the variable value there, then including
-## Makefile.swig .
-
-pmt_swig_swiginclude_HEADERS = \
- pmt_swig.i \
- $(pmt_swig_swiginclude_headers)
-
-if PYTHON
-pmt_swig_pylib_LTLIBRARIES = \
- _pmt_swig.la
-
-_pmt_swig_la_SOURCES = \
- python/pmt_swig.cc \
- $(pmt_swig_la_swig_sources)
-
-pmt_swig_python_PYTHON = \
- pmt_swig.py \
- $(pmt_swig_python)
-
-_pmt_swig_la_LIBADD = \
- $(STD_SWIG_LA_LIB_ADD) \
- $(pmt_swig_la_swig_libadd)
-
-_pmt_swig_la_LDFLAGS = \
- $(STD_SWIG_LA_LD_FLAGS) \
- $(pmt_swig_la_swig_ldflags)
-
-_pmt_swig_la_CXXFLAGS = \
- $(STD_SWIG_CXX_FLAGS) \
- -I$(top_builddir) \
- $(pmt_swig_la_swig_cxxflags)
-
-python/pmt_swig.cc: pmt_swig.py
-pmt_swig.py: pmt_swig.i
-
-# Include the python dependencies for this file
--include python/pmt_swig.d
-
-endif # end of if python
-
-if GUILE
-
-pmt_swig_scmlib_LTLIBRARIES = \
- libguile-gnuradio-pmt_swig.la
-libguile_gnuradio_pmt_swig_la_SOURCES = \
- guile/pmt_swig.cc \
- $(pmt_swig_la_swig_sources)
-nobase_pmt_swig_scm_DATA = \
- gnuradio/pmt_swig.scm \
- gnuradio/pmt_swig-primitive.scm
-libguile_gnuradio_pmt_swig_la_LIBADD = \
- $(STD_SWIG_LA_LIB_ADD) \
- $(pmt_swig_la_swig_libadd)
-libguile_gnuradio_pmt_swig_la_LDFLAGS = \
- $(STD_SWIG_LA_LD_FLAGS) \
- $(pmt_swig_la_swig_ldflags)
-libguile_gnuradio_pmt_swig_la_CXXFLAGS = \
- $(STD_SWIG_CXX_FLAGS) \
- -I$(top_builddir) \
- $(pmt_swig_la_swig_cxxflags)
-
-guile/pmt_swig.cc: gnuradio/pmt_swig.scm
-gnuradio/pmt_swig.scm: pmt_swig.i
-gnuradio/pmt_swig-primitive.scm: gnuradio/pmt_swig.scm
-
-# Include the guile dependencies for this file
--include guile/pmt_swig.d
-
-endif # end of GUILE
-
-
diff --git a/gruel/src/swig/gruel_common.i b/gruel/src/swig/gruel_common.i
new file mode 100644
index 000000000..e4261cbfa
--- /dev/null
+++ b/gruel/src/swig/gruel_common.i
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2011 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef GRUEL_COMMON_I
+#define GRUEL_COMMON_I
+
+////////////////////////////////////////////////////////////////////////
+// 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");
+ }
+
+}
+
+////////////////////////////////////////////////////////////////////////
+// Wrapper for python calls that may block
+////////////////////////////////////////////////////////////////////////
+
+/*!
+ * Use GR_PYTHON_BLOCKING_CODE when calling code that blocks.
+ *
+ * The try/catch is to save us from boost::thread::interrupt:
+ * If a thread from the scheduler (or any other boost thread)
+ * is blocking the routine and throws an interrupt exception.
+ */
+%{
+
+#define GR_PYTHON_BLOCKING_CODE(code) { \
+ PyThreadState *_save; \
+ _save = PyEval_SaveThread(); \
+ try{code} \
+ catch(...){PyEval_RestoreThread(_save); throw;} \
+ PyEval_RestoreThread(_save); \
+}
+
+%}
+
+#endif /*GRUEL_COMMON_I*/
diff --git a/gruel/src/swig/pmt_swig.i b/gruel/src/swig/pmt_swig.i
index 0c937edfc..954501863 100644
--- a/gruel/src/swig/pmt_swig.i
+++ b/gruel/src/swig/pmt_swig.i
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2011 Free Software Foundation, Inc.
+ * Copyright 2011-2012 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -34,26 +34,13 @@
#include <gruel/pmt.h>
%}
+%include "gruel_common.i"
//load generated python docstrings
%include "pmt_swig_doc.i"
////////////////////////////////////////////////////////////////////////
// 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");
- }
-
-}
// Template intrusive_ptr for Swig to avoid dereferencing issues
namespace pmt{