diff options
Diffstat (limited to 'gnuradio-core/src')
-rw-r--r-- | gnuradio-core/src/guile/Makefile.am | 6 | ||||
-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/.gitignore | 2 |
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 |