summaryrefslogtreecommitdiff
path: root/gnuradio-core/src/lib/swig
diff options
context:
space:
mode:
Diffstat (limited to 'gnuradio-core/src/lib/swig')
-rw-r--r--gnuradio-core/src/lib/swig/.gitignore60
-rw-r--r--gnuradio-core/src/lib/swig/Makefile.am110
-rw-r--r--gnuradio-core/src/lib/swig/Makefile.swig.gen1476
-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/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
14 files changed, 1107 insertions, 1250 deletions
diff --git a/gnuradio-core/src/lib/swig/.gitignore b/gnuradio-core/src/lib/swig/.gitignore
index 9d7d01056..35e974948 100644
--- a/gnuradio-core/src/lib/swig/.gitignore
+++ b/gnuradio-core/src/lib/swig/.gitignore
@@ -10,27 +10,41 @@
/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..16b5d677e 100644
--- a/gnuradio-core/src/lib/swig/Makefile.am
+++ b/gnuradio-core/src/lib/swig/Makefile.am
@@ -20,12 +20,30 @@
#
include $(top_srcdir)/Makefile.common
+include $(top_srcdir)/Makefile.swig
-if PYTHON
-AM_CPPFLAGS = -I$(srcdir) $(STD_DEFINES_AND_INCLUDES) $(PYTHON_CPPFLAGS) \
- $(WITH_INCLUDES)
+BUILT_SOURCES = $(grinclude_HEADERS) $(swig_built_sources)
+
+CLEANFILES = python/*.cc python/*.h
+if GUILE
+CLEANFILES += guile/*.cc gnuradio/*.scm
+endif
+
+# ----------------------------------------------------------------
+# 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
-EXTRA_DIST = gen-swig-bug-fix
# SWIG headers get installed in ${prefix}/include/gnuradio/swig
swiginclude_HEADERS = \
@@ -33,71 +51,67 @@ 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
+
+
+if PYTHON
+AM_CPPFLAGS = -I$(srcdir) $(STD_DEFINES_AND_INCLUDES) $(PYTHON_CPPFLAGS) \
+ $(WITH_INCLUDES)
+
+EXTRA_DIST = gen-swig-bug-fix
+
# 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_swig_py_runtime.cc $(srcdir)/gen-swig-bug-fix
- $(PYTHON) $(srcdir)/gen-swig-bug-fix gnuradio_swig_py_runtime.cc $@
+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 $@
# C/C++ headers get installed in ${prefix}/include/gnuradio
-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
+grinclude_HEADERS = gnuradio_swig_bug_workaround.h
# 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
+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)
# 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)
+PYTHON_GEN = $(foreach HFILE,$(TOP_SWIG_IFILES), $(subst .i,.py,$(HFILE)))
+swig_built_sources += $(PYTHON_GEN)
+endif # end of if python
+
+if GUILE
+SWIG_GUILE_FLAGS += -DIN_GNURADIO_CORE
+#GUILE_GEN = $(foreach HFILE,$(TOP_SWIG_IFILES), $(patsubst %.i,%.scm,$(HFILE)))
+GUILE_GEN = $(foreach HFILE,$(TOP_SWIG_IFILES), $(patsubst %.i,gnuradio/%.scm,$(HFILE)))
+# GUILE_GEN_STAMPS = $(filter %.scm,$(TOP_SWIG_IFILES))
+swig_built_sources += $(GUILE_GEN)
+endif
# Do not distribute the output of SWIG
no_dist_files = $(swig_built_sources)
-endif
+
diff --git a/gnuradio-core/src/lib/swig/Makefile.swig.gen b/gnuradio-core/src/lib/swig/Makefile.swig.gen
index e24ba5a96..dc7a7b3bb 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,69 @@ 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)
-gnuradio_swig_py_runtime_pylib_LTLIBRARIES = \
- _gnuradio_swig_py_runtime.la
+gnuradio_core_runtime_pylib_LTLIBRARIES = \
+ _gnuradio_core_runtime.la
-_gnuradio_swig_py_runtime_la_SOURCES = \
- gnuradio_swig_py_runtime.cc \
- $(gnuradio_swig_py_runtime_la_swig_sources)
+_gnuradio_core_runtime_la_SOURCES = \
+ python/gnuradio_core_runtime.cc \
+ $(gnuradio_core_runtime_la_swig_sources)
-_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)
+gnuradio_core_runtime_python_PYTHON = \
+ gnuradio_core_runtime.py \
+ $(gnuradio_core_runtime_python)
-## Entry rule for running SWIG
+python/gnuradio_core_runtime.cc: gnuradio_core_runtime.py
+gnuradio_core_runtime.py: gnuradio_core_runtime.i
-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
+# Include the python dependencies for this file
+-include python/gnuradio_core_runtime.d
+# end of PYTHON
+
+if GUILE
+gnuradio_core_runtime_scmlib_LTLIBRARIES = libguile-gnuradio_core_runtime.la
+libguile_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_core_runtime_la_LIBADD = $(_gnuradio_core_runtime_la_LIBADD)
+libguile_gnuradio_core_runtime_la_LDFLAGS = $(_gnuradio_core_runtime_la_LDFLAGS)
+libguile_gnuradio_core_runtime_la_CXXFLAGS = $(_gnuradio_core_runtime_la_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 +153,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 +200,69 @@ 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)
-gnuradio_swig_py_general_pylib_LTLIBRARIES = \
- _gnuradio_swig_py_general.la
+gnuradio_core_general_pylib_LTLIBRARIES = \
+ _gnuradio_core_general.la
-_gnuradio_swig_py_general_la_SOURCES = \
- gnuradio_swig_py_general.cc \
- $(gnuradio_swig_py_general_la_swig_sources)
+_gnuradio_core_general_la_SOURCES = \
+ python/gnuradio_core_general.cc \
+ $(gnuradio_core_general_la_swig_sources)
-_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)
+gnuradio_core_general_python_PYTHON = \
+ gnuradio_core_general.py \
+ $(gnuradio_core_general_python)
-## Entry rule for running SWIG
+python/gnuradio_core_general.cc: gnuradio_core_general.py
+gnuradio_core_general.py: gnuradio_core_general.i
-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
+# Include the python dependencies for this file
+-include python/gnuradio_core_general.d
+# end of PYTHON
+
+if GUILE
+gnuradio_core_general_scmlib_LTLIBRARIES = libguile-gnuradio_core_general.la
+libguile_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_core_general_la_LIBADD = $(_gnuradio_core_general_la_LIBADD)
+libguile_gnuradio_core_general_la_LDFLAGS = $(_gnuradio_core_general_la_LDFLAGS)
+libguile_gnuradio_core_general_la_CXXFLAGS = $(_gnuradio_core_general_la_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
-# 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_general.d@am__quote@
# -*- Makefile -*-
#
@@ -538,27 +286,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 +333,69 @@ 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)
-gnuradio_swig_py_gengen_pylib_LTLIBRARIES = \
- _gnuradio_swig_py_gengen.la
+gnuradio_core_gengen_pylib_LTLIBRARIES = \
+ _gnuradio_core_gengen.la
-_gnuradio_swig_py_gengen_la_SOURCES = \
- gnuradio_swig_py_gengen.cc \
- $(gnuradio_swig_py_gengen_la_swig_sources)
+_gnuradio_core_gengen_la_SOURCES = \
+ python/gnuradio_core_gengen.cc \
+ $(gnuradio_core_gengen_la_swig_sources)
-_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)
+gnuradio_core_gengen_python_PYTHON = \
+ gnuradio_core_gengen.py \
+ $(gnuradio_core_gengen_python)
-## Entry rule for running SWIG
+python/gnuradio_core_gengen.cc: gnuradio_core_gengen.py
+gnuradio_core_gengen.py: gnuradio_core_gengen.i
-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
+# Include the python dependencies for this file
+-include python/gnuradio_core_gengen.d
+# end of PYTHON
+
+if GUILE
+gnuradio_core_gengen_scmlib_LTLIBRARIES = libguile-gnuradio_core_gengen.la
+libguile_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_core_gengen_la_LIBADD = $(_gnuradio_core_gengen_la_LIBADD)
+libguile_gnuradio_core_gengen_la_LDFLAGS = $(_gnuradio_core_gengen_la_LDFLAGS)
+libguile_gnuradio_core_gengen_la_CXXFLAGS = $(_gnuradio_core_gengen_la_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 +419,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 +466,69 @@ 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)
-gnuradio_swig_py_filter_pylib_LTLIBRARIES = \
- _gnuradio_swig_py_filter.la
+gnuradio_core_filter_pylib_LTLIBRARIES = \
+ _gnuradio_core_filter.la
-_gnuradio_swig_py_filter_la_SOURCES = \
- gnuradio_swig_py_filter.cc \
- $(gnuradio_swig_py_filter_la_swig_sources)
+_gnuradio_core_filter_la_SOURCES = \
+ python/gnuradio_core_filter.cc \
+ $(gnuradio_core_filter_la_swig_sources)
-_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)
+gnuradio_core_filter_python_PYTHON = \
+ gnuradio_core_filter.py \
+ $(gnuradio_core_filter_python)
-## Entry rule for running SWIG
+python/gnuradio_core_filter.cc: gnuradio_core_filter.py
+gnuradio_core_filter.py: gnuradio_core_filter.i
-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
+# Include the python dependencies for this file
+-include python/gnuradio_core_filter.d
+# end of PYTHON
+
+if GUILE
+gnuradio_core_filter_scmlib_LTLIBRARIES = libguile-gnuradio_core_filter.la
+libguile_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_core_filter_la_LIBADD = $(_gnuradio_core_filter_la_LIBADD)
+libguile_gnuradio_core_filter_la_LDFLAGS = $(_gnuradio_core_filter_la_LDFLAGS)
+libguile_gnuradio_core_filter_la_CXXFLAGS = $(_gnuradio_core_filter_la_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 +552,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 +599,69 @@ 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)
-gnuradio_swig_py_io_pylib_LTLIBRARIES = \
- _gnuradio_swig_py_io.la
+gnuradio_core_io_pylib_LTLIBRARIES = \
+ _gnuradio_core_io.la
-_gnuradio_swig_py_io_la_SOURCES = \
- gnuradio_swig_py_io.cc \
- $(gnuradio_swig_py_io_la_swig_sources)
+_gnuradio_core_io_la_SOURCES = \
+ python/gnuradio_core_io.cc \
+ $(gnuradio_core_io_la_swig_sources)
-_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)
+gnuradio_core_io_python_PYTHON = \
+ gnuradio_core_io.py \
+ $(gnuradio_core_io_python)
-## Entry rule for running SWIG
+python/gnuradio_core_io.cc: gnuradio_core_io.py
+gnuradio_core_io.py: gnuradio_core_io.i
-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
+# Include the python dependencies for this file
+-include python/gnuradio_core_io.d
+# end of PYTHON
+
+if GUILE
+gnuradio_core_io_scmlib_LTLIBRARIES = libguile-gnuradio_core_io.la
+libguile_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_core_io_la_LIBADD = $(_gnuradio_core_io_la_LIBADD)
+libguile_gnuradio_core_io_la_LDFLAGS = $(_gnuradio_core_io_la_LDFLAGS)
+libguile_gnuradio_core_io_la_CXXFLAGS = $(_gnuradio_core_io_la_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
-# 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_io.d@am__quote@
# -*- Makefile -*-
#
@@ -1315,27 +685,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 +732,67 @@ 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)
-gnuradio_swig_py_hier_pylib_LTLIBRARIES = \
- _gnuradio_swig_py_hier.la
+gnuradio_core_hier_pylib_LTLIBRARIES = \
+ _gnuradio_core_hier.la
-_gnuradio_swig_py_hier_la_SOURCES = \
- gnuradio_swig_py_hier.cc \
- $(gnuradio_swig_py_hier_la_swig_sources)
+_gnuradio_core_hier_la_SOURCES = \
+ python/gnuradio_core_hier.cc \
+ $(gnuradio_core_hier_la_swig_sources)
-_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)
+gnuradio_core_hier_python_PYTHON = \
+ gnuradio_core_hier.py \
+ $(gnuradio_core_hier_python)
-## Entry rule for running SWIG
+python/gnuradio_core_hier.cc: gnuradio_core_hier.py
+gnuradio_core_hier.py: gnuradio_core_hier.i
-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
+# Include the python dependencies for this file
+-include python/gnuradio_core_hier.d
+# end of PYTHON
+
+if GUILE
+gnuradio_core_hier_scmlib_LTLIBRARIES = libguile-gnuradio_core_hier.la
+libguile_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_core_hier_la_LIBADD = $(_gnuradio_core_hier_la_LIBADD)
+libguile_gnuradio_core_hier_la_LDFLAGS = $(_gnuradio_core_hier_la_LDFLAGS)
+libguile_gnuradio_core_hier_la_CXXFLAGS = $(_gnuradio_core_hier_la_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 7d0241f1c..47fd4e330 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;
@@ -57,6 +71,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 > >;
@@ -70,15 +85,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..0acbfa3a6 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_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..759a65459 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_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..c08109173 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_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..6d7a38321 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_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..936522ada 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_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..bb10b36b2 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_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/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);
+
+}
+