summaryrefslogtreecommitdiff
path: root/gnuradio-core/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'gnuradio-core/src/lib')
-rw-r--r--gnuradio-core/src/lib/.gitignore2
-rw-r--r--gnuradio-core/src/lib/Makefile.am5
-rw-r--r--gnuradio-core/src/lib/filter/Makefile.am4
-rw-r--r--gnuradio-core/src/lib/filter/gr_cma_equalizer_cc.cc3
-rw-r--r--gnuradio-core/src/lib/g72x/Makefile.am2
-rw-r--r--gnuradio-core/src/lib/general/Makefile.am5
-rw-r--r--gnuradio-core/src/lib/general/complex_vec_test.cc82
-rw-r--r--gnuradio-core/src/lib/general/complex_vec_test.h27
-rw-r--r--gnuradio-core/src/lib/general/complex_vec_test.i25
-rw-r--r--gnuradio-core/src/lib/general/general.i6
-rw-r--r--gnuradio-core/src/lib/general/gr_align_on_samplenumbers_ss.i3
-rw-r--r--gnuradio-core/src/lib/general/gr_bin_statistics_f.i7
-rw-r--r--gnuradio-core/src/lib/general/gr_clock_recovery_mm_cc.i7
-rw-r--r--gnuradio-core/src/lib/general/gr_clock_recovery_mm_ff.i7
-rw-r--r--gnuradio-core/src/lib/general/gr_feval.i7
-rw-r--r--gnuradio-core/src/lib/general/gr_fft_vcc.i4
-rw-r--r--gnuradio-core/src/lib/general/gr_fft_vfc.cc6
-rw-r--r--gnuradio-core/src/lib/general/gr_fft_vfc.h10
-rw-r--r--gnuradio-core/src/lib/general/gr_fft_vfc.i9
-rw-r--r--gnuradio-core/src/lib/general/gr_nop.cc2
-rw-r--r--gnuradio-core/src/lib/general/gr_nop.h14
-rw-r--r--gnuradio-core/src/lib/general/gr_nop.i11
-rw-r--r--gnuradio-core/src/lib/general/gr_null_sink.cc2
-rw-r--r--gnuradio-core/src/lib/general/gr_null_sink.h16
-rw-r--r--gnuradio-core/src/lib/general/gr_null_sink.i11
-rw-r--r--gnuradio-core/src/lib/general/gr_null_source.cc2
-rw-r--r--gnuradio-core/src/lib/general/gr_null_source.h14
-rw-r--r--gnuradio-core/src/lib/general/gr_null_source.i11
-rw-r--r--gnuradio-core/src/lib/general/gr_ofdm_mapper_bcv.i2
-rw-r--r--gnuradio-core/src/lib/general/gr_unpack_k_bits_bb.i2
-rw-r--r--gnuradio-core/src/lib/gengen/Makefile.am4
-rwxr-xr-xgnuradio-core/src/lib/gengen/gr_add_const_vXX.cc.t4
-rwxr-xr-xgnuradio-core/src/lib/gengen/gr_add_const_vXX.h.t10
-rwxr-xr-xgnuradio-core/src/lib/gengen/gr_add_const_vXX.i.t8
-rwxr-xr-xgnuradio-core/src/lib/gengen/gr_multiply_const_vXX.cc.t4
-rwxr-xr-xgnuradio-core/src/lib/gengen/gr_multiply_const_vXX.h.t10
-rwxr-xr-xgnuradio-core/src/lib/gengen/gr_multiply_const_vXX.i.t8
-rw-r--r--gnuradio-core/src/lib/io/gr_message_source.i8
-rw-r--r--gnuradio-core/src/lib/missing/Makefile.am2
-rw-r--r--gnuradio-core/src/lib/reed-solomon/Makefile.am2
-rw-r--r--gnuradio-core/src/lib/runtime/gr_basic_block.cc2
-rw-r--r--gnuradio-core/src/lib/runtime/gr_basic_block.h2
-rw-r--r--gnuradio-core/src/lib/runtime/gr_basic_block.i6
-rw-r--r--gnuradio-core/src/lib/runtime/gr_block.i5
-rw-r--r--gnuradio-core/src/lib/runtime/gr_hier_block2.cc5
-rw-r--r--gnuradio-core/src/lib/runtime/gr_hier_block2.h2
-rw-r--r--gnuradio-core/src/lib/runtime/gr_hier_block2.i7
-rw-r--r--gnuradio-core/src/lib/runtime/gr_msg_queue.i65
-rw-r--r--gnuradio-core/src/lib/runtime/gr_single_threaded_scheduler.i3
-rw-r--r--gnuradio-core/src/lib/runtime/gr_top_block.cc6
-rw-r--r--gnuradio-core/src/lib/runtime/gr_top_block.h7
-rw-r--r--gnuradio-core/src/lib/runtime/gr_top_block.i43
-rw-r--r--gnuradio-core/src/lib/runtime/runtime.i7
-rw-r--r--gnuradio-core/src/lib/swig/.gitignore61
-rw-r--r--gnuradio-core/src/lib/swig/Makefile.am94
-rw-r--r--gnuradio-core/src/lib/swig/Makefile.swig.gen1548
-rw-r--r--gnuradio-core/src/lib/swig/gnuradio.i26
-rw-r--r--gnuradio-core/src/lib/swig/gnuradio_core.py (renamed from gnuradio-core/src/lib/swig/gnuradio_swig_python.py)16
-rw-r--r--gnuradio-core/src/lib/swig/gnuradio_core_filter.i (renamed from gnuradio-core/src/lib/swig/gnuradio_swig_py_filter.i)22
-rw-r--r--gnuradio-core/src/lib/swig/gnuradio_core_general.i (renamed from gnuradio-core/src/lib/swig/gnuradio_swig_py_general.i)42
-rw-r--r--gnuradio-core/src/lib/swig/gnuradio_core_gengen.i (renamed from gnuradio-core/src/lib/swig/gnuradio_swig_py_gengen.i)22
-rw-r--r--gnuradio-core/src/lib/swig/gnuradio_core_hier.i (renamed from gnuradio-core/src/lib/swig/gnuradio_swig_py_hier.i)22
-rw-r--r--gnuradio-core/src/lib/swig/gnuradio_core_io.i (renamed from gnuradio-core/src/lib/swig/gnuradio_swig_py_io.i)22
-rw-r--r--gnuradio-core/src/lib/swig/gnuradio_core_runtime.i (renamed from gnuradio-core/src/lib/swig/gnuradio_swig_py_runtime.i)26
-rw-r--r--gnuradio-core/src/lib/swig/gnuradio_swig_bug_workaround.h45
-rw-r--r--gnuradio-core/src/lib/swig/gr_swig_block_magic.i39
-rw-r--r--gnuradio-core/src/lib/swig/guile/std_complex.i37
-rw-r--r--gnuradio-core/src/lib/swig/guile/std_vector.i437
68 files changed, 1617 insertions, 1370 deletions
diff --git a/gnuradio-core/src/lib/.gitignore b/gnuradio-core/src/lib/.gitignore
index e3bc1ee6a..0d5077da5 100644
--- a/gnuradio-core/src/lib/.gitignore
+++ b/gnuradio-core/src/lib/.gitignore
@@ -1,7 +1,5 @@
/Makefile
/Makefile.in
-/.la
-/.lo
/.deps
/.libs
/*.la
diff --git a/gnuradio-core/src/lib/Makefile.am b/gnuradio-core/src/lib/Makefile.am
index f3a3accdb..1281b4aa6 100644
--- a/gnuradio-core/src/lib/Makefile.am
+++ b/gnuradio-core/src/lib/Makefile.am
@@ -24,10 +24,7 @@ include $(top_srcdir)/Makefile.common
## Process this file with automake to produce Makefile.in
# We've got to build . before swig
-SUBDIRS = missing runtime filter viterbi general gengen g72x reed-solomon io hier .
-if PYTHON
-SUBDIRS += swig
-endif
+SUBDIRS = missing runtime filter viterbi general gengen g72x reed-solomon io hier . swig
AM_CPPFLAGS = $(STD_DEFINES_AND_INCLUDES) $(CPPUNIT_INCLUDES) $(WITH_INCLUDES)
diff --git a/gnuradio-core/src/lib/filter/Makefile.am b/gnuradio-core/src/lib/filter/Makefile.am
index 6d2ec1c7e..38edee3d5 100644
--- a/gnuradio-core/src/lib/filter/Makefile.am
+++ b/gnuradio-core/src/lib/filter/Makefile.am
@@ -67,7 +67,7 @@ code_generator = \
# Source built by Python into $(builddir)
-BUILT_SOURCES = \
+BUILT_SOURCES += \
$(GENERATED_H) \
$(GENERATED_I) \
$(GENERATED_CC) \
@@ -178,7 +178,7 @@ EXTRA_libfilter_la_SOURCES = \
$(armv7_a_qa_CODE)
-EXTRA_DIST = \
+EXTRA_DIST += \
3dnow_float_dotprod_really_simple.S \
3dnow_float_dotprod_simple.S \
$(code_generator)
diff --git a/gnuradio-core/src/lib/filter/gr_cma_equalizer_cc.cc b/gnuradio-core/src/lib/filter/gr_cma_equalizer_cc.cc
index 8252509bb..f80bfd518 100644
--- a/gnuradio-core/src/lib/filter/gr_cma_equalizer_cc.cc
+++ b/gnuradio-core/src/lib/filter/gr_cma_equalizer_cc.cc
@@ -36,6 +36,7 @@ gr_cma_equalizer_cc::gr_cma_equalizer_cc(int num_taps, float modulus, float mu)
: gr_adaptive_fir_ccf("cma_equalizer_cc", 1, std::vector<float>(num_taps)),
d_modulus(modulus), d_mu(mu)
{
- d_taps[0] = 1.0;
+ if (num_taps > 0)
+ d_taps[0] = 1.0;
}
diff --git a/gnuradio-core/src/lib/g72x/Makefile.am b/gnuradio-core/src/lib/g72x/Makefile.am
index 6c41f1911..d2700376f 100644
--- a/gnuradio-core/src/lib/g72x/Makefile.am
+++ b/gnuradio-core/src/lib/g72x/Makefile.am
@@ -24,4 +24,4 @@ include $(top_srcdir)/Makefile.common
noinst_LTLIBRARIES = libccitt.la
libccitt_la_SOURCES = g711.c g72x.c g721.c g723_24.c g723_40.c g72x.h
-EXTRA_DIST = encode.c decode.c
+EXTRA_DIST += encode.c decode.c
diff --git a/gnuradio-core/src/lib/general/Makefile.am b/gnuradio-core/src/lib/general/Makefile.am
index 0e9109d6c..c6440506d 100644
--- a/gnuradio-core/src/lib/general/Makefile.am
+++ b/gnuradio-core/src/lib/general/Makefile.am
@@ -29,11 +29,12 @@ BUILT_SOURCES =
# ----------------------------------------------------------------
-EXTRA_DIST = \
+EXTRA_DIST += \
gen_sine_table.py \
gr_constants.cc.in
libgeneral_la_SOURCES = \
+ complex_vec_test.cc \
gr_additive_scrambler_bb.cc \
gr_agc_cc.cc \
gr_agc_ff.cc \
@@ -191,6 +192,7 @@ libgeneral_qa_la_SOURCES = \
qa_gri_lfsr.cc
grinclude_HEADERS = \
+ complex_vec_test.h \
gr_additive_scrambler_bb.h \
gr_agc_cc.h \
gr_agc_ff.h \
@@ -365,6 +367,7 @@ noinst_HEADERS = \
if PYTHON
swiginclude_HEADERS = \
+ complex_vec_test.i \
general.i \
gr_additive_scrambler_bb.i \
gr_agc_cc.i \
diff --git a/gnuradio-core/src/lib/general/complex_vec_test.cc b/gnuradio-core/src/lib/general/complex_vec_test.cc
new file mode 100644
index 000000000..df25c325e
--- /dev/null
+++ b/gnuradio-core/src/lib/general/complex_vec_test.cc
@@ -0,0 +1,82 @@
+#include <complex_vec_test.h>
+#include <stddef.h>
+
+std::vector<std::complex<float> >
+complex_vec_test0()
+{
+ std::vector<std::complex<float> > r(5);
+
+ for (size_t i = 0; i < r.size(); i++)
+ r[i] = std::complex<float>(i, i);
+
+ return r;
+}
+
+std::vector<std::complex<float> >
+complex_vec_test1(const std::vector<std::complex<float> > &input)
+{
+ std::vector<std::complex<float> > r(input.size());
+
+ for (size_t i = 0; i < input.size(); i++)
+ r[i] = std::complex<float>(input[i].real()+0.5, input[i].imag()-0.5);
+
+ return r;
+}
+
+std::complex<float>
+complex_scalar_test0()
+{
+ return std::complex<float>(5, 5);
+}
+
+std::complex<float>
+complex_scalar_test1(std::complex<float> input)
+{
+ return std::complex<float>(input.real()+0.5, input.imag()-0.5);
+}
+
+
+std::vector<float>
+float_vec_test0()
+{
+ std::vector<float> r(5);
+
+ for (size_t i = 0; i < r.size(); i++)
+ r[i] = (float) i;
+
+ return r;
+}
+
+std::vector<float>
+float_vec_test1(const std::vector<float> &input)
+{
+ std::vector<float> r(input.size());
+
+ for (size_t i = 0; i < input.size(); i++)
+ r[i] = input[i] + 0.5;
+
+ return r;
+}
+
+std::vector<int>
+int_vec_test0()
+{
+ std::vector<int> r(5);
+
+ for (size_t i = 0; i < r.size(); i++)
+ r[i] = (int) i;
+
+ return r;
+}
+
+std::vector<int>
+int_vec_test1(const std::vector<int> &input)
+{
+ std::vector<int> r(input.size());
+
+ for (size_t i = 0; i < input.size(); i++)
+ r[i] = input[i] + 1;
+
+ return r;
+}
+
diff --git a/gnuradio-core/src/lib/general/complex_vec_test.h b/gnuradio-core/src/lib/general/complex_vec_test.h
new file mode 100644
index 000000000..d13dedf63
--- /dev/null
+++ b/gnuradio-core/src/lib/general/complex_vec_test.h
@@ -0,0 +1,27 @@
+#include <vector>
+#include <complex>
+
+std::vector<std::complex<float> >
+complex_vec_test0();
+
+std::vector<std::complex<float> >
+complex_vec_test1(const std::vector<std::complex<float> > &input);
+
+std::complex<float>
+complex_scalar_test0();
+
+std::complex<float>
+complex_scalar_test1(std::complex<float> input);
+
+std::vector<int>
+int_vec_test0();
+
+std::vector<int>
+int_vec_test1(const std::vector<int> &input);
+
+std::vector<float>
+float_vec_test0();
+
+std::vector<float>
+float_vec_test1(const std::vector<float> &input);
+
diff --git a/gnuradio-core/src/lib/general/complex_vec_test.i b/gnuradio-core/src/lib/general/complex_vec_test.i
new file mode 100644
index 000000000..4b95633be
--- /dev/null
+++ b/gnuradio-core/src/lib/general/complex_vec_test.i
@@ -0,0 +1,25 @@
+
+std::vector<std::complex<float> >
+complex_vec_test0();
+
+std::vector<std::complex<float> >
+complex_vec_test1(const std::vector<std::complex<float> > &input);
+
+std::complex<float>
+complex_scalar_test0();
+
+std::complex<float>
+complex_scalar_test1(std::complex<float> input);
+
+std::vector<int>
+int_vec_test0();
+
+std::vector<int>
+int_vec_test1(const std::vector<int> &input);
+
+std::vector<float>
+float_vec_test0();
+
+std::vector<float>
+float_vec_test1(const std::vector<float> &input);
+
diff --git a/gnuradio-core/src/lib/general/general.i b/gnuradio-core/src/lib/general/general.i
index 0f8b57a44..fb9c4c0f2 100644
--- a/gnuradio-core/src/lib/general/general.i
+++ b/gnuradio-core/src/lib/general/general.i
@@ -53,7 +53,7 @@
#include <gr_complex_to_xxx.h>
#include <gr_complex_to_interleaved_short.h>
#include <gr_interleaved_short_to_complex.h>
-#include <gr_endianness.h>
+//#include <gr_endianness.h>
#include <gr_firdes.h>
#include <gr_interleave.h>
#include <gr_deinterleave.h>
@@ -141,6 +141,7 @@
#include <gr_copy.h>
#include <gr_fll_band_edge_cc.h>
#include <gr_additive_scrambler_bb.h>
+#include <complex_vec_test.h>
#include <gr_annotator_alltoall.h>
#include <gr_annotator_1to1.h>
#include <gr_burst_tagger.h>
@@ -176,7 +177,7 @@
%include "gr_align_on_samplenumbers_ss.i"
%include "gr_complex_to_xxx.i"
%include "gr_complex_to_interleaved_short.i"
-%include "gr_endianness.i"
+//%include "gr_endianness.i"
%include "gr_interleaved_short_to_complex.i"
%include "gr_firdes.i"
%include "gr_interleave.i"
@@ -265,6 +266,7 @@
%include "gr_copy.i"
%include "gr_fll_band_edge_cc.i"
%include "gr_additive_scrambler_bb.i"
+%include "complex_vec_test.i"
%include "gr_annotator_alltoall.i"
%include "gr_annotator_1to1.i"
%include "gr_burst_tagger.i"
diff --git a/gnuradio-core/src/lib/general/gr_align_on_samplenumbers_ss.i b/gnuradio-core/src/lib/general/gr_align_on_samplenumbers_ss.i
index 841613ca6..ea73dd46d 100644
--- a/gnuradio-core/src/lib/general/gr_align_on_samplenumbers_ss.i
+++ b/gnuradio-core/src/lib/general/gr_align_on_samplenumbers_ss.i
@@ -22,7 +22,8 @@
GR_SWIG_BLOCK_MAGIC(gr,align_on_samplenumbers_ss);
-gr_align_on_samplenumbers_ss_sptr gr_make_align_on_samplenumbers_ss(int nchan=2, int align_interval=128);
+gr_align_on_samplenumbers_ss_sptr
+gr_make_align_on_samplenumbers_ss(int nchan=2, int align_interval=128) throw (std::exception);
class gr_align_on_samplenumbers_ss : public gr_block
{
diff --git a/gnuradio-core/src/lib/general/gr_bin_statistics_f.i b/gnuradio-core/src/lib/general/gr_bin_statistics_f.i
index 5cec882f0..be98a464b 100644
--- a/gnuradio-core/src/lib/general/gr_bin_statistics_f.i
+++ b/gnuradio-core/src/lib/general/gr_bin_statistics_f.i
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2006 Free Software Foundation, Inc.
+ * Copyright 2006,2010 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -19,6 +19,9 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
+// Directors are only supported in Python, Java and C#. gr_feval_dd uses directors
+#ifdef SWIGPYTHON
+
GR_SWIG_BLOCK_MAGIC(gr,bin_statistics_f);
gr_bin_statistics_f_sptr
@@ -40,3 +43,5 @@ private:
public:
~gr_bin_statistics_f();
};
+
+#endif
diff --git a/gnuradio-core/src/lib/general/gr_clock_recovery_mm_cc.i b/gnuradio-core/src/lib/general/gr_clock_recovery_mm_cc.i
index 98d326b28..27eb70b95 100644
--- a/gnuradio-core/src/lib/general/gr_clock_recovery_mm_cc.i
+++ b/gnuradio-core/src/lib/general/gr_clock_recovery_mm_cc.i
@@ -22,9 +22,10 @@
GR_SWIG_BLOCK_MAGIC(gr,clock_recovery_mm_cc);
-gr_clock_recovery_mm_cc_sptr gr_make_clock_recovery_mm_cc (float omega, float gain_omega,
- float mu, float gain_mu,
- float omega_relative_limit);
+gr_clock_recovery_mm_cc_sptr
+gr_make_clock_recovery_mm_cc (float omega, float gain_omega,
+ float mu, float gain_mu,
+ float omega_relative_limit) throw(std::exception);
class gr_clock_recovery_mm_cc : public gr_sync_block
{
diff --git a/gnuradio-core/src/lib/general/gr_clock_recovery_mm_ff.i b/gnuradio-core/src/lib/general/gr_clock_recovery_mm_ff.i
index 4f08aa760..1b2437000 100644
--- a/gnuradio-core/src/lib/general/gr_clock_recovery_mm_ff.i
+++ b/gnuradio-core/src/lib/general/gr_clock_recovery_mm_ff.i
@@ -22,9 +22,10 @@
GR_SWIG_BLOCK_MAGIC(gr,clock_recovery_mm_ff);
-gr_clock_recovery_mm_ff_sptr gr_make_clock_recovery_mm_ff (float omega, float gain_omega,
- float mu, float gain_mu,
- float omega_relative_limit=0.001);
+gr_clock_recovery_mm_ff_sptr
+gr_make_clock_recovery_mm_ff (float omega, float gain_omega,
+ float mu, float gain_mu,
+ float omega_relative_limit=0.001) throw(std::exception);
class gr_clock_recovery_mm_ff : public gr_sync_block
{
diff --git a/gnuradio-core/src/lib/general/gr_feval.i b/gnuradio-core/src/lib/general/gr_feval.i
index 8594a6fa1..c5522805d 100644
--- a/gnuradio-core/src/lib/general/gr_feval.i
+++ b/gnuradio-core/src/lib/general/gr_feval.i
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2006 Free Software Foundation, Inc.
+ * Copyright 2006,2010 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -43,6 +43,9 @@
*/
+// Directors are only supported in Python, Java and C#
+#ifdef SWIGPYTHON
+
// Enable SWIG directors for these classes
%feature("director") gr_py_feval_dd;
%feature("director") gr_py_feval_cc;
@@ -197,3 +200,5 @@ long gr_feval_ll_example(gr_feval_ll *f, long x);
%rename(feval_example) gr_feval_example;
void gr_feval_example(gr_feval *f);
+
+#endif // SWIGPYTHON
diff --git a/gnuradio-core/src/lib/general/gr_fft_vcc.i b/gnuradio-core/src/lib/general/gr_fft_vcc.i
index 247571374..f35316e70 100644
--- a/gnuradio-core/src/lib/general/gr_fft_vcc.i
+++ b/gnuradio-core/src/lib/general/gr_fft_vcc.i
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2004,2007,2008 Free Software Foundation, Inc.
+ * Copyright 2004,2007,2008,2010 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -23,7 +23,7 @@
GR_SWIG_BLOCK_MAGIC(gr, fft_vcc)
gr_fft_vcc_sptr
-gr_make_fft_vcc (int fft_size, bool forward, const std::vector<float> window, bool shift=false);
+gr_make_fft_vcc (int fft_size, bool forward, const std::vector<float> &window, bool shift=false);
class gr_fft_vcc : public gr_sync_block
{
diff --git a/gnuradio-core/src/lib/general/gr_fft_vfc.cc b/gnuradio-core/src/lib/general/gr_fft_vfc.cc
index 608161efe..561c63740 100644
--- a/gnuradio-core/src/lib/general/gr_fft_vfc.cc
+++ b/gnuradio-core/src/lib/general/gr_fft_vfc.cc
@@ -40,12 +40,12 @@
gr_fft_vfc_sptr
-gr_make_fft_vfc (int fft_size, bool forward, const std::vector<float> window)
+gr_make_fft_vfc (int fft_size, bool forward, const std::vector<float> &window)
{
return gnuradio::get_initial_sptr(new gr_fft_vfc (fft_size, forward, window));
}
-gr_fft_vfc::gr_fft_vfc (int fft_size, bool forward, const std::vector<float> window)
+gr_fft_vfc::gr_fft_vfc (int fft_size, bool forward, const std::vector<float> &window)
: gr_sync_block ("fft_vfc",
gr_make_io_signature (1, 1, fft_size * sizeof (float)),
gr_make_io_signature (1, 1, fft_size * sizeof (gr_complex))),
@@ -107,7 +107,7 @@ gr_fft_vfc::work (int noutput_items,
}
bool
-gr_fft_vfc::set_window(const std::vector<float> window)
+gr_fft_vfc::set_window(const std::vector<float> &window)
{
if(window.size()==0 || window.size()==d_fft_size) {
d_window=window;
diff --git a/gnuradio-core/src/lib/general/gr_fft_vfc.h b/gnuradio-core/src/lib/general/gr_fft_vfc.h
index 054a383ef..074574477 100644
--- a/gnuradio-core/src/lib/general/gr_fft_vfc.h
+++ b/gnuradio-core/src/lib/general/gr_fft_vfc.h
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2004 Free Software Foundation, Inc.
+ * Copyright 2004,2010 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -31,7 +31,7 @@ class gr_fft_vfc;
typedef boost::shared_ptr<gr_fft_vfc> gr_fft_vfc_sptr;
gr_fft_vfc_sptr
-gr_make_fft_vfc (int fft_size, bool forward, const std::vector<float>);
+gr_make_fft_vfc (int fft_size, bool forward, const std::vector<float> &window);
/*!
* \brief Compute forward FFT. float vector in / complex vector out.
@@ -41,13 +41,13 @@ gr_make_fft_vfc (int fft_size, bool forward, const std::vector<float>);
class gr_fft_vfc : public gr_sync_block
{
friend gr_fft_vfc_sptr
- gr_make_fft_vfc (int fft_size, bool forward, const std::vector<float> window);
+ gr_make_fft_vfc (int fft_size, bool forward, const std::vector<float> &window);
unsigned int d_fft_size;
std::vector<float> d_window;
gri_fft_complex *d_fft;
- gr_fft_vfc (int fft_size, bool forward, const std::vector<float> window);
+ gr_fft_vfc (int fft_size, bool forward, const std::vector<float> &window);
public:
~gr_fft_vfc ();
@@ -55,7 +55,7 @@ class gr_fft_vfc : public gr_sync_block
int work (int noutput_items,
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items);
- bool set_window(const std::vector<float> window);
+ bool set_window(const std::vector<float> &window);
};
diff --git a/gnuradio-core/src/lib/general/gr_fft_vfc.i b/gnuradio-core/src/lib/general/gr_fft_vfc.i
index 90c368fe6..149745b58 100644
--- a/gnuradio-core/src/lib/general/gr_fft_vfc.i
+++ b/gnuradio-core/src/lib/general/gr_fft_vfc.i
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2004 Free Software Foundation, Inc.
+ * Copyright 2004,2010 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -23,13 +23,14 @@
GR_SWIG_BLOCK_MAGIC(gr, fft_vfc)
gr_fft_vfc_sptr
-gr_make_fft_vfc (int fft_size, bool forward, const std::vector<float> window);
+gr_make_fft_vfc (int fft_size, bool forward, const std::vector<float> &window)
+throw(std::exception);
class gr_fft_vfc : public gr_sync_block
{
protected:
- gr_fft_vfc (int fft_size, bool forward, const std::vector<float> window);
+ gr_fft_vfc (int fft_size, bool forward, const std::vector<float> &window);
public:
- bool set_window(const std::vector<float> window);
+ bool set_window(const std::vector<float> &window);
};
diff --git a/gnuradio-core/src/lib/general/gr_nop.cc b/gnuradio-core/src/lib/general/gr_nop.cc
index e69c8b340..950ef878e 100644
--- a/gnuradio-core/src/lib/general/gr_nop.cc
+++ b/gnuradio-core/src/lib/general/gr_nop.cc
@@ -33,7 +33,7 @@ gr_nop::gr_nop (size_t sizeof_stream_item)
{
}
-gr_block_sptr
+gr_nop_sptr
gr_make_nop (size_t sizeof_stream_item)
{
return gnuradio::get_initial_sptr (new gr_nop (sizeof_stream_item));
diff --git a/gnuradio-core/src/lib/general/gr_nop.h b/gnuradio-core/src/lib/general/gr_nop.h
index 60b20c5ab..4f18c9183 100644
--- a/gnuradio-core/src/lib/general/gr_nop.h
+++ b/gnuradio-core/src/lib/general/gr_nop.h
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2004 Free Software Foundation, Inc.
+ * Copyright 2004,2010 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -26,14 +26,19 @@
#include <gr_block.h>
#include <stddef.h> // size_t
+class gr_nop;
+typedef boost::shared_ptr<gr_nop> gr_nop_sptr;
+
+gr_nop_sptr
+gr_make_nop (size_t sizeof_stream_item);
+
/*!
* \brief Does nothing. Used for testing only.
* \ingroup misc_blk
*/
class gr_nop : public gr_block
{
- friend gr_block_sptr gr_make_nop (size_t sizeof_stream_item);
-
+ friend gr_nop_sptr gr_make_nop (size_t sizeof_stream_item);
gr_nop (size_t sizeof_stream_item);
public:
@@ -43,7 +48,4 @@ class gr_nop : public gr_block
gr_vector_void_star &output_items);
};
-gr_block_sptr
-gr_make_nop (size_t sizeof_stream_item);
-
#endif /* INCLUDED_GR_NOP_H */
diff --git a/gnuradio-core/src/lib/general/gr_nop.i b/gnuradio-core/src/lib/general/gr_nop.i
index 8220e5c6c..85354d421 100644
--- a/gnuradio-core/src/lib/general/gr_nop.i
+++ b/gnuradio-core/src/lib/general/gr_nop.i
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2004 Free Software Foundation, Inc.
+ * Copyright 2004,2010 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -20,11 +20,12 @@
* Boston, MA 02110-1301, USA.
*/
-%ignore gr_nop;
+GR_SWIG_BLOCK_MAGIC(gr,nop)
+
+gr_nop_sptr gr_make_nop (size_t sizeof_stream_item);
+
class gr_nop : public gr_block {
- friend gr_block_sptr gr_make_nop (size_t sizeof_stream_item);
+private:
gr_nop (size_t sizeof_stream_item);
};
-%rename(nop) gr_make_nop;
-gr_block_sptr gr_make_nop (size_t sizeof_stream_item);
diff --git a/gnuradio-core/src/lib/general/gr_null_sink.cc b/gnuradio-core/src/lib/general/gr_null_sink.cc
index 0b7f2d9e8..67ef57a46 100644
--- a/gnuradio-core/src/lib/general/gr_null_sink.cc
+++ b/gnuradio-core/src/lib/general/gr_null_sink.cc
@@ -34,7 +34,7 @@ gr_null_sink::gr_null_sink (size_t sizeof_stream_item)
{
}
-gr_block_sptr
+gr_null_sink_sptr
gr_make_null_sink (size_t sizeof_stream_item)
{
return gnuradio::get_initial_sptr (new gr_null_sink (sizeof_stream_item));
diff --git a/gnuradio-core/src/lib/general/gr_null_sink.h b/gnuradio-core/src/lib/general/gr_null_sink.h
index 66df5d138..6d00382a5 100644
--- a/gnuradio-core/src/lib/general/gr_null_sink.h
+++ b/gnuradio-core/src/lib/general/gr_null_sink.h
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2004 Free Software Foundation, Inc.
+ * Copyright 2004,2010 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -26,15 +26,20 @@
#include <gr_sync_block.h>
#include <stddef.h> // size_t
+class gr_null_sink;
+typedef boost::shared_ptr<gr_null_sink> gr_null_sink_sptr;
+
+gr_null_sink_sptr
+gr_make_null_sink (size_t sizeof_stream_item);
+
+
/*!
* \brief Bit bucket
* \ingroup sink_blk
*/
-
class gr_null_sink : public gr_sync_block
{
- friend gr_block_sptr gr_make_null_sink (size_t sizeof_stream_item);
-
+ friend gr_null_sink_sptr gr_make_null_sink (size_t sizeof_stream_item);
gr_null_sink (size_t sizeof_stream_item);
public:
@@ -45,7 +50,4 @@ class gr_null_sink : public gr_sync_block
};
-gr_block_sptr
-gr_make_null_sink (size_t sizeof_stream_item);
-
#endif /* INCLUDED_GR_NULL_SINK_H */
diff --git a/gnuradio-core/src/lib/general/gr_null_sink.i b/gnuradio-core/src/lib/general/gr_null_sink.i
index fc4bcffda..e739ce118 100644
--- a/gnuradio-core/src/lib/general/gr_null_sink.i
+++ b/gnuradio-core/src/lib/general/gr_null_sink.i
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2004 Free Software Foundation, Inc.
+ * Copyright 2004,2010 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -20,11 +20,12 @@
* Boston, MA 02110-1301, USA.
*/
-%ignore gr_null_sink;
+GR_SWIG_BLOCK_MAGIC(gr,null_sink)
+
+gr_null_sink_sptr gr_make_null_sink (size_t sizeof_stream_item);
+
class gr_null_sink : public gr_sync_block {
- friend gr_block_sptr gr_make_null_sink (size_t sizeof_stream_item);
+private:
gr_null_sink (size_t sizeof_stream_item);
};
-%rename(null_sink) gr_make_null_sink;
-gr_block_sptr gr_make_null_sink (size_t sizeof_stream_item);
diff --git a/gnuradio-core/src/lib/general/gr_null_source.cc b/gnuradio-core/src/lib/general/gr_null_source.cc
index b65c39035..85fd2db4b 100644
--- a/gnuradio-core/src/lib/general/gr_null_source.cc
+++ b/gnuradio-core/src/lib/general/gr_null_source.cc
@@ -35,7 +35,7 @@ gr_null_source::gr_null_source (size_t sizeof_stream_item)
{
}
-gr_block_sptr
+gr_null_source_sptr
gr_make_null_source (size_t sizeof_stream_item)
{
return gnuradio::get_initial_sptr (new gr_null_source (sizeof_stream_item));
diff --git a/gnuradio-core/src/lib/general/gr_null_source.h b/gnuradio-core/src/lib/general/gr_null_source.h
index 63b1939bf..b1a46a195 100644
--- a/gnuradio-core/src/lib/general/gr_null_source.h
+++ b/gnuradio-core/src/lib/general/gr_null_source.h
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2004 Free Software Foundation, Inc.
+ * Copyright 2004,2010 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -25,14 +25,19 @@
#include <gr_sync_block.h>
+class gr_null_source;
+typedef boost::shared_ptr<gr_null_source> gr_null_source_sptr;
+
+gr_null_source_sptr
+gr_make_null_source (size_t sizeof_stream_item);
+
/*!
* \brief A source of zeros.
* \ingroup source_blk
*/
-
class gr_null_source : public gr_sync_block
{
- friend gr_block_sptr gr_make_null_source (size_t sizeof_stream_item);
+ friend gr_null_source_sptr gr_make_null_source (size_t sizeof_stream_item);
gr_null_source (size_t sizeof_stream_item);
@@ -43,7 +48,4 @@ class gr_null_source : public gr_sync_block
};
-gr_block_sptr
-gr_make_null_source (size_t sizeof_stream_item);
-
#endif /* INCLUDED_GR_NULL_SOURCE_H */
diff --git a/gnuradio-core/src/lib/general/gr_null_source.i b/gnuradio-core/src/lib/general/gr_null_source.i
index f9ddef86f..133161d0a 100644
--- a/gnuradio-core/src/lib/general/gr_null_source.i
+++ b/gnuradio-core/src/lib/general/gr_null_source.i
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2004 Free Software Foundation, Inc.
+ * Copyright 2004,2010 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -20,11 +20,12 @@
* Boston, MA 02110-1301, USA.
*/
-%ignore gr_null_source;
+GR_SWIG_BLOCK_MAGIC(gr,null_source)
+
+gr_null_source_sptr gr_make_null_source (size_t sizeof_stream_item);
+
class gr_null_source : public gr_sync_block {
- friend gr_block_sptr gr_make_null_source (size_t sizeof_stream_item);
+private:
gr_null_source (size_t sizeof_stream_item);
};
-%rename(null_source) gr_make_null_source;
-gr_block_sptr gr_make_null_source (size_t sizeof_stream_item);
diff --git a/gnuradio-core/src/lib/general/gr_ofdm_mapper_bcv.i b/gnuradio-core/src/lib/general/gr_ofdm_mapper_bcv.i
index 30c692926..3850220ba 100644
--- a/gnuradio-core/src/lib/general/gr_ofdm_mapper_bcv.i
+++ b/gnuradio-core/src/lib/general/gr_ofdm_mapper_bcv.i
@@ -26,7 +26,7 @@ gr_ofdm_mapper_bcv_sptr
gr_make_ofdm_mapper_bcv (const std::vector<gr_complex> &constellation,
unsigned int msgq_limit,
unsigned int bits_per_symbol,
- unsigned int fft_length);
+ unsigned int fft_length) throw(std::exception);
class gr_ofdm_mapper_bcv : public gr_sync_block
diff --git a/gnuradio-core/src/lib/general/gr_unpack_k_bits_bb.i b/gnuradio-core/src/lib/general/gr_unpack_k_bits_bb.i
index 5f9a8f134..2e9aa406b 100644
--- a/gnuradio-core/src/lib/general/gr_unpack_k_bits_bb.i
+++ b/gnuradio-core/src/lib/general/gr_unpack_k_bits_bb.i
@@ -22,7 +22,7 @@
GR_SWIG_BLOCK_MAGIC(gr,unpack_k_bits_bb)
-gr_unpack_k_bits_bb_sptr gr_make_unpack_k_bits_bb (int k);
+gr_unpack_k_bits_bb_sptr gr_make_unpack_k_bits_bb (int k) throw(std::exception);
class gr_unpack_k_bits_bb : public gr_sync_interpolator
{
diff --git a/gnuradio-core/src/lib/gengen/Makefile.am b/gnuradio-core/src/lib/gengen/Makefile.am
index 4978ad1c5..cfa043b67 100644
--- a/gnuradio-core/src/lib/gengen/Makefile.am
+++ b/gnuradio-core/src/lib/gengen/Makefile.am
@@ -115,7 +115,7 @@ core_generator = \
gr_moving_average_XX.i.t
# Source built by Python into $(builddir)
-BUILT_SOURCES = \
+BUILT_SOURCES += \
$(GENERATED_H) \
$(GENERATED_I) \
$(GENERATED_CC) \
@@ -123,7 +123,7 @@ BUILT_SOURCES = \
# ----------------------------------------------------------------
-EXTRA_DIST = \
+EXTRA_DIST += \
$(core_generator)
libgengen_la_SOURCES = \
diff --git a/gnuradio-core/src/lib/gengen/gr_add_const_vXX.cc.t b/gnuradio-core/src/lib/gengen/gr_add_const_vXX.cc.t
index 2a0a3ba3f..f49be062e 100755
--- a/gnuradio-core/src/lib/gengen/gr_add_const_vXX.cc.t
+++ b/gnuradio-core/src/lib/gengen/gr_add_const_vXX.cc.t
@@ -30,12 +30,12 @@
#include <gr_io_signature.h>
@SPTR_NAME@
-gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> k)
+gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> &k)
{
return gnuradio::get_initial_sptr (new @NAME@ (k));
}
-@NAME@::@NAME@ (const std::vector<@I_TYPE@> k)
+@NAME@::@NAME@ (const std::vector<@I_TYPE@> &k)
: gr_sync_block ("@BASE_NAME@",
gr_make_io_signature (1, 1, sizeof(@I_TYPE@)*k.size()),
gr_make_io_signature (1, 1, sizeof(@O_TYPE@)*k.size()))
diff --git a/gnuradio-core/src/lib/gengen/gr_add_const_vXX.h.t b/gnuradio-core/src/lib/gengen/gr_add_const_vXX.h.t
index 33b6fc396..574fc686c 100755
--- a/gnuradio-core/src/lib/gengen/gr_add_const_vXX.h.t
+++ b/gnuradio-core/src/lib/gengen/gr_add_const_vXX.h.t
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2004,2006 Free Software Foundation, Inc.
+ * Copyright 2004,2006,2010 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -30,7 +30,7 @@
class @NAME@;
typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
-@SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> k);
+@SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> &k);
/*!
* \brief output vector = input vector + constant vector
@@ -38,14 +38,14 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
*/
class @NAME@ : public gr_sync_block
{
- friend @SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> k);
+ friend @SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> &k);
std::vector<@I_TYPE@> d_k; // the constant
- @NAME@ (const std::vector<@I_TYPE@> k);
+ @NAME@ (const std::vector<@I_TYPE@> &k);
public:
const std::vector<@I_TYPE@> k () const { return d_k; }
- void set_k (const std::vector<@I_TYPE@> k) { d_k = k; }
+ void set_k (const std::vector<@I_TYPE@> &k) { d_k = k; }
int work (int noutput_items,
gr_vector_const_void_star &input_items,
diff --git a/gnuradio-core/src/lib/gengen/gr_add_const_vXX.i.t b/gnuradio-core/src/lib/gengen/gr_add_const_vXX.i.t
index a2e7dd70b..ad1643a7e 100755
--- a/gnuradio-core/src/lib/gengen/gr_add_const_vXX.i.t
+++ b/gnuradio-core/src/lib/gengen/gr_add_const_vXX.i.t
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2004,2006 Free Software Foundation, Inc.
+ * Copyright 2004,2006,2010 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -24,14 +24,14 @@
GR_SWIG_BLOCK_MAGIC(gr,@BASE_NAME@)
-@SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> k);
+@SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> &k);
class @NAME@ : public gr_sync_block
{
private:
- @NAME@ (const std::vector<@I_TYPE@> k);
+ @NAME@ (const std::vector<@I_TYPE@> &k);
public:
std::vector<@I_TYPE@> k () const { return d_k; }
- void set_k (const std::vector<@I_TYPE@> k) { d_k = k; }
+ void set_k (const std::vector<@I_TYPE@> &k) { d_k = k; }
};
diff --git a/gnuradio-core/src/lib/gengen/gr_multiply_const_vXX.cc.t b/gnuradio-core/src/lib/gengen/gr_multiply_const_vXX.cc.t
index 8286453f1..5725c1c46 100755
--- a/gnuradio-core/src/lib/gengen/gr_multiply_const_vXX.cc.t
+++ b/gnuradio-core/src/lib/gengen/gr_multiply_const_vXX.cc.t
@@ -30,12 +30,12 @@
#include <gr_io_signature.h>
@SPTR_NAME@
-gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> k)
+gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> &k)
{
return gnuradio::get_initial_sptr (new @NAME@ (k));
}
-@NAME@::@NAME@ (const std::vector<@I_TYPE@> k)
+@NAME@::@NAME@ (const std::vector<@I_TYPE@> &k)
: gr_sync_block ("@BASE_NAME@",
gr_make_io_signature (1, 1, sizeof(@I_TYPE@)*k.size()),
gr_make_io_signature (1, 1, sizeof(@O_TYPE@)*k.size()))
diff --git a/gnuradio-core/src/lib/gengen/gr_multiply_const_vXX.h.t b/gnuradio-core/src/lib/gengen/gr_multiply_const_vXX.h.t
index 22334505a..81e781895 100755
--- a/gnuradio-core/src/lib/gengen/gr_multiply_const_vXX.h.t
+++ b/gnuradio-core/src/lib/gengen/gr_multiply_const_vXX.h.t
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2004,2006 Free Software Foundation, Inc.
+ * Copyright 2004,2006,2010 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -30,7 +30,7 @@
class @NAME@;
typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
-@SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> k);
+@SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> &k);
/*!
* \brief output vector = input vector * constant vector (element-wise)
@@ -38,14 +38,14 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
*/
class @NAME@ : public gr_sync_block
{
- friend @SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> k);
+ friend @SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> &k);
std::vector<@I_TYPE@> d_k; // the constant
- @NAME@ (const std::vector<@I_TYPE@> k);
+ @NAME@ (const std::vector<@I_TYPE@> &k);
public:
const std::vector<@I_TYPE@> k () const { return d_k; }
- void set_k (const std::vector<@I_TYPE@> k) { d_k = k; }
+ void set_k (const std::vector<@I_TYPE@> &k) { d_k = k; }
int work (int noutput_items,
gr_vector_const_void_star &input_items,
diff --git a/gnuradio-core/src/lib/gengen/gr_multiply_const_vXX.i.t b/gnuradio-core/src/lib/gengen/gr_multiply_const_vXX.i.t
index a2e7dd70b..ad1643a7e 100755
--- a/gnuradio-core/src/lib/gengen/gr_multiply_const_vXX.i.t
+++ b/gnuradio-core/src/lib/gengen/gr_multiply_const_vXX.i.t
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2004,2006 Free Software Foundation, Inc.
+ * Copyright 2004,2006,2010 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -24,14 +24,14 @@
GR_SWIG_BLOCK_MAGIC(gr,@BASE_NAME@)
-@SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> k);
+@SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> &k);
class @NAME@ : public gr_sync_block
{
private:
- @NAME@ (const std::vector<@I_TYPE@> k);
+ @NAME@ (const std::vector<@I_TYPE@> &k);
public:
std::vector<@I_TYPE@> k () const { return d_k; }
- void set_k (const std::vector<@I_TYPE@> k) { d_k = k; }
+ void set_k (const std::vector<@I_TYPE@> &k) { d_k = k; }
};
diff --git a/gnuradio-core/src/lib/io/gr_message_source.i b/gnuradio-core/src/lib/io/gr_message_source.i
index 8a9c762d0..e4e2016d0 100644
--- a/gnuradio-core/src/lib/io/gr_message_source.i
+++ b/gnuradio-core/src/lib/io/gr_message_source.i
@@ -22,6 +22,14 @@
GR_SWIG_BLOCK_MAGIC(gr,message_source);
+#ifdef SWIGGUILE
+// Rename these. Without this, the primitive bindings are OK, but the
+// goops bindings try to create a bogus generic-function...
+// See core.scm for the second part of the workaround.
+%rename(message_source_limit_ctor) gr_make_message_source(size_t itemsize, int msgq_limit);
+%rename(message_source_msgq_ctor) gr_make_message_source(size_t itemsize, gr_msg_queue_sptr msgq);
+#endif
+
gr_message_source_sptr gr_make_message_source (size_t itemsize, int msgq_limit=0);
gr_message_source_sptr gr_make_message_source (size_t itemsize, gr_msg_queue_sptr msgq);
diff --git a/gnuradio-core/src/lib/missing/Makefile.am b/gnuradio-core/src/lib/missing/Makefile.am
index 238370910..bd18cf143 100644
--- a/gnuradio-core/src/lib/missing/Makefile.am
+++ b/gnuradio-core/src/lib/missing/Makefile.am
@@ -23,7 +23,7 @@ include $(top_srcdir)/Makefile.common
AM_CPPFLAGS = $(GNURADIO_INCLUDES) $(WITH_INCLUDES)
-EXTRA_DIST = \
+EXTRA_DIST += \
getopt.h \
getopt.c \
gettimeofday.c \
diff --git a/gnuradio-core/src/lib/reed-solomon/Makefile.am b/gnuradio-core/src/lib/reed-solomon/Makefile.am
index b7bd939b0..5548f4280 100644
--- a/gnuradio-core/src/lib/reed-solomon/Makefile.am
+++ b/gnuradio-core/src/lib/reed-solomon/Makefile.am
@@ -29,7 +29,7 @@ AM_CPPFLAGS = $(STD_DEFINES_AND_INCLUDES) $(CPPUNIT_INCLUDES) $(WITH_INCLUDES)
TESTS = rstest
-EXTRA_DIST = \
+EXTRA_DIST += \
README.karn
noinst_LTLIBRARIES = librs.la
diff --git a/gnuradio-core/src/lib/runtime/gr_basic_block.cc b/gnuradio-core/src/lib/runtime/gr_basic_block.cc
index 2fa1066cb..0e0dad16b 100644
--- a/gnuradio-core/src/lib/runtime/gr_basic_block.cc
+++ b/gnuradio-core/src/lib/runtime/gr_basic_block.cc
@@ -56,7 +56,7 @@ gr_basic_block::~gr_basic_block()
}
gr_basic_block_sptr
-gr_basic_block::basic_block()
+gr_basic_block::to_basic_block()
{
return shared_from_this();
}
diff --git a/gnuradio-core/src/lib/runtime/gr_basic_block.h b/gnuradio-core/src/lib/runtime/gr_basic_block.h
index b8797fdc6..d059a4bd3 100644
--- a/gnuradio-core/src/lib/runtime/gr_basic_block.h
+++ b/gnuradio-core/src/lib/runtime/gr_basic_block.h
@@ -81,7 +81,7 @@ public:
std::string name() const { return d_name; }
gr_io_signature_sptr input_signature() const { return d_input_signature; }
gr_io_signature_sptr output_signature() const { return d_output_signature; }
- gr_basic_block_sptr basic_block(); // Needed for Python type coercion
+ gr_basic_block_sptr to_basic_block(); // Needed for Python/Guile type coercion
/*!
* \brief Confirm that ninputs and noutputs is an acceptable combination.
diff --git a/gnuradio-core/src/lib/runtime/gr_basic_block.i b/gnuradio-core/src/lib/runtime/gr_basic_block.i
index 60e08aac3..03d4725d5 100644
--- a/gnuradio-core/src/lib/runtime/gr_basic_block.i
+++ b/gnuradio-core/src/lib/runtime/gr_basic_block.i
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2006 Free Software Foundation, Inc.
+ * Copyright 2006,2010 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -40,13 +40,15 @@ public:
gr_io_signature_sptr input_signature() const;
gr_io_signature_sptr output_signature() const;
long unique_id() const;
- gr_basic_block_sptr basic_block();
+ gr_basic_block_sptr to_basic_block();
bool check_topology (int ninputs, int noutputs);
};
%rename(block_ncurrently_allocated) gr_basic_block_ncurrently_allocated;
long gr_basic_block_ncurrently_allocated();
+#ifdef SWIGPYTHON
%pythoncode %{
gr_basic_block_sptr.__repr__ = lambda self: "<gr_basic_block %s (%d)>" % (self.name(), self.unique_id ())
%}
+#endif
diff --git a/gnuradio-core/src/lib/runtime/gr_block.i b/gnuradio-core/src/lib/runtime/gr_block.i
index 2de354878..bb0c5f221 100644
--- a/gnuradio-core/src/lib/runtime/gr_block.i
+++ b/gnuradio-core/src/lib/runtime/gr_block.i
@@ -56,8 +56,3 @@ class gr_block : public gr_basic_block {
gr_block_detail_sptr detail () const { return d_detail; }
void set_detail (gr_block_detail_sptr detail) { d_detail = detail; }
};
-
-%pythoncode %{
-gr_block_sptr.__repr__ = lambda self: "<gr_block %s (%d)>" % (self.name(), self.unique_id ())
-gr_block_sptr.block = lambda self: self
-%}
diff --git a/gnuradio-core/src/lib/runtime/gr_hier_block2.cc b/gnuradio-core/src/lib/runtime/gr_hier_block2.cc
index e3a25e1a8..d6e317136 100644
--- a/gnuradio-core/src/lib/runtime/gr_hier_block2.cc
+++ b/gnuradio-core/src/lib/runtime/gr_hier_block2.cc
@@ -61,6 +61,11 @@ gr_hier_block2::self()
return shared_from_this();
}
+gr_hier_block2_sptr
+gr_hier_block2::to_hier_block2()
+{
+ return cast_to_hier_block2_sptr(shared_from_this());
+}
void
gr_hier_block2::connect(gr_basic_block_sptr block)
diff --git a/gnuradio-core/src/lib/runtime/gr_hier_block2.h b/gnuradio-core/src/lib/runtime/gr_hier_block2.h
index f50b1cb94..0a40c36b7 100644
--- a/gnuradio-core/src/lib/runtime/gr_hier_block2.h
+++ b/gnuradio-core/src/lib/runtime/gr_hier_block2.h
@@ -147,6 +147,8 @@ public:
// This is a public method for ease of code organization, but should be
// ignored by the user.
gr_flat_flowgraph_sptr flatten() const;
+
+ gr_hier_block2_sptr to_hier_block2(); // Needed for Python/Guile type coercion
};
inline gr_hier_block2_sptr cast_to_hier_block2_sptr(gr_basic_block_sptr block) {
diff --git a/gnuradio-core/src/lib/runtime/gr_hier_block2.i b/gnuradio-core/src/lib/runtime/gr_hier_block2.i
index a62f50e84..32b656e24 100644
--- a/gnuradio-core/src/lib/runtime/gr_hier_block2.i
+++ b/gnuradio-core/src/lib/runtime/gr_hier_block2.i
@@ -34,6 +34,11 @@ gr_hier_block2_sptr gr_make_hier_block2(const std::string name,
gr_io_signature_sptr output_signature)
throw (std::runtime_error);
+// Rename connect and disconnect so that we can more easily build a
+// better interface in scripting land.
+%rename(primitive_connect) gr_hier_block2::connect;
+%rename(primitive_disconnect) gr_hier_block2::disconnect;
+
class gr_hier_block2 : public gr_basic_block
{
private:
@@ -57,4 +62,6 @@ public:
void disconnect_all();
void lock();
void unlock();
+
+ gr_hier_block2_sptr to_hier_block2(); // Needed for Python/Guile type coercion
};
diff --git a/gnuradio-core/src/lib/runtime/gr_msg_queue.i b/gnuradio-core/src/lib/runtime/gr_msg_queue.i
index 9ca92b6ec..c9214bef3 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 Free Software Foundation, Inc.
+ * Copyright 2005,2009,2010 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -81,6 +81,7 @@ public:
* functions into the gr.msg_queue wrapper class, so that everything
* appears normal. (An evil laugh is heard in the distance...)
*/
+#ifdef SWIGPYTHON
%inline %{
gr_message_sptr gr_py_msg_queue__delete_head(gr_msg_queue_sptr q) {
gr_message_sptr msg;
@@ -103,3 +104,65 @@ gr_msg_queue_sptr.delete_head = gr_py_msg_queue__delete_head
gr_msg_queue_sptr.insert_tail = gr_py_msg_queue__insert_tail
gr_msg_queue_sptr.handle = gr_py_msg_queue__insert_tail
%}
+#endif // SWIGPYTHON
+
+/*
+ * Similar trickery as above, only this time for Guile
+ */
+#ifdef SWIGGUILE
+
+%{
+ struct arg_holder {
+ gr_msg_queue_sptr q;
+ gr_message_sptr msg;
+ };
+
+ static void *
+ insert_tail_shim(void *arg)
+ {
+ arg_holder *a = (arg_holder *)arg;
+ a->q->insert_tail(a->msg);
+ return 0;
+ }
+
+ static void *
+ delete_head_shim(void *arg)
+ {
+ arg_holder *a = (arg_holder *)arg;
+ a->msg = a->q->delete_head();
+ return 0;
+ }
+%}
+
+%inline %{
+
+ // handle and insert_tail are equivalent
+ static void
+ handle(gr_msg_queue_sptr q, gr_message_sptr msg)
+ {
+ arg_holder a;
+ a.q = q;
+ a.msg = msg;
+ scm_without_guile(insert_tail_shim, (void *) &a);
+ }
+
+ static void
+ insert_tail(gr_msg_queue_sptr q, gr_message_sptr msg)
+ {
+ arg_holder a;
+ a.q = q;
+ a.msg = msg;
+ scm_without_guile(insert_tail_shim, (void *) &a);
+ }
+
+ static gr_message_sptr
+ delete_head(gr_msg_queue_sptr q)
+ {
+ arg_holder a;
+ a.q = q;
+ scm_without_guile(delete_head_shim, (void *) &a);
+ return a.msg;
+ }
+%}
+
+#endif // SWIGGUILE
diff --git a/gnuradio-core/src/lib/runtime/gr_single_threaded_scheduler.i b/gnuradio-core/src/lib/runtime/gr_single_threaded_scheduler.i
index 5e9032449..2378a1880 100644
--- a/gnuradio-core/src/lib/runtime/gr_single_threaded_scheduler.i
+++ b/gnuradio-core/src/lib/runtime/gr_single_threaded_scheduler.i
@@ -42,6 +42,7 @@ class gr_single_threaded_scheduler {
gr_single_threaded_scheduler (const std::vector<gr_block_sptr> &modules);
};
+#ifdef SWIGPYTHON
%inline %{
void sts_pyrun (gr_single_threaded_scheduler_sptr s) {
Py_BEGIN_ALLOW_THREADS; // release global interpreter lock
@@ -49,3 +50,5 @@ class gr_single_threaded_scheduler {
Py_END_ALLOW_THREADS; // acquire global interpreter lock
}
%}
+#endif
+
diff --git a/gnuradio-core/src/lib/runtime/gr_top_block.cc b/gnuradio-core/src/lib/runtime/gr_top_block.cc
index 09e46dfbb..f341525c0 100644
--- a/gnuradio-core/src/lib/runtime/gr_top_block.cc
+++ b/gnuradio-core/src/lib/runtime/gr_top_block.cc
@@ -95,3 +95,9 @@ gr_top_block::dump()
{
d_impl->dump();
}
+
+gr_top_block_sptr
+gr_top_block::to_top_block()
+{
+ return cast_to_top_block_sptr(shared_from_this());
+}
diff --git a/gnuradio-core/src/lib/runtime/gr_top_block.h b/gnuradio-core/src/lib/runtime/gr_top_block.h
index 8052954e3..ed244cb7c 100644
--- a/gnuradio-core/src/lib/runtime/gr_top_block.h
+++ b/gnuradio-core/src/lib/runtime/gr_top_block.h
@@ -105,6 +105,13 @@ public:
* Displays flattened flowgraph edges and block connectivity
*/
void dump();
+
+ gr_top_block_sptr to_top_block(); // Needed for Python/Guile type coercion
};
+inline gr_top_block_sptr cast_to_top_block_sptr(gr_basic_block_sptr block) {
+ return boost::dynamic_pointer_cast<gr_top_block, gr_basic_block>(block);
+}
+
+
#endif /* INCLUDED_GR_TOP_BLOCK_H */
diff --git a/gnuradio-core/src/lib/runtime/gr_top_block.i b/gnuradio-core/src/lib/runtime/gr_top_block.i
index 670e5b5e5..90fa18b94 100644
--- a/gnuradio-core/src/lib/runtime/gr_top_block.i
+++ b/gnuradio-core/src/lib/runtime/gr_top_block.i
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2007,2008 Free Software Foundation, Inc.
+ * Copyright 2007,2008,2010 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -42,13 +42,17 @@ public:
void start() throw (std::runtime_error);
void stop();
- void wait();
- void run();
+ //void wait();
+ //void run() throw (std::runtime_error);
void lock();
void unlock() throw (std::runtime_error);
void dump();
+
+ gr_top_block_sptr to_top_block(); // Needed for Python/Guile type coercion
};
+#ifdef SWIGPYTHON
+
%inline %{
void top_block_run_unlocked(gr_top_block_sptr r) throw (std::runtime_error)
{
@@ -64,3 +68,36 @@ void top_block_wait_unlocked(gr_top_block_sptr r) throw (std::runtime_error)
Py_END_ALLOW_THREADS; // acquire global interpreter lock
}
%}
+
+#endif
+
+#ifdef SWIGGUILE
+
+%{
+ struct tb_arg_holder {
+ gr_top_block_sptr tb;
+ };
+
+ static void *
+ tb_wait_shim(void *arg)
+ {
+ tb_arg_holder *a = (tb_arg_holder *)arg;
+ a->tb->wait();
+ return 0;
+ }
+
+%}
+
+%inline %{
+
+ static void
+ top_block_wait_unlocked(gr_top_block_sptr r) throw (std::runtime_error)
+ {
+ tb_arg_holder a;
+ a.tb = r;
+ scm_without_guile(tb_wait_shim, (void *) &a);
+ }
+
+%}
+
+#endif
diff --git a/gnuradio-core/src/lib/runtime/runtime.i b/gnuradio-core/src/lib/runtime/runtime.i
index 20cf68a03..ca89b8fbd 100644
--- a/gnuradio-core/src/lib/runtime/runtime.i
+++ b/gnuradio-core/src/lib/runtime/runtime.i
@@ -40,6 +40,13 @@
#include <gr_top_block.h>
%}
+%constant int sizeof_char = sizeof(char);
+%constant int sizeof_short = sizeof(short);
+%constant int sizeof_int = sizeof(int);
+%constant int sizeof_float = sizeof(float);
+%constant int sizeof_double = sizeof(double);
+%constant int sizeof_gr_complex = sizeof(gr_complex);
+
%include <gr_io_signature.i>
%include <gr_buffer.i>
%include <gr_basic_block.i>
diff --git a/gnuradio-core/src/lib/swig/.gitignore b/gnuradio-core/src/lib/swig/.gitignore
index 9d7d01056..a6f145618 100644
--- a/gnuradio-core/src/lib/swig/.gitignore
+++ b/gnuradio-core/src/lib/swig/.gitignore
@@ -10,27 +10,40 @@
/swigrun.py
/swigrun_wrap.c
/Makefile.swigdeps.new
-/gnuradio_swig_py_runtime.d
-/gnuradio_swig_py_general.d
-/gnuradio_swig_py_gengen.d
-/gnuradio_swig_py_filter.d
-/gnuradio_swig_py_io.d
-/gnuradio_swig_bug_workaround.h
-/gnuradio_swig_py_runtime.cc
-/gnuradio_swig_py_runtime.h
-/gnuradio_swig_py_runtime.py
-/gnuradio_swig_py_general.cc
-/gnuradio_swig_py_general.h
-/gnuradio_swig_py_general.py
-/gnuradio_swig_py_gengen.cc
-/gnuradio_swig_py_gengen.h
-/gnuradio_swig_py_gengen.py
-/gnuradio_swig_py_filter.cc
-/gnuradio_swig_py_filter.h
-/gnuradio_swig_py_filter.py
-/gnuradio_swig_py_io.cc
-/gnuradio_swig_py_io.h
-/gnuradio_swig_py_io.py
-/gnuradio_swig_py_hier.cc
-/gnuradio_swig_py_hier.h
-/gnuradio_swig_py_hier.py
+gnuradio_core_filter.cc
+gnuradio_core_filter.d
+gnuradio_core_filter.h
+gnuradio_core_filter.py
+gnuradio_core_filter.scm
+gnuradio_core_filter-primitive.scm
+gnuradio_core_general.cc
+gnuradio_core_general.d
+gnuradio_core_general.h
+gnuradio_core_general.py
+gnuradio_core_general.scm
+gnuradio_core_general-primitive.scm
+gnuradio_core_gengen.cc
+gnuradio_core_gengen.d
+gnuradio_core_gengen.h
+gnuradio_core_gengen.py
+gnuradio_core_gengen.scm
+gnuradio_core_gengen-primitive.scm
+gnuradio_core_hier.cc
+gnuradio_core_hier.d
+gnuradio_core_hier.h
+gnuradio_core_hier.py
+gnuradio_core_hier.scm
+gnuradio_core_hier-primitive.scm
+gnuradio_core_io.cc
+gnuradio_core_io.d
+gnuradio_core_io.h
+gnuradio_core_io.py
+gnuradio_core_io.scm
+gnuradio_core_io-primitive.scm
+gnuradio_core_runtime.cc
+gnuradio_core_runtime.d
+gnuradio_core_runtime.h
+gnuradio_core_runtime.py
+gnuradio_core_runtime.scm
+gnuradio_core_runtime-primitive.scm
+
diff --git a/gnuradio-core/src/lib/swig/Makefile.am b/gnuradio-core/src/lib/swig/Makefile.am
index 1a50b8c8e..f8e7640ae 100644
--- a/gnuradio-core/src/lib/swig/Makefile.am
+++ b/gnuradio-core/src/lib/swig/Makefile.am
@@ -20,12 +20,26 @@
#
include $(top_srcdir)/Makefile.common
+include $(top_srcdir)/Makefile.swig
-if PYTHON
AM_CPPFLAGS = -I$(srcdir) $(STD_DEFINES_AND_INCLUDES) $(PYTHON_CPPFLAGS) \
$(WITH_INCLUDES)
-EXTRA_DIST = gen-swig-bug-fix
+# ----------------------------------------------------------------
+# We've split the previously monstrous gnuradio_core into 6
+# smaller pieces. This reduces compile time coupling and creates
+# smaller pieces for the compiler to digest. prior to this change, on
+# X86_64, g++'s resident set size was 650MB!
+# ----------------------------------------------------------------
+
+TOP_SWIG_IFILES = \
+ gnuradio_core_runtime.i \
+ gnuradio_core_general.i \
+ gnuradio_core_gengen.i \
+ gnuradio_core_filter.i \
+ gnuradio_core_io.i \
+ gnuradio_core_hier.i
+
# SWIG headers get installed in ${prefix}/include/gnuradio/swig
swiginclude_HEADERS = \
@@ -33,71 +47,45 @@ swiginclude_HEADERS = \
gr_swig_block_magic.i \
gr_shared_ptr.i
+# SWIG headers that get installed in ${prefix}/include/gnuradio/swig/...
+nobase_swiginclude_HEADERS = \
+ guile/std_complex.i \
+ guile/std_vector.i
+
+
# special install for this top-level Python script which includes all
# of the split Python libraries.
ourpythondir = $(grpythondir)/gr
-ourpython_PYTHON = gnuradio_swig_python.py
+ourpython_PYTHON = gnuradio_core.py
# ----------------------------------------------------------------
# FIXME As of swig 1.3.31, this still seems to be required...
+# gnuradio_swig_bug_workaround.h : gnuradio_core_runtime.py $(srcdir)/gen-swig-bug-fix
+# $(PYTHON) $(srcdir)/gen-swig-bug-fix python/gnuradio_core_runtime.cc $@
-gnuradio_swig_bug_workaround.h : gnuradio_swig_py_runtime.cc $(srcdir)/gen-swig-bug-fix
- $(PYTHON) $(srcdir)/gen-swig-bug-fix gnuradio_swig_py_runtime.cc $@
+EXTRA_DIST += gen-swig-bug-fix
# C/C++ headers get installed in ${prefix}/include/gnuradio
-grinclude_HEADERS = \
- gnuradio_swig_bug_workaround.h
+grinclude_HEADERS = gnuradio_swig_bug_workaround.h
-# ----------------------------------------------------------------
-# We've split the previously monstrous gnuradio_swig_python into 6
-# smaller pieces. This reduces compile time coupling and creates
-# smaller pieces for the compiler to digest. prior to this change, on
-# X86_64, g++'s resident set size was 650MB!
-# ----------------------------------------------------------------
-
-TOP_SWIG_IFILES = \
- gnuradio_swig_py_runtime.i \
- gnuradio_swig_py_general.i \
- gnuradio_swig_py_gengen.i \
- gnuradio_swig_py_filter.i \
- gnuradio_swig_py_io.i \
- gnuradio_swig_py_hier.i
# Install so that they end up available as:
# import gnuradio.gr
# This ends up at:
# ${prefix}/lib/python${python_version}/site-packages/gnuradio/gr
-gnuradio_swig_py_runtime_pythondir_category = gnuradio/gr
-gnuradio_swig_py_general_pythondir_category = gnuradio/gr
-gnuradio_swig_py_gengen_pythondir_category = gnuradio/gr
-gnuradio_swig_py_filter_pythondir_category = gnuradio/gr
-gnuradio_swig_py_io_pythondir_category = gnuradio/gr
-gnuradio_swig_py_hier_pythondir_category = gnuradio/gr
+gnuradio_core_runtime_pythondir_category = gnuradio/gr
+gnuradio_core_general_pythondir_category = gnuradio/gr
+gnuradio_core_gengen_pythondir_category = gnuradio/gr
+gnuradio_core_filter_pythondir_category = gnuradio/gr
+gnuradio_core_io_pythondir_category = gnuradio/gr
+gnuradio_core_hier_pythondir_category = gnuradio/gr
# additional libraries for linking with each SWIG-generated library
-gnuradio_swig_py_runtime_la_swig_libadd = $(GNURADIO_CORE_LA)
-gnuradio_swig_py_general_la_swig_libadd = $(GNURADIO_CORE_LA)
-gnuradio_swig_py_gengen_la_swig_libadd = $(GNURADIO_CORE_LA)
-gnuradio_swig_py_filter_la_swig_libadd = $(GNURADIO_CORE_LA)
-gnuradio_swig_py_io_la_swig_libadd = $(GNURADIO_CORE_LA)
-gnuradio_swig_py_hier_la_swig_libadd = $(GNURADIO_CORE_LA)
-
-include $(top_srcdir)/Makefile.swig
-
-# add some of the variables generated inside the Makefile.swig
-
-# include the SWIG-generated .h files in the BUILT SOURCES, since they
-# aren't by default when using Makefile.swig; order doesn't matter.
-BUILT_SOURCES = \
- gnuradio_swig_py_runtime.h \
- gnuradio_swig_py_general.h \
- gnuradio_swig_py_gengen.h \
- gnuradio_swig_py_filter.h \
- gnuradio_swig_py_io.h \
- gnuradio_swig_py_hier.h \
- $(grinclude_HEADERS) \
- $(swig_built_sources)
-
-# Do not distribute the output of SWIG
-no_dist_files = $(swig_built_sources)
-endif
+gnuradio_core_runtime_la_swig_libadd = $(GNURADIO_CORE_LA)
+gnuradio_core_general_la_swig_libadd = $(GNURADIO_CORE_LA)
+gnuradio_core_gengen_la_swig_libadd = $(GNURADIO_CORE_LA)
+gnuradio_core_filter_la_swig_libadd = $(GNURADIO_CORE_LA)
+gnuradio_core_io_la_swig_libadd = $(GNURADIO_CORE_LA)
+gnuradio_core_hier_la_swig_libadd = $(GNURADIO_CORE_LA)
+
+SWIG_GUILE_FLAGS += -DIN_GNURADIO_CORE
diff --git a/gnuradio-core/src/lib/swig/Makefile.swig.gen b/gnuradio-core/src/lib/swig/Makefile.swig.gen
index e24ba5a96..0c3247565 100644
--- a/gnuradio-core/src/lib/swig/Makefile.swig.gen
+++ b/gnuradio-core/src/lib/swig/Makefile.swig.gen
@@ -20,27 +20,37 @@
# Boston, MA 02110-1301, USA.
#
-# Makefile.swig.gen for gnuradio_swig_py_runtime.i
+# Makefile.swig.gen for gnuradio_core_runtime.i
## Default install locations for these files:
##
## Default location for the Python directory is:
-## ${prefix}/lib/python${python_version}/site-packages/[category]/gnuradio_swig_py_runtime
+## ${prefix}/lib/python${python_version}/site-packages/[category]/gnuradio_core_runtime
## Default location for the Python exec directory is:
-## ${exec_prefix}/lib/python${python_version}/site-packages/[category]/gnuradio_swig_py_runtime
+## ${exec_prefix}/lib/python${python_version}/site-packages/[category]/gnuradio_core_runtime
##
## 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.
-gnuradio_swig_py_runtime_pythondir_category ?= gnuradio/gnuradio_swig_py_runtime
-gnuradio_swig_py_runtime_pylibdir_category ?= $(gnuradio_swig_py_runtime_pythondir_category)
-gnuradio_swig_py_runtime_pythondir = $(pythondir)/$(gnuradio_swig_py_runtime_pythondir_category)
-gnuradio_swig_py_runtime_pylibdir = $(pyexecdir)/$(gnuradio_swig_py_runtime_pylibdir_category)
+gnuradio_core_runtime_pythondir_category ?= gnuradio/gnuradio_core_runtime
+gnuradio_core_runtime_pylibdir_category ?= $(gnuradio_core_runtime_pythondir_category)
+gnuradio_core_runtime_pythondir = $(pythondir)/$(gnuradio_core_runtime_pythondir_category)
+gnuradio_core_runtime_pylibdir = $(pyexecdir)/$(gnuradio_core_runtime_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.
+gnuradio_core_runtime_scmlibdir = $(libdir)
+
+# The scm files for the guile modules get installed where ever guile
+# is installed, usually /usr/share/guile/site/gnuradio_core_runtime
+# FIXME: determince whether these should be installed with gnuradio.
+gnuradio_core_runtime_scmdir = $(guiledir)
## SWIG headers are always installed into the same directory.
-gnuradio_swig_py_runtime_swigincludedir = $(swigincludedir)
+gnuradio_core_runtime_swigincludedir = $(swigincludedir)
## This is a template file for a "generated" Makefile addition (in
## this case, "Makefile.swig.gen"). By including the top-level
@@ -57,205 +67,81 @@ gnuradio_swig_py_runtime_swigincludedir = $(swigincludedir)
## right thing. For more info, see <
## http://sources.redhat.com/automake/automake.html#Multiple-Outputs >
-## Stamps used to ensure parallel make does the right thing. These
-## are removed by "make clean", but otherwise unused except during the
-## parallel built. These will not be included in a tarball, because
-## the SWIG-generated files will be removed from the distribution.
-
-STAMPS += $(DEPDIR)/gnuradio_swig_py_runtime-generate-*
-
## Other cleaned files: dependency files generated by SWIG or this Makefile
MOSTLYCLEANFILES += $(DEPDIR)/*.S*
-## Add the .py and .cc files to the list of SWIG built sources. The
-## .h file is sometimes built, but not always ... so that one has to
-## be added manually by the including Makefile.am .
-
-swig_built_sources += gnuradio_swig_py_runtime.py gnuradio_swig_py_runtime.cc
-
## Various SWIG variables. These can be overloaded in the including
## Makefile.am by setting the variable value there, then including
## Makefile.swig .
-gnuradio_swig_py_runtime_swiginclude_HEADERS = \
- gnuradio_swig_py_runtime.i \
- $(gnuradio_swig_py_runtime_swiginclude_headers)
+gnuradio_core_runtime_swiginclude_HEADERS = \
+ gnuradio_core_runtime.i \
+ $(gnuradio_core_runtime_swiginclude_headers)
+
+if PYTHON
+gnuradio_core_runtime_pylib_LTLIBRARIES = \
+ _gnuradio_core_runtime.la
-gnuradio_swig_py_runtime_pylib_LTLIBRARIES = \
- _gnuradio_swig_py_runtime.la
+_gnuradio_core_runtime_la_SOURCES = \
+ python/gnuradio_core_runtime.cc \
+ $(gnuradio_core_runtime_la_swig_sources)
-_gnuradio_swig_py_runtime_la_SOURCES = \
- gnuradio_swig_py_runtime.cc \
- $(gnuradio_swig_py_runtime_la_swig_sources)
+gnuradio_core_runtime_python_PYTHON = \
+ gnuradio_core_runtime.py \
+ $(gnuradio_core_runtime_python)
-_gnuradio_swig_py_runtime_la_LIBADD = \
+_gnuradio_core_runtime_la_LIBADD = \
$(STD_SWIG_LA_LIB_ADD) \
- $(gnuradio_swig_py_runtime_la_swig_libadd)
+ $(gnuradio_core_runtime_la_swig_libadd)
-_gnuradio_swig_py_runtime_la_LDFLAGS = \
+_gnuradio_core_runtime_la_LDFLAGS = \
$(STD_SWIG_LA_LD_FLAGS) \
- $(gnuradio_swig_py_runtime_la_swig_ldflags)
+ $(gnuradio_core_runtime_la_swig_ldflags)
-_gnuradio_swig_py_runtime_la_CXXFLAGS = \
+_gnuradio_core_runtime_la_CXXFLAGS = \
$(STD_SWIG_CXX_FLAGS) \
- $(gnuradio_swig_py_runtime_la_swig_cxxflags)
+ -I$(top_builddir) \
+ $(gnuradio_core_runtime_la_swig_cxxflags)
-gnuradio_swig_py_runtime_python_PYTHON = \
- gnuradio_swig_py_runtime.py \
- $(gnuradio_swig_py_runtime_python)
+python/gnuradio_core_runtime.cc: gnuradio_core_runtime.py
+gnuradio_core_runtime.py: gnuradio_core_runtime.i
-## Entry rule for running SWIG
+# Include the python dependencies for this file
+-include python/gnuradio_core_runtime.d
-gnuradio_swig_py_runtime.h gnuradio_swig_py_runtime.py gnuradio_swig_py_runtime.cc: gnuradio_swig_py_runtime.i
-## This rule will get called only when MAKE decides that one of the
-## targets needs to be created or re-created, because:
-##
-## * The .i file is newer than any or all of the generated files;
-##
-## * Any or all of the .cc, .h, or .py files does not exist and is
-## needed (in the case this file is not needed, the rule for it is
-## ignored); or
-##
-## * Some SWIG-based dependecy of the .cc file isn't met and hence the
-## .cc file needs be be regenerated. Explanation: Because MAKE
-## knows how to handle dependencies for .cc files (regardless of
-## their name or extension), then the .cc file is used as a target
-## instead of the .i file -- but with the dependencies of the .i
-## file. It is this last reason why the line:
-##
-## if test -f $@; then :; else
-##
-## cannot be used in this case: If a .i file dependecy is not met,
-## then the .cc file needs to be rebuilt. But if the stamp is newer
-## than the .cc file, and the .cc file exists, then in the original
-## version (with the 'test' above) the internal MAKE call will not
-## be issued and hence the .cc file will not be rebuilt.
-##
-## Once execution gets to here, it should always proceed no matter the
-## state of a stamp (as discussed in link above). The
-## $(DEPDIR)/gnuradio_swig_py_runtime-generate stuff is used to allow for parallel
-## builds to "do the right thing". The stamp has no relationship with
-## either the target files or dependency file; it is used solely for
-## the protection of multiple builds during a given call to MAKE.
-##
-## Catch signals SIGHUP (1), SIGINT (2), SIGPIPE (13), and SIGTERM
-## (15). At a caught signal, the quoted command will be issued before
-## exiting. In this case, remove any stamp, whether temporary of not.
-## The trap is valid until the process exits; the process includes all
-## commands appended via "\"s.
-##
- trap 'rm -rf $(DEPDIR)/gnuradio_swig_py_runtime-generate-*' 1 2 13 15; \
-##
-## Create a temporary directory, which acts as a lock. The first
-## process to create the directory will succeed and issue the MAKE
-## command to do the actual work, while all subsequent processes will
-## fail -- leading them to wait for the first process to finish.
-##
- if mkdir $(DEPDIR)/gnuradio_swig_py_runtime-generate-lock 2>/dev/null; then \
-##
-## This code is being executed by the first process to succeed in
-## creating the directory lock.
-##
-## Remove the stamp associated with this filename.
-##
- rm -f $(DEPDIR)/gnuradio_swig_py_runtime-generate-stamp; \
-##
-## Tell MAKE to run the rule for creating this stamp.
-##
- $(MAKE) $(AM_MAKEFLAGS) $(DEPDIR)/gnuradio_swig_py_runtime-generate-stamp WHAT=$<; \
-##
-## Now that the .cc, .h, and .py files have been (re)created from the
-## .i file, future checking of this rule during the same MAKE
-## execution will come back that the rule doesn't need to be executed
-## because none of the conditions mentioned at the start of this rule
-## will be positive. Remove the the directory lock, which frees up
-## any waiting process(es) to continue.
-##
- rmdir $(DEPDIR)/gnuradio_swig_py_runtime-generate-lock; \
- else \
-##
-## This code is being executed by any follower processes while the
-## directory lock is in place.
-##
-## Wait until the first process is done, testing once per second.
-##
- while test -d $(DEPDIR)/gnuradio_swig_py_runtime-generate-lock; do \
- sleep 1; \
- done; \
-##
-## Succeed if and only if the first process succeeded; exit this
-## process returning the status of the generated stamp.
-##
- test -f $(DEPDIR)/gnuradio_swig_py_runtime-generate-stamp; \
- exit $$?; \
- fi;
-
-$(DEPDIR)/gnuradio_swig_py_runtime-generate-stamp:
-## This rule will be called only by the first process issuing the
-## above rule to succeed in creating the lock directory, after
-## removing the actual stamp file in order to guarantee that MAKE will
-## execute this rule.
-##
-## Call SWIG to generate the various output files; special
-## post-processing on 'mingw32' host OS for the dependency file.
-##
- if $(SWIG) $(STD_SWIG_PYTHON_ARGS) $(gnuradio_swig_py_runtime_swig_args) \
- -MD -MF $(DEPDIR)/gnuradio_swig_py_runtime.Std \
- -module gnuradio_swig_py_runtime -o gnuradio_swig_py_runtime.cc $(WHAT); then \
- if test $(host_os) = mingw32; then \
- $(RM) $(DEPDIR)/gnuradio_swig_py_runtime.Sd; \
- $(SED) 's,\\\\,/,g' < $(DEPDIR)/gnuradio_swig_py_runtime.Std \
- > $(DEPDIR)/gnuradio_swig_py_runtime.Sd; \
- $(RM) $(DEPDIR)/gnuradio_swig_py_runtime.Std; \
- $(MV) $(DEPDIR)/gnuradio_swig_py_runtime.Sd $(DEPDIR)/gnuradio_swig_py_runtime.Std; \
- fi; \
- else \
- $(RM) $(DEPDIR)/gnuradio_swig_py_runtime.S*; exit 1; \
- fi;
-##
-## Mess with the SWIG output .Std dependency file, to create a
-## dependecy file valid for the input .i file: Basically, simulate the
-## dependency file created for libraries by GNU's libtool for C++,
-## where all of the dependencies for the target are first listed, then
-## each individual dependency is listed as a target with no further
-## dependencies.
-##
-## (1) remove the current dependency file
-##
- $(RM) $(DEPDIR)/gnuradio_swig_py_runtime.d
-##
-## (2) Copy the whole SWIG file:
-##
- cp $(DEPDIR)/gnuradio_swig_py_runtime.Std $(DEPDIR)/gnuradio_swig_py_runtime.d
-##
-## (3) all a carriage return to the end of the dependency file.
-##
- echo "" >> $(DEPDIR)/gnuradio_swig_py_runtime.d
-##
-## (4) from the SWIG file, remove the first line (the target); remove
-## trailing " \" and " " from each line. Append ":" to each line,
-## followed by 2 carriage returns, then append this to the end of
-## the dependency file.
-##
- $(SED) -e '1d;s, \\,,g;s, ,,g' < $(DEPDIR)/gnuradio_swig_py_runtime.Std | \
- awk '{ printf "%s:\n\n", $$0 }' >> $(DEPDIR)/gnuradio_swig_py_runtime.d
-##
-## (5) remove the SWIG-generated file
-##
- $(RM) $(DEPDIR)/gnuradio_swig_py_runtime.Std
-##
-## Create the stamp for this filename generation, to signal success in
-## executing this rule; allows other threads waiting on this process
-## to continue.
-##
- touch $(DEPDIR)/gnuradio_swig_py_runtime-generate-stamp
+endif # end of if python
+
+if GUILE
+
+gnuradio_core_runtime_scmlib_LTLIBRARIES = \
+ libguile-gnuradio-gnuradio_core_runtime.la
+libguile_gnuradio_gnuradio_core_runtime_la_SOURCES = \
+ guile/gnuradio_core_runtime.cc \
+ $(gnuradio_core_runtime_la_swig_sources)
+nobase_gnuradio_core_runtime_scm_DATA = \
+ gnuradio/gnuradio_core_runtime.scm \
+ gnuradio/gnuradio_core_runtime-primitive.scm
+libguile_gnuradio_gnuradio_core_runtime_la_LIBADD = \
+ $(STD_SWIG_LA_LIB_ADD) \
+ $(gnuradio_core_runtime_la_swig_libadd)
+libguile_gnuradio_gnuradio_core_runtime_la_LDFLAGS = \
+ $(STD_SWIG_LA_LD_FLAGS) \
+ $(gnuradio_core_runtime_la_swig_ldflags)
+libguile_gnuradio_gnuradio_core_runtime_la_CXXFLAGS = \
+ $(STD_SWIG_CXX_FLAGS) \
+ -I$(top_builddir) \
+ $(gnuradio_core_runtime_la_swig_cxxflags)
-# KLUDGE: Force runtime include of a SWIG dependency file. This is
-# not guaranteed to be portable, but will probably work. If it works,
-# we have accurate dependencies for our swig stuff, which is good.
+guile/gnuradio_core_runtime.cc: gnuradio/gnuradio_core_runtime.scm
+gnuradio/gnuradio_core_runtime.scm: gnuradio_core_runtime.i
+gnuradio/gnuradio_core_runtime-primitive.scm: gnuradio/gnuradio_core_runtime.scm
+
+# Include the guile dependencies for this file
+-include guile/gnuradio_core_runtime.d
+
+endif # end of GUILE
-@am__include@ @am__quote@./$(DEPDIR)/gnuradio_swig_py_runtime.d@am__quote@
# -*- Makefile -*-
#
@@ -279,27 +165,37 @@ $(DEPDIR)/gnuradio_swig_py_runtime-generate-stamp:
# Boston, MA 02110-1301, USA.
#
-# Makefile.swig.gen for gnuradio_swig_py_general.i
+# Makefile.swig.gen for gnuradio_core_general.i
## Default install locations for these files:
##
## Default location for the Python directory is:
-## ${prefix}/lib/python${python_version}/site-packages/[category]/gnuradio_swig_py_general
+## ${prefix}/lib/python${python_version}/site-packages/[category]/gnuradio_core_general
## Default location for the Python exec directory is:
-## ${exec_prefix}/lib/python${python_version}/site-packages/[category]/gnuradio_swig_py_general
+## ${exec_prefix}/lib/python${python_version}/site-packages/[category]/gnuradio_core_general
##
## 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.
-gnuradio_swig_py_general_pythondir_category ?= gnuradio/gnuradio_swig_py_general
-gnuradio_swig_py_general_pylibdir_category ?= $(gnuradio_swig_py_general_pythondir_category)
-gnuradio_swig_py_general_pythondir = $(pythondir)/$(gnuradio_swig_py_general_pythondir_category)
-gnuradio_swig_py_general_pylibdir = $(pyexecdir)/$(gnuradio_swig_py_general_pylibdir_category)
+gnuradio_core_general_pythondir_category ?= gnuradio/gnuradio_core_general
+gnuradio_core_general_pylibdir_category ?= $(gnuradio_core_general_pythondir_category)
+gnuradio_core_general_pythondir = $(pythondir)/$(gnuradio_core_general_pythondir_category)
+gnuradio_core_general_pylibdir = $(pyexecdir)/$(gnuradio_core_general_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.
+gnuradio_core_general_scmlibdir = $(libdir)
+
+# The scm files for the guile modules get installed where ever guile
+# is installed, usually /usr/share/guile/site/gnuradio_core_general
+# FIXME: determince whether these should be installed with gnuradio.
+gnuradio_core_general_scmdir = $(guiledir)
## SWIG headers are always installed into the same directory.
-gnuradio_swig_py_general_swigincludedir = $(swigincludedir)
+gnuradio_core_general_swigincludedir = $(swigincludedir)
## This is a template file for a "generated" Makefile addition (in
## this case, "Makefile.swig.gen"). By including the top-level
@@ -316,205 +212,81 @@ gnuradio_swig_py_general_swigincludedir = $(swigincludedir)
## right thing. For more info, see <
## http://sources.redhat.com/automake/automake.html#Multiple-Outputs >
-## Stamps used to ensure parallel make does the right thing. These
-## are removed by "make clean", but otherwise unused except during the
-## parallel built. These will not be included in a tarball, because
-## the SWIG-generated files will be removed from the distribution.
-
-STAMPS += $(DEPDIR)/gnuradio_swig_py_general-generate-*
-
## Other cleaned files: dependency files generated by SWIG or this Makefile
MOSTLYCLEANFILES += $(DEPDIR)/*.S*
-## Add the .py and .cc files to the list of SWIG built sources. The
-## .h file is sometimes built, but not always ... so that one has to
-## be added manually by the including Makefile.am .
-
-swig_built_sources += gnuradio_swig_py_general.py gnuradio_swig_py_general.cc
-
## Various SWIG variables. These can be overloaded in the including
## Makefile.am by setting the variable value there, then including
## Makefile.swig .
-gnuradio_swig_py_general_swiginclude_HEADERS = \
- gnuradio_swig_py_general.i \
- $(gnuradio_swig_py_general_swiginclude_headers)
+gnuradio_core_general_swiginclude_HEADERS = \
+ gnuradio_core_general.i \
+ $(gnuradio_core_general_swiginclude_headers)
+
+if PYTHON
+gnuradio_core_general_pylib_LTLIBRARIES = \
+ _gnuradio_core_general.la
-gnuradio_swig_py_general_pylib_LTLIBRARIES = \
- _gnuradio_swig_py_general.la
+_gnuradio_core_general_la_SOURCES = \
+ python/gnuradio_core_general.cc \
+ $(gnuradio_core_general_la_swig_sources)
-_gnuradio_swig_py_general_la_SOURCES = \
- gnuradio_swig_py_general.cc \
- $(gnuradio_swig_py_general_la_swig_sources)
+gnuradio_core_general_python_PYTHON = \
+ gnuradio_core_general.py \
+ $(gnuradio_core_general_python)
-_gnuradio_swig_py_general_la_LIBADD = \
+_gnuradio_core_general_la_LIBADD = \
$(STD_SWIG_LA_LIB_ADD) \
- $(gnuradio_swig_py_general_la_swig_libadd)
+ $(gnuradio_core_general_la_swig_libadd)
-_gnuradio_swig_py_general_la_LDFLAGS = \
+_gnuradio_core_general_la_LDFLAGS = \
$(STD_SWIG_LA_LD_FLAGS) \
- $(gnuradio_swig_py_general_la_swig_ldflags)
+ $(gnuradio_core_general_la_swig_ldflags)
-_gnuradio_swig_py_general_la_CXXFLAGS = \
+_gnuradio_core_general_la_CXXFLAGS = \
$(STD_SWIG_CXX_FLAGS) \
- $(gnuradio_swig_py_general_la_swig_cxxflags)
+ -I$(top_builddir) \
+ $(gnuradio_core_general_la_swig_cxxflags)
-gnuradio_swig_py_general_python_PYTHON = \
- gnuradio_swig_py_general.py \
- $(gnuradio_swig_py_general_python)
+python/gnuradio_core_general.cc: gnuradio_core_general.py
+gnuradio_core_general.py: gnuradio_core_general.i
-## Entry rule for running SWIG
+# Include the python dependencies for this file
+-include python/gnuradio_core_general.d
-gnuradio_swig_py_general.h gnuradio_swig_py_general.py gnuradio_swig_py_general.cc: gnuradio_swig_py_general.i
-## This rule will get called only when MAKE decides that one of the
-## targets needs to be created or re-created, because:
-##
-## * The .i file is newer than any or all of the generated files;
-##
-## * Any or all of the .cc, .h, or .py files does not exist and is
-## needed (in the case this file is not needed, the rule for it is
-## ignored); or
-##
-## * Some SWIG-based dependecy of the .cc file isn't met and hence the
-## .cc file needs be be regenerated. Explanation: Because MAKE
-## knows how to handle dependencies for .cc files (regardless of
-## their name or extension), then the .cc file is used as a target
-## instead of the .i file -- but with the dependencies of the .i
-## file. It is this last reason why the line:
-##
-## if test -f $@; then :; else
-##
-## cannot be used in this case: If a .i file dependecy is not met,
-## then the .cc file needs to be rebuilt. But if the stamp is newer
-## than the .cc file, and the .cc file exists, then in the original
-## version (with the 'test' above) the internal MAKE call will not
-## be issued and hence the .cc file will not be rebuilt.
-##
-## Once execution gets to here, it should always proceed no matter the
-## state of a stamp (as discussed in link above). The
-## $(DEPDIR)/gnuradio_swig_py_general-generate stuff is used to allow for parallel
-## builds to "do the right thing". The stamp has no relationship with
-## either the target files or dependency file; it is used solely for
-## the protection of multiple builds during a given call to MAKE.
-##
-## Catch signals SIGHUP (1), SIGINT (2), SIGPIPE (13), and SIGTERM
-## (15). At a caught signal, the quoted command will be issued before
-## exiting. In this case, remove any stamp, whether temporary of not.
-## The trap is valid until the process exits; the process includes all
-## commands appended via "\"s.
-##
- trap 'rm -rf $(DEPDIR)/gnuradio_swig_py_general-generate-*' 1 2 13 15; \
-##
-## Create a temporary directory, which acts as a lock. The first
-## process to create the directory will succeed and issue the MAKE
-## command to do the actual work, while all subsequent processes will
-## fail -- leading them to wait for the first process to finish.
-##
- if mkdir $(DEPDIR)/gnuradio_swig_py_general-generate-lock 2>/dev/null; then \
-##
-## This code is being executed by the first process to succeed in
-## creating the directory lock.
-##
-## Remove the stamp associated with this filename.
-##
- rm -f $(DEPDIR)/gnuradio_swig_py_general-generate-stamp; \
-##
-## Tell MAKE to run the rule for creating this stamp.
-##
- $(MAKE) $(AM_MAKEFLAGS) $(DEPDIR)/gnuradio_swig_py_general-generate-stamp WHAT=$<; \
-##
-## Now that the .cc, .h, and .py files have been (re)created from the
-## .i file, future checking of this rule during the same MAKE
-## execution will come back that the rule doesn't need to be executed
-## because none of the conditions mentioned at the start of this rule
-## will be positive. Remove the the directory lock, which frees up
-## any waiting process(es) to continue.
-##
- rmdir $(DEPDIR)/gnuradio_swig_py_general-generate-lock; \
- else \
-##
-## This code is being executed by any follower processes while the
-## directory lock is in place.
-##
-## Wait until the first process is done, testing once per second.
-##
- while test -d $(DEPDIR)/gnuradio_swig_py_general-generate-lock; do \
- sleep 1; \
- done; \
-##
-## Succeed if and only if the first process succeeded; exit this
-## process returning the status of the generated stamp.
-##
- test -f $(DEPDIR)/gnuradio_swig_py_general-generate-stamp; \
- exit $$?; \
- fi;
-
-$(DEPDIR)/gnuradio_swig_py_general-generate-stamp:
-## This rule will be called only by the first process issuing the
-## above rule to succeed in creating the lock directory, after
-## removing the actual stamp file in order to guarantee that MAKE will
-## execute this rule.
-##
-## Call SWIG to generate the various output files; special
-## post-processing on 'mingw32' host OS for the dependency file.
-##
- if $(SWIG) $(STD_SWIG_PYTHON_ARGS) $(gnuradio_swig_py_general_swig_args) \
- -MD -MF $(DEPDIR)/gnuradio_swig_py_general.Std \
- -module gnuradio_swig_py_general -o gnuradio_swig_py_general.cc $(WHAT); then \
- if test $(host_os) = mingw32; then \
- $(RM) $(DEPDIR)/gnuradio_swig_py_general.Sd; \
- $(SED) 's,\\\\,/,g' < $(DEPDIR)/gnuradio_swig_py_general.Std \
- > $(DEPDIR)/gnuradio_swig_py_general.Sd; \
- $(RM) $(DEPDIR)/gnuradio_swig_py_general.Std; \
- $(MV) $(DEPDIR)/gnuradio_swig_py_general.Sd $(DEPDIR)/gnuradio_swig_py_general.Std; \
- fi; \
- else \
- $(RM) $(DEPDIR)/gnuradio_swig_py_general.S*; exit 1; \
- fi;
-##
-## Mess with the SWIG output .Std dependency file, to create a
-## dependecy file valid for the input .i file: Basically, simulate the
-## dependency file created for libraries by GNU's libtool for C++,
-## where all of the dependencies for the target are first listed, then
-## each individual dependency is listed as a target with no further
-## dependencies.
-##
-## (1) remove the current dependency file
-##
- $(RM) $(DEPDIR)/gnuradio_swig_py_general.d
-##
-## (2) Copy the whole SWIG file:
-##
- cp $(DEPDIR)/gnuradio_swig_py_general.Std $(DEPDIR)/gnuradio_swig_py_general.d
-##
-## (3) all a carriage return to the end of the dependency file.
-##
- echo "" >> $(DEPDIR)/gnuradio_swig_py_general.d
-##
-## (4) from the SWIG file, remove the first line (the target); remove
-## trailing " \" and " " from each line. Append ":" to each line,
-## followed by 2 carriage returns, then append this to the end of
-## the dependency file.
-##
- $(SED) -e '1d;s, \\,,g;s, ,,g' < $(DEPDIR)/gnuradio_swig_py_general.Std | \
- awk '{ printf "%s:\n\n", $$0 }' >> $(DEPDIR)/gnuradio_swig_py_general.d
-##
-## (5) remove the SWIG-generated file
-##
- $(RM) $(DEPDIR)/gnuradio_swig_py_general.Std
-##
-## Create the stamp for this filename generation, to signal success in
-## executing this rule; allows other threads waiting on this process
-## to continue.
-##
- touch $(DEPDIR)/gnuradio_swig_py_general-generate-stamp
+endif # end of if python
+
+if GUILE
-# KLUDGE: Force runtime include of a SWIG dependency file. This is
-# not guaranteed to be portable, but will probably work. If it works,
-# we have accurate dependencies for our swig stuff, which is good.
+gnuradio_core_general_scmlib_LTLIBRARIES = \
+ libguile-gnuradio-gnuradio_core_general.la
+libguile_gnuradio_gnuradio_core_general_la_SOURCES = \
+ guile/gnuradio_core_general.cc \
+ $(gnuradio_core_general_la_swig_sources)
+nobase_gnuradio_core_general_scm_DATA = \
+ gnuradio/gnuradio_core_general.scm \
+ gnuradio/gnuradio_core_general-primitive.scm
+libguile_gnuradio_gnuradio_core_general_la_LIBADD = \
+ $(STD_SWIG_LA_LIB_ADD) \
+ $(gnuradio_core_general_la_swig_libadd)
+libguile_gnuradio_gnuradio_core_general_la_LDFLAGS = \
+ $(STD_SWIG_LA_LD_FLAGS) \
+ $(gnuradio_core_general_la_swig_ldflags)
+libguile_gnuradio_gnuradio_core_general_la_CXXFLAGS = \
+ $(STD_SWIG_CXX_FLAGS) \
+ -I$(top_builddir) \
+ $(gnuradio_core_general_la_swig_cxxflags)
+
+guile/gnuradio_core_general.cc: gnuradio/gnuradio_core_general.scm
+gnuradio/gnuradio_core_general.scm: gnuradio_core_general.i
+gnuradio/gnuradio_core_general-primitive.scm: gnuradio/gnuradio_core_general.scm
+
+# Include the guile dependencies for this file
+-include guile/gnuradio_core_general.d
+
+endif # end of GUILE
-@am__include@ @am__quote@./$(DEPDIR)/gnuradio_swig_py_general.d@am__quote@
# -*- Makefile -*-
#
@@ -538,27 +310,37 @@ $(DEPDIR)/gnuradio_swig_py_general-generate-stamp:
# Boston, MA 02110-1301, USA.
#
-# Makefile.swig.gen for gnuradio_swig_py_gengen.i
+# Makefile.swig.gen for gnuradio_core_gengen.i
## Default install locations for these files:
##
## Default location for the Python directory is:
-## ${prefix}/lib/python${python_version}/site-packages/[category]/gnuradio_swig_py_gengen
+## ${prefix}/lib/python${python_version}/site-packages/[category]/gnuradio_core_gengen
## Default location for the Python exec directory is:
-## ${exec_prefix}/lib/python${python_version}/site-packages/[category]/gnuradio_swig_py_gengen
+## ${exec_prefix}/lib/python${python_version}/site-packages/[category]/gnuradio_core_gengen
##
## 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.
-gnuradio_swig_py_gengen_pythondir_category ?= gnuradio/gnuradio_swig_py_gengen
-gnuradio_swig_py_gengen_pylibdir_category ?= $(gnuradio_swig_py_gengen_pythondir_category)
-gnuradio_swig_py_gengen_pythondir = $(pythondir)/$(gnuradio_swig_py_gengen_pythondir_category)
-gnuradio_swig_py_gengen_pylibdir = $(pyexecdir)/$(gnuradio_swig_py_gengen_pylibdir_category)
+gnuradio_core_gengen_pythondir_category ?= gnuradio/gnuradio_core_gengen
+gnuradio_core_gengen_pylibdir_category ?= $(gnuradio_core_gengen_pythondir_category)
+gnuradio_core_gengen_pythondir = $(pythondir)/$(gnuradio_core_gengen_pythondir_category)
+gnuradio_core_gengen_pylibdir = $(pyexecdir)/$(gnuradio_core_gengen_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.
+gnuradio_core_gengen_scmlibdir = $(libdir)
+
+# The scm files for the guile modules get installed where ever guile
+# is installed, usually /usr/share/guile/site/gnuradio_core_gengen
+# FIXME: determince whether these should be installed with gnuradio.
+gnuradio_core_gengen_scmdir = $(guiledir)
## SWIG headers are always installed into the same directory.
-gnuradio_swig_py_gengen_swigincludedir = $(swigincludedir)
+gnuradio_core_gengen_swigincludedir = $(swigincludedir)
## This is a template file for a "generated" Makefile addition (in
## this case, "Makefile.swig.gen"). By including the top-level
@@ -575,205 +357,81 @@ gnuradio_swig_py_gengen_swigincludedir = $(swigincludedir)
## right thing. For more info, see <
## http://sources.redhat.com/automake/automake.html#Multiple-Outputs >
-## Stamps used to ensure parallel make does the right thing. These
-## are removed by "make clean", but otherwise unused except during the
-## parallel built. These will not be included in a tarball, because
-## the SWIG-generated files will be removed from the distribution.
-
-STAMPS += $(DEPDIR)/gnuradio_swig_py_gengen-generate-*
-
## Other cleaned files: dependency files generated by SWIG or this Makefile
MOSTLYCLEANFILES += $(DEPDIR)/*.S*
-## Add the .py and .cc files to the list of SWIG built sources. The
-## .h file is sometimes built, but not always ... so that one has to
-## be added manually by the including Makefile.am .
-
-swig_built_sources += gnuradio_swig_py_gengen.py gnuradio_swig_py_gengen.cc
-
## Various SWIG variables. These can be overloaded in the including
## Makefile.am by setting the variable value there, then including
## Makefile.swig .
-gnuradio_swig_py_gengen_swiginclude_HEADERS = \
- gnuradio_swig_py_gengen.i \
- $(gnuradio_swig_py_gengen_swiginclude_headers)
+gnuradio_core_gengen_swiginclude_HEADERS = \
+ gnuradio_core_gengen.i \
+ $(gnuradio_core_gengen_swiginclude_headers)
+
+if PYTHON
+gnuradio_core_gengen_pylib_LTLIBRARIES = \
+ _gnuradio_core_gengen.la
-gnuradio_swig_py_gengen_pylib_LTLIBRARIES = \
- _gnuradio_swig_py_gengen.la
+_gnuradio_core_gengen_la_SOURCES = \
+ python/gnuradio_core_gengen.cc \
+ $(gnuradio_core_gengen_la_swig_sources)
-_gnuradio_swig_py_gengen_la_SOURCES = \
- gnuradio_swig_py_gengen.cc \
- $(gnuradio_swig_py_gengen_la_swig_sources)
+gnuradio_core_gengen_python_PYTHON = \
+ gnuradio_core_gengen.py \
+ $(gnuradio_core_gengen_python)
-_gnuradio_swig_py_gengen_la_LIBADD = \
+_gnuradio_core_gengen_la_LIBADD = \
$(STD_SWIG_LA_LIB_ADD) \
- $(gnuradio_swig_py_gengen_la_swig_libadd)
+ $(gnuradio_core_gengen_la_swig_libadd)
-_gnuradio_swig_py_gengen_la_LDFLAGS = \
+_gnuradio_core_gengen_la_LDFLAGS = \
$(STD_SWIG_LA_LD_FLAGS) \
- $(gnuradio_swig_py_gengen_la_swig_ldflags)
+ $(gnuradio_core_gengen_la_swig_ldflags)
-_gnuradio_swig_py_gengen_la_CXXFLAGS = \
+_gnuradio_core_gengen_la_CXXFLAGS = \
$(STD_SWIG_CXX_FLAGS) \
- $(gnuradio_swig_py_gengen_la_swig_cxxflags)
+ -I$(top_builddir) \
+ $(gnuradio_core_gengen_la_swig_cxxflags)
-gnuradio_swig_py_gengen_python_PYTHON = \
- gnuradio_swig_py_gengen.py \
- $(gnuradio_swig_py_gengen_python)
+python/gnuradio_core_gengen.cc: gnuradio_core_gengen.py
+gnuradio_core_gengen.py: gnuradio_core_gengen.i
-## Entry rule for running SWIG
+# Include the python dependencies for this file
+-include python/gnuradio_core_gengen.d
-gnuradio_swig_py_gengen.h gnuradio_swig_py_gengen.py gnuradio_swig_py_gengen.cc: gnuradio_swig_py_gengen.i
-## This rule will get called only when MAKE decides that one of the
-## targets needs to be created or re-created, because:
-##
-## * The .i file is newer than any or all of the generated files;
-##
-## * Any or all of the .cc, .h, or .py files does not exist and is
-## needed (in the case this file is not needed, the rule for it is
-## ignored); or
-##
-## * Some SWIG-based dependecy of the .cc file isn't met and hence the
-## .cc file needs be be regenerated. Explanation: Because MAKE
-## knows how to handle dependencies for .cc files (regardless of
-## their name or extension), then the .cc file is used as a target
-## instead of the .i file -- but with the dependencies of the .i
-## file. It is this last reason why the line:
-##
-## if test -f $@; then :; else
-##
-## cannot be used in this case: If a .i file dependecy is not met,
-## then the .cc file needs to be rebuilt. But if the stamp is newer
-## than the .cc file, and the .cc file exists, then in the original
-## version (with the 'test' above) the internal MAKE call will not
-## be issued and hence the .cc file will not be rebuilt.
-##
-## Once execution gets to here, it should always proceed no matter the
-## state of a stamp (as discussed in link above). The
-## $(DEPDIR)/gnuradio_swig_py_gengen-generate stuff is used to allow for parallel
-## builds to "do the right thing". The stamp has no relationship with
-## either the target files or dependency file; it is used solely for
-## the protection of multiple builds during a given call to MAKE.
-##
-## Catch signals SIGHUP (1), SIGINT (2), SIGPIPE (13), and SIGTERM
-## (15). At a caught signal, the quoted command will be issued before
-## exiting. In this case, remove any stamp, whether temporary of not.
-## The trap is valid until the process exits; the process includes all
-## commands appended via "\"s.
-##
- trap 'rm -rf $(DEPDIR)/gnuradio_swig_py_gengen-generate-*' 1 2 13 15; \
-##
-## Create a temporary directory, which acts as a lock. The first
-## process to create the directory will succeed and issue the MAKE
-## command to do the actual work, while all subsequent processes will
-## fail -- leading them to wait for the first process to finish.
-##
- if mkdir $(DEPDIR)/gnuradio_swig_py_gengen-generate-lock 2>/dev/null; then \
-##
-## This code is being executed by the first process to succeed in
-## creating the directory lock.
-##
-## Remove the stamp associated with this filename.
-##
- rm -f $(DEPDIR)/gnuradio_swig_py_gengen-generate-stamp; \
-##
-## Tell MAKE to run the rule for creating this stamp.
-##
- $(MAKE) $(AM_MAKEFLAGS) $(DEPDIR)/gnuradio_swig_py_gengen-generate-stamp WHAT=$<; \
-##
-## Now that the .cc, .h, and .py files have been (re)created from the
-## .i file, future checking of this rule during the same MAKE
-## execution will come back that the rule doesn't need to be executed
-## because none of the conditions mentioned at the start of this rule
-## will be positive. Remove the the directory lock, which frees up
-## any waiting process(es) to continue.
-##
- rmdir $(DEPDIR)/gnuradio_swig_py_gengen-generate-lock; \
- else \
-##
-## This code is being executed by any follower processes while the
-## directory lock is in place.
-##
-## Wait until the first process is done, testing once per second.
-##
- while test -d $(DEPDIR)/gnuradio_swig_py_gengen-generate-lock; do \
- sleep 1; \
- done; \
-##
-## Succeed if and only if the first process succeeded; exit this
-## process returning the status of the generated stamp.
-##
- test -f $(DEPDIR)/gnuradio_swig_py_gengen-generate-stamp; \
- exit $$?; \
- fi;
-
-$(DEPDIR)/gnuradio_swig_py_gengen-generate-stamp:
-## This rule will be called only by the first process issuing the
-## above rule to succeed in creating the lock directory, after
-## removing the actual stamp file in order to guarantee that MAKE will
-## execute this rule.
-##
-## Call SWIG to generate the various output files; special
-## post-processing on 'mingw32' host OS for the dependency file.
-##
- if $(SWIG) $(STD_SWIG_PYTHON_ARGS) $(gnuradio_swig_py_gengen_swig_args) \
- -MD -MF $(DEPDIR)/gnuradio_swig_py_gengen.Std \
- -module gnuradio_swig_py_gengen -o gnuradio_swig_py_gengen.cc $(WHAT); then \
- if test $(host_os) = mingw32; then \
- $(RM) $(DEPDIR)/gnuradio_swig_py_gengen.Sd; \
- $(SED) 's,\\\\,/,g' < $(DEPDIR)/gnuradio_swig_py_gengen.Std \
- > $(DEPDIR)/gnuradio_swig_py_gengen.Sd; \
- $(RM) $(DEPDIR)/gnuradio_swig_py_gengen.Std; \
- $(MV) $(DEPDIR)/gnuradio_swig_py_gengen.Sd $(DEPDIR)/gnuradio_swig_py_gengen.Std; \
- fi; \
- else \
- $(RM) $(DEPDIR)/gnuradio_swig_py_gengen.S*; exit 1; \
- fi;
-##
-## Mess with the SWIG output .Std dependency file, to create a
-## dependecy file valid for the input .i file: Basically, simulate the
-## dependency file created for libraries by GNU's libtool for C++,
-## where all of the dependencies for the target are first listed, then
-## each individual dependency is listed as a target with no further
-## dependencies.
-##
-## (1) remove the current dependency file
-##
- $(RM) $(DEPDIR)/gnuradio_swig_py_gengen.d
-##
-## (2) Copy the whole SWIG file:
-##
- cp $(DEPDIR)/gnuradio_swig_py_gengen.Std $(DEPDIR)/gnuradio_swig_py_gengen.d
-##
-## (3) all a carriage return to the end of the dependency file.
-##
- echo "" >> $(DEPDIR)/gnuradio_swig_py_gengen.d
-##
-## (4) from the SWIG file, remove the first line (the target); remove
-## trailing " \" and " " from each line. Append ":" to each line,
-## followed by 2 carriage returns, then append this to the end of
-## the dependency file.
-##
- $(SED) -e '1d;s, \\,,g;s, ,,g' < $(DEPDIR)/gnuradio_swig_py_gengen.Std | \
- awk '{ printf "%s:\n\n", $$0 }' >> $(DEPDIR)/gnuradio_swig_py_gengen.d
-##
-## (5) remove the SWIG-generated file
-##
- $(RM) $(DEPDIR)/gnuradio_swig_py_gengen.Std
-##
-## Create the stamp for this filename generation, to signal success in
-## executing this rule; allows other threads waiting on this process
-## to continue.
-##
- touch $(DEPDIR)/gnuradio_swig_py_gengen-generate-stamp
+endif # end of if python
+
+if GUILE
+
+gnuradio_core_gengen_scmlib_LTLIBRARIES = \
+ libguile-gnuradio-gnuradio_core_gengen.la
+libguile_gnuradio_gnuradio_core_gengen_la_SOURCES = \
+ guile/gnuradio_core_gengen.cc \
+ $(gnuradio_core_gengen_la_swig_sources)
+nobase_gnuradio_core_gengen_scm_DATA = \
+ gnuradio/gnuradio_core_gengen.scm \
+ gnuradio/gnuradio_core_gengen-primitive.scm
+libguile_gnuradio_gnuradio_core_gengen_la_LIBADD = \
+ $(STD_SWIG_LA_LIB_ADD) \
+ $(gnuradio_core_gengen_la_swig_libadd)
+libguile_gnuradio_gnuradio_core_gengen_la_LDFLAGS = \
+ $(STD_SWIG_LA_LD_FLAGS) \
+ $(gnuradio_core_gengen_la_swig_ldflags)
+libguile_gnuradio_gnuradio_core_gengen_la_CXXFLAGS = \
+ $(STD_SWIG_CXX_FLAGS) \
+ -I$(top_builddir) \
+ $(gnuradio_core_gengen_la_swig_cxxflags)
+
+guile/gnuradio_core_gengen.cc: gnuradio/gnuradio_core_gengen.scm
+gnuradio/gnuradio_core_gengen.scm: gnuradio_core_gengen.i
+gnuradio/gnuradio_core_gengen-primitive.scm: gnuradio/gnuradio_core_gengen.scm
+
+# Include the guile dependencies for this file
+-include guile/gnuradio_core_gengen.d
-# KLUDGE: Force runtime include of a SWIG dependency file. This is
-# not guaranteed to be portable, but will probably work. If it works,
-# we have accurate dependencies for our swig stuff, which is good.
+endif # end of GUILE
-@am__include@ @am__quote@./$(DEPDIR)/gnuradio_swig_py_gengen.d@am__quote@
# -*- Makefile -*-
#
@@ -797,27 +455,37 @@ $(DEPDIR)/gnuradio_swig_py_gengen-generate-stamp:
# Boston, MA 02110-1301, USA.
#
-# Makefile.swig.gen for gnuradio_swig_py_filter.i
+# Makefile.swig.gen for gnuradio_core_filter.i
## Default install locations for these files:
##
## Default location for the Python directory is:
-## ${prefix}/lib/python${python_version}/site-packages/[category]/gnuradio_swig_py_filter
+## ${prefix}/lib/python${python_version}/site-packages/[category]/gnuradio_core_filter
## Default location for the Python exec directory is:
-## ${exec_prefix}/lib/python${python_version}/site-packages/[category]/gnuradio_swig_py_filter
+## ${exec_prefix}/lib/python${python_version}/site-packages/[category]/gnuradio_core_filter
##
## 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.
-gnuradio_swig_py_filter_pythondir_category ?= gnuradio/gnuradio_swig_py_filter
-gnuradio_swig_py_filter_pylibdir_category ?= $(gnuradio_swig_py_filter_pythondir_category)
-gnuradio_swig_py_filter_pythondir = $(pythondir)/$(gnuradio_swig_py_filter_pythondir_category)
-gnuradio_swig_py_filter_pylibdir = $(pyexecdir)/$(gnuradio_swig_py_filter_pylibdir_category)
+gnuradio_core_filter_pythondir_category ?= gnuradio/gnuradio_core_filter
+gnuradio_core_filter_pylibdir_category ?= $(gnuradio_core_filter_pythondir_category)
+gnuradio_core_filter_pythondir = $(pythondir)/$(gnuradio_core_filter_pythondir_category)
+gnuradio_core_filter_pylibdir = $(pyexecdir)/$(gnuradio_core_filter_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.
+gnuradio_core_filter_scmlibdir = $(libdir)
+
+# The scm files for the guile modules get installed where ever guile
+# is installed, usually /usr/share/guile/site/gnuradio_core_filter
+# FIXME: determince whether these should be installed with gnuradio.
+gnuradio_core_filter_scmdir = $(guiledir)
## SWIG headers are always installed into the same directory.
-gnuradio_swig_py_filter_swigincludedir = $(swigincludedir)
+gnuradio_core_filter_swigincludedir = $(swigincludedir)
## This is a template file for a "generated" Makefile addition (in
## this case, "Makefile.swig.gen"). By including the top-level
@@ -834,205 +502,81 @@ gnuradio_swig_py_filter_swigincludedir = $(swigincludedir)
## right thing. For more info, see <
## http://sources.redhat.com/automake/automake.html#Multiple-Outputs >
-## Stamps used to ensure parallel make does the right thing. These
-## are removed by "make clean", but otherwise unused except during the
-## parallel built. These will not be included in a tarball, because
-## the SWIG-generated files will be removed from the distribution.
-
-STAMPS += $(DEPDIR)/gnuradio_swig_py_filter-generate-*
-
## Other cleaned files: dependency files generated by SWIG or this Makefile
MOSTLYCLEANFILES += $(DEPDIR)/*.S*
-## Add the .py and .cc files to the list of SWIG built sources. The
-## .h file is sometimes built, but not always ... so that one has to
-## be added manually by the including Makefile.am .
-
-swig_built_sources += gnuradio_swig_py_filter.py gnuradio_swig_py_filter.cc
-
## Various SWIG variables. These can be overloaded in the including
## Makefile.am by setting the variable value there, then including
## Makefile.swig .
-gnuradio_swig_py_filter_swiginclude_HEADERS = \
- gnuradio_swig_py_filter.i \
- $(gnuradio_swig_py_filter_swiginclude_headers)
+gnuradio_core_filter_swiginclude_HEADERS = \
+ gnuradio_core_filter.i \
+ $(gnuradio_core_filter_swiginclude_headers)
+
+if PYTHON
+gnuradio_core_filter_pylib_LTLIBRARIES = \
+ _gnuradio_core_filter.la
-gnuradio_swig_py_filter_pylib_LTLIBRARIES = \
- _gnuradio_swig_py_filter.la
+_gnuradio_core_filter_la_SOURCES = \
+ python/gnuradio_core_filter.cc \
+ $(gnuradio_core_filter_la_swig_sources)
-_gnuradio_swig_py_filter_la_SOURCES = \
- gnuradio_swig_py_filter.cc \
- $(gnuradio_swig_py_filter_la_swig_sources)
+gnuradio_core_filter_python_PYTHON = \
+ gnuradio_core_filter.py \
+ $(gnuradio_core_filter_python)
-_gnuradio_swig_py_filter_la_LIBADD = \
+_gnuradio_core_filter_la_LIBADD = \
$(STD_SWIG_LA_LIB_ADD) \
- $(gnuradio_swig_py_filter_la_swig_libadd)
+ $(gnuradio_core_filter_la_swig_libadd)
-_gnuradio_swig_py_filter_la_LDFLAGS = \
+_gnuradio_core_filter_la_LDFLAGS = \
$(STD_SWIG_LA_LD_FLAGS) \
- $(gnuradio_swig_py_filter_la_swig_ldflags)
+ $(gnuradio_core_filter_la_swig_ldflags)
-_gnuradio_swig_py_filter_la_CXXFLAGS = \
+_gnuradio_core_filter_la_CXXFLAGS = \
$(STD_SWIG_CXX_FLAGS) \
- $(gnuradio_swig_py_filter_la_swig_cxxflags)
+ -I$(top_builddir) \
+ $(gnuradio_core_filter_la_swig_cxxflags)
-gnuradio_swig_py_filter_python_PYTHON = \
- gnuradio_swig_py_filter.py \
- $(gnuradio_swig_py_filter_python)
+python/gnuradio_core_filter.cc: gnuradio_core_filter.py
+gnuradio_core_filter.py: gnuradio_core_filter.i
-## Entry rule for running SWIG
+# Include the python dependencies for this file
+-include python/gnuradio_core_filter.d
-gnuradio_swig_py_filter.h gnuradio_swig_py_filter.py gnuradio_swig_py_filter.cc: gnuradio_swig_py_filter.i
-## This rule will get called only when MAKE decides that one of the
-## targets needs to be created or re-created, because:
-##
-## * The .i file is newer than any or all of the generated files;
-##
-## * Any or all of the .cc, .h, or .py files does not exist and is
-## needed (in the case this file is not needed, the rule for it is
-## ignored); or
-##
-## * Some SWIG-based dependecy of the .cc file isn't met and hence the
-## .cc file needs be be regenerated. Explanation: Because MAKE
-## knows how to handle dependencies for .cc files (regardless of
-## their name or extension), then the .cc file is used as a target
-## instead of the .i file -- but with the dependencies of the .i
-## file. It is this last reason why the line:
-##
-## if test -f $@; then :; else
-##
-## cannot be used in this case: If a .i file dependecy is not met,
-## then the .cc file needs to be rebuilt. But if the stamp is newer
-## than the .cc file, and the .cc file exists, then in the original
-## version (with the 'test' above) the internal MAKE call will not
-## be issued and hence the .cc file will not be rebuilt.
-##
-## Once execution gets to here, it should always proceed no matter the
-## state of a stamp (as discussed in link above). The
-## $(DEPDIR)/gnuradio_swig_py_filter-generate stuff is used to allow for parallel
-## builds to "do the right thing". The stamp has no relationship with
-## either the target files or dependency file; it is used solely for
-## the protection of multiple builds during a given call to MAKE.
-##
-## Catch signals SIGHUP (1), SIGINT (2), SIGPIPE (13), and SIGTERM
-## (15). At a caught signal, the quoted command will be issued before
-## exiting. In this case, remove any stamp, whether temporary of not.
-## The trap is valid until the process exits; the process includes all
-## commands appended via "\"s.
-##
- trap 'rm -rf $(DEPDIR)/gnuradio_swig_py_filter-generate-*' 1 2 13 15; \
-##
-## Create a temporary directory, which acts as a lock. The first
-## process to create the directory will succeed and issue the MAKE
-## command to do the actual work, while all subsequent processes will
-## fail -- leading them to wait for the first process to finish.
-##
- if mkdir $(DEPDIR)/gnuradio_swig_py_filter-generate-lock 2>/dev/null; then \
-##
-## This code is being executed by the first process to succeed in
-## creating the directory lock.
-##
-## Remove the stamp associated with this filename.
-##
- rm -f $(DEPDIR)/gnuradio_swig_py_filter-generate-stamp; \
-##
-## Tell MAKE to run the rule for creating this stamp.
-##
- $(MAKE) $(AM_MAKEFLAGS) $(DEPDIR)/gnuradio_swig_py_filter-generate-stamp WHAT=$<; \
-##
-## Now that the .cc, .h, and .py files have been (re)created from the
-## .i file, future checking of this rule during the same MAKE
-## execution will come back that the rule doesn't need to be executed
-## because none of the conditions mentioned at the start of this rule
-## will be positive. Remove the the directory lock, which frees up
-## any waiting process(es) to continue.
-##
- rmdir $(DEPDIR)/gnuradio_swig_py_filter-generate-lock; \
- else \
-##
-## This code is being executed by any follower processes while the
-## directory lock is in place.
-##
-## Wait until the first process is done, testing once per second.
-##
- while test -d $(DEPDIR)/gnuradio_swig_py_filter-generate-lock; do \
- sleep 1; \
- done; \
-##
-## Succeed if and only if the first process succeeded; exit this
-## process returning the status of the generated stamp.
-##
- test -f $(DEPDIR)/gnuradio_swig_py_filter-generate-stamp; \
- exit $$?; \
- fi;
-
-$(DEPDIR)/gnuradio_swig_py_filter-generate-stamp:
-## This rule will be called only by the first process issuing the
-## above rule to succeed in creating the lock directory, after
-## removing the actual stamp file in order to guarantee that MAKE will
-## execute this rule.
-##
-## Call SWIG to generate the various output files; special
-## post-processing on 'mingw32' host OS for the dependency file.
-##
- if $(SWIG) $(STD_SWIG_PYTHON_ARGS) $(gnuradio_swig_py_filter_swig_args) \
- -MD -MF $(DEPDIR)/gnuradio_swig_py_filter.Std \
- -module gnuradio_swig_py_filter -o gnuradio_swig_py_filter.cc $(WHAT); then \
- if test $(host_os) = mingw32; then \
- $(RM) $(DEPDIR)/gnuradio_swig_py_filter.Sd; \
- $(SED) 's,\\\\,/,g' < $(DEPDIR)/gnuradio_swig_py_filter.Std \
- > $(DEPDIR)/gnuradio_swig_py_filter.Sd; \
- $(RM) $(DEPDIR)/gnuradio_swig_py_filter.Std; \
- $(MV) $(DEPDIR)/gnuradio_swig_py_filter.Sd $(DEPDIR)/gnuradio_swig_py_filter.Std; \
- fi; \
- else \
- $(RM) $(DEPDIR)/gnuradio_swig_py_filter.S*; exit 1; \
- fi;
-##
-## Mess with the SWIG output .Std dependency file, to create a
-## dependecy file valid for the input .i file: Basically, simulate the
-## dependency file created for libraries by GNU's libtool for C++,
-## where all of the dependencies for the target are first listed, then
-## each individual dependency is listed as a target with no further
-## dependencies.
-##
-## (1) remove the current dependency file
-##
- $(RM) $(DEPDIR)/gnuradio_swig_py_filter.d
-##
-## (2) Copy the whole SWIG file:
-##
- cp $(DEPDIR)/gnuradio_swig_py_filter.Std $(DEPDIR)/gnuradio_swig_py_filter.d
-##
-## (3) all a carriage return to the end of the dependency file.
-##
- echo "" >> $(DEPDIR)/gnuradio_swig_py_filter.d
-##
-## (4) from the SWIG file, remove the first line (the target); remove
-## trailing " \" and " " from each line. Append ":" to each line,
-## followed by 2 carriage returns, then append this to the end of
-## the dependency file.
-##
- $(SED) -e '1d;s, \\,,g;s, ,,g' < $(DEPDIR)/gnuradio_swig_py_filter.Std | \
- awk '{ printf "%s:\n\n", $$0 }' >> $(DEPDIR)/gnuradio_swig_py_filter.d
-##
-## (5) remove the SWIG-generated file
-##
- $(RM) $(DEPDIR)/gnuradio_swig_py_filter.Std
-##
-## Create the stamp for this filename generation, to signal success in
-## executing this rule; allows other threads waiting on this process
-## to continue.
-##
- touch $(DEPDIR)/gnuradio_swig_py_filter-generate-stamp
+endif # end of if python
+
+if GUILE
+
+gnuradio_core_filter_scmlib_LTLIBRARIES = \
+ libguile-gnuradio-gnuradio_core_filter.la
+libguile_gnuradio_gnuradio_core_filter_la_SOURCES = \
+ guile/gnuradio_core_filter.cc \
+ $(gnuradio_core_filter_la_swig_sources)
+nobase_gnuradio_core_filter_scm_DATA = \
+ gnuradio/gnuradio_core_filter.scm \
+ gnuradio/gnuradio_core_filter-primitive.scm
+libguile_gnuradio_gnuradio_core_filter_la_LIBADD = \
+ $(STD_SWIG_LA_LIB_ADD) \
+ $(gnuradio_core_filter_la_swig_libadd)
+libguile_gnuradio_gnuradio_core_filter_la_LDFLAGS = \
+ $(STD_SWIG_LA_LD_FLAGS) \
+ $(gnuradio_core_filter_la_swig_ldflags)
+libguile_gnuradio_gnuradio_core_filter_la_CXXFLAGS = \
+ $(STD_SWIG_CXX_FLAGS) \
+ -I$(top_builddir) \
+ $(gnuradio_core_filter_la_swig_cxxflags)
-# KLUDGE: Force runtime include of a SWIG dependency file. This is
-# not guaranteed to be portable, but will probably work. If it works,
-# we have accurate dependencies for our swig stuff, which is good.
+guile/gnuradio_core_filter.cc: gnuradio/gnuradio_core_filter.scm
+gnuradio/gnuradio_core_filter.scm: gnuradio_core_filter.i
+gnuradio/gnuradio_core_filter-primitive.scm: gnuradio/gnuradio_core_filter.scm
+
+# Include the guile dependencies for this file
+-include guile/gnuradio_core_filter.d
+
+endif # end of GUILE
-@am__include@ @am__quote@./$(DEPDIR)/gnuradio_swig_py_filter.d@am__quote@
# -*- Makefile -*-
#
@@ -1056,27 +600,37 @@ $(DEPDIR)/gnuradio_swig_py_filter-generate-stamp:
# Boston, MA 02110-1301, USA.
#
-# Makefile.swig.gen for gnuradio_swig_py_io.i
+# Makefile.swig.gen for gnuradio_core_io.i
## Default install locations for these files:
##
## Default location for the Python directory is:
-## ${prefix}/lib/python${python_version}/site-packages/[category]/gnuradio_swig_py_io
+## ${prefix}/lib/python${python_version}/site-packages/[category]/gnuradio_core_io
## Default location for the Python exec directory is:
-## ${exec_prefix}/lib/python${python_version}/site-packages/[category]/gnuradio_swig_py_io
+## ${exec_prefix}/lib/python${python_version}/site-packages/[category]/gnuradio_core_io
##
## 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.
-gnuradio_swig_py_io_pythondir_category ?= gnuradio/gnuradio_swig_py_io
-gnuradio_swig_py_io_pylibdir_category ?= $(gnuradio_swig_py_io_pythondir_category)
-gnuradio_swig_py_io_pythondir = $(pythondir)/$(gnuradio_swig_py_io_pythondir_category)
-gnuradio_swig_py_io_pylibdir = $(pyexecdir)/$(gnuradio_swig_py_io_pylibdir_category)
+gnuradio_core_io_pythondir_category ?= gnuradio/gnuradio_core_io
+gnuradio_core_io_pylibdir_category ?= $(gnuradio_core_io_pythondir_category)
+gnuradio_core_io_pythondir = $(pythondir)/$(gnuradio_core_io_pythondir_category)
+gnuradio_core_io_pylibdir = $(pyexecdir)/$(gnuradio_core_io_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.
+gnuradio_core_io_scmlibdir = $(libdir)
+
+# The scm files for the guile modules get installed where ever guile
+# is installed, usually /usr/share/guile/site/gnuradio_core_io
+# FIXME: determince whether these should be installed with gnuradio.
+gnuradio_core_io_scmdir = $(guiledir)
## SWIG headers are always installed into the same directory.
-gnuradio_swig_py_io_swigincludedir = $(swigincludedir)
+gnuradio_core_io_swigincludedir = $(swigincludedir)
## This is a template file for a "generated" Makefile addition (in
## this case, "Makefile.swig.gen"). By including the top-level
@@ -1093,205 +647,81 @@ gnuradio_swig_py_io_swigincludedir = $(swigincludedir)
## right thing. For more info, see <
## http://sources.redhat.com/automake/automake.html#Multiple-Outputs >
-## Stamps used to ensure parallel make does the right thing. These
-## are removed by "make clean", but otherwise unused except during the
-## parallel built. These will not be included in a tarball, because
-## the SWIG-generated files will be removed from the distribution.
-
-STAMPS += $(DEPDIR)/gnuradio_swig_py_io-generate-*
-
## Other cleaned files: dependency files generated by SWIG or this Makefile
MOSTLYCLEANFILES += $(DEPDIR)/*.S*
-## Add the .py and .cc files to the list of SWIG built sources. The
-## .h file is sometimes built, but not always ... so that one has to
-## be added manually by the including Makefile.am .
-
-swig_built_sources += gnuradio_swig_py_io.py gnuradio_swig_py_io.cc
-
## Various SWIG variables. These can be overloaded in the including
## Makefile.am by setting the variable value there, then including
## Makefile.swig .
-gnuradio_swig_py_io_swiginclude_HEADERS = \
- gnuradio_swig_py_io.i \
- $(gnuradio_swig_py_io_swiginclude_headers)
+gnuradio_core_io_swiginclude_HEADERS = \
+ gnuradio_core_io.i \
+ $(gnuradio_core_io_swiginclude_headers)
+
+if PYTHON
+gnuradio_core_io_pylib_LTLIBRARIES = \
+ _gnuradio_core_io.la
-gnuradio_swig_py_io_pylib_LTLIBRARIES = \
- _gnuradio_swig_py_io.la
+_gnuradio_core_io_la_SOURCES = \
+ python/gnuradio_core_io.cc \
+ $(gnuradio_core_io_la_swig_sources)
-_gnuradio_swig_py_io_la_SOURCES = \
- gnuradio_swig_py_io.cc \
- $(gnuradio_swig_py_io_la_swig_sources)
+gnuradio_core_io_python_PYTHON = \
+ gnuradio_core_io.py \
+ $(gnuradio_core_io_python)
-_gnuradio_swig_py_io_la_LIBADD = \
+_gnuradio_core_io_la_LIBADD = \
$(STD_SWIG_LA_LIB_ADD) \
- $(gnuradio_swig_py_io_la_swig_libadd)
+ $(gnuradio_core_io_la_swig_libadd)
-_gnuradio_swig_py_io_la_LDFLAGS = \
+_gnuradio_core_io_la_LDFLAGS = \
$(STD_SWIG_LA_LD_FLAGS) \
- $(gnuradio_swig_py_io_la_swig_ldflags)
+ $(gnuradio_core_io_la_swig_ldflags)
-_gnuradio_swig_py_io_la_CXXFLAGS = \
+_gnuradio_core_io_la_CXXFLAGS = \
$(STD_SWIG_CXX_FLAGS) \
- $(gnuradio_swig_py_io_la_swig_cxxflags)
+ -I$(top_builddir) \
+ $(gnuradio_core_io_la_swig_cxxflags)
-gnuradio_swig_py_io_python_PYTHON = \
- gnuradio_swig_py_io.py \
- $(gnuradio_swig_py_io_python)
+python/gnuradio_core_io.cc: gnuradio_core_io.py
+gnuradio_core_io.py: gnuradio_core_io.i
-## Entry rule for running SWIG
+# Include the python dependencies for this file
+-include python/gnuradio_core_io.d
-gnuradio_swig_py_io.h gnuradio_swig_py_io.py gnuradio_swig_py_io.cc: gnuradio_swig_py_io.i
-## This rule will get called only when MAKE decides that one of the
-## targets needs to be created or re-created, because:
-##
-## * The .i file is newer than any or all of the generated files;
-##
-## * Any or all of the .cc, .h, or .py files does not exist and is
-## needed (in the case this file is not needed, the rule for it is
-## ignored); or
-##
-## * Some SWIG-based dependecy of the .cc file isn't met and hence the
-## .cc file needs be be regenerated. Explanation: Because MAKE
-## knows how to handle dependencies for .cc files (regardless of
-## their name or extension), then the .cc file is used as a target
-## instead of the .i file -- but with the dependencies of the .i
-## file. It is this last reason why the line:
-##
-## if test -f $@; then :; else
-##
-## cannot be used in this case: If a .i file dependecy is not met,
-## then the .cc file needs to be rebuilt. But if the stamp is newer
-## than the .cc file, and the .cc file exists, then in the original
-## version (with the 'test' above) the internal MAKE call will not
-## be issued and hence the .cc file will not be rebuilt.
-##
-## Once execution gets to here, it should always proceed no matter the
-## state of a stamp (as discussed in link above). The
-## $(DEPDIR)/gnuradio_swig_py_io-generate stuff is used to allow for parallel
-## builds to "do the right thing". The stamp has no relationship with
-## either the target files or dependency file; it is used solely for
-## the protection of multiple builds during a given call to MAKE.
-##
-## Catch signals SIGHUP (1), SIGINT (2), SIGPIPE (13), and SIGTERM
-## (15). At a caught signal, the quoted command will be issued before
-## exiting. In this case, remove any stamp, whether temporary of not.
-## The trap is valid until the process exits; the process includes all
-## commands appended via "\"s.
-##
- trap 'rm -rf $(DEPDIR)/gnuradio_swig_py_io-generate-*' 1 2 13 15; \
-##
-## Create a temporary directory, which acts as a lock. The first
-## process to create the directory will succeed and issue the MAKE
-## command to do the actual work, while all subsequent processes will
-## fail -- leading them to wait for the first process to finish.
-##
- if mkdir $(DEPDIR)/gnuradio_swig_py_io-generate-lock 2>/dev/null; then \
-##
-## This code is being executed by the first process to succeed in
-## creating the directory lock.
-##
-## Remove the stamp associated with this filename.
-##
- rm -f $(DEPDIR)/gnuradio_swig_py_io-generate-stamp; \
-##
-## Tell MAKE to run the rule for creating this stamp.
-##
- $(MAKE) $(AM_MAKEFLAGS) $(DEPDIR)/gnuradio_swig_py_io-generate-stamp WHAT=$<; \
-##
-## Now that the .cc, .h, and .py files have been (re)created from the
-## .i file, future checking of this rule during the same MAKE
-## execution will come back that the rule doesn't need to be executed
-## because none of the conditions mentioned at the start of this rule
-## will be positive. Remove the the directory lock, which frees up
-## any waiting process(es) to continue.
-##
- rmdir $(DEPDIR)/gnuradio_swig_py_io-generate-lock; \
- else \
-##
-## This code is being executed by any follower processes while the
-## directory lock is in place.
-##
-## Wait until the first process is done, testing once per second.
-##
- while test -d $(DEPDIR)/gnuradio_swig_py_io-generate-lock; do \
- sleep 1; \
- done; \
-##
-## Succeed if and only if the first process succeeded; exit this
-## process returning the status of the generated stamp.
-##
- test -f $(DEPDIR)/gnuradio_swig_py_io-generate-stamp; \
- exit $$?; \
- fi;
-
-$(DEPDIR)/gnuradio_swig_py_io-generate-stamp:
-## This rule will be called only by the first process issuing the
-## above rule to succeed in creating the lock directory, after
-## removing the actual stamp file in order to guarantee that MAKE will
-## execute this rule.
-##
-## Call SWIG to generate the various output files; special
-## post-processing on 'mingw32' host OS for the dependency file.
-##
- if $(SWIG) $(STD_SWIG_PYTHON_ARGS) $(gnuradio_swig_py_io_swig_args) \
- -MD -MF $(DEPDIR)/gnuradio_swig_py_io.Std \
- -module gnuradio_swig_py_io -o gnuradio_swig_py_io.cc $(WHAT); then \
- if test $(host_os) = mingw32; then \
- $(RM) $(DEPDIR)/gnuradio_swig_py_io.Sd; \
- $(SED) 's,\\\\,/,g' < $(DEPDIR)/gnuradio_swig_py_io.Std \
- > $(DEPDIR)/gnuradio_swig_py_io.Sd; \
- $(RM) $(DEPDIR)/gnuradio_swig_py_io.Std; \
- $(MV) $(DEPDIR)/gnuradio_swig_py_io.Sd $(DEPDIR)/gnuradio_swig_py_io.Std; \
- fi; \
- else \
- $(RM) $(DEPDIR)/gnuradio_swig_py_io.S*; exit 1; \
- fi;
-##
-## Mess with the SWIG output .Std dependency file, to create a
-## dependecy file valid for the input .i file: Basically, simulate the
-## dependency file created for libraries by GNU's libtool for C++,
-## where all of the dependencies for the target are first listed, then
-## each individual dependency is listed as a target with no further
-## dependencies.
-##
-## (1) remove the current dependency file
-##
- $(RM) $(DEPDIR)/gnuradio_swig_py_io.d
-##
-## (2) Copy the whole SWIG file:
-##
- cp $(DEPDIR)/gnuradio_swig_py_io.Std $(DEPDIR)/gnuradio_swig_py_io.d
-##
-## (3) all a carriage return to the end of the dependency file.
-##
- echo "" >> $(DEPDIR)/gnuradio_swig_py_io.d
-##
-## (4) from the SWIG file, remove the first line (the target); remove
-## trailing " \" and " " from each line. Append ":" to each line,
-## followed by 2 carriage returns, then append this to the end of
-## the dependency file.
-##
- $(SED) -e '1d;s, \\,,g;s, ,,g' < $(DEPDIR)/gnuradio_swig_py_io.Std | \
- awk '{ printf "%s:\n\n", $$0 }' >> $(DEPDIR)/gnuradio_swig_py_io.d
-##
-## (5) remove the SWIG-generated file
-##
- $(RM) $(DEPDIR)/gnuradio_swig_py_io.Std
-##
-## Create the stamp for this filename generation, to signal success in
-## executing this rule; allows other threads waiting on this process
-## to continue.
-##
- touch $(DEPDIR)/gnuradio_swig_py_io-generate-stamp
+endif # end of if python
+
+if GUILE
-# KLUDGE: Force runtime include of a SWIG dependency file. This is
-# not guaranteed to be portable, but will probably work. If it works,
-# we have accurate dependencies for our swig stuff, which is good.
+gnuradio_core_io_scmlib_LTLIBRARIES = \
+ libguile-gnuradio-gnuradio_core_io.la
+libguile_gnuradio_gnuradio_core_io_la_SOURCES = \
+ guile/gnuradio_core_io.cc \
+ $(gnuradio_core_io_la_swig_sources)
+nobase_gnuradio_core_io_scm_DATA = \
+ gnuradio/gnuradio_core_io.scm \
+ gnuradio/gnuradio_core_io-primitive.scm
+libguile_gnuradio_gnuradio_core_io_la_LIBADD = \
+ $(STD_SWIG_LA_LIB_ADD) \
+ $(gnuradio_core_io_la_swig_libadd)
+libguile_gnuradio_gnuradio_core_io_la_LDFLAGS = \
+ $(STD_SWIG_LA_LD_FLAGS) \
+ $(gnuradio_core_io_la_swig_ldflags)
+libguile_gnuradio_gnuradio_core_io_la_CXXFLAGS = \
+ $(STD_SWIG_CXX_FLAGS) \
+ -I$(top_builddir) \
+ $(gnuradio_core_io_la_swig_cxxflags)
+
+guile/gnuradio_core_io.cc: gnuradio/gnuradio_core_io.scm
+gnuradio/gnuradio_core_io.scm: gnuradio_core_io.i
+gnuradio/gnuradio_core_io-primitive.scm: gnuradio/gnuradio_core_io.scm
+
+# Include the guile dependencies for this file
+-include guile/gnuradio_core_io.d
+
+endif # end of GUILE
-@am__include@ @am__quote@./$(DEPDIR)/gnuradio_swig_py_io.d@am__quote@
# -*- Makefile -*-
#
@@ -1315,27 +745,37 @@ $(DEPDIR)/gnuradio_swig_py_io-generate-stamp:
# Boston, MA 02110-1301, USA.
#
-# Makefile.swig.gen for gnuradio_swig_py_hier.i
+# Makefile.swig.gen for gnuradio_core_hier.i
## Default install locations for these files:
##
## Default location for the Python directory is:
-## ${prefix}/lib/python${python_version}/site-packages/[category]/gnuradio_swig_py_hier
+## ${prefix}/lib/python${python_version}/site-packages/[category]/gnuradio_core_hier
## Default location for the Python exec directory is:
-## ${exec_prefix}/lib/python${python_version}/site-packages/[category]/gnuradio_swig_py_hier
+## ${exec_prefix}/lib/python${python_version}/site-packages/[category]/gnuradio_core_hier
##
## 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.
-gnuradio_swig_py_hier_pythondir_category ?= gnuradio/gnuradio_swig_py_hier
-gnuradio_swig_py_hier_pylibdir_category ?= $(gnuradio_swig_py_hier_pythondir_category)
-gnuradio_swig_py_hier_pythondir = $(pythondir)/$(gnuradio_swig_py_hier_pythondir_category)
-gnuradio_swig_py_hier_pylibdir = $(pyexecdir)/$(gnuradio_swig_py_hier_pylibdir_category)
+gnuradio_core_hier_pythondir_category ?= gnuradio/gnuradio_core_hier
+gnuradio_core_hier_pylibdir_category ?= $(gnuradio_core_hier_pythondir_category)
+gnuradio_core_hier_pythondir = $(pythondir)/$(gnuradio_core_hier_pythondir_category)
+gnuradio_core_hier_pylibdir = $(pyexecdir)/$(gnuradio_core_hier_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.
+gnuradio_core_hier_scmlibdir = $(libdir)
+
+# The scm files for the guile modules get installed where ever guile
+# is installed, usually /usr/share/guile/site/gnuradio_core_hier
+# FIXME: determince whether these should be installed with gnuradio.
+gnuradio_core_hier_scmdir = $(guiledir)
## SWIG headers are always installed into the same directory.
-gnuradio_swig_py_hier_swigincludedir = $(swigincludedir)
+gnuradio_core_hier_swigincludedir = $(swigincludedir)
## This is a template file for a "generated" Makefile addition (in
## this case, "Makefile.swig.gen"). By including the top-level
@@ -1352,203 +792,79 @@ gnuradio_swig_py_hier_swigincludedir = $(swigincludedir)
## right thing. For more info, see <
## http://sources.redhat.com/automake/automake.html#Multiple-Outputs >
-## Stamps used to ensure parallel make does the right thing. These
-## are removed by "make clean", but otherwise unused except during the
-## parallel built. These will not be included in a tarball, because
-## the SWIG-generated files will be removed from the distribution.
-
-STAMPS += $(DEPDIR)/gnuradio_swig_py_hier-generate-*
-
## Other cleaned files: dependency files generated by SWIG or this Makefile
MOSTLYCLEANFILES += $(DEPDIR)/*.S*
-## Add the .py and .cc files to the list of SWIG built sources. The
-## .h file is sometimes built, but not always ... so that one has to
-## be added manually by the including Makefile.am .
-
-swig_built_sources += gnuradio_swig_py_hier.py gnuradio_swig_py_hier.cc
-
## Various SWIG variables. These can be overloaded in the including
## Makefile.am by setting the variable value there, then including
## Makefile.swig .
-gnuradio_swig_py_hier_swiginclude_HEADERS = \
- gnuradio_swig_py_hier.i \
- $(gnuradio_swig_py_hier_swiginclude_headers)
+gnuradio_core_hier_swiginclude_HEADERS = \
+ gnuradio_core_hier.i \
+ $(gnuradio_core_hier_swiginclude_headers)
+
+if PYTHON
+gnuradio_core_hier_pylib_LTLIBRARIES = \
+ _gnuradio_core_hier.la
-gnuradio_swig_py_hier_pylib_LTLIBRARIES = \
- _gnuradio_swig_py_hier.la
+_gnuradio_core_hier_la_SOURCES = \
+ python/gnuradio_core_hier.cc \
+ $(gnuradio_core_hier_la_swig_sources)
-_gnuradio_swig_py_hier_la_SOURCES = \
- gnuradio_swig_py_hier.cc \
- $(gnuradio_swig_py_hier_la_swig_sources)
+gnuradio_core_hier_python_PYTHON = \
+ gnuradio_core_hier.py \
+ $(gnuradio_core_hier_python)
-_gnuradio_swig_py_hier_la_LIBADD = \
+_gnuradio_core_hier_la_LIBADD = \
$(STD_SWIG_LA_LIB_ADD) \
- $(gnuradio_swig_py_hier_la_swig_libadd)
+ $(gnuradio_core_hier_la_swig_libadd)
-_gnuradio_swig_py_hier_la_LDFLAGS = \
+_gnuradio_core_hier_la_LDFLAGS = \
$(STD_SWIG_LA_LD_FLAGS) \
- $(gnuradio_swig_py_hier_la_swig_ldflags)
+ $(gnuradio_core_hier_la_swig_ldflags)
-_gnuradio_swig_py_hier_la_CXXFLAGS = \
+_gnuradio_core_hier_la_CXXFLAGS = \
$(STD_SWIG_CXX_FLAGS) \
- $(gnuradio_swig_py_hier_la_swig_cxxflags)
+ -I$(top_builddir) \
+ $(gnuradio_core_hier_la_swig_cxxflags)
-gnuradio_swig_py_hier_python_PYTHON = \
- gnuradio_swig_py_hier.py \
- $(gnuradio_swig_py_hier_python)
+python/gnuradio_core_hier.cc: gnuradio_core_hier.py
+gnuradio_core_hier.py: gnuradio_core_hier.i
-## Entry rule for running SWIG
+# Include the python dependencies for this file
+-include python/gnuradio_core_hier.d
-gnuradio_swig_py_hier.h gnuradio_swig_py_hier.py gnuradio_swig_py_hier.cc: gnuradio_swig_py_hier.i
-## This rule will get called only when MAKE decides that one of the
-## targets needs to be created or re-created, because:
-##
-## * The .i file is newer than any or all of the generated files;
-##
-## * Any or all of the .cc, .h, or .py files does not exist and is
-## needed (in the case this file is not needed, the rule for it is
-## ignored); or
-##
-## * Some SWIG-based dependecy of the .cc file isn't met and hence the
-## .cc file needs be be regenerated. Explanation: Because MAKE
-## knows how to handle dependencies for .cc files (regardless of
-## their name or extension), then the .cc file is used as a target
-## instead of the .i file -- but with the dependencies of the .i
-## file. It is this last reason why the line:
-##
-## if test -f $@; then :; else
-##
-## cannot be used in this case: If a .i file dependecy is not met,
-## then the .cc file needs to be rebuilt. But if the stamp is newer
-## than the .cc file, and the .cc file exists, then in the original
-## version (with the 'test' above) the internal MAKE call will not
-## be issued and hence the .cc file will not be rebuilt.
-##
-## Once execution gets to here, it should always proceed no matter the
-## state of a stamp (as discussed in link above). The
-## $(DEPDIR)/gnuradio_swig_py_hier-generate stuff is used to allow for parallel
-## builds to "do the right thing". The stamp has no relationship with
-## either the target files or dependency file; it is used solely for
-## the protection of multiple builds during a given call to MAKE.
-##
-## Catch signals SIGHUP (1), SIGINT (2), SIGPIPE (13), and SIGTERM
-## (15). At a caught signal, the quoted command will be issued before
-## exiting. In this case, remove any stamp, whether temporary of not.
-## The trap is valid until the process exits; the process includes all
-## commands appended via "\"s.
-##
- trap 'rm -rf $(DEPDIR)/gnuradio_swig_py_hier-generate-*' 1 2 13 15; \
-##
-## Create a temporary directory, which acts as a lock. The first
-## process to create the directory will succeed and issue the MAKE
-## command to do the actual work, while all subsequent processes will
-## fail -- leading them to wait for the first process to finish.
-##
- if mkdir $(DEPDIR)/gnuradio_swig_py_hier-generate-lock 2>/dev/null; then \
-##
-## This code is being executed by the first process to succeed in
-## creating the directory lock.
-##
-## Remove the stamp associated with this filename.
-##
- rm -f $(DEPDIR)/gnuradio_swig_py_hier-generate-stamp; \
-##
-## Tell MAKE to run the rule for creating this stamp.
-##
- $(MAKE) $(AM_MAKEFLAGS) $(DEPDIR)/gnuradio_swig_py_hier-generate-stamp WHAT=$<; \
-##
-## Now that the .cc, .h, and .py files have been (re)created from the
-## .i file, future checking of this rule during the same MAKE
-## execution will come back that the rule doesn't need to be executed
-## because none of the conditions mentioned at the start of this rule
-## will be positive. Remove the the directory lock, which frees up
-## any waiting process(es) to continue.
-##
- rmdir $(DEPDIR)/gnuradio_swig_py_hier-generate-lock; \
- else \
-##
-## This code is being executed by any follower processes while the
-## directory lock is in place.
-##
-## Wait until the first process is done, testing once per second.
-##
- while test -d $(DEPDIR)/gnuradio_swig_py_hier-generate-lock; do \
- sleep 1; \
- done; \
-##
-## Succeed if and only if the first process succeeded; exit this
-## process returning the status of the generated stamp.
-##
- test -f $(DEPDIR)/gnuradio_swig_py_hier-generate-stamp; \
- exit $$?; \
- fi;
-
-$(DEPDIR)/gnuradio_swig_py_hier-generate-stamp:
-## This rule will be called only by the first process issuing the
-## above rule to succeed in creating the lock directory, after
-## removing the actual stamp file in order to guarantee that MAKE will
-## execute this rule.
-##
-## Call SWIG to generate the various output files; special
-## post-processing on 'mingw32' host OS for the dependency file.
-##
- if $(SWIG) $(STD_SWIG_PYTHON_ARGS) $(gnuradio_swig_py_hier_swig_args) \
- -MD -MF $(DEPDIR)/gnuradio_swig_py_hier.Std \
- -module gnuradio_swig_py_hier -o gnuradio_swig_py_hier.cc $(WHAT); then \
- if test $(host_os) = mingw32; then \
- $(RM) $(DEPDIR)/gnuradio_swig_py_hier.Sd; \
- $(SED) 's,\\\\,/,g' < $(DEPDIR)/gnuradio_swig_py_hier.Std \
- > $(DEPDIR)/gnuradio_swig_py_hier.Sd; \
- $(RM) $(DEPDIR)/gnuradio_swig_py_hier.Std; \
- $(MV) $(DEPDIR)/gnuradio_swig_py_hier.Sd $(DEPDIR)/gnuradio_swig_py_hier.Std; \
- fi; \
- else \
- $(RM) $(DEPDIR)/gnuradio_swig_py_hier.S*; exit 1; \
- fi;
-##
-## Mess with the SWIG output .Std dependency file, to create a
-## dependecy file valid for the input .i file: Basically, simulate the
-## dependency file created for libraries by GNU's libtool for C++,
-## where all of the dependencies for the target are first listed, then
-## each individual dependency is listed as a target with no further
-## dependencies.
-##
-## (1) remove the current dependency file
-##
- $(RM) $(DEPDIR)/gnuradio_swig_py_hier.d
-##
-## (2) Copy the whole SWIG file:
-##
- cp $(DEPDIR)/gnuradio_swig_py_hier.Std $(DEPDIR)/gnuradio_swig_py_hier.d
-##
-## (3) all a carriage return to the end of the dependency file.
-##
- echo "" >> $(DEPDIR)/gnuradio_swig_py_hier.d
-##
-## (4) from the SWIG file, remove the first line (the target); remove
-## trailing " \" and " " from each line. Append ":" to each line,
-## followed by 2 carriage returns, then append this to the end of
-## the dependency file.
-##
- $(SED) -e '1d;s, \\,,g;s, ,,g' < $(DEPDIR)/gnuradio_swig_py_hier.Std | \
- awk '{ printf "%s:\n\n", $$0 }' >> $(DEPDIR)/gnuradio_swig_py_hier.d
-##
-## (5) remove the SWIG-generated file
-##
- $(RM) $(DEPDIR)/gnuradio_swig_py_hier.Std
-##
-## Create the stamp for this filename generation, to signal success in
-## executing this rule; allows other threads waiting on this process
-## to continue.
-##
- touch $(DEPDIR)/gnuradio_swig_py_hier-generate-stamp
+endif # end of if python
+
+if GUILE
+
+gnuradio_core_hier_scmlib_LTLIBRARIES = \
+ libguile-gnuradio-gnuradio_core_hier.la
+libguile_gnuradio_gnuradio_core_hier_la_SOURCES = \
+ guile/gnuradio_core_hier.cc \
+ $(gnuradio_core_hier_la_swig_sources)
+nobase_gnuradio_core_hier_scm_DATA = \
+ gnuradio/gnuradio_core_hier.scm \
+ gnuradio/gnuradio_core_hier-primitive.scm
+libguile_gnuradio_gnuradio_core_hier_la_LIBADD = \
+ $(STD_SWIG_LA_LIB_ADD) \
+ $(gnuradio_core_hier_la_swig_libadd)
+libguile_gnuradio_gnuradio_core_hier_la_LDFLAGS = \
+ $(STD_SWIG_LA_LD_FLAGS) \
+ $(gnuradio_core_hier_la_swig_ldflags)
+libguile_gnuradio_gnuradio_core_hier_la_CXXFLAGS = \
+ $(STD_SWIG_CXX_FLAGS) \
+ -I$(top_builddir) \
+ $(gnuradio_core_hier_la_swig_cxxflags)
+
+guile/gnuradio_core_hier.cc: gnuradio/gnuradio_core_hier.scm
+gnuradio/gnuradio_core_hier.scm: gnuradio_core_hier.i
+gnuradio/gnuradio_core_hier-primitive.scm: gnuradio/gnuradio_core_hier.scm
+
+# Include the guile dependencies for this file
+-include guile/gnuradio_core_hier.d
-# KLUDGE: Force runtime include of a SWIG dependency file. This is
-# not guaranteed to be portable, but will probably work. If it works,
-# we have accurate dependencies for our swig stuff, which is good.
+endif # end of GUILE
-@am__include@ @am__quote@./$(DEPDIR)/gnuradio_swig_py_hier.d@am__quote@
diff --git a/gnuradio-core/src/lib/swig/gnuradio.i b/gnuradio-core/src/lib/swig/gnuradio.i
index e15a0059c..1601cca12 100644
--- a/gnuradio-core/src/lib/swig/gnuradio.i
+++ b/gnuradio-core/src/lib/swig/gnuradio.i
@@ -32,6 +32,7 @@
#include "gnuradio_swig_bug_workaround.h" // mandatory bug fix
#include <gr_types.h>
#include <stddef.h> // size_t
+#include <complex>
%}
%feature("autodoc","1");
@@ -40,8 +41,21 @@
%include <gr_shared_ptr.i>
// non-local SWIG files
-%include <stl.i>
+#ifdef SWIGGUILE // Local overrides to support complex
+// It's kind of screwy, but the target language subdir isn't
+// searched automatically except for under ./swig_lib which
+// doesn't really help us since we run swig in many directories
+%include <guile/std_complex.i>
+%include <guile/std_vector.i>
+%include <std_common.i>
+%include <std_string.i>
+%include <std_map.i>
+%include <std_pair.i>
+#else
%include <std_complex.i>
+%include <std_vector.i>
+%include <stl.i>
+#endif
%include <std_except.i>
typedef std::complex<float> gr_complex;
@@ -59,6 +73,7 @@ namespace std {
%template() vector<int>;
%template() vector<float>;
%template() vector<double>;
+ // %template() std::complex<float>;
%template() vector< std::complex<float> >;
%template() vector< std::vector< unsigned char > >;
@@ -72,15 +87,6 @@ namespace std {
////////////////////////////////////////////////////////////////////////
-%constant int sizeof_char = sizeof(char);
-%constant int sizeof_short = sizeof(short);
-%constant int sizeof_int = sizeof(int);
-%constant int sizeof_float = sizeof(float);
-%constant int sizeof_double = sizeof(double);
-%constant int sizeof_gr_complex = sizeof(gr_complex);
-
-////////////////////////////////////////////////////////////////////////
-
#ifndef SW_RUNTIME
// import runtime.i for all but sw_runtime, since it needs to %include
%import <runtime.i>
diff --git a/gnuradio-core/src/lib/swig/gnuradio_swig_python.py b/gnuradio-core/src/lib/swig/gnuradio_core.py
index 5324b2309..172051013 100644
--- a/gnuradio-core/src/lib/swig/gnuradio_swig_python.py
+++ b/gnuradio-core/src/lib/swig/gnuradio_core.py
@@ -1,5 +1,5 @@
#
-# Copyright 2006,2009 Free Software Foundation, Inc.
+# Copyright 2006,2009,2010 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -18,11 +18,11 @@
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
-# This file implements the old gnuradio_swig_python namespace
+# This file implements the old gnuradio_core namespace
-from gnuradio_swig_py_runtime import *
-from gnuradio_swig_py_general import *
-from gnuradio_swig_py_gengen import *
-from gnuradio_swig_py_filter import *
-from gnuradio_swig_py_io import *
-from gnuradio_swig_py_hier import *
+from gnuradio_core_runtime import *
+from gnuradio_core_general import *
+from gnuradio_core_gengen import *
+from gnuradio_core_filter import *
+from gnuradio_core_io import *
+from gnuradio_core_hier import *
diff --git a/gnuradio-core/src/lib/swig/gnuradio_swig_py_filter.i b/gnuradio-core/src/lib/swig/gnuradio_core_filter.i
index 6396a97d0..d7262f140 100644
--- a/gnuradio-core/src/lib/swig/gnuradio_swig_py_filter.i
+++ b/gnuradio-core/src/lib/swig/gnuradio_core_filter.i
@@ -1,26 +1,26 @@
/* -*- c++ -*- */
/*
- * Copyright 2006,2009 Free Software Foundation, Inc.
- *
+ * Copyright 2006,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 this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef SWIGIMPORTED
-%module(directors="1") gnuradio_swig_py_filter
+%module(directors="1") gnuradio_core_filter
#endif
//%feature("autodoc", "1"); // generate python docstrings
@@ -28,3 +28,13 @@
%include "gnuradio.i" // the common stuff
%include "filter.i"
+
+#if SWIGGUILE
+%scheme %{
+(load-extension "libguile-gnuradio-gnuradio_core_filter" "scm_init_gnuradio_gnuradio_core_filter_module")
+%}
+
+%goops %{
+ (use-modules (gnuradio gnuradio_core_runtime))
+%}
+#endif
diff --git a/gnuradio-core/src/lib/swig/gnuradio_swig_py_general.i b/gnuradio-core/src/lib/swig/gnuradio_core_general.i
index 3ab1b056a..e381f3509 100644
--- a/gnuradio-core/src/lib/swig/gnuradio_swig_py_general.i
+++ b/gnuradio-core/src/lib/swig/gnuradio_core_general.i
@@ -1,26 +1,26 @@
/* -*- c++ -*- */
/*
- * Copyright 2006,2009 Free Software Foundation, Inc.
- *
+ * Copyright 2006,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 this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef SWIGIMPORTED
-%module(directors="1") gnuradio_swig_py_general
+%module(directors="1") gnuradio_core_general
#endif
//%feature("autodoc", "1"); // generate python docstrings
@@ -28,3 +28,33 @@
%include "gnuradio.i" // the common stuff
%include "general.i"
+
+ // Simple test case for complex input and output
+%inline
+%{
+ std::complex<float> complexf_add_2j(std::complex<float> x)
+ {
+ return std::complex<float>(x.real(), x.imag() + 2);
+ }
+
+ std::complex<double> complexd_add_2j(std::complex<double> x)
+ {
+ return std::complex<double>(x.real(), x.imag() + 2);
+ }
+
+ std::complex<float> complexf_add_x_2j(float x, std::complex<float> y)
+ {
+ return std::complex<float>(x + y.real(), y.imag() + 2);
+ }
+
+%}
+
+#if SWIGGUILE
+%scheme %{
+(load-extension "libguile-gnuradio-gnuradio_core_general" "scm_init_gnuradio_gnuradio_core_general_module")
+%}
+
+%goops %{
+(use-modules (gnuradio gnuradio_core_runtime))
+%}
+#endif
diff --git a/gnuradio-core/src/lib/swig/gnuradio_swig_py_gengen.i b/gnuradio-core/src/lib/swig/gnuradio_core_gengen.i
index 95e85cf6b..d9fe6672a 100644
--- a/gnuradio-core/src/lib/swig/gnuradio_swig_py_gengen.i
+++ b/gnuradio-core/src/lib/swig/gnuradio_core_gengen.i
@@ -1,26 +1,26 @@
/* -*- c++ -*- */
/*
- * Copyright 2006,2009 Free Software Foundation, Inc.
- *
+ * Copyright 2006,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 this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef SWIGIMPORTED
-%module(directors="1") gnuradio_swig_py_gengen
+%module(directors="1") gnuradio_core_gengen
#endif
//%feature("autodoc", "1"); // generate python docstrings
@@ -28,3 +28,13 @@
%include "gnuradio.i" // the common stuff
%include "gengen.i"
+
+#if SWIGGUILE
+%scheme %{
+(load-extension "libguile-gnuradio-gnuradio_core_gengen" "scm_init_gnuradio_gnuradio_core_gengen_module")
+%}
+
+%goops %{
+ (use-modules (gnuradio gnuradio_core_runtime))
+%}
+#endif
diff --git a/gnuradio-core/src/lib/swig/gnuradio_swig_py_hier.i b/gnuradio-core/src/lib/swig/gnuradio_core_hier.i
index a82b5ae41..2869fd56b 100644
--- a/gnuradio-core/src/lib/swig/gnuradio_swig_py_hier.i
+++ b/gnuradio-core/src/lib/swig/gnuradio_core_hier.i
@@ -1,26 +1,26 @@
/* -*- c++ -*- */
/*
- * Copyright 2009 Free Software Foundation, Inc.
- *
+ * 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 this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef SWIGIMPORTED
-%module(directors="1") gnuradio_swig_py_hier
+%module(directors="1") gnuradio_hier_hier
#endif
//%feature("autodoc", "1"); // generate python docstrings
@@ -28,3 +28,13 @@
%include "gnuradio.i" // the common stuff
%include "hier.i"
+
+#if SWIGGUILE
+%scheme %{
+(load-extension "libguile-gnuradio-gnuradio_core_hier" "scm_init_gnuradio_gnuradio_core_hier_module")
+%}
+
+%goops %{
+ (use-modules (gnuradio gnuradio_core_runtime))
+%}
+#endif
diff --git a/gnuradio-core/src/lib/swig/gnuradio_swig_py_io.i b/gnuradio-core/src/lib/swig/gnuradio_core_io.i
index 9318f5d86..c8d818660 100644
--- a/gnuradio-core/src/lib/swig/gnuradio_swig_py_io.i
+++ b/gnuradio-core/src/lib/swig/gnuradio_core_io.i
@@ -1,26 +1,26 @@
/* -*- c++ -*- */
/*
- * Copyright 2006,2009 Free Software Foundation, Inc.
- *
+ * Copyright 2006,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 this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef SWIGIMPORTED
-%module(directors="1") gnuradio_swig_py_io
+%module(directors="1") gnuradio_core_io
#endif
//%feature("autodoc", "1"); // generate python docstrings
@@ -28,3 +28,13 @@
%include "gnuradio.i" // the common stuff
%include "io.i"
+
+#if SWIGGUILE
+%scheme %{
+(load-extension "libguile-gnuradio-gnuradio_core_io" "scm_init_gnuradio_gnuradio_core_io_module")
+%}
+
+%goops %{
+ (use-modules (gnuradio gnuradio_core_runtime))
+%}
+#endif
diff --git a/gnuradio-core/src/lib/swig/gnuradio_swig_py_runtime.i b/gnuradio-core/src/lib/swig/gnuradio_core_runtime.i
index 8f444f9c5..78b717d22 100644
--- a/gnuradio-core/src/lib/swig/gnuradio_swig_py_runtime.i
+++ b/gnuradio-core/src/lib/swig/gnuradio_core_runtime.i
@@ -1,19 +1,19 @@
/* -*- c++ -*- */
/*
- * Copyright 2009 Free Software Foundation, Inc.
- *
+ * 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,
@@ -21,7 +21,7 @@
*/
#ifndef SWIGIMPORTED
-%module(directors="1") gnuradio_swig_py_runtime
+%module(directors="1") gnuradio_core_runtime
#endif
//%feature("autodoc", "1"); // generate python docstrings
@@ -30,3 +30,17 @@
%include "gnuradio.i" // the common stuff
%include "runtime.i"
+
+
+#if SWIGGUILE
+%scheme %{
+(load-extension "libguile-gnuradio-gnuradio_core_runtime" "scm_init_gnuradio_gnuradio_core_runtime_module")
+%}
+
+%goops %{
+(use-modules (gnuradio export-safely))
+(re-export export-syms-if-not-imported-gf)
+(re-export-syntax export-safely)
+(re-export re-export-all)
+%}
+#endif
diff --git a/gnuradio-core/src/lib/swig/gnuradio_swig_bug_workaround.h b/gnuradio-core/src/lib/swig/gnuradio_swig_bug_workaround.h
new file mode 100644
index 000000000..8f7eea0bf
--- /dev/null
+++ b/gnuradio-core/src/lib/swig/gnuradio_swig_bug_workaround.h
@@ -0,0 +1,45 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2004 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 INCLUDED_GNURADIO_SWIG_BUG_WORKAROUND_H
+#define INCLUDED_GNURADIO_SWIG_BUG_WORKAROUND_H
+
+/*
+ * This include files works around a bug in SWIG 1.3.21 and 22
+ * where it fails to emit these declarations when doing
+ * %import "gnuradio.i"
+ */
+
+class gr_base_error_handler;
+class gr_basic_block;
+class gr_block;
+class gr_error_handler;
+class gr_file_error_handler;
+class gr_hier_block2;
+class gr_msg_handler;
+class gr_msg_queue;
+class gr_sync_block;
+class gr_sync_decimator;
+class gr_sync_interpolator;
+class gr_top_block;
+
+#endif /* INCLUDED_GNURADIO_SWIG_BUG_WORKAROUND_H */
diff --git a/gnuradio-core/src/lib/swig/gr_swig_block_magic.i b/gnuradio-core/src/lib/swig/gr_swig_block_magic.i
index 78e838012..a080c2b27 100644
--- a/gnuradio-core/src/lib/swig/gr_swig_block_magic.i
+++ b/gnuradio-core/src/lib/swig/gr_swig_block_magic.i
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2004 Free Software Foundation, Inc.
+ * Copyright 2004,2010 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -21,19 +21,40 @@
*/
%define GR_SWIG_BLOCK_MAGIC(PKG, BASE_NAME)
-_GR_SWIG_BLOCK_MAGIC_HELPER(PKG, PKG ## _ ## BASE_NAME, BASE_NAME)
+_GR_SWIG_BLOCK_MAGIC_HELPER(PKG, BASE_NAME, PKG ## _ ## BASE_NAME)
%enddef
-%define _GR_SWIG_BLOCK_MAGIC_HELPER(PKG, NAME, BASE_NAME)
-class NAME;
-typedef boost::shared_ptr<NAME> NAME ## _sptr;
-%template(NAME ## _sptr) boost::shared_ptr<NAME>;
+%define _GR_SWIG_BLOCK_MAGIC_HELPER_COMMON(PKG, BASE_NAME, FULL_NAME)
+class FULL_NAME;
+typedef boost::shared_ptr<FULL_NAME> FULL_NAME ## _sptr;
+%template(FULL_NAME ## _sptr) boost::shared_ptr<FULL_NAME>;
%rename(BASE_NAME) PKG ## _make_ ## BASE_NAME;
+%ignore FULL_NAME;
+%enddef
+#ifdef SWIGPYTHON
+%define _GR_SWIG_BLOCK_MAGIC_HELPER(PKG, BASE_NAME, FULL_NAME)
+_GR_SWIG_BLOCK_MAGIC_HELPER_COMMON(PKG, BASE_NAME, FULL_NAME)
%pythoncode %{
-NAME ## _sptr.block = lambda self: NAME ## _block (self)
-NAME ## _sptr.__repr__ = lambda self: "<gr_block %s (%d)>" % (self.name(), self.unique_id ())
+FULL_NAME ## _sptr.__repr__ = lambda self: "<gr_block %s (%d)>" % (self.name(), self.unique_id ())
%}
+%enddef
+#endif
-%ignore NAME;
+#ifdef SWIGGUILE
+#ifdef IN_GNURADIO_CORE // normal behavior
+%define _GR_SWIG_BLOCK_MAGIC_HELPER(PKG, BASE_NAME, FULL_NAME)
+_GR_SWIG_BLOCK_MAGIC_HELPER_COMMON(PKG, BASE_NAME, FULL_NAME)
+/* FIXME May want to add something here to get a friendlier printed representation */
+%enddef
+#else // Don't strip PKG from name
+%define _GR_SWIG_BLOCK_MAGIC_HELPER(PKG, BASE_NAME, FULL_NAME)
+class FULL_NAME;
+typedef boost::shared_ptr<FULL_NAME> FULL_NAME ## _sptr;
+%template(FULL_NAME ## _sptr) boost::shared_ptr<FULL_NAME>;
+%ignore FULL_NAME;
+%rename(FULL_NAME) PKG ## _make_ ## BASE_NAME;
+/* FIXME May want to add something here to get a friendlier printed representation */
%enddef
+#endif
+#endif
diff --git a/gnuradio-core/src/lib/swig/guile/std_complex.i b/gnuradio-core/src/lib/swig/guile/std_complex.i
new file mode 100644
index 000000000..2a5c72aa2
--- /dev/null
+++ b/gnuradio-core/src/lib/swig/guile/std_complex.i
@@ -0,0 +1,37 @@
+%{
+#include <complex>
+%}
+
+// To the target language, complex number conversion
+%typemap(out) complex, complex<double>, std::complex<double> {
+ $result = scm_make_rectangular( gh_double2scm ($1.real ()),
+ gh_double2scm ($1.imag ()) );
+}
+
+// To the target language, complex number conversion
+%typemap(out) complex, complex<float>, std::complex<float> {
+ $result = scm_make_rectangular( gh_double2scm ($1.real ()),
+ gh_double2scm ($1.imag ()) );
+}
+
+// From the target language, complex number conversion
+%typemap(in) complex, complex<double>, std::complex<double> {
+ $1 = std::complex<double>( gh_scm2double (scm_real_part ($input)),
+ gh_scm2double (scm_imag_part ($input)) );
+}
+
+// From the target language, complex number conversion
+%typemap(in) complex, complex<float>, std::complex<float> {
+ $1 = std::complex<float>( gh_scm2double (scm_real_part ($input)),
+ gh_scm2double (scm_imag_part ($input)) );
+}
+
+%typemaps_primitive(%checkcode(CPLXDBL), std::complex<double>);
+%typemaps_primitive(%checkcode(CPLXFLT), std::complex<float>);
+
+%typecheck(SWIG_TYPECHECK_COMPLEX)
+ std::complex<float>, std::complex<double>,
+ const std::complex<float> &, const std::complex<double> &
+{
+ $1 = scm_is_complex($input) ? 1 : 0;
+}
diff --git a/gnuradio-core/src/lib/swig/guile/std_vector.i b/gnuradio-core/src/lib/swig/guile/std_vector.i
new file mode 100644
index 000000000..ef1f20667
--- /dev/null
+++ b/gnuradio-core/src/lib/swig/guile/std_vector.i
@@ -0,0 +1,437 @@
+/* -----------------------------------------------------------------------------
+ * See the LICENSE file for information on copyright, usage and redistribution
+ * of SWIG, and the README file for authors - http://www.swig.org/release.html.
+ *
+ * std_vector.i
+ *
+ * SWIG typemaps for std::vector
+ * ----------------------------------------------------------------------------- */
+
+%include <std_common.i>
+
+// ------------------------------------------------------------------------
+// std::vector
+//
+// The aim of all that follows would be to integrate std::vector with
+// Guile as much as possible, namely, to allow the user to pass and
+// be returned Guile vectors or lists.
+// const declarations are used to guess the intent of the function being
+// exported; therefore, the following rationale is applied:
+//
+// -- f(std::vector<T>), f(const std::vector<T>&), f(const std::vector<T>*):
+// the parameter being read-only, either a Guile sequence or a
+// previously wrapped std::vector<T> can be passed.
+// -- f(std::vector<T>&), f(std::vector<T>*):
+// the parameter must be modified; therefore, only a wrapped std::vector
+// can be passed.
+// -- std::vector<T> f():
+// the vector is returned by copy; therefore, a Guile vector of T:s
+// is returned which is most easily used in other Guile functions
+// -- std::vector<T>& f(), std::vector<T>* f(), const std::vector<T>& f(),
+// const std::vector<T>* f():
+// the vector is returned by reference; therefore, a wrapped std::vector
+// is returned
+// ------------------------------------------------------------------------
+
+%{
+#include <vector>
+#include <algorithm>
+#include <stdexcept>
+#include <complex>
+%}
+
+%{
+ inline std::complex<float> SWIG_scm2cmplxfloat(SCM x){
+ return std::complex<float>(scm_c_real_part(x), scm_c_imag_part(x));
+ }
+
+ inline std::complex<double> SWIG_scm2cmplxdouble(SCM x){
+ return std::complex<double>(scm_c_real_part(x), scm_c_imag_part(x));
+ }
+
+ inline SCM SWIG_cmplxfloat2scm(std::complex<float> x){
+ return scm_c_make_rectangular(x.real(), x.imag());
+ }
+
+ inline SCM SWIG_cmplxdouble2scm(std::complex<double> x){
+ return scm_c_make_rectangular(x.real(), x.imag());
+ }
+%}
+
+// exported class
+
+namespace std {
+
+ template<class T> class vector {
+ %typemap(in) vector<T> {
+ if (gh_vector_p($input)) {
+ unsigned long size = gh_vector_length($input);
+ $1 = std::vector<T >(size);
+ for (unsigned long i=0; i<size; i++) {
+ SCM o = gh_vector_ref($input,gh_ulong2scm(i));
+ (($1_type &)$1)[i] =
+ *((T*) SWIG_MustGetPtr(o,$descriptor(T *),$argnum, 0));
+ }
+ } else if (gh_null_p($input)) {
+ $1 = std::vector<T >();
+ } else if (gh_pair_p($input)) {
+ SCM head, tail;
+ $1 = std::vector<T >();
+ tail = $input;
+ while (!gh_null_p(tail)) {
+ head = gh_car(tail);
+ tail = gh_cdr(tail);
+ $1.push_back(*((T*)SWIG_MustGetPtr(head,
+ $descriptor(T *),
+ $argnum, 0)));
+ }
+ } else {
+ $1 = *(($&1_type)
+ SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0));
+ }
+ }
+ %typemap(in) const vector<T>& (std::vector<T> temp),
+ const vector<T>* (std::vector<T> temp) {
+ if (gh_vector_p($input)) {
+ unsigned long size = gh_vector_length($input);
+ temp = std::vector<T >(size);
+ $1 = &temp;
+ for (unsigned long i=0; i<size; i++) {
+ SCM o = gh_vector_ref($input,gh_ulong2scm(i));
+ temp[i] = *((T*) SWIG_MustGetPtr(o,
+ $descriptor(T *),
+ $argnum, 0));
+ }
+ } else if (gh_null_p($input)) {
+ temp = std::vector<T >();
+ $1 = &temp;
+ } else if (gh_pair_p($input)) {
+ temp = std::vector<T >();
+ $1 = &temp;
+ SCM head, tail;
+ tail = $input;
+ while (!gh_null_p(tail)) {
+ head = gh_car(tail);
+ tail = gh_cdr(tail);
+ temp.push_back(*((T*) SWIG_MustGetPtr(head,
+ $descriptor(T *),
+ $argnum, 0)));
+ }
+ } else {
+ $1 = ($1_ltype) SWIG_MustGetPtr($input,$1_descriptor,$argnum, 0);
+ }
+ }
+ %typemap(out) vector<T> {
+ $result = gh_make_vector(gh_long2scm($1.size()),SCM_UNSPECIFIED);
+ for (unsigned int i=0; i<$1.size(); i++) {
+ T* x = new T((($1_type &)$1)[i]);
+ gh_vector_set_x($result,gh_long2scm(i),
+ SWIG_NewPointerObj(x, $descriptor(T *), 1));
+ }
+ }
+ %typecheck(SWIG_TYPECHECK_VECTOR) vector<T> {
+ /* native sequence? */
+ if (gh_vector_p($input)) {
+ unsigned int size = gh_vector_length($input);
+ if (size == 0) {
+ /* an empty sequence can be of any type */
+ $1 = 1;
+ } else {
+ /* check the first element only */
+ SCM o = gh_vector_ref($input,gh_ulong2scm(0));
+ T* x;
+ if (SWIG_ConvertPtr(o,(void**) &x,
+ $descriptor(T *), 0) != -1)
+ $1 = 1;
+ else
+ $1 = 0;
+ }
+ } else if (gh_null_p($input)) {
+ /* again, an empty sequence can be of any type */
+ $1 = 1;
+ } else if (gh_pair_p($input)) {
+ /* check the first element only */
+ T* x;
+ SCM head = gh_car($input);
+ if (SWIG_ConvertPtr(head,(void**) &x,
+ $descriptor(T *), 0) != -1)
+ $1 = 1;
+ else
+ $1 = 0;
+ } else {
+ /* wrapped vector? */
+ std::vector<T >* v;
+ if (SWIG_ConvertPtr($input,(void **) &v,
+ $&1_descriptor, 0) != -1)
+ $1 = 1;
+ else
+ $1 = 0;
+ }
+ }
+ %typecheck(SWIG_TYPECHECK_VECTOR) const vector<T>&,
+ const vector<T>* {
+ /* native sequence? */
+ if (gh_vector_p($input)) {
+ unsigned int size = gh_vector_length($input);
+ if (size == 0) {
+ /* an empty sequence can be of any type */
+ $1 = 1;
+ } else {
+ /* check the first element only */
+ T* x;
+ SCM o = gh_vector_ref($input,gh_ulong2scm(0));
+ if (SWIG_ConvertPtr(o,(void**) &x,
+ $descriptor(T *), 0) != -1)
+ $1 = 1;
+ else
+ $1 = 0;
+ }
+ } else if (gh_null_p($input)) {
+ /* again, an empty sequence can be of any type */
+ $1 = 1;
+ } else if (gh_pair_p($input)) {
+ /* check the first element only */
+ T* x;
+ SCM head = gh_car($input);
+ if (SWIG_ConvertPtr(head,(void**) &x,
+ $descriptor(T *), 0) != -1)
+ $1 = 1;
+ else
+ $1 = 0;
+ } else {
+ /* wrapped vector? */
+ std::vector<T >* v;
+ if (SWIG_ConvertPtr($input,(void **) &v,
+ $1_descriptor, 0) != -1)
+ $1 = 1;
+ else
+ $1 = 0;
+ }
+ }
+ public:
+ vector(unsigned int size = 0);
+ vector(unsigned int size, const T& value);
+ vector(const vector<T>&);
+ %rename(length) size;
+ unsigned int size() const;
+ %rename("empty?") empty;
+ bool empty() const;
+ %rename("clear!") clear;
+ void clear();
+ %rename("set!") set;
+ %rename("pop!") pop;
+ %rename("push!") push_back;
+ void push_back(const T& x);
+ %extend {
+ T pop() throw (std::out_of_range) {
+ if (self->size() == 0)
+ throw std::out_of_range("pop from empty vector");
+ T x = self->back();
+ self->pop_back();
+ return x;
+ }
+ T& ref(int i) throw (std::out_of_range) {
+ int size = int(self->size());
+ if (i>=0 && i<size)
+ return (*self)[i];
+ else
+ throw std::out_of_range("vector index out of range");
+ }
+ void set(int i, const T& x) throw (std::out_of_range) {
+ int size = int(self->size());
+ if (i>=0 && i<size)
+ (*self)[i] = x;
+ else
+ throw std::out_of_range("vector index out of range");
+ }
+ }
+ };
+
+
+ // specializations for built-ins
+ %define specialize_stl_vector(T,CHECK,CONVERT_FROM,CONVERT_TO)
+ template<> class vector<T > {
+ %typemap(in) vector<T > {
+ if (gh_vector_p($input)) {
+ unsigned long size = gh_vector_length($input);
+ $1 = std::vector<T >(size);
+ for (unsigned long i=0; i<size; i++) {
+ SCM o = gh_vector_ref($input,gh_ulong2scm(i));
+ if (CHECK(o))
+ (($1_type &)$1)[i] = (T)(CONVERT_FROM(o));
+ else
+ scm_wrong_type_arg(FUNC_NAME, $argnum, $input);
+ }
+ } else if (gh_null_p($input)) {
+ $1 = std::vector<T >();
+ } else if (gh_pair_p($input)) {
+ SCM v = gh_list_to_vector($input);
+ unsigned long size = gh_vector_length(v);
+ $1 = std::vector<T >(size);
+ for (unsigned long i=0; i<size; i++) {
+ SCM o = gh_vector_ref(v,gh_ulong2scm(i));
+ if (CHECK(o))
+ (($1_type &)$1)[i] = (T)(CONVERT_FROM(o));
+ else
+ scm_wrong_type_arg(FUNC_NAME, $argnum, $input);
+ }
+ } else {
+ $1 = *(($&1_type)
+ SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0));
+ }
+ }
+ %typemap(in) const vector<T >& (std::vector<T > temp),
+ const vector<T >* (std::vector<T > temp) {
+ if (gh_vector_p($input)) {
+ unsigned long size = gh_vector_length($input);
+ temp = std::vector<T >(size);
+ $1 = &temp;
+ for (unsigned long i=0; i<size; i++) {
+ SCM o = gh_vector_ref($input,gh_ulong2scm(i));
+ if (CHECK(o))
+ temp[i] = (T)(CONVERT_FROM(o));
+ else
+ scm_wrong_type_arg(FUNC_NAME, $argnum, $input);
+ }
+ } else if (gh_null_p($input)) {
+ temp = std::vector<T >();
+ $1 = &temp;
+ } else if (gh_pair_p($input)) {
+ SCM v = gh_list_to_vector($input);
+ unsigned long size = gh_vector_length(v);
+ temp = std::vector<T >(size);
+ $1 = &temp;
+ for (unsigned long i=0; i<size; i++) {
+ SCM o = gh_vector_ref(v,gh_ulong2scm(i));
+ if (CHECK(o))
+ temp[i] = (T)(CONVERT_FROM(o));
+ else
+ scm_wrong_type_arg(FUNC_NAME, $argnum, $input);
+ }
+ } else {
+ $1 = ($1_ltype) SWIG_MustGetPtr($input,$1_descriptor,$argnum, 0);
+ }
+ }
+ %typemap(out) vector<T > {
+ $result = gh_make_vector(gh_long2scm($1.size()),SCM_UNSPECIFIED);
+ for (unsigned int i=0; i<$1.size(); i++) {
+ SCM x = CONVERT_TO((($1_type &)$1)[i]);
+ gh_vector_set_x($result,gh_long2scm(i),x);
+ }
+ }
+ %typecheck(SWIG_TYPECHECK_VECTOR) vector<T > {
+ /* native sequence? */
+ if (gh_vector_p($input)) {
+ unsigned int size = gh_vector_length($input);
+ if (size == 0) {
+ /* an empty sequence can be of any type */
+ $1 = 1;
+ } else {
+ /* check the first element only */
+ T* x;
+ SCM o = gh_vector_ref($input,gh_ulong2scm(0));
+ $1 = CHECK(o) ? 1 : 0;
+ }
+ } else if (gh_null_p($input)) {
+ /* again, an empty sequence can be of any type */
+ $1 = 1;
+ } else if (gh_pair_p($input)) {
+ /* check the first element only */
+ T* x;
+ SCM head = gh_car($input);
+ $1 = CHECK(head) ? 1 : 0;
+ } else {
+ /* wrapped vector? */
+ std::vector<T >* v;
+ $1 = (SWIG_ConvertPtr($input,(void **) &v,
+ $&1_descriptor, 0) != -1) ? 1 : 0;
+ }
+ }
+ %typecheck(SWIG_TYPECHECK_VECTOR) const vector<T >&,
+ const vector<T >* {
+ /* native sequence? */
+ if (gh_vector_p($input)) {
+ unsigned int size = gh_vector_length($input);
+ if (size == 0) {
+ /* an empty sequence can be of any type */
+ $1 = 1;
+ } else {
+ /* check the first element only */
+ T* x;
+ SCM o = gh_vector_ref($input,gh_ulong2scm(0));
+ $1 = CHECK(o) ? 1 : 0;
+ }
+ } else if (gh_null_p($input)) {
+ /* again, an empty sequence can be of any type */
+ $1 = 1;
+ } else if (gh_pair_p($input)) {
+ /* check the first element only */
+ T* x;
+ SCM head = gh_car($input);
+ $1 = CHECK(head) ? 1 : 0;
+ } else {
+ /* wrapped vector? */
+ std::vector<T >* v;
+ $1 = (SWIG_ConvertPtr($input,(void **) &v,
+ $1_descriptor, 0) != -1) ? 1 : 0;
+ }
+ }
+ public:
+ vector(unsigned int size = 0);
+ vector(unsigned int size, const T& value);
+ vector(const vector<T >&);
+ %rename(length) size;
+ unsigned int size() const;
+ %rename("empty?") empty;
+ bool empty() const;
+ %rename("clear!") clear;
+ void clear();
+ %rename("set!") set;
+ %rename("pop!") pop;
+ %rename("push!") push_back;
+ void push_back(T x);
+ %extend {
+ T pop() throw (std::out_of_range) {
+ if (self->size() == 0)
+ throw std::out_of_range("pop from empty vector");
+ T x = self->back();
+ self->pop_back();
+ return x;
+ }
+ T ref(int i) throw (std::out_of_range) {
+ int size = int(self->size());
+ if (i>=0 && i<size)
+ return (*self)[i];
+ else
+ throw std::out_of_range("vector index out of range");
+ }
+ void set(int i, T x) throw (std::out_of_range) {
+ int size = int(self->size());
+ if (i>=0 && i<size)
+ (*self)[i] = x;
+ else
+ throw std::out_of_range("vector index out of range");
+ }
+ }
+ };
+ %enddef
+
+ specialize_stl_vector(bool,gh_boolean_p,gh_scm2bool,SWIG_bool2scm);
+ specialize_stl_vector(char,gh_number_p,gh_scm2long,gh_long2scm);
+ specialize_stl_vector(int,gh_number_p,gh_scm2long,gh_long2scm);
+ specialize_stl_vector(long,gh_number_p,gh_scm2long,gh_long2scm);
+ specialize_stl_vector(short,gh_number_p,gh_scm2long,gh_long2scm);
+ specialize_stl_vector(unsigned char,gh_number_p,gh_scm2ulong,gh_ulong2scm);
+ specialize_stl_vector(unsigned int,gh_number_p,gh_scm2ulong,gh_ulong2scm);
+ specialize_stl_vector(unsigned long,gh_number_p,gh_scm2ulong,gh_ulong2scm);
+ specialize_stl_vector(unsigned short,gh_number_p,gh_scm2ulong,gh_ulong2scm);
+ specialize_stl_vector(float,gh_number_p,gh_scm2double,gh_double2scm);
+ specialize_stl_vector(double,gh_number_p,gh_scm2double,gh_double2scm);
+ specialize_stl_vector(std::string,gh_string_p,SWIG_scm2string,SWIG_string2scm);
+ specialize_stl_vector(std::complex<float>, scm_is_complex,
+ SWIG_scm2cmplxfloat, SWIG_cmplxfloat2scm);
+ specialize_stl_vector(std::complex<double>, scm_is_complex,
+ SWIG_scm2cmplxdouble,SWIG_cmplxdouble2scm);
+
+}
+