summaryrefslogtreecommitdiff
path: root/gnuradio-core/src
diff options
context:
space:
mode:
Diffstat (limited to 'gnuradio-core/src')
-rw-r--r--gnuradio-core/src/guile/Makefile.am6
-rw-r--r--gnuradio-core/src/guile/gnuradio/waveform.scm (renamed from gnuradio-core/src/guile/gnuradio/waveform-spec.scm)38
-rw-r--r--gnuradio-core/src/lib/.gitignore2
3 files changed, 32 insertions, 14 deletions
diff --git a/gnuradio-core/src/guile/Makefile.am b/gnuradio-core/src/guile/Makefile.am
index f4cc14175..0c0becbc1 100644
--- a/gnuradio-core/src/guile/Makefile.am
+++ b/gnuradio-core/src/guile/Makefile.am
@@ -22,7 +22,8 @@ include $(top_srcdir)/Makefile.common
TESTS = run_guile_tests
EXTRA_DIST = \
- run_guile_tests.in
+ run_guile_tests.in \
+ $(GUILE_TESTS)
# These are the hand-code guile files for gnuradio-core.
#
@@ -36,10 +37,11 @@ nobase_guile_DATA = \
gnuradio/core.scm \
gnuradio/export-safely.scm \
gnuradio/runtime-shim.scm \
+ gnuradio/waveform.scm \
gnuradio/test-suite/guile-test \
gnuradio/test-suite/lib.scm
-noinst_DATA = \
+GUILE_TESTS = \
tests/00_runtime_basics.test \
tests/00_runtime_ctors.test \
tests/filter_ctors.test \
diff --git a/gnuradio-core/src/guile/gnuradio/waveform-spec.scm b/gnuradio-core/src/guile/gnuradio/waveform.scm
index 956a36106..0031be931 100644
--- a/gnuradio-core/src/guile/gnuradio/waveform-spec.scm
+++ b/gnuradio-core/src/guile/gnuradio/waveform.scm
@@ -17,20 +17,38 @@
;;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;;;
-(define-module (gnuradio waveform-spec)
+(define-module (gnuradio waveform)
#:use-module (ice-9 syncase)
- #:export-syntax waveform-spec)
+ #:export-syntax (define-waveform))
-(define-syntax waveform-spec
+
+(define *registry* '()) ; alist
+(define *last-registered* #f)
+
+
+(define-syntax define-waveform
(syntax-rules (vars blocks connections)
- ((_ (args ...)
+ ((_ (name cmd-line-args)
(vars (v-name v-val) ...)
(blocks (b-name b-val) ...)
(connections (endpoint1 endpoint2 ...) ...))
- (lambda (args ...)
- (let* ((v-name v-val) ...
- (b-name b-val) ...
- (tb (gr:top-block-swig "waveform-top-block")))
- (gr:connect tb endpoint1 endpoint2 ...) ...
- tb)))))
+ (waveform-register 'name
+ (lambda (cmd-line-args)
+ (let* ((v-name v-val) ...
+ (b-name b-val) ...
+ (tb (gr:top-block-swig "waveform-top-block")))
+ (gr:connect tb endpoint1 endpoint2 ...) ...
+ tb))))))
+
+
+(define-public (waveform-register name thunk)
+ (set! *registry* (assoc-set! *registry* name thunk))
+ (set! *last-registered* thunk)
+ #t)
+
+(define-public (waveform-lookup name)
+ (let ((r (assoc name *registry*)))
+ (and r (cdr r))))
+(define-public (waveform-last-registered)
+ *last-registered*)
diff --git a/gnuradio-core/src/lib/.gitignore b/gnuradio-core/src/lib/.gitignore
index e3bc1ee6a..0d5077da5 100644
--- a/gnuradio-core/src/lib/.gitignore
+++ b/gnuradio-core/src/lib/.gitignore
@@ -1,7 +1,5 @@
/Makefile
/Makefile.in
-/.la
-/.lo
/.deps
/.libs
/*.la