summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIOhannes m zmölnig (Debian/GNU) <umlaeute@debian.org>2017-10-23 13:07:26 +0200
committerIOhannes m zmölnig (Debian/GNU) <umlaeute@debian.org>2017-10-23 13:07:26 +0200
commit101f0221b557866db79beae024b1418820b24998 (patch)
treee1f1b3dc7f28b8d1b0b1f1c9d4edaf37aa128df3
parenta34abe0c374d2a9ec1bb5b1825bc0f88eaa7166c (diff)
New upstream version 17.8
-rw-r--r--HISTORY.Snd1
-rw-r--r--NEWS30
-rw-r--r--README.Snd12
-rw-r--r--analog-filter.scm40
-rw-r--r--autosave.scm4
-rw-r--r--bess1.scm2
-rw-r--r--bird.scm82
-rw-r--r--clean.scm2
-rw-r--r--clm-ins.scm22
-rw-r--r--clm.fs11
-rw-r--r--clm.h5
-rw-r--r--clm23.scm4
-rw-r--r--clm2xen.c73
-rw-r--r--clm2xen.h4
-rwxr-xr-xconfigure20
-rw-r--r--configure.ac4
-rw-r--r--dlocsig.scm36
-rw-r--r--draw.scm12
-rw-r--r--dsp.scm146
-rw-r--r--edit-menu.scm12
-rw-r--r--effects-utils.scm36
-rw-r--r--env.scm32
-rw-r--r--enved.scm10
-rw-r--r--examp.scm178
-rw-r--r--extensions.scm70
-rw-r--r--extsnd.html12
-rw-r--r--fmv.scm6
-rw-r--r--generators.scm180
-rw-r--r--gl.c92
-rw-r--r--gtk-effects.scm2
-rw-r--r--gtkex.scm19
-rw-r--r--headers.c2
-rw-r--r--hooks.scm10
-rw-r--r--index.html690
-rw-r--r--index.scm31
-rw-r--r--io.c10
-rw-r--r--json.scm4
-rw-r--r--libgtk_s7.c444
-rw-r--r--lint.scm1575
-rw-r--r--marks-menu.scm26
-rw-r--r--marks.scm32
-rw-r--r--maxf.scm2
-rw-r--r--mix.scm62
-rw-r--r--mockery.scm32
-rw-r--r--moog.scm14
-rw-r--r--nb.scm8
-rw-r--r--new-effects.scm12
-rw-r--r--numerics.scm2
-rw-r--r--peak-phases.scm24
-rw-r--r--play.scm18
-rw-r--r--poly.scm40
-rw-r--r--pvoc.scm6
-rw-r--r--r7rs.scm3
-rw-r--r--repl.scm28
-rw-r--r--s7.c3179
-rw-r--r--s7.h122
-rw-r--r--s7.html596
-rw-r--r--s7test.scm1856
-rw-r--r--selection.scm12
-rw-r--r--snd-chn.c100
-rw-r--r--snd-dac.c10
-rw-r--r--snd-draw.c49
-rw-r--r--snd-edits.c2
-rw-r--r--snd-env.c16
-rw-r--r--snd-fft.c4
-rw-r--r--snd-file.c44
-rw-r--r--snd-forth-init.fs3
-rw-r--r--snd-g1.h2
-rw-r--r--snd-gchn.c2
-rw-r--r--snd-gl.scm2
-rw-r--r--snd-glistener.c5
-rw-r--r--snd-gmix.c4
-rw-r--r--snd-gprefs.c30
-rw-r--r--snd-gregion.c2
-rw-r--r--snd-gtk.scm10
-rw-r--r--snd-gutils.c2
-rw-r--r--snd-gxcolormaps.c48
-rw-r--r--snd-help.c6
-rw-r--r--snd-ladspa.c4
-rw-r--r--snd-listener.c6
-rw-r--r--snd-main.c56
-rw-r--r--snd-marks.c4
-rw-r--r--snd-mix.c20
-rw-r--r--snd-motif.c51
-rw-r--r--snd-motif.scm118
-rw-r--r--snd-prefs.c52
-rw-r--r--snd-print.c14
-rw-r--r--snd-region.c4
-rw-r--r--snd-sig.c50
-rw-r--r--snd-snd.c30
-rw-r--r--snd-test.fs9
-rw-r--r--snd-test.rb7
-rw-r--r--snd-test.scm3750
-rw-r--r--snd-trans.c4
-rw-r--r--snd-x0.h2
-rw-r--r--snd-xen.c4
-rw-r--r--snd-xref.c1340
-rw-r--r--snd.h2
-rw-r--r--snd.html3
-rw-r--r--sndlib2xen.c6
-rw-r--r--sndscm.html10
-rw-r--r--sound.c4
-rw-r--r--strad.scm2
-rw-r--r--stuff.scm190
-rw-r--r--tools/ffitest.c10
-rw-r--r--tools/gdbinit4
-rw-r--r--tools/make-index.scm15
-rwxr-xr-xtools/makexg.scm2
-rw-r--r--tools/tauto.scm17
-rw-r--r--tools/tcopy.scm10
-rwxr-xr-xtools/testsnd4
-rw-r--r--tools/tgen.scm2
-rw-r--r--tools/thash.scm2
-rw-r--r--tools/valcall.scm2
-rw-r--r--ws.rb9
-rw-r--r--ws.scm14
-rw-r--r--xen.c1
-rw-r--r--xg.c444
-rw-r--r--xm.c123
-rw-r--r--zip.scm6
120 files changed, 7132 insertions, 9615 deletions
diff --git a/HISTORY.Snd b/HISTORY.Snd
index 33a85f3..7e69522 100644
--- a/HISTORY.Snd
+++ b/HISTORY.Snd
@@ -1,5 +1,6 @@
Snd change log
+ 17-Oct: Snd 17.8.
11-Sep: Snd 17.7.
2-Aug: Snd 17.6.
16-Jun: Snd 17.5.
diff --git a/NEWS b/NEWS
index e585d32..0ad7f5c 100644
--- a/NEWS
+++ b/NEWS
@@ -1,12 +1,26 @@
-Snd 17.7:
+Snd 17.8:
-Mike Scholz provided changes for Ruby 2.5.
+Snd: moved from cvs to svn at sourceforge:
+ svn checkout svn://svn.code.sf.net/p/snd/svn1/trunk snd
-s7: changed various "object" names to "c_object" in s7.h ("object" was ambiguous)
- c-pointers can participate in the generic function stuff
- gtkex.scm
- json.scm (aimed at the Language Server Protocol, eventually in emacs perhaps)
+s7: added immutable!, immutable?
+ define-constant follows normal lexical scoping rules now
+ symbol-access renamed symbol-setter
+ added third optional argument to the symbol-setter: the relevant environment
+ deprecated s7_procedure_with_setter, s7_symbol_access
+ renamed let-set!-fallback to let-set-fallback since I never remember the "!"
+ renamed procedure-signature -> signature,
+ procedure-documentation -> documentation,
+ procedure-setter -> setter.
+ these are all generic, so the "procedure" part is misleading, but
+ unfortunately these new names collide with the previous function-local
+ variables (for example, documentation accessed by procedure-documentation).
+ Since those variables are normally constants, and since I can't think of
+ anything better, they are now of the form +documentation+.
-checked: gtk 3.91.2, sbcl 1.3.21
+clm: removed *clm-default-frequency*; Mike fixed the Ruby and Forth cases.
+
+checked: sbcl 1.4.0
+
+Thanks!: Mike Scholz.
-Thanks!: Kjetil Mattheussen, Mike Scholz
diff --git a/README.Snd b/README.Snd
index b3bbe7f..a7cae5d 100644
--- a/README.Snd
+++ b/README.Snd
@@ -140,15 +140,15 @@ cmdist@ccrma.stanford.edu. To subscribe, visit
http://ccrma-mail.stanford.edu/mailman/listinfo/cmdist
-To follow the Snd CVS repository, the first time you need to
+To follow the Snd SVN repository, the first time you need to
- cvs -d:pserver:anonymous@snd.cvs.sourceforge.net:/cvsroot/snd login
- cvs -z3 -d:pserver:anonymous@snd.cvs.sourceforge.net:/cvsroot/snd co cvs-snd
+ svn checkout svn://svn.code.sf.net/p/snd/svn1/trunk snd
-When prompted for a password for anonymous, press the Enter key.
-After that, you go to your local cvs-snd directory and
+This creates a local snd directory with the files.
- cvs update
+ svn update
+
+updates any changed files.
diff --git a/analog-filter.scm b/analog-filter.scm
index d507e56..1b0199c 100644
--- a/analog-filter.scm
+++ b/analog-filter.scm
@@ -110,7 +110,7 @@
(set! (den (+ j 2)) 1.0))))
(define make-butterworth-lowpass
- (let ((documentation "(make-butterworth-lowpass n fc) returns a lowpass Buttterworth filter; n = order, fc = cutoff \
+ (let ((+documentation+ "(make-butterworth-lowpass n fc) returns a lowpass Buttterworth filter; n = order, fc = cutoff \
freq (srate = 1.0): (make-butterworth-lowpass 8 .1)"))
(lambda (n fc)
;; identical to make-butter-lp except for fc (freq->1.0) fixup
@@ -121,7 +121,7 @@ freq (srate = 1.0): (make-butterworth-lowpass 8 .1)"))
:ycoeffs (cadr coeffs))))))
(define make-butterworth-highpass
- (let ((documentation "(make-butterworth-highpass n fc) returns a highpass Butterworth filter; n = order, fc = cutoff \
+ (let ((+documentation+ "(make-butterworth-highpass n fc) returns a highpass Butterworth filter; n = order, fc = cutoff \
freq (srate = 1.0): (make-butterworth-highpass 8 .1)"))
(lambda (n fc)
(if (odd? n) (set! n (+ n 1)))
@@ -131,7 +131,7 @@ freq (srate = 1.0): (make-butterworth-highpass 8 .1)"))
:ycoeffs (cadr coeffs))))))
(define make-butterworth-bandpass
- (let ((documentation "(make-butterworth-bandpass n fl fh) returns a bandpass Butterworth filter; n = order, fl and fh \
+ (let ((+documentation+ "(make-butterworth-bandpass n fl fh) returns a bandpass Butterworth filter; n = order, fl and fh \
are (1.0-based) edge freqs: (make-butterworth-bandpass 4 .1 .2)"))
(lambda (n fl fh)
(if (odd? n) (set! n (+ n 1)))
@@ -145,7 +145,7 @@ are (1.0-based) edge freqs: (make-butterworth-bandpass 4 .1 .2)"))
(+ (filter lp y) (filter hp y))))
(define make-butterworth-bandstop
- (let ((documentation "(make-butterworth-bandstop n fl fh) returns a bandstop Butterworth filter; n = order, fl and fh \
+ (let ((+documentation+ "(make-butterworth-bandstop n fl fh) returns a bandstop Butterworth filter; n = order, fl and fh \
are (1.0-based) edge freqs: (make-butterworth-bandstop 4 .1 .2)"))
(lambda (n fl fh)
(if (odd? n) (set! n (+ n 1)))
@@ -177,7 +177,7 @@ are (1.0-based) edge freqs: (make-butterworth-bandstop 4 .1 .2)"))
(set! (den (+ j 2)) (+ (* u u) (* w w)))))))
(define make-chebyshev-lowpass
- (let ((documentation "(make-chebyshev-lowpass n fc (ripple 1.0)) returns a lowpass Chebyshev filter; n = order, \
+ (let ((+documentation+ "(make-chebyshev-lowpass n fc (ripple 1.0)) returns a lowpass Chebyshev filter; n = order, \
fc = cutoff freq (srate = 1.0): (make-chebyshev-lowpass 8 .1)"))
(lambda* (n fc (ripple 1.0))
(if (odd? n) (set! n (+ n 1)))
@@ -187,7 +187,7 @@ fc = cutoff freq (srate = 1.0): (make-chebyshev-lowpass 8 .1)"))
:ycoeffs (cadr coeffs))))))
(define make-chebyshev-highpass
- (let ((documentation "(make-chebyshev-highpass n fc (ripple 1.0)) returns a highpass Chebyshev filter; n = order, \
+ (let ((+documentation+ "(make-chebyshev-highpass n fc (ripple 1.0)) returns a highpass Chebyshev filter; n = order, \
fc = cutoff freq (srate = 1.0): (make-chebyshev-highpass 8 .1 .01)"))
(lambda* (n fc (ripple 1.0))
(if (odd? n) (set! n (+ n 1)))
@@ -197,7 +197,7 @@ fc = cutoff freq (srate = 1.0): (make-chebyshev-highpass 8 .1 .01)"))
:ycoeffs (cadr coeffs))))))
(define make-chebyshev-bandpass
- (let ((documentation "(make-chebyshev-bandpass n fl fh (ripple 1.0)) returns a bandpass Chebyshev filter; n = order, \
+ (let ((+documentation+ "(make-chebyshev-bandpass n fl fh (ripple 1.0)) returns a bandpass Chebyshev filter; n = order, \
fl and fh = edge freqs (srate = 1.0): (make-chebyshev-bandpass 4 .1 .2)"))
(lambda* (n fl fh (ripple 1.0))
(if (odd? n) (set! n (+ n 1)))
@@ -207,7 +207,7 @@ fl and fh = edge freqs (srate = 1.0): (make-chebyshev-bandpass 4 .1 .2)"))
(filter lp (filter hp y)))))))
(define make-chebyshev-bandstop
- (let ((documentation "(make-chebyshev-bandstop n fl fh (ripple 1.0)) returns a bandstop Chebyshev filter; n = order, \
+ (let ((+documentation+ "(make-chebyshev-bandstop n fl fh (ripple 1.0)) returns a bandstop Chebyshev filter; n = order, \
fl and fh = edge freqs (srate = 1.0): (make-chebyshev-bandstop 8 .1 .4 .01)"))
(lambda* (n fl fh (ripple 1.0))
(if (odd? n) (set! n (+ n 1)))
@@ -241,7 +241,7 @@ fl and fh = edge freqs (srate = 1.0): (make-chebyshev-bandstop 8 .1 .4 .01)"))
(set! (den (+ j 2)) (/ 1.0 (+ (* u u) (* w w))))))))
(define make-inverse-chebyshev-lowpass
- (let ((documentation "(make-inverse-chebyshev-lowpass n fc (loss-dB 60.0)) returns a lowpass inverse-Chebyshev filter; n = order, \
+ (let ((+documentation+ "(make-inverse-chebyshev-lowpass n fc (loss-dB 60.0)) returns a lowpass inverse-Chebyshev filter; n = order, \
fc = cutoff freq (srate = 1.0): (make-inverse-chebyshev-lowpass 10 .4 120)"))
(lambda* (n fc (loss-dB 60.0))
(if (odd? n) (set! n (+ n 1)))
@@ -251,7 +251,7 @@ fc = cutoff freq (srate = 1.0): (make-inverse-chebyshev-lowpass 10 .4 120)"))
:ycoeffs (cadr coeffs))))))
(define make-inverse-chebyshev-highpass
- (let ((documentation "(make-inverse-chebyshev-highpass n fc (loss-dB 60.0)) returns a highpass inverse-Chebyshev filter; n = order, \
+ (let ((+documentation+ "(make-inverse-chebyshev-highpass n fc (loss-dB 60.0)) returns a highpass inverse-Chebyshev filter; n = order, \
fc = cutoff freq (srate = 1.0): (make-inverse-chebyshev-highpass 10 .1 120)"))
(lambda* (n fc (loss-dB 60.0))
(if (odd? n) (set! n (+ n 1)))
@@ -262,7 +262,7 @@ fc = cutoff freq (srate = 1.0): (make-inverse-chebyshev-highpass 10 .1 120)"))
:ycoeffs (cadr coeffs))))))
(define make-inverse-chebyshev-bandpass
- (let ((documentation "(make-inverse-chebyshev-bandpass n fl fh (loss-dB 60.0)) returns a bandpass inverse-Chebyshev filter; n = order, \
+ (let ((+documentation+ "(make-inverse-chebyshev-bandpass n fl fh (loss-dB 60.0)) returns a bandpass inverse-Chebyshev filter; n = order, \
fl and fh are edge freqs (srate=1.0): (make-inverse-chebyshev-bandpass 8 .1 .4)"))
(lambda* (n fl fh (loss-dB 60.0))
(if (odd? n) (set! n (+ n 1)))
@@ -271,7 +271,7 @@ fl and fh are edge freqs (srate=1.0): (make-inverse-chebyshev-bandpass 8 .1 .4)"
(lambda (y) (filter lp (filter hp y)))))))
(define make-inverse-chebyshev-bandstop
- (let ((documentation "(make-inverse-chebyshev-bandstop n fl fh (loss-dB 60.0)) returns a bandstop inverse-Chebyshev filter; n = order, \
+ (let ((+documentation+ "(make-inverse-chebyshev-bandstop n fl fh (loss-dB 60.0)) returns a bandstop inverse-Chebyshev filter; n = order, \
fl and fh are edge freqs (srate=1.0): (make-inverse-chebyshev-bandstop 8 .1 .4 90)"))
(lambda* (n fl fh (loss-dB 60.0))
(if (odd? n) (set! n (+ n 1)))
@@ -330,7 +330,7 @@ fl and fh are edge freqs (srate=1.0): (make-inverse-chebyshev-bandstop 8 .1 .4 9
(list num den))))))
(define make-bessel-lowpass
- (let ((documentation "(make-bessel-lowpass n fc) returns a lowpass Bessel filter; n = order, fc = cutoff freq (srate = 1.0): (make-bessel-lowpass 4 .1)"))
+ (let ((+documentation+ "(make-bessel-lowpass n fc) returns a lowpass Bessel filter; n = order, fc = cutoff freq (srate = 1.0): (make-bessel-lowpass 4 .1)"))
(lambda (n fc)
(if (odd? n) (set! n (+ n 1)))
(let ((coeffs (let ((proto (bessel-prototype n)))
@@ -339,7 +339,7 @@ fl and fh are edge freqs (srate=1.0): (make-inverse-chebyshev-bandstop 8 .1 .4 9
:ycoeffs (cadr coeffs))))))
(define make-bessel-highpass
- (let ((documentation "(make-bessel-highpass n fc) returns a highpass Bessel filter; n = order, fc = cutoff freq (srate = 1.0): (make-bessel-highpass 8 .1)"))
+ (let ((+documentation+ "(make-bessel-highpass n fc) returns a highpass Bessel filter; n = order, fc = cutoff freq (srate = 1.0): (make-bessel-highpass 8 .1)"))
(lambda* (n fc)
(if (odd? n) (set! n (+ n 1)))
(let ((coeffs (let ((hproto (prototype->highpass n (bessel-prototype n))))
@@ -348,7 +348,7 @@ fl and fh are edge freqs (srate=1.0): (make-inverse-chebyshev-bandstop 8 .1 .4 9
:ycoeffs (cadr coeffs))))))
(define make-bessel-bandpass
- (let ((documentation "(make-bessel-bandpass n fl fh) returns a bandpass Bessel filter; n = order, fl and fh are edge freqs (srate=1.0): (make-bessel-bandpass 4 .1 .2)"))
+ (let ((+documentation+ "(make-bessel-bandpass n fl fh) returns a bandpass Bessel filter; n = order, fl and fh are edge freqs (srate=1.0): (make-bessel-bandpass 4 .1 .2)"))
(lambda* (n fl fh)
(if (odd? n) (set! n (+ n 1)))
(let ((lp (make-bessel-lowpass n fh))
@@ -357,7 +357,7 @@ fl and fh are edge freqs (srate=1.0): (make-inverse-chebyshev-bandstop 8 .1 .4 9
(filter lp (filter hp y)))))))
(define make-bessel-bandstop
- (let ((documentation "(make-bessel-bandstop n fl fh) returns a bandstop Bessel filter; n = order, fl and fh are edge freqs (srate=1.0): (make-bessel-bandstop 8 .1 .2)"))
+ (let ((+documentation+ "(make-bessel-bandstop n fl fh) returns a bandstop Bessel filter; n = order, fl and fh are edge freqs (srate=1.0): (make-bessel-bandstop 8 .1 .2)"))
(lambda* (n fl fh)
(if (odd? n) (set! n (+ n 1)))
(make-bandstop-filter (make-bessel-lowpass n fl)
@@ -454,7 +454,7 @@ fl and fh are edge freqs (srate=1.0): (make-inverse-chebyshev-bandstop 8 .1 .4 9
(list num den (abs (/ g (sqrt (+ 1.0 (* e e))))))))))
(define make-elliptic-lowpass
- (let ((documentation "(make-elliptic-lowpass n fc (ripple 1.0) (loss-dB 60.0)) returns a lowpass elliptic filter; n = order, \
+ (let ((+documentation+ "(make-elliptic-lowpass n fc (ripple 1.0) (loss-dB 60.0)) returns a lowpass elliptic filter; n = order, \
fc = cutoff freq (srate = 1.0): (make-elliptic-lowpass 8 .25 .01 90)"))
(lambda* (n fc (ripple 1.0) (loss-dB 60.0))
(if (odd? n) (set! n (+ n 1)))
@@ -464,7 +464,7 @@ fc = cutoff freq (srate = 1.0): (make-elliptic-lowpass 8 .25 .01 90)"))
:ycoeffs (cadr coeffs))))))
(define make-elliptic-highpass
- (let ((documentation "(make-elliptic-highpass n fc (ripple 1.0) (loss-dB 60.0)) returns a highpass elliptic filter; n = order, \
+ (let ((+documentation+ "(make-elliptic-highpass n fc (ripple 1.0) (loss-dB 60.0)) returns a highpass elliptic filter; n = order, \
fc = cutoff freq (srate = 1.0): (make-elliptic-highpass 8 .25 .01 90)"))
(lambda* (n fc (ripple 1.0) (loss-dB 60.0))
(if (odd? n) (set! n (+ n 1)))
@@ -475,7 +475,7 @@ fc = cutoff freq (srate = 1.0): (make-elliptic-highpass 8 .25 .01 90)"))
:ycoeffs (cadr coeffs))))))
(define make-elliptic-bandpass
- (let ((documentation "(make-elliptic-bandpass n fl fh (ripple 1.0) (loss-dB 60.0)) returns a bandpass elliptic filter; n = order, \
+ (let ((+documentation+ "(make-elliptic-bandpass n fl fh (ripple 1.0) (loss-dB 60.0)) returns a bandpass elliptic filter; n = order, \
fl and fh are edge freqs (srate=1.0): (make-elliptic-bandpass 6 .1 .2 .1 90)"))
(lambda* (n fl fh (ripple 1.0) (loss-dB 60.0))
(if (odd? n) (set! n (+ n 1)))
@@ -485,7 +485,7 @@ fl and fh are edge freqs (srate=1.0): (make-elliptic-bandpass 6 .1 .2 .1 90)"))
(filter lp (filter hp y)))))))
(define make-elliptic-bandstop
- (let ((documentation "(make-elliptic-bandstop n fl fh (ripple 1.0) (loss-dB 60.0)) returns a bandstop elliptic filter; n = order, \
+ (let ((+documentation+ "(make-elliptic-bandstop n fl fh (ripple 1.0) (loss-dB 60.0)) returns a bandstop elliptic filter; n = order, \
fl and fh are edge freqs (srate=1.0): (make-elliptic-bandstop 6 .1 .2 .1 90)"))
(lambda* (n fl fh (ripple 1.0) (loss-dB 60.0))
(if (odd? n) (set! n (+ n 1)))
diff --git a/autosave.scm b/autosave.scm
index aa80c52..864198d 100644
--- a/autosave.scm
+++ b/autosave.scm
@@ -6,12 +6,12 @@
(define auto-saving #f)
(define cancel-auto-save
- (let ((documentation "(cancel-auto-save) turns off the auto-save mechanism"))
+ (let ((+documentation+ "(cancel-auto-save) turns off the auto-save mechanism"))
(lambda ()
(set! auto-saving #f))))
(define auto-save
- (let ((documentation "(auto-save) starts watching files, automatically saving backup copies as edits accumulate")
+ (let ((+documentation+ "(auto-save) starts watching files, automatically saving backup copies as edits accumulate")
(auto-save-temp-name
(lambda (snd)
diff --git a/bess1.scm b/bess1.scm
index 02377fb..32ed01d 100644
--- a/bess1.scm
+++ b/bess1.scm
@@ -58,7 +58,7 @@
#t)))
(define make-rt-violin
- (let ((documentation "(make-rt-violin dur freq amp (fm-index 1.0) (amp-env '(0 0 25 1 75 1 100 0))) real time simple violin (see fm.html)"))
+ (let ((+documentation+ "(make-rt-violin dur freq amp (fm-index 1.0) (amp-env '(0 0 25 1 75 1 100 0))) real time simple violin (see fm.html)"))
(lambda* (dur freq amp (fm-index 1.0) (amp-env '(0 0 25 1 75 1 100 0)))
(let* ((frq-scl (hz->radians freq))
(maxdev (* frq-scl fm-index)))
diff --git a/bird.scm b/bird.scm
index c8d15b7..16fa44f 100644
--- a/bird.scm
+++ b/bird.scm
@@ -42,7 +42,7 @@
(define bird-amp '(0.0 0.0 .25 1.0 .75 1.0 1.0 .0))
(define b-orchard-oriole
- (let ((documentation "(orchard-oriole beg) produces an orchard oriole call at time 'beg'")
+ (let ((+documentation+ "(orchard-oriole beg) produces an orchard oriole call at time 'beg'")
(oriup '(0.0 0.0 1.0 1.0))
(oridwn '(0.0 1.0 1.0 .0))
(oriupdwna '(0.0 0.0 .60 1.0 1.0 .60))
@@ -70,7 +70,7 @@
(define b-cassins-kingbird
- (let ((documentation "(cassins-kingbird beg) produces a cassins kingbird call at time 'beg'")
+ (let ((+documentation+ "(cassins-kingbird beg) produces a cassins kingbird call at time 'beg'")
(kingfirst '(0.0 .30 .45 1.0 .90 .10 1.0 .0))
(kingsecond '(0.0 0.0 .02 .50 .04 0.0 .06 .55 .08 .05 .10 .60 .12 .05 .14 .65 .16 .10 .18 .70 .20 .10 .22 .75 .24 .15 .26 .80 .28 .20 .30 .85 .32 .25 .34 .90 .36 .30 .38 .95 .40 .40 .42 1.0 .44 .50 .46 1.0 .48 .45 .50 1.0 .52 .50 .54 1.0 .56 .40 .58 .95 .60 .40 .62 .90 .64 .40 .66 .85 .68 .35 .70 .80 .72 .30 .74 .75 .76 .25 .78 .70 .80 .20 .82 .65 .84 .10 .86 .60 .88 0.0 .90 .55 .92 0.0 .94 .50 .96 0.0 1.0 .40)))
(lambda (beg)
@@ -80,7 +80,7 @@
(define b-chipping-sparrow
- (let ((documentation "(chipping-sparrow beg) produces a chipping sparrow call at time 'beg'")
+ (let ((+documentation+ "(chipping-sparrow beg) produces a chipping sparrow call at time 'beg'")
(chip-up '(0.0 .80 .15 1.0 .75 .30 1.0 .0)))
(lambda (beg)
(bird beg .05 4000 2400 .2 chip-up main-amp)
@@ -103,7 +103,7 @@
(define b-bobwhite
- (let ((documentation "(bobwhite beg) produces a bobwhite call at time 'beg'")
+ (let ((+documentation+ "(bobwhite beg) produces a bobwhite call at time 'beg'")
(bobup1 '(0.0 0.0 .40 1.0 1.0 1.0))
(bobup2 '(0.0 0.0 .65 .50 1.0 1.0)))
(lambda (beg)
@@ -113,7 +113,7 @@
(define b-western-meadowlark
- (let ((documentation "(western-meadowlark beg) produces a western meadowlark call at time 'beg'")
+ (let ((+documentation+ "(western-meadowlark beg) produces a western meadowlark call at time 'beg'")
(down-skw '(0.0 1.0 .40 .40 1.0 .0))
(fas-down '(0.0 1.0 1.0 .0)))
(lambda (beg)
@@ -129,13 +129,13 @@
(define b-scissor-tailed-flycatcher
- (let ((documentation "(scissor-tailed-flycatcher beg) produces a scissor-tailed flycatcher call at time 'beg'"))
+ (let ((+documentation+ "(scissor-tailed-flycatcher beg) produces a scissor-tailed flycatcher call at time 'beg'"))
(lambda (beg)
(bigbird beg .05 1800 1800 .2 '(0.0 0.0 .40 1.0 .60 1.0 1.0 .0) main-amp '(1 .5 2 1 3 .5 4 .1 5 .01)))))
(define b-great-horned-owl
- (let ((documentation "(great-horned-owl beg) produces a great horned owl call at time 'beg'"))
+ (let ((+documentation+ "(great-horned-owl beg) produces a great horned owl call at time 'beg'"))
(lambda (beg)
(bigbird beg .1 300 0 .1 main-amp main-amp '(1 1 3 .02 7 .01))
(bigbird (+ beg .3) .4 293 6 .1 '(0.0 1.0 1.0 .0) main-amp '(1 1 3 .02 7 .01))
@@ -145,7 +145,7 @@
(define b-black-throated-gray-warbler
- (let ((documentation "(black-throated-gray-warbler beg) produces a black throated gray warbler call at time 'beg'")
+ (let ((+documentation+ "(black-throated-gray-warbler beg) produces a black throated gray warbler call at time 'beg'")
(grayone '(0.0 .50 .02 .60 .04 .45 .06 .62 .08 .40 .10 .65 .12 .35 .14 .70 .18 .30 .20 .70 .22 .30 .24 .70 .25 .20 .30 .80 .35 .10 .40 .90 .45 0.0 .50 1.0 .55 0.0 .60 1.0 .65 0.0 .70 1.0 .75 0.0 .80 1.0 .85 0.0 .90 1.0 .95 0.0 1.0 .50))
(graytwo '(0.0 0.0 .01 .40 .02 0.0 .03 .40 .04 0.0 .05 .40 .06 0.0 .07 .40 .08 0.0 .09 .40 .10 0.0 .25 .80 .40 .30 .55 1.0 .70 0.0 .85 .80 1.0 .40))
(grayfour '(0.0 0.0 1.0 1.0)))
@@ -164,7 +164,7 @@
(define b-yellow-warbler
- (let ((documentation "(yellow-warbler beg) produces a yellow warbler call at time 'beg'")
+ (let ((+documentation+ "(yellow-warbler beg) produces a yellow warbler call at time 'beg'")
(yellow-swirl '(0.0 1.0 .05 1.0 .60 0.0 .80 .30 1.0 .10))
(yellow-down '(0.0 1.0 1.0 .0))
(swirl-amp '(0.0 0.0 .90 1.0 1.0 .0)))
@@ -181,7 +181,7 @@
(define b-black-necked-stilt
- (let ((documentation "(black-necked-stilt beg) produces a black necked stilt call at time 'beg'")
+ (let ((+documentation+ "(black-necked-stilt beg) produces a black necked stilt call at time 'beg'")
;; have to guess about upper partials (cut off by spectrograph)
;; "birds" book has piping sound coming back down whereas "songs
;; of western birds" just shows it going up.
@@ -195,7 +195,7 @@
(define b-chestnut-sided-warbler
- (let ((documentation "(chestnut-sided-warbler beg) produces a chestnut sided warbler call at time 'beg'")
+ (let ((+documentation+ "(chestnut-sided-warbler beg) produces a chestnut sided warbler call at time 'beg'")
(ycurve '(0.0 1.0 .30 .50 .60 1.0 .80 .20 1.0 .0))
(vcurve '(0.0 .20 .50 1.0 1.0 .0))
(louder '(0.0 0.0 .90 1.0 1.0 .0)))
@@ -219,7 +219,7 @@
(define b-grasshopper-sparrow
- (let ((documentation "(grasshopper-sparrow beg) produces a grasshopper sparrow call at time 'beg'")
+ (let ((+documentation+ "(grasshopper-sparrow beg) produces a grasshopper sparrow call at time 'beg'")
(grasstwo '(0.0 0.0 .10 1.0 .20 0.0 .30 1.0 .40 0.0 .50 1.0 .60 0.0 .70 1.0 .80 0.0 .90 1.0 1.0 .0)))
(lambda (beg)
(bird beg .01 8000 100 .1 grasstwo main-amp)
@@ -229,7 +229,7 @@
(define b-swamp-sparrow
- (let ((documentation "(swamp-sparrow beg) produces a swamp sparrow call at time 'beg'")
+ (let ((+documentation+ "(swamp-sparrow beg) produces a swamp sparrow call at time 'beg'")
(swamp-up '(0.0 0.0 .60 .70 1.0 1.0))
(swamp-down '(0.0 1.0 .50 .50 .60 .60 1.0 .0)))
(lambda (beg)
@@ -275,7 +275,7 @@
(define b-golden-crowned-sparrow
- (let ((documentation "(golden-crowned-sparrow beg) produces a golden crowned sparrow call at time 'beg'"))
+ (let ((+documentation+ "(golden-crowned-sparrow beg) produces a golden crowned sparrow call at time 'beg'"))
(lambda (beg)
(let ((goldone '(0.0 1.0 .25 .20 1.0 .0))) ; these have as different song around here.
(bird beg .5 4300 1000 .15 goldone main-amp)
@@ -285,7 +285,7 @@
(define b-indigo-bunting
- (let ((documentation "(indigo-bunting beg) produces a indigo bunting call at time 'beg'")
+ (let ((+documentation+ "(indigo-bunting beg) produces a indigo bunting call at time 'beg'")
(buntdwn '(0.0 1.0 1.0 .0))
(buntv '(0.0 0.0 .50 1.0 1.0 .0))
(bunty '(0.0 1.0 .50 0.0 1.0 .90))
@@ -315,7 +315,7 @@
(define b-hooded-warbler
- (let ((documentation "(hooded-warbler beg) produces a hooded warbler call at time 'beg'")
+ (let ((+documentation+ "(hooded-warbler beg) produces a hooded warbler call at time 'beg'")
(hoodup '(0.0 0.0 1.0 1.0))
(hooddown '(0.0 1.0 1.0 .0)))
(lambda (beg)
@@ -350,7 +350,7 @@
(define b-american-widgeon
- (let ((documentation "(american-widgeon beg) produces an american widgeon call at time 'beg'")
+ (let ((+documentation+ "(american-widgeon beg) produces an american widgeon call at time 'beg'")
(widgeon '(0.0 0.0 .50 1.0 1.0 .0)))
(lambda (beg)
(bigbird beg .07 1900 300 .15 widgeon widgeon '(1 1 2 .02))
@@ -359,7 +359,7 @@
(define b-louisiana-waterthrush
- (let ((documentation "(louisiana-waterthrush beg) produces a louisiana waterthrush call at time 'beg'")
+ (let ((+documentation+ "(louisiana-waterthrush beg) produces a louisiana waterthrush call at time 'beg'")
(water-four '(0.0 0.0 1.0 1.0))
(water-damp '(0.0 0.0 .90 1.0 1.0 .0)))
(lambda (beg)
@@ -378,7 +378,7 @@
(define b-robin
- (let ((documentation "(robin beg) produces a robin call at time 'beg'"))
+ (let ((+documentation+ "(robin beg) produces a robin call at time 'beg'"))
(lambda (beg)
(bigbird beg .06 2000 800 .15 '(0.0 0.0 .12 .70 .30 0.0 .70 1.0 1.0 .50) main-amp '(1 1 2 .1))
(bigbird (+ beg .11) .10 2000 900 .15 '(0.0 .10 .08 .70 .30 0.0 .35 1.0 .40 .30 1.0 .30) main-amp '(1 1 2 .1))
@@ -389,7 +389,7 @@
(define b-solitary-vireo
- (let ((documentation "(solitary-vireo beg) produces a solitary vireo call at time 'beg'"))
+ (let ((+documentation+ "(solitary-vireo beg) produces a solitary vireo call at time 'beg'"))
(lambda (beg)
(bird beg .4 1800 1200 .2
'(0.0 .20 .03 .30 .06 .10 .10 .50 .13 .40 .16 .80 .19 .50 .22 .90 .25 .60 .28 1.0 .31 .60 .34 1.0 .37 .50 .41 .90 .45 .40 .49 .80
@@ -398,7 +398,7 @@
(define b-pigeon-hawk
- (let ((documentation "(pigeon-hawk beg) produces a pigeon hawk (merlin) call at time 'beg'")
+ (let ((+documentation+ "(pigeon-hawk beg) produces a pigeon hawk (merlin) call at time 'beg'")
(hupdown '(0.0 0.0 .30 1.0 .70 1.0 1.0 .0)))
(lambda (beg)
(bigbird beg .1 1900 200 .2 hupdown main-amp '(1 .7 2 1))
@@ -433,7 +433,7 @@
(define b-cerulean-warbler
- (let ((documentation "(cerulean-warbler beg) produces a cerulean warbler call at time 'beg'")
+ (let ((+documentation+ "(cerulean-warbler beg) produces a cerulean warbler call at time 'beg'")
(w-up '(0.0 0.0 1.0 1.0)))
(lambda (beg)
(let ((beg (- beg .27)))
@@ -483,7 +483,7 @@
(define b-nashville-warbler
- (let ((documentation "(nashville-warbler beg) produces a nashville warbler call at time 'beg'")
+ (let ((+documentation+ "(nashville-warbler beg) produces a nashville warbler call at time 'beg'")
(nash-blip '(0.0 .60 .35 1.0 1.0 .0))
(nash-down '(0.0 .90 .05 1.0 .10 .90 .65 .50 1.0 .0))
(nash-up '(0.0 0.0 .15 .20 .25 .05 .90 .95 1.0 1.0))
@@ -506,7 +506,7 @@
(define b-eastern-phoebe
- (let ((documentation "(eastern-phoebe beg) produces an eastern-phoebe call at time 'beg'")
+ (let ((+documentation+ "(eastern-phoebe beg) produces an eastern-phoebe call at time 'beg'")
(phoebe-amp '(0.0 0.0 .10 1.0 1.0 .0)))
(lambda (beg)
(bird beg .225 3000 1300 .3 '(0.0 0.0 .30 .30 .35 .50 .55 .40 .70 .80 .75 .70 .80 1.0 .95 .90 1.0 .0) main-amp)
@@ -516,7 +516,7 @@
(define b-painted-bunting
- (let ((documentation "(painted-bunting beg) produces a painted bunting call at time 'beg'")
+ (let ((+documentation+ "(painted-bunting beg) produces a painted bunting call at time 'beg'")
(b-one '(0.0 0.0 1.0 1.0)))
(lambda (beg)
(let ((beg (- beg .05)))
@@ -544,7 +544,7 @@
'(0.0 0.0 .10 .50 .50 .50 .90 1.0 1.0 .0))))))
(define b-western-flycatcher
- (let ((documentation "(western-flycatcher beg) produces a western flycatcher call at time 'beg'")
+ (let ((+documentation+ "(western-flycatcher beg) produces a western flycatcher call at time 'beg'")
(f-one '(0.0 0.0 .10 1.0 .20 .40 .95 .10 1.0 .0))
(a-one '(0.0 0.0 .10 .20 .20 .10 .30 1.0 .90 1.0 1.0 .0))
(f-two '(0.0 .50 .25 1.0 .50 0.0 .60 0.0 .95 .30 1.0 .60))
@@ -555,7 +555,7 @@
(define b-bachmans-sparrow
- (let ((documentation "(bachmans-sparrow beg) produces a bachmans sparrow call at time 'beg'")
+ (let ((+documentation+ "(bachmans-sparrow beg) produces a bachmans sparrow call at time 'beg'")
(sup '(0.0 .10 .35 0.0 1.0 1.0))
(sdwn '(0.0 1.0 .40 .50 1.0 .0)))
(lambda (beg)
@@ -605,14 +605,14 @@
(define b-cedar-waxwing
- (let ((documentation "(cedar-waxwing beg) produces a cedar waxwing call at time 'beg'"))
+ (let ((+documentation+ "(cedar-waxwing beg) produces a cedar waxwing call at time 'beg'"))
(lambda (beg)
(bird beg .50 6000 800 .2
'(0.0 0.0 .25 .70 .70 1.0 .90 1.0 1.0 .20)
'(0.0 0.0 .20 1.0 .40 1.0 1.0 .0)))))
(define b-bairds-sparrow
- (let ((documentation "(bairds-sparrow beg) produces a bairds sparrow call at time 'beg'")
+ (let ((+documentation+ "(bairds-sparrow beg) produces a bairds sparrow call at time 'beg'")
(bairdend '(0.0 0.0 .25 1.0 .50 0.0 .75 1.0 1.0 .0)))
(lambda (beg)
(let ((bairdstart '(0.0 .50 .05 1.0 .10 0.0 .15 1.0 .20 0.0 .25 1.0 .30 0.0 .35 1.0 .40 0.0 .45 1.0
@@ -659,7 +659,7 @@
(define b-kentucky-warbler
- (let ((documentation "(kentucky-warbler beg) produces a kentucky warbler call at time 'beg'")
+ (let ((+documentation+ "(kentucky-warbler beg) produces a kentucky warbler call at time 'beg'")
(kenstart '(0.0 .30 .50 1.0 1.0 .0))
(kendwn '(0.0 .90 .10 1.0 1.0 .0))
(kentrill '(0.0 1.0 .25 0.0 .50 0.0 .75 1.0 1.0 .0)))
@@ -699,7 +699,7 @@
(define b-rufous-sided-towhee
- (let ((documentation "(rufous-sided-towhee beg) produces a rufous sided towhee call at time 'beg'")
+ (let ((+documentation+ "(rufous-sided-towhee beg) produces a rufous sided towhee call at time 'beg'")
(towhee-two '(0.0 0.0 1.0 1.0))
(towhee-three '(0.0 1.0 1.0 .0)))
(lambda (beg)
@@ -763,7 +763,7 @@
(define b-prothonotary-warbler
- (let ((documentation "(prothonotary-warbler beg) produces a prothonotary warbler call at time 'beg'")
+ (let ((+documentation+ "(prothonotary-warbler beg) produces a prothonotary warbler call at time 'beg'")
(pro-one '(0.0 .10 .20 0.0 1.0 1.0))
(pro-two '(0.0 0.0 1.0 1.0))
(pro-amp '(0.0 0.0 .20 1.0 .40 .50 1.0 .0)))
@@ -792,7 +792,7 @@
(define b-audubons-warbler
- (let ((documentation "(audubons-warbler beg) produces an audubons warbler (yellow-rumped warbler) call at time 'beg'")
+ (let ((+documentation+ "(audubons-warbler beg) produces an audubons warbler (yellow-rumped warbler) call at time 'beg'")
(w-up '(0.0 0.0 1.0 1.0))
(w-down '(0.0 1.0 1.0 .0))
(w-updown '(0.0 .10 .50 1.0 1.0 .0)))
@@ -822,7 +822,7 @@
(define b-lark-bunting
- (let ((documentation "(lark-bunting beg) produces a lark bunting call at time 'beg'")
+ (let ((+documentation+ "(lark-bunting beg) produces a lark bunting call at time 'beg'")
(b-down '(0.0 1.0 1.0 .0))
(b-up '(0.0 0.0 1.0 1.0)))
(lambda (beg)
@@ -865,7 +865,7 @@
(define b-eastern-bluebird
- (let ((documentation "(eastern-bluebird beg) produces an eastern bluebird call at time 'beg'")
+ (let ((+documentation+ "(eastern-bluebird beg) produces an eastern bluebird call at time 'beg'")
(blue-one '(0.0 0.0 1.0 1.0)))
(lambda (beg)
(let ((beg (- beg .75)))
@@ -880,7 +880,7 @@
(define b-chuck-wills-widow
- (let ((documentation "(chuck-wills-widow beg) produces a chuck wills widow call at time 'beg'"))
+ (let ((+documentation+ "(chuck-wills-widow beg) produces a chuck wills widow call at time 'beg'"))
(lambda (beg)
(bird beg .03 1000 800 .1 '(0.0 1.0 1.0 .0) bird-amp)
(bird (+ beg .27) .20 1000 1000 .2 '(0.0 0.0 .10 .10 .25 1.0 .50 .30 .80 .70 1.0 .0) bird-amp)
@@ -888,7 +888,7 @@
(define b-blue-gray-gnatcatcher
- (let ((documentation "(blue-gray-gnatcatcher beg) produces a blue gray gnatcatcher call at time 'beg'")
+ (let ((+documentation+ "(blue-gray-gnatcatcher beg) produces a blue gray gnatcatcher call at time 'beg'")
(gskw1 '(0.0 0.0 .15 1.0 .75 .80 .90 1.0 1.0 .70))
(gskw2 '(0.0 0.0 .25 1.0 .75 .70 1.0 .0)))
(lambda (beg)
@@ -903,7 +903,7 @@
(define b-black-throated-sparrow
- (let ((documentation "(black-throated-sparrow beg) produces a black throated sparrow call at time 'beg'")
+ (let ((+documentation+ "(black-throated-sparrow beg) produces a black throated sparrow call at time 'beg'")
(black-up '(0.0 0.0 1.0 1.0))
(black-amp '(0.0 0.0 .50 1.0 1.0 .0)))
(lambda (beg)
@@ -954,7 +954,7 @@
(define b-black-chinned-sparrow
- (let ((documentation "(black-chinned-sparrow beg) produces a black chinned sparrow call at time 'beg'")
+ (let ((+documentation+ "(black-chinned-sparrow beg) produces a black chinned sparrow call at time 'beg'")
(chin-up '(0.0 0.0 1.0 1.0)))
(lambda (beg)
(let ((beg (- beg .6)))
@@ -978,7 +978,7 @@
(define various-gull-cries-from-end-of-colony-5
- (let ((documentation "(various-gull-cries-from-end-of-colony-5 beg) produces a various gull cries at time 'beg'")
+ (let ((+documentation+ "(various-gull-cries-from-end-of-colony-5 beg) produces a various gull cries at time 'beg'")
(gullstart '(0 0 10 1 20 .5000 40 .6000 60 .5000 100 0))
(gullend '(0 0 5 1 10 .5000 90 .4000 100 0))
(gull-frq '(1 .1 2 1 3 .1 4 .01 5 .09 6 .01 7 .01)))
@@ -997,7 +997,7 @@
(define make-birds
- (let ((documentation "(make-birds) calls all the birds in bird.scm"))
+ (let ((+documentation+ "(make-birds) calls all the birds in bird.scm"))
(lambda ()
(with-sound (:clipped #f)
(b-orchard-oriole 0)
diff --git a/clean.scm b/clean.scm
index a3fb66b..1c3f92b 100644
--- a/clean.scm
+++ b/clean.scm
@@ -4,7 +4,7 @@
(require snd-dsp.scm snd-generators.scm)
(define goertzel-channel
- (let ((documentation "(goertzel-channel freq beg dur snd (chn 0)) returns the amplitude of the 'freq' spectral component"))
+ (let ((+documentation+ "(goertzel-channel freq beg dur snd (chn 0)) returns the amplitude of the 'freq' spectral component"))
(lambda* (freq (beg 0) dur snd chn)
(let* ((rfreq (/ (* 2.0 pi freq) (srate snd)))
(cs (* 2.0 (cos rfreq))))
diff --git a/clm-ins.scm b/clm-ins.scm
index c591f17..b12522c 100644
--- a/clm-ins.scm
+++ b/clm-ins.scm
@@ -2565,7 +2565,7 @@ mjkoskin@sci.fi
;;; bes-fm -- can also use bes-j0 here as in earlier versions
(define bes-fm
- (let ((documentation "(bes-fm beg dur freq amp ratio index) produces J1(J1) imitating FM"))
+ (let ((+documentation+ "(bes-fm beg dur freq amp ratio index) produces J1(J1) imitating FM"))
(lambda (beg dur freq amp ratio index)
(let ((car-incr (hz->radians freq)))
(let ((st (seconds->samples beg))
@@ -2593,7 +2593,7 @@ mjkoskin@sci.fi
modsig)
(define make-ssb-fm
- (let ((documentation "(make-ssb-fm freq) makes an ssb-fm generator"))
+ (let ((+documentation+ "(make-ssb-fm freq) makes an ssb-fm generator"))
(lambda (freq)
(make-sbfm :am0 (make-oscil freq 0)
:am1 (make-oscil freq (* 0.5 pi))
@@ -2603,7 +2603,7 @@ mjkoskin@sci.fi
:mod1 (make-delay 40)))))
(define ssb-fm
- (let ((documentation "(ssb-fm gen modsig) runs an ssb-fm generator"))
+ (let ((+documentation+ "(ssb-fm gen modsig) runs an ssb-fm generator"))
(lambda (gen modsig)
(let-set! gen 'modsig modsig)
(with-let gen
@@ -2616,7 +2616,7 @@ mjkoskin@sci.fi
;;; if all we want are asymmetric fm-generated spectra, we can just add 2 fm oscil pairs:
(define make-fm2
- (let ((documentation "(make-fm2 f1 f2 f3 f4 p1 p2 p3 p4) makes two FM paired oscils"))
+ (let ((+documentation+ "(make-fm2 f1 f2 f3 f4 p1 p2 p3 p4) makes two FM paired oscils"))
(lambda (f1 f2 f3 f4 p1 p2 p3 p4)
;; (make-fm2 1000 100 1000 100 0 0 (* 0.5 pi) (* 0.5 pi))
;; (make-fm2 1000 100 1000 100 0 0 0 (* 0.5 pi))
@@ -2626,7 +2626,7 @@ mjkoskin@sci.fi
(make-oscil f4 p4)))))
(define fm2
- (let ((documentation "(fm2 gen index) runs an fm2 generator"))
+ (let ((+documentation+ "(fm2 gen index) runs an fm2 generator"))
(lambda (gen index)
(* .25 (+ (oscil (gen 0) (* index (oscil (gen 1))))
(oscil (gen 2) (* index (oscil (gen 3)))))))))
@@ -2645,14 +2645,14 @@ mjkoskin@sci.fi
sig rmsval)
(define make-rmsgain
- (let ((documentation "(make-rmsgain (hp 10.0)) makes an RMS gain generator"))
+ (let ((+documentation+ "(make-rmsgain (hp 10.0)) makes an RMS gain generator"))
(lambda* ((hp 10.0))
(let ((c2 (let ((b (- 2.0 (cos (* hp (/ (* 2.0 pi) *clm-srate*))))))
(- b (sqrt (- (* b b) 1.0))))))
(make-rmsg :c1 (- 1.0 c2) :c2 c2)))))
(define rms
- (let ((documentation "(rms gen sig) runs an RMS gain generator"))
+ (let ((+documentation+ "(rms gen sig) runs an RMS gain generator"))
(lambda (gen sig)
(let-set! gen 'sig sig)
(with-let gen
@@ -2661,7 +2661,7 @@ mjkoskin@sci.fi
(define gain
- (let ((documentation "(gain gen sig rmsval) returns the current RMS gain"))
+ (let ((+documentation+ "(gain gen sig rmsval) returns the current RMS gain"))
(lambda (gen sig rmsval)
(let-set! gen 'sig sig)
(let-set! gen 'rmsval rmsval)
@@ -2675,17 +2675,17 @@ mjkoskin@sci.fi
(* sig this-gain))))))
(define balance
- (let ((documentation "(balance gen signal compare) scales a signal based on a RMS gain"))
+ (let ((+documentation+ "(balance gen signal compare) scales a signal based on a RMS gain"))
(lambda (gen signal compare)
(gain gen signal (rms gen compare)))))
(define gain-avg
- (let ((documentation "(gain-avg gen) is part of the RMS gain stuff"))
+ (let ((+documentation+ "(gain-avg gen) is part of the RMS gain stuff"))
(lambda (gen)
(/ (gen 'avg) (gen 'avgc)))))
(define balance-avg
- (let ((documentation "(balance-avg gen) is part of the RM gain stuff"))
+ (let ((+documentation+ "(balance-avg gen) is part of the RM gain stuff"))
(lambda (gen)
(gen 'avg))))
diff --git a/clm.fs b/clm.fs
index 9f49a62..ca4f658 100644
--- a/clm.fs
+++ b/clm.fs
@@ -2,9 +2,9 @@
\ Author: Michael Scholz <mi-scholz@users.sourceforge.net>
\ Created: 04/03/15 19:25:58
-\ Changed: 15/02/25 16:05:57
+\ Changed: 17/09/25 22:08:35
\
-\ @(#)clm.fs 1.121 2/25/15
+\ @(#)clm.fs 1.122 9/25/17
\ clm-print ( fmt :optional args -- )
\ clm-message ( fmt :optional args -- )
@@ -281,7 +281,7 @@ set-current
previous
\ === Global User Variables (settable in ~/.snd_forth or ~/.fthrc) ===
-"fth 2015/02/25" value *clm-version*
+"fth 2017/09/25" value *clm-version*
#f value *locsig*
mus-lshort value *clm-audio-format*
#f value *clm-comment*
@@ -325,7 +325,7 @@ mus-file-buffer-size value *clm-file-buffer-size*
mus-clipping value *clm-clipped*
mus-array-print-length value *clm-array-print-length*
clm-table-size value *clm-table-size*
-clm-default-frequency value *clm-default-frequency*
+440.0 value *clm-default-frequency*
\ for backward compatibility
*clm-sample-type* value *clm-data-format*
@@ -334,9 +334,6 @@ clm-default-frequency value *clm-default-frequency*
val
; trace-var
-<'> *clm-default-frequency* lambda: <{ val -- res }>
- val set-clm-default-frequency
-; trace-var
<'> *clm-table-size* lambda: <{ val -- res }>
val set-clm-table-size
; trace-var
diff --git a/clm.h b/clm.h
index 910f01f..603658c 100644
--- a/clm.h
+++ b/clm.h
@@ -2,8 +2,8 @@
#define CLM_H
#define MUS_VERSION 6
-#define MUS_REVISION 17
-#define MUS_DATE "3-Aug-17"
+#define MUS_REVISION 18
+#define MUS_DATE "22-Sep-17"
/* isn't mus_env_interp backwards? */
@@ -616,6 +616,7 @@ MUS_EXPORT mus_any *mus_bank_generator(mus_any *g, int i);
/* Change log.
*
+ * 22-Sep: removed clm_default_frequency.
* 3-Aug: mus_long_t is now int64_t.
* 18-Jul: mus_<method>_exists.
* 13-Jul: mus_run1_function.
diff --git a/clm23.scm b/clm23.scm
index f271e9a..1b8ae19 100644
--- a/clm23.scm
+++ b/clm23.scm
@@ -2006,7 +2006,7 @@
freq phase (ratio 1.0) (r 1.0) (index 1.0) input r1 r2 r3)
(define dsp-asyfm-J
- (let ((documentation "(dsp-asyfm-J gen input) is the same as the CLM asymmetric-fm generator, set r != 1.0 to get the asymmetric spectra"))
+ (let ((+documentation+ "(dsp-asyfm-J gen input) is the same as the CLM asymmetric-fm generator, set r != 1.0 to get the asymmetric spectra"))
(lambda (gen input)
(let-set! gen 'input input)
(with-let gen
@@ -2017,7 +2017,7 @@
result)))))
(define dsp-asyfm-I
- (let ((documentation "(dsp-asyfm-I gen input) is the I0 case of the asymmetric-fm generator (dsp.scm)"))
+ (let ((+documentation+ "(dsp-asyfm-I gen input) is the I0 case of the asymmetric-fm generator (dsp.scm)"))
(lambda (gen input)
(let-set! gen 'input input)
(with-let gen
diff --git a/clm2xen.c b/clm2xen.c
index a54060f..09560f9 100644
--- a/clm2xen.c
+++ b/clm2xen.c
@@ -524,31 +524,6 @@ static Xen g_set_clm_table_size(Xen val)
}
-#if (!DISABLE_DEPRECATED)
-#define S_clm_default_frequency "clm-default-frequency"
-
-static mus_float_t clm_default_frequency = 0.0;
-#if HAVE_SCHEME
- static s7_pointer clm_default_frequency_symbol;
-#endif
-
-mus_float_t clm_default_frequency_c(void) {return(clm_default_frequency);}
-
-static Xen g_clm_default_frequency(void) {return(C_double_to_Xen_real(clm_default_frequency));}
-
-static Xen g_set_clm_default_frequency(Xen val)
-{
- #define H_clm_default_frequency "(" S_clm_default_frequency "): the default frequency for most generators (0.0)"
- Xen_check_type(Xen_is_double(val), val, 1, S_set S_clm_default_frequency, "a number");
- clm_default_frequency = Xen_real_to_C_double(val);
-#if HAVE_SCHEME
- s7_symbol_set_value(s7, clm_default_frequency_symbol, s7_make_real(s7, clm_default_frequency));
-#endif
- return(val);
-}
-#endif
-
-
/* ---------------- AM and simple stuff ---------------- */
static const char *fft_window_xen_names[MUS_NUM_FFT_WINDOWS] =
@@ -1805,8 +1780,8 @@ static Xen g_mus_describe(Xen gen)
Xen_check_type(Xen_is_double(val), val, 2, S_set Caller, "a float"); \
if (gn) {CLM_case(gn->gen, Xen_real_to_C_double(val)); return(val);} \
func = s7_method(s7, gen, s7_make_symbol(s7, Caller)); \
- if ((func != Xen_undefined) && (s7_procedure_setter(s7, func))) \
- return(s7_apply_function(s7, s7_procedure_setter(s7, func), s7_list(s7, 2, gen, val))); \
+ if ((func != Xen_undefined) && (s7_setter(s7, func))) \
+ return(s7_apply_function(s7, s7_setter(s7, func), s7_list(s7, 2, gen, val))); \
Xen_check_type(false, gen, 1, S_set Caller, "a generator"); \
return(val);
@@ -1827,8 +1802,8 @@ static Xen g_mus_describe(Xen gen)
Xen_check_type(Xen_is_integer(val), val, 2, Caller, "an integer"); \
if (gn) {CLM_case(gn->gen, Xen_llong_to_C_llong(val)); return(val);} \
func = s7_method(s7, gen, s7_make_symbol(s7, Caller)); \
- if ((func != Xen_undefined) && (s7_procedure_setter(s7, func))) \
- return(s7_apply_function(s7, s7_procedure_setter(s7, func), s7_list(s7, 2, gen, val))); \
+ if ((func != Xen_undefined) && (s7_setter(s7, func))) \
+ return(s7_apply_function(s7, s7_setter(s7, func), s7_list(s7, 2, gen, val))); \
Xen_check_type(false, gen, 1, Caller, "a generator"); \
return(val);
@@ -2130,8 +2105,8 @@ static Xen g_mus_set_data(Xen gen, Xen val)
{
s7_pointer func;
func = s7_method(s7, gen, s7_make_symbol(s7, "mus-data"));
- if ((func != Xen_undefined) && (s7_procedure_setter(s7, func)))
- return(s7_apply_function(s7, s7_procedure_setter(s7, func), s7_list(s7, 2, gen, val)));
+ if ((func != Xen_undefined) && (s7_setter(s7, func)))
+ return(s7_apply_function(s7, s7_setter(s7, func), s7_list(s7, 2, gen, val)));
}
#endif
@@ -2261,8 +2236,8 @@ static Xen g_mus_set_xcoeff(Xen gen, Xen index, Xen val)
{
s7_pointer func;
func = s7_method(s7, gen, s7_make_symbol(s7, "mus-xcoeff"));
- if ((func != Xen_undefined) && (s7_procedure_setter(s7, func)))
- return(s7_apply_function(s7, s7_procedure_setter(s7, func), s7_list(s7, 3, gen, index, val)));
+ if ((func != Xen_undefined) && (s7_setter(s7, func)))
+ return(s7_apply_function(s7, s7_setter(s7, func), s7_list(s7, 3, gen, index, val)));
}
#endif
Xen_check_type(false, gen, 1, S_set S_mus_xcoeff, "a generator");
@@ -2316,8 +2291,8 @@ static Xen g_mus_set_ycoeff(Xen gen, Xen index, Xen val)
{
s7_pointer func;
func = s7_method(s7, gen, s7_make_symbol(s7, "mus-ycoeff"));
- if ((func != Xen_undefined) && (s7_procedure_setter(s7, func)))
- return(s7_apply_function(s7, s7_procedure_setter(s7, func), s7_list(s7, 3, gen, index, val)));
+ if ((func != Xen_undefined) && (s7_setter(s7, func)))
+ return(s7_apply_function(s7, s7_setter(s7, func), s7_list(s7, 3, gen, index, val)));
}
#endif
Xen_check_type(false, gen, 1, S_set S_mus_ycoeff, "a generator");
@@ -2418,8 +2393,8 @@ static Xen g_mus_set_length(Xen gen, Xen val)
{
s7_pointer func;
func = s7_method(s7, gen, s7_make_symbol(s7, "mus-length"));
- if ((func != Xen_undefined) && (s7_procedure_setter(s7, func)))
- return(s7_apply_function(s7, s7_procedure_setter(s7, func), s7_list(s7, 2, gen, val)));
+ if ((func != Xen_undefined) && (s7_setter(s7, func)))
+ return(s7_apply_function(s7, s7_setter(s7, func), s7_list(s7, 2, gen, val)));
}
#endif
Xen_check_type(false, gen, 1, S_set S_mus_length, "a generator");
@@ -12491,11 +12466,6 @@ Xen_wrap_1_arg(g_make_all_pass_bank_w, g_make_all_pass_bank)
Xen_wrap_1_arg(g_pink_noise_w, g_pink_noise)
Xen_wrap_3_args(g_out_bank_w, g_out_bank)
-#if (!DISABLE_DEPRECATED)
-Xen_wrap_no_args(g_clm_default_frequency_w, g_clm_default_frequency)
-Xen_wrap_1_arg(g_set_clm_default_frequency_w, g_set_clm_default_frequency)
-#endif
-
#if HAVE_SCHEME
Xen_wrap_2_args(g_piano_noise_w, g_piano_noise)
Xen_wrap_6_args(g_singer_filter_w, g_singer_filter)
@@ -13038,22 +13008,22 @@ static void mus_xen_init(void)
#if HAVE_SCHEME
clm_srate_symbol = s7_define_variable(s7, "*clm-srate*", s7_make_real(s7, MUS_DEFAULT_SAMPLING_RATE));
- s7_symbol_set_access(s7, clm_srate_symbol, s7_make_function(s7, "[acc-clm-srate]", acc_clm_srate, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, clm_srate_symbol, s7_make_function(s7, "[acc-clm-srate]", acc_clm_srate, 2, 0, false, "accessor"));
clm_table_size_symbol = s7_define_variable(s7, "*" S_clm_table_size "*", s7_make_integer(s7, MUS_CLM_DEFAULT_TABLE_SIZE));
s7_symbol_set_documentation(s7, clm_table_size_symbol, "*clm-table-size*: the default table size for most generators (512)");
- s7_symbol_set_access(s7, clm_table_size_symbol, s7_make_function(s7, "[acc-clm-table-size]", acc_clm_table_size, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, clm_table_size_symbol, s7_make_function(s7, "[acc-clm-table-size]", acc_clm_table_size, 2, 0, false, "accessor"));
mus_file_buffer_size_symbol = s7_define_variable(s7, "*clm-file-buffer-size*", s7_make_integer(s7, MUS_DEFAULT_FILE_BUFFER_SIZE));
- s7_symbol_set_access(s7, mus_file_buffer_size_symbol, s7_make_function(s7, "[acc-mus-file-buffer-size]", acc_mus_file_buffer_size, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, mus_file_buffer_size_symbol, s7_make_function(s7, "[acc-mus-file-buffer-size]", acc_mus_file_buffer_size, 2, 0, false, "accessor"));
mus_float_equal_fudge_factor_symbol = s7_define_variable(s7, "*" S_mus_float_equal_fudge_factor "*", s7_make_real(s7, 0.0000001)); /* clm.c */
s7_symbol_set_documentation(s7, mus_float_equal_fudge_factor_symbol, "*mus-float-equal-fudge-factor*: floating point equality fudge factor");
- s7_symbol_set_access(s7, mus_float_equal_fudge_factor_symbol, s7_make_function(s7, "[acc-mus-float-equal-fudge-factor]", acc_mus_float_equal_fudge_factor, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, mus_float_equal_fudge_factor_symbol, s7_make_function(s7, "[acc-mus-float-equal-fudge-factor]", acc_mus_float_equal_fudge_factor, 2, 0, false, "accessor"));
mus_array_print_length_symbol = s7_define_variable(s7, "*" S_mus_array_print_length "*", s7_make_integer(s7, MUS_DEFAULT_ARRAY_PRINT_LENGTH));
s7_symbol_set_documentation(s7, mus_array_print_length_symbol, "*mus-array-print-length*: current clm array print length (default is 8).");
- s7_symbol_set_access(s7, mus_array_print_length_symbol, s7_make_function(s7, "[acc-mus-array-print-length]", acc_mus_array_print_length, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, mus_array_print_length_symbol, s7_make_function(s7, "[acc-mus-array-print-length]", acc_mus_array_print_length, 2, 0, false, "accessor"));
g_clm_let = s7_openlet(s7, s7_inlet(s7, s7_list(s7, 2, s7_make_symbol(s7, "object->let"),
s7_make_function(s7, "generator->let", generator_to_let, 2, 0, false, "clm generator object->let method"))));
@@ -13500,10 +13470,10 @@ static void mus_xen_init(void)
out_any_2 = out_any_2_to_mus_xen;
/* these can't be safe functions */
clm_output_accessor = s7_make_function(s7, "(set " S_output ")", g_clm_output_set, 2, 0, false, "called if " S_output " is set");
- s7_symbol_set_access(s7, s7_make_symbol(s7, S_output), clm_output_accessor);
+ s7_symbol_set_setter(s7, s7_make_symbol(s7, S_output), clm_output_accessor);
clm_reverb_accessor = s7_make_function(s7, "(set " S_reverb ")", g_clm_reverb_set, 2, 0, false, "called if " S_reverb " is set");
- s7_symbol_set_access(s7, s7_make_symbol(s7, S_reverb), clm_reverb_accessor);
+ s7_symbol_set_setter(s7, s7_make_symbol(s7, S_reverb), clm_reverb_accessor);
}
#endif
@@ -13755,11 +13725,6 @@ static void mus_xen_init(void)
init_choosers(s7);
#endif
-#if (!DISABLE_DEPRECATED)
- Xen_define_typed_dilambda(S_clm_default_frequency, g_clm_default_frequency_w, H_clm_default_frequency,
- S_set S_clm_default_frequency, g_set_clm_default_frequency_w, 0, 0, 1, 0, pl_d, pl_dr);
-#endif
-
/* -------- clm-print (see also snd-xen.c) -------- */
#if (!USE_SND)
diff --git a/clm2xen.h b/clm2xen.h
index 1e6d0cd..ac002e4 100644
--- a/clm2xen.h
+++ b/clm2xen.h
@@ -14,12 +14,8 @@ extern "C" {
#endif
MUS_EXPORT mus_long_t clm_default_table_size_c(void);
-#if (!DISABLE_DEPRECATED)
-MUS_EXPORT mus_float_t clm_default_frequency_c(void);
-#endif
MUS_EXPORT mus_any *mus_xen_gen(mus_xen *x);
-
MUS_EXPORT bool mus_is_xen(Xen obj);
MUS_EXPORT const char *mus_fft_window_xen_name(mus_fft_window_t i);
MUS_EXPORT Xen mus_xen_to_object(mus_xen *gn);
diff --git a/configure b/configure
index a5449ea..113f7e7 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for snd 17.7.
+# Generated by GNU Autoconf 2.69 for snd 17.8.
#
# Report bugs to <bil@ccrma.stanford.edu>.
#
@@ -580,8 +580,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='snd'
PACKAGE_TARNAME='ftp://ccrma-ftp.stanford.edu/pub/Lisp/snd-17.tar.gz'
-PACKAGE_VERSION='17.7'
-PACKAGE_STRING='snd 17.7'
+PACKAGE_VERSION='17.8'
+PACKAGE_STRING='snd 17.8'
PACKAGE_BUGREPORT='bil@ccrma.stanford.edu'
PACKAGE_URL=''
@@ -1321,7 +1321,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures snd 17.7 to adapt to many kinds of systems.
+\`configure' configures snd 17.8 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1392,7 +1392,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of snd 17.7:";;
+ short | recursive ) echo "Configuration of snd 17.8:";;
esac
cat <<\_ACEOF
@@ -1508,7 +1508,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-snd configure 17.7
+snd configure 17.8
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1969,7 +1969,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by snd $as_me 17.7, which was
+It was created by snd $as_me 17.8, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3316,7 +3316,7 @@ LOCAL_LANGUAGE="None"
GRAPHICS_TOOLKIT="None"
PACKAGE=Snd
-VERSION=17.7
+VERSION=17.8
#--------------------------------------------------------------------------------
# configuration options
@@ -6703,7 +6703,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by snd $as_me 17.7, which was
+This file was extended by snd $as_me 17.8, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -6765,7 +6765,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-snd config.status 17.7
+snd config.status 17.8
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/configure.ac b/configure.ac
index f746b4d..2b38547 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5,7 +5,7 @@
# gmp, mpfr, and mpc deliberately have none!
-AC_INIT(snd, 17.7, bil@ccrma.stanford.edu, ftp://ccrma-ftp.stanford.edu/pub/Lisp/snd-17.tar.gz)
+AC_INIT(snd, 17.8, bil@ccrma.stanford.edu, ftp://ccrma-ftp.stanford.edu/pub/Lisp/snd-17.tar.gz)
AC_CONFIG_SRCDIR(snd.c)
AC_CANONICAL_HOST # needed by case $host below
@@ -24,7 +24,7 @@ LOCAL_LANGUAGE="None"
GRAPHICS_TOOLKIT="None"
PACKAGE=Snd
-VERSION=17.7
+VERSION=17.8
#--------------------------------------------------------------------------------
# configuration options
diff --git a/dlocsig.scm b/dlocsig.scm
index 198d366..f225203 100644
--- a/dlocsig.scm
+++ b/dlocsig.scm
@@ -107,7 +107,7 @@
|#
(define x-norm
- (let ((documentation "(x-norm e xmax) changes 'e' x axis values so that they run to 'xmax'"))
+ (let ((+documentation+ "(x-norm e xmax) changes 'e' x axis values so that they run to 'xmax'"))
(lambda (e xmax)
(let x-norm-1 ((e e)
(scl (/ xmax (e (- (length e) 2))))
@@ -124,22 +124,22 @@
(define dlocsig-one-turn 360)
(define one-turn-is
- (let ((documentation "(one-turn-is unit) sets dlocsig's angle unit (degrees=360, the default or radians=2*pi)"))
+ (let ((+documentation+ "(one-turn-is unit) sets dlocsig's angle unit (degrees=360, the default or radians=2*pi)"))
(lambda (unit)
(set! dlocsig-one-turn unit))))
(define angles-in-degree
- (let ((documentation "(angles-in-degree) sets dlocsig's unit to degrees (the default)"))
+ (let ((+documentation+ "(angles-in-degree) sets dlocsig's unit to degrees (the default)"))
(lambda ()
(one-turn-is 360))))
(define angles-in-radians
- (let ((documentation "(angles-in-radians) sets dlocsig's unit to radians (default is degrees)"))
+ (let ((+documentation+ "(angles-in-radians) sets dlocsig's unit to radians (default is degrees)"))
(lambda ()
(one-turn-is (* 2 pi)))))
(define angles-in-turns
- (let ((documentation "(angles-in-turns) sets dlocsig's angle unit to turns"))
+ (let ((+documentation+ "(angles-in-turns) sets dlocsig's angle unit to turns"))
(lambda ()
(one-turn-is 1))))
@@ -147,12 +147,12 @@
(define dlocsig-speed-of-sound 344)
(define distances-in-meters
- (let ((documentation "(distances-in-meters) sets dlocsig's distances in meters (the default)"))
+ (let ((+documentation+ "(distances-in-meters) sets dlocsig's distances in meters (the default)"))
(lambda ()
(set! dlocsig-speed-of-sound 344))))
(define distances-in-feet
- (let ((documentation "(distances-in-feet) sets dlocsig's distances in feet (default is meters)"))
+ (let ((+documentation+ "(distances-in-feet) sets dlocsig's distances in feet (default is meters)"))
(lambda ()
(set! dlocsig-speed-of-sound 1128))))
@@ -193,17 +193,17 @@
;;; content should be output channel number, zero based
(define cis
- (let ((documentation "(cis a) returns e^(ia)"))
+ (let ((+documentation+ "(cis a) returns e^(ia)"))
(lambda (a)
(exp (* 0.0+1.0i a)))))
(define third
- (let ((documentation "(third lst) returns the 3rd element of 'lst'"))
+ (let ((+documentation+ "(third lst) returns the 3rd element of 'lst'"))
(lambda (a)
(and (>= (length a) 3) (a 2)))))
(define fourth
- (let ((documentation "(fourth lst) returns the 4th element of 'lst'"))
+ (let ((+documentation+ "(fourth lst) returns the 4th element of 'lst'"))
(lambda (a)
(and (>= (length a) 4) (a 3)))))
@@ -492,7 +492,7 @@
;;; Set a particular speaker configuration
(define set-speaker-configuration
- (let ((documentation "(set-speaker-configuration config (configs dlocsig-speaker-configs)) sets a dlocsig speaker configuration"))
+ (let ((+documentation+ "(set-speaker-configuration config (configs dlocsig-speaker-configs)) sets a dlocsig speaker configuration"))
(lambda* (config (configs dlocsig-speaker-configs))
(let ((lst ((if (< (speaker-config-dimension config) 3) car cadr) configs))
(num (speaker-config-number config)))
@@ -502,7 +502,7 @@
;;; Get the speaker configuration for a given number of output channels
(define get-speaker-configuration
- (let ((documentation "(get-speaker-configuration channels (3d dlocsig-3d) (configs dlocsig-speaker-configs)) returns a dlocsig speaker configuration"))
+ (let ((+documentation+ "(get-speaker-configuration channels (3d dlocsig-3d) (configs dlocsig-speaker-configs)) returns a dlocsig speaker configuration"))
(lambda* (channels (3d dlocsig-3d) (configs dlocsig-speaker-configs))
(let ((config (((if 3d cadr car) configs) channels)))
(if (null? config)
@@ -653,7 +653,7 @@
;;; Return the best possible set of coordinates
(define list??
- (let ((documentation "list?? returns a if it is a list"))
+ (let ((+documentation+ "list?? returns a if it is a list"))
(lambda (a)
(and (pair? a) a))))
@@ -831,7 +831,7 @@
;;; Parse a set of 2d or 3d points into the separate coordinates
(define parse-cartesian-coordinates
- (let ((documentation "(parse-cartesian-coordinates points 3d) parses a set of 2d or 3d points into the separate coordinates"))
+ (let ((+documentation+ "(parse-cartesian-coordinates points 3d) parses a set of 2d or 3d points into the separate coordinates"))
(lambda (points 3d)
(if (pair? (car points))
;; decode a list of lists into x:y:z:v components
@@ -886,7 +886,7 @@
;;; Parse a set of 2d or 3d polar points into the separate coordinates
(define parse-polar-coordinates
- (let ((documentation "(parse-polar-coordinates points 3d) parses a polar path"))
+ (let ((+documentation+ "(parse-polar-coordinates points 3d) parses a polar path"))
(lambda (points 3d)
(let ((x ())
(y ()))
@@ -982,7 +982,7 @@
;;; Pythagoras
(define distance
- (let ((documentation "(distance x y z) returns the euclidean distance of (x y z) from the origin"))
+ (let ((+documentation+ "(distance x y z) returns the euclidean distance of (x y z) from the origin"))
(lambda (x y z)
(sqrt (+ (* x x) (* y y) (* z z))))))
@@ -1887,7 +1887,7 @@
;;; Rotate a path
(define rotate-path
- (let ((documentation "rotate-path is a dlocsig function that rotates a dlocsig path"))
+ (let ((+documentation+ "rotate-path is a dlocsig function that rotates a dlocsig path"))
(lambda* (path rotation rotation-center (rotation-axis '(0.0 0.0 1.0)))
(transform-path path
:rotation rotation
@@ -1918,7 +1918,7 @@
;;; Change the times of the rendered envelope so that the velocity is constant
(define constant-velocity
- (let ((documentation "constant-velocity is a dlocsig function that changes the times of the rendered envelope so that the velocity is constant"))
+ (let ((+documentation+ "constant-velocity is a dlocsig function that changes the times of the rendered envelope so that the velocity is constant"))
(lambda (path)
(if (not (path-rx path))
(render-path path))
diff --git a/draw.scm b/draw.scm
index 5955f76..d5d82c1 100644
--- a/draw.scm
+++ b/draw.scm
@@ -113,7 +113,7 @@
(define display-colored-samples
- (let ((documentation "(display-colored-samples color beg dur snd chn) displays samples from beg for dur in color
+ (let ((+documentation+ "(display-colored-samples color beg dur snd chn) displays samples from beg for dur in color
whenever they're in the current view."))
(lambda* (color beg dur snd chn)
(let ((left (left-sample snd chn))
@@ -157,7 +157,7 @@ whenever they're in the current view."))
(define color-samples
- (let ((documentation "(color-samples color beg dur snd chn) causes samples from beg to beg+dur to be displayed in color"))
+ (let ((+documentation+ "(color-samples color beg dur snd chn) causes samples from beg to beg+dur to be displayed in color"))
(lambda* (color ubeg udur usnd uchn)
(if (not (member display-samples-in-color (hook-functions after-graph-hook)))
(hook-push after-graph-hook display-samples-in-color))
@@ -171,7 +171,7 @@ whenever they're in the current view."))
(define uncolor-samples
- (let ((documentation "(uncolor-samples snd chn) cancels sample coloring in the given channel"))
+ (let ((+documentation+ "(uncolor-samples snd chn) cancels sample coloring in the given channel"))
(lambda* (usnd uchn)
(let* ((snd (or usnd (selected-sound) (car (sounds))))
(chn (or uchn (selected-channel snd) 0)))
@@ -180,7 +180,7 @@ whenever they're in the current view."))
(define display-previous-edits
- (let ((documentation "(display-previous-edits snd chn) displays all edits of the current sound, with older versions gradually fading away"))
+ (let ((+documentation+ "(display-previous-edits snd chn) displays all edits of the current sound, with older versions gradually fading away"))
(lambda (snd chn)
(let ((edits (edit-position snd chn)))
(when (> edits 0)
@@ -203,7 +203,7 @@ whenever they're in the current view."))
(define overlay-sounds
- (let ((documentation "(overlay-sounds . args) overlays onto its first argument all subsequent arguments: (overlay-sounds 1 0 3)"))
+ (let ((+documentation+ "(overlay-sounds . args) overlays onto its first argument all subsequent arguments: (overlay-sounds 1 0 3)"))
(lambda args
(let ((base (if (integer? (car args))
(integer->sound (car args))
@@ -224,7 +224,7 @@ whenever they're in the current view."))
(define samples-via-colormap
- (let ((documentation "(samples-via-colormap snd chn) displays time domain graph using current colormap (just an example of colormap-ref)"))
+ (let ((+documentation+ "(samples-via-colormap snd chn) displays time domain graph using current colormap (just an example of colormap-ref)"))
(lambda (snd chn)
(let ((data (make-graph-data snd chn))
(cr (make-cairo (car (channel-widgets snd chn)))))
diff --git a/dsp.scm b/dsp.scm
index 94d0385..d556d84 100644
--- a/dsp.scm
+++ b/dsp.scm
@@ -14,7 +14,7 @@
(define binomial
- (let ((documentation "(binomial n k) computes the binomial coefficient C(N,K)"))
+ (let ((+documentation+ "(binomial n k) computes the binomial coefficient C(N,K)"))
(lambda (n k)
(let ((mn (min k (- n k))))
(if (< mn 0)
@@ -28,14 +28,14 @@
(set! cnk (/ (* cnk (+ mx i)) i))))))))))
(define log10
- (let ((documentation "(log10 a) returns the log base 10 of 'a'"))
+ (let ((+documentation+ "(log10 a) returns the log base 10 of 'a'"))
(lambda (a)
(log a 10))))
;;; src-duration (see src-channel in extsnd.html)
(define src-duration
- (let ((documentation "(src-duration envelope) returns the new duration of a sound after using 'envelope' for time-varying sampling-rate conversion"))
+ (let ((+documentation+ "(src-duration envelope) returns the new duration of a sound after using 'envelope' for time-varying sampling-rate conversion"))
(lambda (e)
(let ((len (- (length e) 2)))
(do ((all-x (- (e len) (e 0))) ; last x - first x
@@ -71,7 +71,7 @@
;;; see clm.c for C version (using either GSL's or GCC's complex trig functions)
(define dolph
- (let ((documentation "(dolph n gamma) produces a Dolph-Chebyshev FFT data window of 'n' points using 'gamma' as the window parameter."))
+ (let ((+documentation+ "(dolph n gamma) produces a Dolph-Chebyshev FFT data window of 'n' points using 'gamma' as the window parameter."))
(lambda (N gamma)
(let ((rl (make-float-vector N))
(im (make-float-vector N)))
@@ -100,7 +100,7 @@
;;; it does the DFT by hand, and is independent of anything from Snd (fft, float-vectors etc)
(define dolph-1
- (let ((documentation "(dolph-1 n gamma) produces a Dolph-Chebyshev FFT data window of 'n' points using 'gamma' as the window parameter."))
+ (let ((+documentation+ "(dolph-1 n gamma) produces a Dolph-Chebyshev FFT data window of 'n' points using 'gamma' as the window parameter."))
(lambda (N gamma)
(let ((vals (make-vector N)))
(let ((alpha (cosh (/ (acosh (expt 10.0 gamma)) N))))
@@ -133,7 +133,7 @@
;;; -------- move sound down by n (a power of 2)
(define down-oct
- (let ((documentation "(down-n n) moves a sound down by n-1 octaves"))
+ (let ((+documentation+ "(down-n n) moves a sound down by n-1 octaves"))
(lambda* (n snd chn)
;; I think this is "stretch" in DSP jargon -- to interpolate in the time domain we're squeezing the frequency domain
;; the power-of-2 limitation is based on the underlying fft function's insistence on power-of-2 data sizes
@@ -161,7 +161,7 @@
(float-vector->channel rl2 0 (* n len) snd chn #f (format #f "down-oct ~A" n))))))))
(define stretch-sound-via-dft
- (let ((documentation "(stretch-sound-via-dft factor snd chn) makes the given channel longer ('factor' should be > 1.0) by \
+ (let ((+documentation+ "(stretch-sound-via-dft factor snd chn) makes the given channel longer ('factor' should be > 1.0) by \
squeezing in the frequency domain, then using the inverse DFT to get the time domain result."))
(lambda* (factor snd chn)
;; this is very slow! factor>1.0
@@ -264,7 +264,7 @@ squeezing in the frequency domain, then using the inverse DFT to get the time do
;;; -------- "frequency division" -- an effect from sed_sed@my-dejanews.com
(define freqdiv
- (let ((documentation "(freqdiv n snd chn) repeats each nth sample n times (clobbering the intermediate samples): (freqdiv 8)"))
+ (let ((+documentation+ "(freqdiv n snd chn) repeats each nth sample n times (clobbering the intermediate samples): (freqdiv 8)"))
(lambda* (n snd chn)
(let* ((data (channel->float-vector 0 #f snd chn))
(len (length data)))
@@ -285,7 +285,7 @@ squeezing in the frequency domain, then using the inverse DFT to get the time do
;;; (map-channel (lambda (val) (if (< (abs val) .1) val (if (>= val 0.0) 0.25 -0.25))))
(define adsat
- (let ((documentation "(adsat size beg dur snd chn) is an 'adaptive saturation' sound effect"))
+ (let ((+documentation+ "(adsat size beg dur snd chn) is an 'adaptive saturation' sound effect"))
(lambda* (size (beg 0) dur snd chn)
(let* ((len (if (number? dur) dur (- (framples snd chn) beg)))
(data (make-float-vector (* size (ceiling (/ len size))))))
@@ -312,7 +312,7 @@ squeezing in the frequency domain, then using the inverse DFT to get the time do
#|
(define spike
- (let ((documentation "(spike snd chn) multiplies successive samples together to make a sound more spikey"))
+ (let ((+documentation+ "(spike snd chn) multiplies successive samples together to make a sound more spikey"))
(lambda* (snd chn)
(let* ((len (framples snd chn))
(data (make-float-vector len))
@@ -330,7 +330,7 @@ squeezing in the frequency domain, then using the inverse DFT to get the time do
(float-vector->channel (float-vector-scale! data amp1) 0 len snd chn current-edit-position "spike"))))))
|#
(define spike
- (let ((documentation "(spike snd chn) multiplies successive samples together to make a sound more spikey"))
+ (let ((+documentation+ "(spike snd chn) multiplies successive samples together to make a sound more spikey"))
(lambda* (snd chn)
(let ((len (framples snd chn)))
(let ((data (channel->float-vector 0 (+ len 2) snd chn))
@@ -350,7 +350,7 @@ squeezing in the frequency domain, then using the inverse DFT to get the time do
;;; -------- easily-fooled autocorrelation-based pitch tracker
(define spot-freq
- (let ((documentation "(spot-freq samp snd chn) tries to determine the current pitch: (spot-freq (left-sample))"))
+ (let ((+documentation+ "(spot-freq samp snd chn) tries to determine the current pitch: (spot-freq (left-sample))"))
(lambda* (s0 snd chn)
(let* ((fftlen (floor (expt 2 (ceiling (log (/ (srate snd) 20.0) 2)))))
(data (autocorrelate (channel->float-vector s0 fftlen snd chn)))
@@ -381,7 +381,7 @@ squeezing in the frequency domain, then using the inverse DFT to get the time do
(define chorus-size 5)
(define chorus
- (let ((documentation "(chorus) tries to produce the chorus sound effect")
+ (let ((+documentation+ "(chorus) tries to produce the chorus sound effect")
(flanger (lambda (dly inval)
(+ inval
(delay (car dly)
@@ -415,7 +415,7 @@ squeezing in the frequency domain, then using the inverse DFT to get the time do
(define chordalize-chord '(1 3/4 5/4))
(define chordalize
- (let ((documentation "(chordalize) uses harmonically-related comb-filters to bring out a chord in a sound"))
+ (let ((+documentation+ "(chordalize) uses harmonically-related comb-filters to bring out a chord in a sound"))
(lambda ()
;; chord is a list of members of chord such as '(1 5/4 3/2)
(let ((combs (make-comb-bank (apply vector (map (lambda (interval)
@@ -430,7 +430,7 @@ squeezing in the frequency domain, then using the inverse DFT to get the time do
;;; fft games (from the "phazor" package of Scott McNab)
(define zero-phase
- (let ((documentation "(zero-phase snd chn) calls fft, sets all phases to 0, and un-ffts"))
+ (let ((+documentation+ "(zero-phase snd chn) calls fft, sets all phases to 0, and un-ffts"))
(lambda* (snd chn)
(let* ((len (framples snd chn))
(fftlen (floor (expt 2 (ceiling (log len 2)))))
@@ -449,7 +449,7 @@ squeezing in the frequency domain, then using the inverse DFT to get the time do
(float-vector->channel (float-vector-scale! rl (/ old-pk pk)) 0 len snd chn #f "zero-phase")))))))))
(define rotate-phase
- (let ((documentation "(rotate-phase func snd chn) calls fft, applies func to each phase, then un-ffts"))
+ (let ((+documentation+ "(rotate-phase func snd chn) calls fft, applies func to each phase, then un-ffts"))
(lambda* (func snd chn)
(let* ((len (framples snd chn))
(fftlen (floor (expt 2 (ceiling (log len 2)))))
@@ -495,7 +495,7 @@ squeezing in the frequency domain, then using the inverse DFT to get the time do
;;; -------- brighten-slightly
(define brighten-slightly
- (let ((documentation "(brighten-slightly amount snd chn) is a form of contrast-enhancement ('amount' between ca .1 and 1)"))
+ (let ((+documentation+ "(brighten-slightly amount snd chn) is a form of contrast-enhancement ('amount' between ca .1 and 1)"))
(lambda* (amount snd chn)
(let ((len (framples snd chn)))
(let ((mx (maxamp))
@@ -509,7 +509,7 @@ squeezing in the frequency domain, then using the inverse DFT to get the time do
(float-vector-scale! data (/ mx (float-vector-peak data))) 0 len snd chn current-edit-position (format #f "brighten-slightly ~A" amount)))))))
(define brighten-slightly-1
- (let ((documentation "(brighten-slightly-1 coeffs) is a form of contrast-enhancement: (brighten-slightly-1 '(1 .5 3 1))"))
+ (let ((+documentation+ "(brighten-slightly-1 coeffs) is a form of contrast-enhancement: (brighten-slightly-1 '(1 .5 3 1))"))
(lambda (coeffs)
(let ((pcoeffs (partials->polynomial coeffs))
(mx (maxamp))
@@ -529,7 +529,7 @@ squeezing in the frequency domain, then using the inverse DFT to get the time do
;;; Snd's (very simple) spectrum->coefficients procedure is:
(define spectrum->coeffs
- (let ((documentation "(spectrum->coeffs order spectr) returns FIR filter coefficients given the filter order and desired spectral envelope (a float-vector)"))
+ (let ((+documentation+ "(spectrum->coeffs order spectr) returns FIR filter coefficients given the filter order and desired spectral envelope (a float-vector)"))
(lambda (order spectr)
(let ((coeffs (make-float-vector order))
(m (floor (/ (+ order 1) 2)))
@@ -554,7 +554,7 @@ squeezing in the frequency domain, then using the inverse DFT to get the time do
(define fltit-1
- (let ((documentation "(fltit-1 order spectrum) creates an FIR filter from spectrum and order and returns a closure that calls it: \
+ (let ((+documentation+ "(fltit-1 order spectrum) creates an FIR filter from spectrum and order and returns a closure that calls it: \
(map-channel (fltit-1 10 (float-vector 0 1.0 0 0 0 0 0 0 1.0 0)))"))
(lambda (order spectr)
(let ((flt (make-fir-filter order (spectrum->coeffs order spectr))))
@@ -572,7 +572,7 @@ squeezing in the frequency domain, then using the inverse DFT to get the time do
;;; -------- Hilbert transform
(define make-hilbert-transform
- (let ((documentation "(make-hilbert-transform (len 30)) makes a Hilbert transform filter"))
+ (let ((+documentation+ "(make-hilbert-transform (len 30)) makes a Hilbert transform filter"))
(lambda* ((len 30))
(let ((arrlen (+ 1 (* 2 len))))
(do ((arr (make-float-vector arrlen))
@@ -643,7 +643,7 @@ squeezing in the frequency domain, then using the inverse DFT to get the time do
;;; -------- highpass filter
(define make-highpass
- (let ((documentation "(make-highpass fc (len 30)) makes an FIR highpass filter"))
+ (let ((+documentation+ "(make-highpass fc (len 30)) makes an FIR highpass filter"))
(lambda* (fc (len 30))
(let ((arrlen (+ 1 (* 2 len))))
(do ((arr (make-float-vector arrlen))
@@ -672,7 +672,7 @@ squeezing in the frequency domain, then using the inverse DFT to get the time do
;;; -------- lowpass filter
(define make-lowpass
- (let ((documentation "(make-lowpass fc (len 30)) makes an FIR lowpass filter"))
+ (let ((+documentation+ "(make-lowpass fc (len 30)) makes an FIR lowpass filter"))
(lambda* (fc (len 30))
(let ((arrlen (+ 1 (* 2 len))))
(do ((arr (make-float-vector arrlen))
@@ -699,7 +699,7 @@ squeezing in the frequency domain, then using the inverse DFT to get the time do
;;; -------- bandpass filter
(define make-bandpass
- (let ((documentation "(make-bandpass flo fhi (len 30)) makes an FIR bandpass filter"))
+ (let ((+documentation+ "(make-bandpass flo fhi (len 30)) makes an FIR bandpass filter"))
(lambda* (flo fhi (len 30))
(let ((arrlen (+ 1 (* 2 len))))
(do ((arr (make-float-vector arrlen))
@@ -741,7 +741,7 @@ squeezing in the frequency domain, then using the inverse DFT to get the time do
;;; -------- bandstop filter
(define make-bandstop
- (let ((documentation "(make-bandstop flo fhi (len 30)) makes an FIR bandstop (notch) filter"))
+ (let ((+documentation+ "(make-bandstop flo fhi (len 30)) makes an FIR bandstop (notch) filter"))
(lambda* (flo fhi (len 30))
(let ((arrlen (+ 1 (* 2 len))))
(do ((arr (make-float-vector arrlen))
@@ -768,7 +768,7 @@ squeezing in the frequency domain, then using the inverse DFT to get the time do
;;; -------- differentiator
(define make-differentiator
- (let ((documentation "(make-differentiator (len 30)) makes an FIR differentiator (highpass) filter"))
+ (let ((+documentation+ "(make-differentiator (len 30)) makes an FIR differentiator (highpass) filter"))
(lambda* ((len 30))
(let ((arrlen (+ 1 (* 2 len))))
(do ((arr (make-float-vector arrlen))
@@ -806,7 +806,7 @@ squeezing in the frequency domain, then using the inverse DFT to get the time do
(define butter filter)
(define make-butter-high-pass
- (let ((documentation "(make-butter-high-pass freq) makes a Butterworth filter with high pass cutoff at 'freq'"))
+ (let ((+documentation+ "(make-butter-high-pass freq) makes a Butterworth filter with high pass cutoff at 'freq'"))
(lambda (fq)
;; this is the same as iir-low-pass-2 below with 'din' set to (sqrt 2.0) -- similarly with the others
(let* ((r (tan (/ (* pi fq) (srate))))
@@ -821,7 +821,7 @@ squeezing in the frequency domain, then using the inverse DFT to get the time do
(* (- (+ 1.0 r2) (* r (sqrt 2.0))) c1)))))))
(define make-butter-low-pass
- (let ((documentation "(make-butter-low-pass freq) makes a Butterworth filter with low pass cutoff at 'freq'. The result \
+ (let ((+documentation+ "(make-butter-low-pass freq) makes a Butterworth filter with low pass cutoff at 'freq'. The result \
can be used directly: (filter-sound (make-butter-low-pass 500.0)), or via the 'butter' generator"))
(lambda (fq)
(let* ((r (/ 1.0 (tan (/ (* pi fq) (srate)))))
@@ -834,7 +834,7 @@ can be used directly: (filter-sound (make-butter-low-pass 500.0)), or via the 'b
(* (- (+ 1.0 r2) (* r (sqrt 2.0))) c1)))))))
(define make-butter-band-pass
- (let ((documentation "(make-butter-band-pass freq band) makes a bandpass Butterworth filter with low edge at 'freq' and width 'band'"))
+ (let ((+documentation+ "(make-butter-band-pass freq band) makes a bandpass Butterworth filter with low edge at 'freq' and width 'band'"))
(lambda (fq bw)
(let ((c (/ 1.0 (tan (/ (* pi bw) (srate))))))
(let ((d (* 2.0 (cos (/ (* 2.0 pi fq) (srate)))))
@@ -846,7 +846,7 @@ can be used directly: (filter-sound (make-butter-low-pass 500.0)), or via the 'b
(* (- c 1.0) c1))))))))
(define make-butter-band-reject
- (let ((documentation "(make-butter-band-reject freq band) makes a band-reject Butterworth filter with low edge at 'freq' and width 'band'"))
+ (let ((+documentation+ "(make-butter-band-reject freq band) makes a band-reject Butterworth filter with low edge at 'freq' and width 'band'"))
(lambda (fq bw)
(let* ((c (tan (/ (* pi bw) (srate))))
(c1 (/ 1.0 (+ 1.0 c)))
@@ -867,7 +867,7 @@ can be used directly: (filter-sound (make-butter-low-pass 500.0)), or via the 'b
;;; etc
(define make-biquad
- (let ((documentation "(make-biquad a0 a1 a2 b1 b2) returns a biquad filter (use with the CLM filter gen)"))
+ (let ((+documentation+ "(make-biquad a0 a1 a2 b1 b2) returns a biquad filter (use with the CLM filter gen)"))
(lambda (a0 a1 a2 b1 b2)
(make-filter 3
(float-vector a0 a1 a2)
@@ -959,7 +959,7 @@ can be used directly: (filter-sound (make-butter-low-pass 500.0)), or via the 'b
(define cascade->canonical
- (let ((documentation "(cascade->canonical A) converts a list of cascade coeffs (float-vectors with 3 entries) to canonical form")
+ (let ((+documentation+ "(cascade->canonical A) converts a list of cascade coeffs (float-vectors with 3 entries) to canonical form")
(conv (lambda (M h L x y) ; x * h -> y
(do ((n 0 (+ n 1)))
((= n (+ L M)))
@@ -984,7 +984,7 @@ can be used directly: (filter-sound (make-butter-low-pass 500.0)), or via the 'b
(define make-butter-lp
- (let ((documentation "(make-butter-lp M fc) returns a butterworth low-pass filter; its order is 'M' * 2, 'fc' is the cutoff frequency in Hz"))
+ (let ((+documentation+ "(make-butter-lp M fc) returns a butterworth low-pass filter; its order is 'M' * 2, 'fc' is the cutoff frequency in Hz"))
(lambda (M fc)
(let ((theta (/ (* 2 pi fc) *clm-srate*)))
(do ((xcoeffs ())
@@ -1004,7 +1004,7 @@ can be used directly: (filter-sound (make-butter-low-pass 500.0)), or via the 'b
(set! ycoeffs (cons (float-vector 1.0 (* -2.0 gamma) (* 2.0 beta)) ycoeffs))))))))
(define make-butter-hp
- (let ((documentation "(make-butter-hp M fc) returns a butterworth high-pass filter; its order is 'M' * 2, 'fc' is the cutoff frequency in Hz"))
+ (let ((+documentation+ "(make-butter-hp M fc) returns a butterworth high-pass filter; its order is 'M' * 2, 'fc' is the cutoff frequency in Hz"))
(lambda (M fc)
(let ((theta (/ (* 2 pi fc) *clm-srate*)))
(do ((xcoeffs ())
@@ -1024,7 +1024,7 @@ can be used directly: (filter-sound (make-butter-low-pass 500.0)), or via the 'b
(set! ycoeffs (cons (float-vector 1.0 (* -2.0 gamma) (* 2.0 beta)) ycoeffs))))))))
(define make-butter-bp
- (let ((documentation "(make-butter-bp M f1 f2) returns a butterworth band-pass filter; its order is 'M' * 2, 'f1' and 'f2' are the band edge frequencies in Hz"))
+ (let ((+documentation+ "(make-butter-bp M f1 f2) returns a butterworth band-pass filter; its order is 'M' * 2, 'f1' and 'f2' are the band edge frequencies in Hz"))
(lambda (M f1 f2)
(let* ((f0 (sqrt (* f1 f2)))
(theta0 (/ (* 2 pi f0) *clm-srate*))
@@ -1062,7 +1062,7 @@ can be used directly: (filter-sound (make-butter-low-pass 500.0)), or via the 'b
(set! j 1))))))))
(define make-butter-bs
- (let ((documentation "(make-butter-bs M f1 f2) returns a butterworth band-stop filter; its order is 'M' * 2, 'f1' and 'f2' are the band edge frequencies in Hz"))
+ (let ((+documentation+ "(make-butter-bs M f1 f2) returns a butterworth band-stop filter; its order is 'M' * 2, 'f1' and 'f2' are the band edge frequencies in Hz"))
(lambda (M f1 f2)
(let* ((f0 (sqrt (* f1 f2)))
(theta0 (/ (* 2 pi f0) *clm-srate*))
@@ -1114,7 +1114,7 @@ can be used directly: (filter-sound (make-butter-low-pass 500.0)), or via the 'b
(reverse (cons 1.0 (cons 1.0 freq-response)))))
(define notch-channel
- (let ((documentation "(notch-channel freqs filter-order beg dur snd chn edpos (truncate #t) (notch-width 2)) -> notch filter removing freqs"))
+ (let ((+documentation+ "(notch-channel freqs filter-order beg dur snd chn edpos (truncate #t) (notch-width 2)) -> notch filter removing freqs"))
(lambda* (freqs filter-order beg dur snd chn edpos (truncate #t) (notch-width 2))
(filter-channel (make-notch-frequency-response (* 1.0 (srate snd)) freqs notch-width)
(or filter-order (min (framples snd chn) (expt 2 (floor (log (/ (srate snd) notch-width) 2)))))
@@ -1122,7 +1122,7 @@ can be used directly: (filter-sound (make-butter-low-pass 500.0)), or via the 'b
(format #f "notch-channel '~A ~A ~A ~A" freqs filter-order beg dur)))))
(define notch-sound
- (let ((documentation "(notch-sound freqs filter-order snd chn (notch-width 2)) -> notch filter removing freqs"))
+ (let ((+documentation+ "(notch-sound freqs filter-order snd chn (notch-width 2)) -> notch filter removing freqs"))
(lambda* (freqs filter-order snd chn (notch-width 2))
(filter-sound (make-notch-frequency-response (* 1.0 (srate snd)) freqs notch-width)
(or filter-order (min (framples snd chn) (expt 2 (floor (log (/ (srate snd) notch-width) 2)))))
@@ -1130,7 +1130,7 @@ can be used directly: (filter-sound (make-butter-low-pass 500.0)), or via the 'b
(format #f "notch-channel '~A ~A 0 #f" freqs filter-order)))))
(define notch-selection
- (let ((documentation "(notch-selection freqs filter-order (notch-width 2)) -> notch filter removing freqs"))
+ (let ((+documentation+ "(notch-selection freqs filter-order (notch-width 2)) -> notch filter removing freqs"))
(lambda* (freqs filter-order (notch-width 2))
(if (selection?)
(filter-selection (make-notch-frequency-response (* 1.0 (selection-srate)) freqs notch-width)
@@ -1144,7 +1144,7 @@ can be used directly: (filter-sound (make-butter-low-pass 500.0)), or via the 'b
;;; translated from the fxt package of Joerg Arndt
(define fractional-fourier-transform
- (let ((documentation "(fractional-fourier-transform real imaginary n angle) performs a fractional Fourier transform on data; if angle=1.0, you get a normal Fourier transform"))
+ (let ((+documentation+ "(fractional-fourier-transform real imaginary n angle) performs a fractional Fourier transform on data; if angle=1.0, you get a normal Fourier transform"))
(lambda (fr fi n v)
;; this is the slow (dft) form
;; v=1 -> normal fourier transform
@@ -1171,7 +1171,7 @@ can be used directly: (filter-sound (make-butter-low-pass 500.0)), or via the 'b
(set! (hi w) si)))))
(define z-transform
- (let ((documentation "(z-transform data n z) performs a Z transform on data; if z=e^2*pi*j/n you get a Fourier transform; complex results in returned vector"))
+ (let ((+documentation+ "(z-transform data n z) performs a Z transform on data; if z=e^2*pi*j/n you get a Fourier transform; complex results in returned vector"))
(lambda (f n z)
;; using vector to allow complex sums (z=e^2*pi*i/n -> fourier transform)
;; (z-transform data n (exp (complex 0.0 (* (/ 2.0 n) pi))))
@@ -1194,7 +1194,7 @@ can be used directly: (filter-sound (make-butter-low-pass 500.0)), or via the 'b
;;; -------- slow Hartley transform
(define dht
- (let ((documentation "(dht data) returns the Hartley transform of 'data'."))
+ (let ((+documentation+ "(dht data) returns the Hartley transform of 'data'."))
(lambda (data)
;; taken from Perry Cook's SignalProcessor.m (the slow version of the Hartley transform)
(let ((len (length data)) )
@@ -1210,7 +1210,7 @@ can be used directly: (filter-sound (make-butter-low-pass 500.0)), or via the 'b
(sin (* i j w))))))))))))
(define find-sine
- (let ((documentation "(find-sine freq beg dur snd) returns the amplitude and initial-phase (for sin) at freq"))
+ (let ((+documentation+ "(find-sine freq beg dur snd) returns the amplitude and initial-phase (for sin) at freq"))
(lambda* (freq beg dur snd)
(let ((incr (/ (* freq 2 pi) (srate snd)))
(sw 0.0)
@@ -1230,7 +1230,7 @@ can be used directly: (filter-sound (make-butter-low-pass 500.0)), or via the 'b
;;; it returns the same result as find-sine above if you take (* 2 (/ (goertzel...) dur)) -- see snd-test.scm examples
(define goertzel
- (let ((documentation "(goertzel freq beg dur snd) returns the amplitude of the 'freq' spectral component"))
+ (let ((+documentation+ "(goertzel freq beg dur snd) returns the amplitude of the 'freq' spectral component"))
(lambda* (freq (beg 0) dur snd)
(let* ((rfreq (/ (* 2.0 pi freq) (srate snd)))
(cs (* 2.0 (cos rfreq))))
@@ -1260,7 +1260,7 @@ can be used directly: (filter-sound (make-butter-low-pass 500.0)), or via the 'b
(define make-spencer-filter
- (let ((documentation "(make-spencer-filter) is a version of make-fir-filter; it returns one of the standard smoothing filters from \
+ (let ((+documentation+ "(make-spencer-filter) is a version of make-fir-filter; it returns one of the standard smoothing filters from \
the era when computers were human beings"))
(lambda ()
(make-fir-filter 15 (apply float-vector (map (lambda (n) (/ n 320.0)) '(-3 -6 -5 3 21 46 67 74 67 46 21 3 -5 -6 -3)))))))
@@ -1348,7 +1348,7 @@ the era when computers were human beings"))
;;; these are from "Mathematics of the DFT", W3K Pubs
(define channel-mean ; <f, 1> / n
- (let ((documentation "(channel-mean snd chn) returns the average of the samples in the given channel: <f,1>/n"))
+ (let ((+documentation+ "(channel-mean snd chn) returns the average of the samples in the given channel: <f,1>/n"))
(lambda* (snd chn)
(let ((N (framples snd chn))
(reader (make-sampler 0 snd chn))
@@ -1359,7 +1359,7 @@ the era when computers were human beings"))
(/ (one-pole incr 0.0) N)))))
(define channel-total-energy ; <f, f>
- (let ((documentation "(channel-total-energy snd chn) returns the sum of the squares of all the samples in the given channel: <f,f>"))
+ (let ((+documentation+ "(channel-total-energy snd chn) returns the sum of the squares of all the samples in the given channel: <f,f>"))
(lambda* (snd chn)
(let ((data (samples 0 (framples snd chn) snd chn)))
(dot-product data data)))))
@@ -1376,17 +1376,17 @@ the era when computers were human beings"))
|#
(define channel-average-power ; <f, f> / n
- (let ((documentation "(channel-average-power snd chn) returns the average power in the given channel: <f,f>/n"))
+ (let ((+documentation+ "(channel-average-power snd chn) returns the average power in the given channel: <f,f>/n"))
(lambda* (snd chn)
(/ (channel-total-energy snd chn) (framples snd chn)))))
(define channel-rms ; sqrt(<f, f> / n)
- (let ((documentation "(channel-rms snd chn) returns the RMS value of the samples in the given channel: sqrt(<f,f>/n)"))
+ (let ((+documentation+ "(channel-rms snd chn) returns the RMS value of the samples in the given channel: sqrt(<f,f>/n)"))
(lambda* (snd chn)
(sqrt (channel-average-power snd chn)))))
(define channel-variance ; "sample-variance" might be better, <f, f> - (<f, 1> / n) ^ 2 with quibbles
- (let ((documentation "(channel-variance snd chn) returns the sample variance in the given channel: <f,f>-((<f,1>/ n)^2"))
+ (let ((+documentation+ "(channel-variance snd chn) returns the sample variance in the given channel: <f,f>-((<f,1>/ n)^2"))
(lambda* (snd chn)
(let ((mu (let ((N (framples snd chn)))
(* (/ N (- N 1)) (channel-mean snd chn))))) ; avoid bias sez JOS
@@ -1394,12 +1394,12 @@ the era when computers were human beings"))
(* mu mu))))))
(define channel-norm ; sqrt(<f, f>)
- (let ((documentation "(channel-norm snd chn) returns the norm of the samples in the given channel: sqrt(<f,f>)"))
+ (let ((+documentation+ "(channel-norm snd chn) returns the norm of the samples in the given channel: sqrt(<f,f>)"))
(lambda* (snd chn)
(sqrt (channel-total-energy snd chn)))))
(define channel-lp
- (let ((documentation "(channel-lp p snd chn) returns the Lp norm of the samples in the given channel"))
+ (let ((+documentation+ "(channel-lp p snd chn) returns the Lp norm of the samples in the given channel"))
(lambda* (p snd chn)
(let ((incr (make-one-pole 1.0 -1.0))
(N (framples snd chn))
@@ -1422,7 +1422,7 @@ the era when computers were human beings"))
|#
(define channel2-inner-product ; <f, g>
- (let ((documentation "(channel2-inner-product s1 c1 s2 c2) returns the inner-product of the two channels: <f,g>"))
+ (let ((+documentation+ "(channel2-inner-product s1 c1 s2 c2) returns the inner-product of the two channels: <f,g>"))
(lambda (s1 c1 s2 c2)
(dot-product (samples 0 (framples s1 c1) s1 c1) (samples 0 (framples s1 c1) s2 c2)))))
#|
@@ -1437,7 +1437,7 @@ the era when computers were human beings"))
|#
(define channel2-angle ; acos(<f, g> / (sqrt(<f, f>) * sqrt(<g, g>)))
- (let ((documentation "(channel2-angle s1 c1 s2 c2) treats the two channels as vectors, returning the 'angle' between them: acos(<f,g>/(sqrt(<f,f>)*sqrt(<g,g>)))"))
+ (let ((+documentation+ "(channel2-angle s1 c1 s2 c2) treats the two channels as vectors, returning the 'angle' between them: acos(<f,g>/(sqrt(<f,f>)*sqrt(<g,g>)))"))
(lambda (s1 c1 s2 c2)
(let ((inprod (channel2-inner-product s1 c1 s2 c2))
(norm1 (channel-norm s1 c1))
@@ -1445,12 +1445,12 @@ the era when computers were human beings"))
(acos (/ inprod (* norm1 norm2)))))))
(define channel2-orthogonal? ; <f, g> == 0
- (let ((documentation "(channel2-orthogonal? s1 c1 s2 c2) returns #t if the two channels' inner-product is 0: <f,g>==0"))
+ (let ((+documentation+ "(channel2-orthogonal? s1 c1 s2 c2) returns #t if the two channels' inner-product is 0: <f,g>==0"))
(lambda (s1 c1 s2 c2)
(= (channel2-inner-product s1 c1 s2 c2) 0.0))))
(define channel2-coefficient-of-projection ; s1,c1 = x, s2,c2 = y, <f, g> / <f, f>
- (let ((documentation "(channel2-coefficient-of-projection s1 c1 s2 c2) returns <f,g>/<f,f>"))
+ (let ((+documentation+ "(channel2-coefficient-of-projection s1 c1 s2 c2) returns <f,g>/<f,f>"))
(lambda (s1 c1 s2 c2)
(/ (channel2-inner-product s1 c1 s2 c2)
(channel-total-energy s1 c1)))))
@@ -1459,7 +1459,7 @@ the era when computers were human beings"))
#|
(define channel-distance-1 ; sqrt(<f - g, f - g>)
- (let ((documentation "(channel-distance s1 c1 s2 c2) returns the euclidean distance between the two channels: sqrt(<f-g,f-g>)"))
+ (let ((+documentation+ "(channel-distance s1 c1 s2 c2) returns the euclidean distance between the two channels: sqrt(<f-g,f-g>)"))
(lambda* ((s1 0) (c1 0) (s2 1) (c2 0))
(let ((r1 (make-sampler 0 s1 c1))
(r2 (make-sampler 0 s2 c2))
@@ -1473,7 +1473,7 @@ the era when computers were human beings"))
(sqrt sum)))))
|#
(define channel-distance ; sqrt(<f - g, f - g>)
- (let ((documentation "(channel-distance s1 c1 s2 c2) returns the euclidean distance between the two channels: sqrt(<f-g,f-g>)"))
+ (let ((+documentation+ "(channel-distance s1 c1 s2 c2) returns the euclidean distance between the two channels: sqrt(<f-g,f-g>)"))
(lambda* ((s1 0) (c1 0) (s2 1) (c2 0))
(let ((N (min (framples s1 c1) (framples s2 c2))))
(let ((data1 (samples 0 N s1 c1))
@@ -1483,7 +1483,7 @@ the era when computers were human beings"))
(define periodogram
- (let ((documentation "(periodogram N) displays an 'N' point Bartlett periodogram of the samples in the current channel"))
+ (let ((+documentation+ "(periodogram N) displays an 'N' point Bartlett periodogram of the samples in the current channel"))
(lambda (N)
(let ((N2 (* 2 N)))
(let ((len (framples))
@@ -1509,7 +1509,7 @@ the era when computers were human beings"))
;;; -------- ssb-am friends
(define shift-channel-pitch
- (let ((documentation "(shift-channel-pitch freq (order 40) (beg 0) dur snd chn edpos) uses the ssb-am CLM generator to \
+ (let ((+documentation+ "(shift-channel-pitch freq (order 40) (beg 0) dur snd chn edpos) uses the ssb-am CLM generator to \
shift the given channel in pitch without changing its length. The higher 'order', the better usually."))
(lambda* (freq (order 40) (beg 0) dur snd chn edpos)
;; higher order = better cancellation
@@ -1520,7 +1520,7 @@ shift the given channel in pitch without changing its length. The higher 'order
(format #f "shift-channel-pitch ~A ~A ~A ~A" freq order beg dur))))))
(define hz->2pi
- (let ((documentation "(hz->2pi freq) is like hz->radians but uses the current sound's srate, not mus-srate"))
+ (let ((+documentation+ "(hz->2pi freq) is like hz->radians but uses the current sound's srate, not mus-srate"))
(lambda (freq)
(/ (* 2 pi freq) (srate)))))
@@ -1702,7 +1702,7 @@ shift the given channel in pitch without changing its length. The higher 'order
;;; FFTSIZE -- FFT window size. Must be a power of 2. 4096 is recommended.
(define scentroid
- (let ((documentation "(scentroid file (beg 0.0) dur (db-floor -40.0) (rfreq 100.0) (fftsize 4096)) returns the spectral centroid envelope of a sound; 'rfreq' is \
+ (let ((+documentation+ "(scentroid file (beg 0.0) dur (db-floor -40.0) (rfreq 100.0) (fftsize 4096)) returns the spectral centroid envelope of a sound; 'rfreq' is \
the rendering frequency, the number of measurements per second; 'db-floor' is the level below which data will be ignored"))
(lambda* (file (beg 0.0) dur (db-floor -40.0) (rfreq 100.0) (fftsize 4096))
(let* ((fsr (srate file))
@@ -1751,7 +1751,7 @@ the rendering frequency, the number of measurements per second; 'db-floor' is th
;;; a "linear phase" filter). Could this be used to remove reverb?
(define invert-filter
- (let ((documentation "(invert-filter coeffs) tries to return an inverse filter to undo the effect of the FIR filter coeffs."))
+ (let ((+documentation+ "(invert-filter coeffs) tries to return an inverse filter to undo the effect of the FIR filter coeffs."))
(lambda (fcoeffs)
(let* ((flen (length fcoeffs))
(coeffs (make-float-vector (+ 32 flen))) ; add room for coeffs to die away
@@ -1781,14 +1781,14 @@ the rendering frequency, the number of measurements per second; 'db-floor' is th
;;; it is a slight specialization of the form mentioned by J O Smith and others
(define make-volterra-filter
- (let ((documentation "(make-volterra-filter acoeffs bcoeffs) returns a list for use with volterra-filter, producing one of the standard non-linear filters"))
+ (let ((+documentation+ "(make-volterra-filter acoeffs bcoeffs) returns a list for use with volterra-filter, producing one of the standard non-linear filters"))
(lambda (acoeffs bcoeffs)
(list acoeffs
bcoeffs
(make-float-vector (max (length acoeffs) (length bcoeffs)))))))
(define volterra-filter
- (let ((documentation "(volterra-filter flt x) takes 'flt', a list returned by make-volterra-filter, and an input 'x', and returns the (non-linear filtered) result"))
+ (let ((+documentation+ "(volterra-filter flt x) takes 'flt', a list returned by make-volterra-filter, and an input 'x', and returns the (non-linear filtered) result"))
(lambda (flt x)
(let ((as (car flt))
(bs (cadr flt))
@@ -1818,7 +1818,7 @@ the rendering frequency, the number of measurements per second; 'db-floor' is th
;;; obviously very similar to ssb-bank above, but splits harmonics individually, rather than pitch-shifting them
(define harmonicizer
- (let ((documentation "(harmonicizer freq coeffs pairs (order 40) (bw 50.0) (beg 0) dur snd chn edpos) splits out each harmonic \
+ (let ((+documentation+ "(harmonicizer freq coeffs pairs (order 40) (bw 50.0) (beg 0) dur snd chn edpos) splits out each harmonic \
and replaces it with the spectrum given in coeffs")
(startup 40))
@@ -1886,7 +1886,7 @@ and replaces it with the spectrum given in coeffs")
;;; linear sampling rate conversion
(define linear-src-channel
- (let ((documentation "(linear-src-channel sr snd chn) performs sampling rate conversion using linear interpolation."))
+ (let ((+documentation+ "(linear-src-channel sr snd chn) performs sampling rate conversion using linear interpolation."))
(lambda* (sr snd chn)
(let ((tempfile
(with-sound (:output (snd-tempnam) :srate (srate snd) :to-snd #f)
@@ -2127,7 +2127,7 @@ and replaces it with the spectrum given in coeffs")
;;; -------- lpc-coeffs, lpc-predict
(define lpc-coeffs
- (let ((documentation "(lpc-coeffs data n m) returns 'm' LPC coeffients (in a vector) given 'n' data points in the float-vector 'data'"))
+ (let ((+documentation+ "(lpc-coeffs data n m) returns 'm' LPC coeffients (in a vector) given 'n' data points in the float-vector 'data'"))
(lambda (data n m)
;; translated and changed to use 0-based arrays from memcof of NRinC
@@ -2168,7 +2168,7 @@ and replaces it with the spectrum given in coeffs")
(define lpc-predict
;; translated and changed to use 0-based arrays from predic of NRinC
;; incoming coeffs are assumed to be in a vector (from lpc-coeffs)
- (let ((documentation "(lpc-predict data n coeffs m nf clipped) takes the output of lpc-coeffs ('coeffs', a float-vector) and the length thereof ('m'), \
+ (let ((+documentation+ "(lpc-predict data n coeffs m nf clipped) takes the output of lpc-coeffs ('coeffs', a float-vector) and the length thereof ('m'), \
'n' data points of 'data' (a float-vector), and produces 'nf' new data points (in a float-vector) as its prediction. If 'clipped' is #t, the new data \
is assumed to be outside -1.0 to 1.0."))
(lambda* (data n coeffs m nf clipped)
@@ -2195,7 +2195,7 @@ is assumed to be outside -1.0 to 1.0."))
;;; -------- unclip-channel
(define unclip-channel
- (let ((documentation "(unclip-channel snd chn) looks for clipped portions and tries to reconstruct the original using LPC"))
+ (let ((+documentation+ "(unclip-channel snd chn) looks for clipped portions and tries to reconstruct the original using LPC"))
(lambda* (snd chn)
(let ((clips 0) ; number of clipped portions * 2
(unclipped-max 0.0)
@@ -2299,7 +2299,7 @@ is assumed to be outside -1.0 to 1.0."))
(define unclip-sound
- (let ((documentation "(unclip-sound snd) applies unclip-channel to each channel of 'snd'."))
+ (let ((+documentation+ "(unclip-sound snd) applies unclip-channel to each channel of 'snd'."))
(lambda* (snd)
(let ((index (or snd (selected-sound) (car (sounds)))))
(if (not (sound? index))
@@ -2351,7 +2351,7 @@ is assumed to be outside -1.0 to 1.0."))
;;; based on Numerical Recipes in C p 652
(define invert-matrix
- (let ((documentation "(invert-matrix matrix b (zero 1.0e-7)) inverts 'matrix'"))
+ (let ((+documentation+ "(invert-matrix matrix b (zero 1.0e-7)) inverts 'matrix'"))
(lambda* (matrix b (zero 1.0e-7))
;; translated from Numerical Recipes (gaussj)
@@ -2501,7 +2501,7 @@ is assumed to be outside -1.0 to 1.0."))
;(fm-parallel-component 200 2000.0 (list 2000.0 200.0) (list 0.5 1.0) () () #t)
(define fm-parallel-component
- (let ((documentation "(fm-parallel-component freq carrier modfreqs indices () () with-sines) returns the amplitude of \"freq\" in \
+ (let ((+documentation+ "(fm-parallel-component freq carrier modfreqs indices () () with-sines) returns the amplitude of \"freq\" in \
the multi-modulator FM case described by the list of modulator frequencies and indices"))
(lambda (freq-we-want wc wms inds ns bs using-sine)
(if (pair? wms)
diff --git a/edit-menu.scm b/edit-menu.scm
index 78ec2a2..e7ba781 100644
--- a/edit-menu.scm
+++ b/edit-menu.scm
@@ -10,7 +10,7 @@
;;; -------- selection -> new file
(define selection->new
- (let ((documentation "(selection-<new) saves the selection in a new file, then opens that file"))
+ (let ((+documentation+ "(selection-<new) saves the selection in a new file, then opens that file"))
(lambda ()
(and (selection?)
(let ((new-file-name (snd-tempnam)))
@@ -23,7 +23,7 @@
;;; -------- cut selection -> new file
(define cut-selection->new
- (let ((documentation "(cut-selection->new) saves the selection, deletes it, then opens the saved file"))
+ (let ((+documentation+ "(cut-selection->new) saves the selection, deletes it, then opens the saved file"))
(lambda ()
(and (selection?)
(let ((new-file-name (snd-tempnam)))
@@ -37,7 +37,7 @@
;;; -------- append selection
(define append-selection
- (let ((documentation "(append-selection) appends the current selection"))
+ (let ((+documentation+ "(append-selection) appends the current selection"))
(lambda ()
(if (selection?)
(insert-selection (framples))))))
@@ -67,7 +67,7 @@
;;; -------- trim front and back (goes by first or last mark)
(define trim-front
- (let ((documentation "(trim-front) finds the first mark in each of the syncd channels and removes all samples before it")
+ (let ((+documentation+ "(trim-front) finds the first mark in each of the syncd channels and removes all samples before it")
(trim-front-one-channel
(lambda (snd chn)
(if (null? (marks snd chn))
@@ -88,7 +88,7 @@
(add-to-menu edit-menu "Trim front" trim-front)
(define trim-back
- (let ((documentation "(trim-back) finds the last mark in each of the syncd channels and removes all samples after it")
+ (let ((+documentation+ "(trim-back) finds the last mark in each of the syncd channels and removes all samples after it")
(trim-back-one-channel
(lambda (snd chn)
(if (null? (marks snd chn))
@@ -125,7 +125,7 @@
"crop-one-channel")))
(define crop
- (let ((documentation "(crop) finds the first and last marks in each of the syncd channels and removes all samples outside them"))
+ (let ((+documentation+ "(crop) finds the first and last marks in each of the syncd channels and removes all samples outside them"))
(lambda ()
(let ((snc (sync)))
(if (> snc 0)
diff --git a/effects-utils.scm b/effects-utils.scm
index 002dc25..d14861f 100644
--- a/effects-utils.scm
+++ b/effects-utils.scm
@@ -4,7 +4,7 @@
(with-let *motif*
(define raise-dialog
- (let ((documentation "(raise-dialog w) tries to put 'w' on top of any widgets that are obscuring it"))
+ (let ((+documentation+ "(raise-dialog w) tries to put 'w' on top of any widgets that are obscuring it"))
(lambda (w)
(if (and (Widget? w)
(XtIsManaged w))
@@ -14,12 +14,12 @@
(XtPopup parent XtGrabNone)))))))
(define activate-dialog
- (let ((documentation "(activate-dialog dialog) makes 'dialog' active and brings it to the top of the currently displayed widgets"))
+ (let ((+documentation+ "(activate-dialog dialog) makes 'dialog' active and brings it to the top of the currently displayed widgets"))
(lambda (dialog)
((if (not (XtIsManaged dialog)) XtManageChild raise-dialog) dialog))))
(define for-each-child
- (let ((documentation "(for-each-child w func) applies 'func' to 'w' and to its descendents"))
+ (let ((+documentation+ "(for-each-child w func) applies 'func' to 'w' and to its descendents"))
(lambda (w func)
(func w)
(if (XtIsComposite w)
@@ -31,13 +31,13 @@
(define use-combo-box-for-fft-size #f) ; cross-synthesis fft size: radio-buttons or combo-box choice
(define current-screen
- (let ((documentation "(current-screen) returns the current X screen number of the current display"))
+ (let ((+documentation+ "(current-screen) returns the current X screen number of the current display"))
(lambda ()
(DefaultScreenOfDisplay
(XtDisplay (cadr (main-widgets)))))))
(define all-chans ; for later use in new-effects.scm?
- (let ((documentation "(all-chans) returns a list of all current sound objects and channel numbers"))
+ (let ((+documentation+ "(all-chans) returns a list of all current sound objects and channel numbers"))
(lambda ()
(let ((sndlist ())
(chnlist ()))
@@ -50,12 +50,12 @@
(list sndlist chnlist)))))
(define update-label
- (let ((documentation "(update-label effects) evaluates the elements of the list 'effects'"))
+ (let ((+documentation+ "(update-label effects) evaluates the elements of the list 'effects'"))
(lambda (effects)
(for-each (lambda (effect) (effect)) effects))))
(define effect-target-ok
- (let ((documentation "(effect-target-ok target) returns #t if the current effect's chosen target is ready"))
+ (let ((+documentation+ "(effect-target-ok target) returns #t if the current effect's chosen target is ready"))
(lambda (target)
(case target
((sound) (pair? (sounds)))
@@ -64,7 +64,7 @@
(>= (length (marks (selected-sound) (selected-channel))) 2)))))))
(define make-effect-dialog
- (let ((documentation "(make-effect-dialog label ok-callback help-callback reset-callback target-ok-callback) makes a standard effects dialog"))
+ (let ((+documentation+ "(make-effect-dialog label ok-callback help-callback reset-callback target-ok-callback) makes a standard effects dialog"))
(lambda* (label ok-callback help-callback reset-callback target-ok-callback)
;; make a standard dialog
(let* ((xdismiss (XmStringCreate "Go Away" XmFONTLIST_DEFAULT_TAG))
@@ -121,7 +121,7 @@
;;; replacement for change-menu-label
(define change-label
- (let ((documentation "(change-label widget new-label) changes the label of 'widget' to be 'new-label'"))
+ (let ((+documentation+ "(change-label widget new-label) changes the label of 'widget' to be 'new-label'"))
(lambda (widget new-label)
(let ((str (XmStringCreateLocalized new-label)))
(XtSetValues widget (list XmNlabelString str))
@@ -133,7 +133,7 @@
(define log-scale-ticks 500) ; sets precision (to some extent) of slider
(define scale-log->linear
- (let ((documentation "(scale-log->linear lo val hi) given user-relative low..val..hi returns val as scale-relative (0..log-scale-ticks)"))
+ (let ((+documentation+ "(scale-log->linear lo val hi) given user-relative low..val..hi returns val as scale-relative (0..log-scale-ticks)"))
(lambda (lo val hi)
(let ((log-lo (log (max lo 1.0) 2))
(log-hi (log hi 2))
@@ -141,7 +141,7 @@
(floor (* log-scale-ticks (/ (- log-val log-lo) (- log-hi log-lo))))))))
(define scale-linear->log
- (let ((documentation "(scale-linear->log lo val hi) given user-relative lo..hi and scale-relative val, returns the user-relative val"))
+ (let ((+documentation+ "(scale-linear->log lo val hi) given user-relative lo..hi and scale-relative val, returns the user-relative val"))
(lambda (lo val hi)
;; since log-scale widget assumes 0..log-scale-ticks, val can be used as ratio (log-wise) between lo and hi
(let ((log-lo (log (max lo 1.0) 2))
@@ -149,12 +149,12 @@
(expt 2.0 (+ log-lo (* (/ val log-scale-ticks) (- log-hi log-lo))))))))
(define scale-log-label
- (let ((documentation "(scale-log-label lo val hi) makes a log scale label"))
+ (let ((+documentation+ "(scale-log-label lo val hi) makes a log scale label"))
(lambda (lo val hi)
(format #f "~,2F" (scale-linear->log lo val hi)))))
(define create-log-scale-widget
- (let ((documentation "(create-log-scale-widget parent title low initial high) returns a log scale widget"))
+ (let ((+documentation+ "(create-log-scale-widget parent title low initial high) returns a log scale widget"))
(lambda (parent title low initial high)
(let ((label (XtCreateManagedWidget (format #f "~,2F" initial) xmLabelWidgetClass parent
(list XmNbackground *basic-color*)))
@@ -184,22 +184,22 @@
(define semi-range 24) ; 2 octaves either way
(define semi-scale-label
- (let ((documentation "(semi-scale-label val) makes a semitone label"))
+ (let ((+documentation+ "(semi-scale-label val) makes a semitone label"))
(lambda (val)
(format #f "semitones: ~D" (- val semi-range)))))
(define semitones->ratio
- (let ((documentation "(semitones->ratio val) takes a semitone number 'val' and returns the corresponding float ratio"))
+ (let ((+documentation+ "(semitones->ratio val) takes a semitone number 'val' and returns the corresponding float ratio"))
(lambda (val)
(expt 2.0 (/ val 12.0)))))
(define ratio->semitones
- (let ((documentation "(ratio->semitones ratio) takes a float ratio and returns the corresponding number of semitones"))
+ (let ((+documentation+ "(ratio->semitones ratio) takes a float ratio and returns the corresponding number of semitones"))
(lambda (ratio)
(round (* 12 (log ratio 2))))))
(define create-semi-scale-widget
- (let ((documentation "(create-semi-scale-widget parent title initial) returns a semitone scale widget"))
+ (let ((+documentation+ "(create-semi-scale-widget parent title initial) returns a semitone scale widget"))
(lambda (parent title initial)
(let ((label (XtCreateManagedWidget (format #f "semitones: ~D" (ratio->semitones initial)) xmLabelWidgetClass parent
(list XmNbackground *basic-color*)))
@@ -221,7 +221,7 @@
scale))))
(define add-sliders
- (let ((documentation "(add-sliders dialog sliders) takes 'sliders', a list of lists, each inner list being (title low initial high callback scale ['log]) \
+ (let ((+documentation+ "(add-sliders dialog sliders) takes 'sliders', a list of lists, each inner list being (title low initial high callback scale ['log]) \
and returns a list of widgets (for reset callbacks)"))
(lambda* (dialog sliders)
(let ((mainform (let ((mainfrm (XtCreateManagedWidget "formd" xmFormWidgetClass dialog
diff --git a/env.scm b/env.scm
index 86f1249..8e3e5b8 100644
--- a/env.scm
+++ b/env.scm
@@ -24,7 +24,7 @@
;;; -------- window-envelope (a kinda brute-force translation from the CL version in env.lisp)
(define window-envelope
- (let ((documentation "(window-envelope beg end e) -> portion of e lying between x axis values beg and
+ (let ((+documentation+ "(window-envelope beg end e) -> portion of e lying between x axis values beg and
end: (window-envelope 1.0 3.0 '(0.0 0.0 5.0 1.0)) -> '(1.0 0.2 3.0 0.6)"))
(lambda (beg end e)
(let ((nenv ())
@@ -56,7 +56,7 @@ end: (window-envelope 1.0 3.0 '(0.0 0.0 5.0 1.0)) -> '(1.0 0.2 3.0 0.6)"))
;;; -------- map-envelopes like map-across-envelopes in env.lisp
(define map-envelopes
- (let ((documentation "(map-envelopes func env1 env2) maps func over the breakpoints in env1 and env2 returning a new envelope"))
+ (let ((+documentation+ "(map-envelopes func env1 env2) maps func over the breakpoints in env1 and env2 returning a new envelope"))
(lambda (op e1 e2)
(let* ((xs ())
(at0 (lambda (e)
@@ -92,13 +92,13 @@ end: (window-envelope 1.0 3.0 '(0.0 0.0 5.0 1.0)) -> '(1.0 0.2 3.0 0.6)"))
;;; -------- multiply-envelopes, add-envelopes
(define multiply-envelopes
- (let ((documentation "(multiply-envelopes env1 env2) multiplies break-points of env1 and env2 returning a new
+ (let ((+documentation+ "(multiply-envelopes env1 env2) multiplies break-points of env1 and env2 returning a new
envelope: (multiply-envelopes '(0 0 2 .5) '(0 0 1 2 2 1)) -> '(0 0 0.5 0.5 1.0 0.5)"))
(lambda (e1 e2)
(map-envelopes * e1 e2))))
(define add-envelopes
- (let ((documentation "(add-envelopes env1 env2) adds break-points of env1 and env2 returning a new envelope"))
+ (let ((+documentation+ "(add-envelopes env1 env2) adds break-points of env1 and env2 returning a new envelope"))
(lambda (e1 e2)
(map-envelopes + e1 e2))))
@@ -106,7 +106,7 @@ envelope: (multiply-envelopes '(0 0 2 .5) '(0 0 1 2 2 1)) -> '(0 0 0.5 0.5 1.0 0
;;; -------- max-envelope
(define max-envelope
- (let ((documentation "(max-envelope env) -> max y value in env"))
+ (let ((+documentation+ "(max-envelope env) -> max y value in env"))
(lambda (env1)
(let max-envelope-1 ((e (cddr env1))
(mx (cadr env1)))
@@ -117,7 +117,7 @@ envelope: (multiply-envelopes '(0 0 2 .5) '(0 0 1 2 2 1)) -> '(0 0 0.5 0.5 1.0 0
;;; -------- min-envelope
(define min-envelope
- (let ((documentation "(min-envelope env) -> min y value in env"))
+ (let ((+documentation+ "(min-envelope env) -> min y value in env"))
(lambda (env1)
(let min-envelope-1 ((e (cddr env1))
(mx (cadr env1)))
@@ -128,7 +128,7 @@ envelope: (multiply-envelopes '(0 0 2 .5) '(0 0 1 2 2 1)) -> '(0 0 0.5 0.5 1.0 0
;;; -------- integrate-envelope
(define integrate-envelope
- (let ((documentation "(integrate-envelope env) -> area under env"))
+ (let ((+documentation+ "(integrate-envelope env) -> area under env"))
(lambda (env1)
(let integrate-envelope-1 ((e env1)
(sum 0.0000))
@@ -139,7 +139,7 @@ envelope: (multiply-envelopes '(0 0 2 .5) '(0 0 1 2 2 1)) -> '(0 0 0.5 0.5 1.0 0
;;; -------- envelope-last-x
(define envelope-last-x
- (let ((documentation "(envelope-last-x env) -> max x axis break point position"))
+ (let ((+documentation+ "(envelope-last-x env) -> max x axis break point position"))
(lambda (e)
(do ((e e (cddr e)))
((null? (cddr e))
@@ -149,7 +149,7 @@ envelope: (multiply-envelopes '(0 0 2 .5) '(0 0 1 2 2 1)) -> '(0 0 0.5 0.5 1.0 0
(define stretch-envelope
- (let ((documentation "(stretch-envelope env old-attack new-attack old-decay new-decay) takes 'env' and
+ (let ((+documentation+ "(stretch-envelope env old-attack new-attack old-decay new-decay) takes 'env' and
returns a new envelope based on it but with the attack and optionally decay portions stretched
or squeezed; 'old-attack' is the original x axis attack end point, 'new-attack' is where that
section should end in the new envelope. Similarly for 'old-decay' and 'new-decay'. This mimics
@@ -213,7 +213,7 @@ divseg in early versions of CLM and its antecedents in Sambox and Mus10 (linen).
;;; -------- scale-envelope
(define scale-envelope
- (let ((documentation "(scale-envelope env scaler (offset 0)) scales y axis values by 'scaler' and optionally adds 'offset'"))
+ (let ((+documentation+ "(scale-envelope env scaler (offset 0)) scales y axis values by 'scaler' and optionally adds 'offset'"))
(lambda* (e scl (offset 0))
(if (null? e)
()
@@ -223,7 +223,7 @@ divseg in early versions of CLM and its antecedents in Sambox and Mus10 (linen).
;;; -------- reverse-envelope
(define reverse-envelope
- (let ((documentation "(reverse-envelope env) reverses the breakpoints in 'env'"))
+ (let ((+documentation+ "(reverse-envelope env) reverses the breakpoints in 'env'"))
(lambda (e)
(let ((len (length e)))
(if (or (not (integer? len))
@@ -242,7 +242,7 @@ divseg in early versions of CLM and its antecedents in Sambox and Mus10 (linen).
;;; -------- concatenate-envelopes
(define concatenate-envelopes
- (letrec ((documentation "(concatenate-envelopes :rest envs) concatenates its arguments into a new envelope")
+ (letrec ((+documentation+ "(concatenate-envelopes :rest envs) concatenates its arguments into a new envelope")
(cat-1 (lambda (e newe xoff x0)
(if (null? e)
newe
@@ -269,7 +269,7 @@ divseg in early versions of CLM and its antecedents in Sambox and Mus10 (linen).
(define repeat-envelope
- (let ((documentation "(repeat-envelope env repeats (reflected #f) (normalized #f)) repeats 'env' 'repeats'
+ (let ((+documentation+ "(repeat-envelope env repeats (reflected #f) (normalized #f)) repeats 'env' 'repeats'
times. (repeat-envelope '(0 0 100 1) 2) -> (0 0 100 1 101 0 201 1).
If the final y value is different from the first y value, a quick ramp is
inserted between repeats. 'normalized' causes the new envelope's x axis
@@ -382,7 +382,7 @@ repetition to be in reverse."))
;;; here's a simpler version that takes the breakpoint list, rather than the power-env structure:
(define powenv-channel
- (let ((documentation "(powenv-channel envelope (beg 0) dur snd chn edpos) returns an envelope with a separate base for \
+ (let ((+documentation+ "(powenv-channel envelope (beg 0) dur snd chn edpos) returns an envelope with a separate base for \
each segment: (powenv-channel '(0 0 .325 1 1 32.0 2 0 32.0))"))
(lambda* (envelope (beg 0) dur snd chn edpos)
(let ((len (length envelope))
@@ -422,7 +422,7 @@ each segment: (powenv-channel '(0 0 .325 1 1 32.0 2 0 32.0))"))
;;; xgrid is how fine a solution to sample our new envelope with.
(define envelope-exp
- (let ((documentation "(envelope-exp e (power 1.0) (xgrid 100)) approximates an exponential curve connecting the breakpoints"))
+ (let ((+documentation+ "(envelope-exp e (power 1.0) (xgrid 100)) approximates an exponential curve connecting the breakpoints"))
(lambda* (e (power 1.0) (xgrid 100))
(let ((mn (min-envelope e)))
(let ((largest-diff (* 1.0 (- (max-envelope e) mn)))
@@ -445,7 +445,7 @@ each segment: (powenv-channel '(0 0 .325 1 1 32.0 2 0 32.0))"))
;;; rms-envelope
(define rms-envelope
- (let ((documentation "(rms-envelope file (beg 0.0) (dur #f) (rfreq 30.0) (db #f)) returns an envelope of RMS values in 'file'"))
+ (let ((+documentation+ "(rms-envelope file (beg 0.0) (dur #f) (rfreq 30.0) (db #f)) returns an envelope of RMS values in 'file'"))
(lambda* (file (beg 0.0) dur (rfreq 30.0) db)
;; based on rmsenv.ins by Bret Battey
(let* ((fsr (srate file))
diff --git a/enved.scm b/enved.scm
index 9de7b6c..6607250 100644
--- a/enved.scm
+++ b/enved.scm
@@ -12,7 +12,7 @@
(define channel-envelope
(dilambda
- (let ((documentation "(channel-envelope snd chn) returns the current enved envelope associated with snd's channel chn"))
+ (let ((+documentation+ "(channel-envelope snd chn) returns the current enved envelope associated with snd's channel chn"))
(lambda (snd chn)
(or (channel-property 'enved-envelope snd chn)
())))
@@ -160,7 +160,7 @@
(set! (hook 'result) #t))))))
(define start-enveloping
- (let ((documentation "(start-enveloping) starts the enved processes, displaying an envelope editor in each channel"))
+ (let ((+documentation+ "(start-enveloping) starts the enved processes, displaying an envelope editor in each channel"))
(lambda ()
(hook-push after-open-hook create-initial-envelopes)
(hook-push mouse-press-hook mouse-press-envelope)
@@ -169,7 +169,7 @@
(hook-push key-press-hook enveloping-key-press))))
(define stop-enveloping
- (let ((documentation "(stop-enveloping) turns off the enved channel-specific envelope editors"))
+ (let ((+documentation+ "(stop-enveloping) turns off the enved channel-specific envelope editors"))
(lambda ()
(hook-remove after-open-hook create-initial-envelopes)
(hook-remove mouse-press-hook mouse-press-envelope)
@@ -183,7 +183,7 @@
;;; some examples of using this envelope editor
(define play-with-envs
- (let ((documentation "(play-with-envs snd) sets channel amps during playback from the associated enved envelopes"))
+ (let ((+documentation+ "(play-with-envs snd) sets channel amps during playback from the associated enved envelopes"))
(lambda* (sound)
(do ((chans (channels sound))
(chan 0 (+ 1 chan)))
@@ -199,7 +199,7 @@
#|
(define play-panned
- (let ((documentation "(play-panned snd) pans a mono sound following its enved envelope into a stereo sound"))
+ (let ((+documentation+ "(play-panned snd) pans a mono sound following its enved envelope into a stereo sound"))
(lambda (sound)
(let* ((bufsize 256)
(data (make-float-vector (list 2 bufsize) 0.0))
diff --git a/examp.scm b/examp.scm
index 07e025d..27e7714 100644
--- a/examp.scm
+++ b/examp.scm
@@ -60,7 +60,7 @@
;;; this mainly involves keeping track of the current sound/channel
(define selection-rms
- (let ((documentation "(selection-rms) -> rms of selection data using samplers"))
+ (let ((+documentation+ "(selection-rms) -> rms of selection data using samplers"))
(lambda ()
(if (selection?)
(let ((data (samples (selection-position) (selection-framples))))
@@ -69,7 +69,7 @@
(define region-rms
- (let ((documentation "(region-rms n) -> rms of region n's data (chan 0)"))
+ (let ((+documentation+ "(region-rms n) -> rms of region n's data (chan 0)"))
(lambda (reg)
(if (region? reg)
(let ((data (region->float-vector reg 0 0)))
@@ -78,7 +78,7 @@
(define window-samples
- (let ((documentation "(window-samples snd chn) -> samples in snd channel chn in current graph window"))
+ (let ((+documentation+ "(window-samples snd chn) -> samples in snd channel chn in current graph window"))
(lambda* (snd chn)
(let ((wl (left-sample snd chn))
(wr (right-sample snd chn)))
@@ -87,7 +87,7 @@
(define display-energy
;; in this version, the y-zoom-slider controls the graph amp
- (let ((documentation "(display-energy hook) is a lisp-graph-hook function to display the time domain data as energy (squared)"))
+ (let ((+documentation+ "(display-energy hook) is a lisp-graph-hook function to display the time domain data as energy (squared)"))
(lambda (hook)
(let ((snd (hook 'snd))
(chn (hook 'chn)))
@@ -106,7 +106,7 @@
(define display-db
- (let ((documentation "(display-db hook) is a lisp-graph-hook function to display the time domain data in dB")
+ (let ((+documentation+ "(display-db hook) is a lisp-graph-hook function to display the time domain data in dB")
(dB (lambda (val)
(if (< val .001)
-60.0
@@ -132,7 +132,7 @@
(define window-rms
- (let ((documentation "(window-rms) -> rms of data in currently selected graph window"))
+ (let ((+documentation+ "(window-rms) -> rms of data in currently selected graph window"))
(lambda ()
(let* ((data (channel->float-vector (left-sample) (- (+ (right-sample) 1) (left-sample))))
(len (length data)))
@@ -140,7 +140,7 @@
(define fft-peak
- (let ((documentation "(fft-peak hook) returns the peak spectral magnitude. It is intended for use with after-transform-hook."))
+ (let ((+documentation+ "(fft-peak hook) returns the peak spectral magnitude. It is intended for use with after-transform-hook."))
(lambda (hook)
(let ((snd (hook 'snd))
(chn (hook 'chn)))
@@ -157,7 +157,7 @@
;;; -------- 'info' from extsnd.html using format --------
(define finfo
- (let ((documentation "(finfo file) -> description (as a string) of file"))
+ (let ((+documentation+ "(finfo file) -> description (as a string) of file"))
(lambda (file)
(format #f "~A: chans: ~D, srate: ~D, ~A, ~A, len: ~1,3F"
file
@@ -173,7 +173,7 @@
;;; correlation of channels in a stereo sound
(define display-correlation
- (let ((documentation "(display-correlation hook) returns the correlation of snd's 2 channels (intended for use with graph-hook). y0 and y1 are ignored."))
+ (let ((+documentation+ "(display-correlation hook) returns the correlation of snd's 2 channels (intended for use with graph-hook). y0 and y1 are ignored."))
(lambda (hook)
(let ((snd (hook 'snd)))
(if (not (and (= (channels snd) 2)
@@ -209,7 +209,7 @@
;;; also zoom spectrum based on y-axis zoom slider
(define zoom-spectrum
- (let ((documentation "(zoom-spectrum hook) sets the transform size to correspond to the time-domain window size (use with graph-hook)"))
+ (let ((+documentation+ "(zoom-spectrum hook) sets the transform size to correspond to the time-domain window size (use with graph-hook)"))
(lambda (hook)
(let ((snd (hook 'snd))
(chn (hook 'chn)))
@@ -228,7 +228,7 @@
;;; -------- superimpose spectra of sycn'd sounds
(define superimpose-ffts
- (let ((documentation "(superimpose-ffts hook) superimposes ffts of multiple (syncd) sounds (use with graph-hook)"))
+ (let ((+documentation+ "(superimpose-ffts hook) superimposes ffts of multiple (syncd) sounds (use with graph-hook)"))
(lambda (hook)
(let ((maxsync (apply max (map sync (sounds))))
(snd (hook 'snd))
@@ -267,7 +267,7 @@
;;; an mpeg file to stdout. There's also apparently a switch to write 'wave' output.
(define mpg
- (let ((documentation "(mpg file tmpname) converts file from MPEG to raw 16-bit samples using mpg123"))
+ (let ((+documentation+ "(mpg file tmpname) converts file from MPEG to raw 16-bit samples using mpg123"))
(lambda (mpgfile rawfile)
(let* ((fd (open-input-file mpgfile "r"))
(b0 (read-byte fd))
@@ -309,7 +309,7 @@
;;; -------- read and write OGG files
(define read-ogg
- (let ((documentation "(read-ogg filename) tries to open an OGG file"))
+ (let ((+documentation+ "(read-ogg filename) tries to open an OGG file"))
(lambda (filename)
;; check for "OggS" first word, if found, translate to something Snd can read
;; (open-sound (read-ogg "/home/bil/sf1/oboe.ogg"))
@@ -331,7 +331,7 @@
|#
(define write-ogg
- (let ((documentation "(write-ogg snd) writes 'snd' in OGG format"))
+ (let ((+documentation+ "(write-ogg snd) writes 'snd' in OGG format"))
(lambda (snd)
(if (or (> (car (edits snd)) 0)
(not (= (header-type snd) mus-riff)))
@@ -345,7 +345,7 @@
;;; -------- read and write Speex files
(define read-speex
- (let ((documentation "(read-speex filename) tries to open a SPEEX file"))
+ (let ((+documentation+ "(read-speex filename) tries to open a SPEEX file"))
(lambda (filename)
(let ((wavfile (string-append filename ".wav")))
(if (file-exists? wavfile) (delete-file wavfile))
@@ -353,7 +353,7 @@
wavfile))))
(define write-speex
- (let ((documentation "(write-speex snd) writes 'snd' in Speex format"))
+ (let ((+documentation+ "(write-speex snd) writes 'snd' in Speex format"))
(lambda (snd)
;; write snd data in Speex format
(if (or (> (car (edits snd)) 0)
@@ -369,12 +369,12 @@
;;; -------- read and write FLAC files
(define read-flac
- (let ((documentation "(read-flac filename) tries to read a FLAC file"))
+ (let ((+documentation+ "(read-flac filename) tries to read a FLAC file"))
(lambda (filename)
(system (format #f "flac -d ~A" filename)))))
(define write-flac
- (let ((documentation "(write-flac snd) writes 'snd' in a FLAC file"))
+ (let ((+documentation+ "(write-flac snd) writes 'snd' in a FLAC file"))
(lambda (snd)
;; write snd data in FLAC format
(if (or (> (car (edits snd)) 0)
@@ -389,7 +389,7 @@
;;; -------- play AC3 via a52dec
(define play-ac3
- (let ((documentation "(play-ac3 name) uses a52dec to play an AC3 sound"))
+ (let ((+documentation+ "(play-ac3 name) uses a52dec to play an AC3 sound"))
(lambda (name)
;; to turn an AC3 file into something Snd can edit, /usr/local/bin/a52dec test.ac3 -o wav > test.wav
(system (format #f "a52dec ~A" name)))))
@@ -400,7 +400,7 @@
;;; these are used by Octave (WaveLab) -- each line has one integer, apparently a signed short.
(define read-ascii
- (let ((documentation "(read-ascii in-filename (out-filename \"test.snd\") (out-type mus-next) (out-format mus-bshort) (out-srate 44100)) tries to \
+ (let ((+documentation+ "(read-ascii in-filename (out-filename \"test.snd\") (out-type mus-next) (out-format mus-bshort) (out-srate 44100)) tries to \
read an ASCII sound file"))
(lambda* (in-filename (out-filename "test.snd") (out-type mus-next) (out-format mus-bshort) (out-srate 44100))
(let ((in-fd (open-input-file in-filename))
@@ -433,7 +433,7 @@ read an ASCII sound file"))
;;; this could be extended to set time-graph-style to graph-lines if many samples are displayed, etc
(define auto-dot
- (let ((documentation "(auto-dot hook) sets the dot size depending on the number of samples being displayed (use with graph-hook)"))
+ (let ((+documentation+ "(auto-dot hook) sets the dot size depending on the number of samples being displayed (use with graph-hook)"))
(lambda (hook)
(let* ((snd (hook 'snd))
(chn (hook 'chn))
@@ -455,7 +455,7 @@ read an ASCII sound file"))
;;; will move the window left edge to that mark.
(define first-mark-in-window-at-left
- (let ((documentation "(first-mark-in-window-at-left) moves the graph so that the leftmost visible mark is at the left edge"))
+ (let ((+documentation+ "(first-mark-in-window-at-left) moves the graph so that the leftmost visible mark is at the left edge"))
(lambda ()
(let* ((keysnd (or (selected-sound) (car (sounds))))
(keychn (or (selected-channel keysnd) 0))
@@ -484,7 +484,7 @@ read an ASCII sound file"))
(let ((data-red? #t)
(red (make-color 1 0 0))
(green (make-color 0 1 0))
- (documentation "(flash-selected-data millisecs) causes the selected data to flash red and green"))
+ (+documentation+ "(flash-selected-data millisecs) causes the selected data to flash red and green"))
(lambda (interval)
(if (selected-sound)
(begin
@@ -496,7 +496,7 @@ read an ASCII sound file"))
;;; -------- use loop info (if any) to set marks at loop points
(define mark-loops
- (let ((documentation "(mark-loops) places marks at loop points found in the selected sound's header"))
+ (let ((+documentation+ "(mark-loops) places marks at loop points found in the selected sound's header"))
(lambda ()
(let ((loops (or (sound-loop-info)
(mus-sound-loop-info (file-name)))))
@@ -517,7 +517,7 @@ read an ASCII sound file"))
;;;
(define all-chans
- (let ((documentation "(all-chans) -> two parallel lists, the first sound objects, the second channel numbers. If we have
+ (let ((+documentation+ "(all-chans) -> two parallel lists, the first sound objects, the second channel numbers. If we have
two sounds open (indices 0 and 1 for example), and the second has two channels, (all-chans) returns '((#<sound 0> #<sound 1> #<sound 1>) (0 0 1))"))
(lambda ()
(let ((sndlist ())
@@ -531,7 +531,7 @@ two sounds open (indices 0 and 1 for example), and the second has two channels,
(list sndlist chnlist)))))
(define do-all-chans
- (let ((documentation "(do-all-chans func edhist) applies func to all active channels, using edhist as the edit history
+ (let ((+documentation+ "(do-all-chans func edhist) applies func to all active channels, using edhist as the edit history
indication: (do-all-chans (lambda (val) (* 2.0 val)) \"double all samples\")"))
(lambda* (func origin)
(apply for-each (lambda (snd chn)
@@ -539,12 +539,12 @@ indication: (do-all-chans (lambda (val) (* 2.0 val)) \"double all samples\")"))
(all-chans)))))
(define update-graphs
- (let ((documentation "(update-graphs) updates (redraws) all graphs"))
+ (let ((+documentation+ "(update-graphs) updates (redraws) all graphs"))
(lambda ()
(apply for-each update-time-graph (all-chans)))))
(define do-chans
- (let ((documentation "(do-chans func edhist) applies func to all sync'd channels using edhist as the edit history indication"))
+ (let ((+documentation+ "(do-chans func edhist) applies func to all sync'd channels using edhist as the edit history indication"))
(lambda* (func origin)
(let ((snc (sync)))
(if (> snc 0)
@@ -556,7 +556,7 @@ indication: (do-all-chans (lambda (val) (* 2.0 val)) \"double all samples\")"))
(snd-warning "sync not set"))))))
(define do-sound-chans
- (let ((documentation "(do-sound-chans func edhist) applies func to all selected channels using edhist as the edit history indication"))
+ (let ((+documentation+ "(do-sound-chans func edhist) applies func to all selected channels using edhist as the edit history indication"))
(lambda* (proc origin)
(let ((snd (selected-sound)))
(if snd
@@ -566,7 +566,7 @@ indication: (do-all-chans (lambda (val) (* 2.0 val)) \"double all samples\")"))
(snd-warning "no selected sound"))))))
(define every-sample?
- (let ((documentation "(every-sample func) -> #t if func is not #f for all samples in the current channel,
+ (let ((+documentation+ "(every-sample func) -> #t if func is not #f for all samples in the current channel,
otherwise it moves the cursor to the first offending sample"))
(lambda (proc)
(let ((reader (make-sampler))
@@ -581,7 +581,7 @@ otherwise it moves the cursor to the first offending sample"))
(quit #f))))))))))
(define sort-samples
- (let ((documentation "(sort-samples bins) provides a histogram in 'bins' bins"))
+ (let ((+documentation+ "(sort-samples bins) provides a histogram in 'bins' bins"))
(lambda (nbins)
(let ((bins (make-vector nbins 0))
(reader (make-sampler))
@@ -601,7 +601,7 @@ otherwise it moves the cursor to the first offending sample"))
;;; -------- mix mono sound into stereo sound panning according to env
(define place-sound
- (let ((documentation "(place-sound mono-snd stereo-snd pan-env) mixes a mono sound into a stereo sound, splitting
+ (let ((+documentation+ "(place-sound mono-snd stereo-snd pan-env) mixes a mono sound into a stereo sound, splitting
it into two copies whose amplitudes depend on the envelope 'pan-env'. If 'pan-env' is
a number, the sound is split such that 0 is all in channel 0 and 90 is all in channel 1."))
(lambda (mono-snd stereo-snd pan-env)
@@ -631,7 +631,7 @@ a number, the sound is split such that 0 is all in channel 0 and 90 is all in ch
;;;
(define fft-edit
- (let ((documentation "(fft-edit low-Hz high-Hz snd chn) ffts an entire sound, removes all energy below low-Hz and all above high-Hz,
+ (let ((+documentation+ "(fft-edit low-Hz high-Hz snd chn) ffts an entire sound, removes all energy below low-Hz and all above high-Hz,
then inverse ffts."))
(lambda* (bottom top snd chn)
(let ((sr (srate snd))
@@ -659,7 +659,7 @@ then inverse ffts."))
(define fft-squelch
- (let ((documentation "(fft-squelch squelch snd chn) ffts an entire sound, sets all bins to 0.0 whose energy is below squelch, then inverse ffts"))
+ (let ((+documentation+ "(fft-squelch squelch snd chn) ffts an entire sound, sets all bins to 0.0 whose energy is below squelch, then inverse ffts"))
(lambda* (squelch snd chn)
(let* ((len (framples snd chn))
(fsize (expt 2 (ceiling (log len 2)))))
@@ -690,7 +690,7 @@ then inverse ffts."))
(define fft-cancel
- (let ((documentation "(fft-cancel lo-freq hi-freq snd chn) ffts an entire sound, sets the bin(s) representing lo-freq to hi-freq to 0.0, then inverse ffts"))
+ (let ((+documentation+ "(fft-cancel lo-freq hi-freq snd chn) ffts an entire sound, sets the bin(s) representing lo-freq to hi-freq to 0.0, then inverse ffts"))
(lambda* (lo-freq hi-freq snd chn)
(let* ((len (framples snd chn))
(fsize (expt 2 (ceiling (log len 2)))))
@@ -711,7 +711,7 @@ then inverse ffts."))
;;; same idea but used to distinguish vowels (steady-state) from consonants
(define ramp
- (let ((documentation "(ramp gen up) is a kind of CLM generator that produces a ramp of a given length, then sticks at 0.0 or 1.0 until the 'up' argument changes"))
+ (let ((+documentation+ "(ramp gen up) is a kind of CLM generator that produces a ramp of a given length, then sticks at 0.0 or 1.0 until the 'up' argument changes"))
(lambda (gen up)
;; gen is list: ctr size
;; the idea here is that we want to ramp in or out a portion of a sound based on some
@@ -730,7 +730,7 @@ then inverse ffts."))
;;; (let ((r (make-ramp))) (map-channel (lambda (y) (* y (ramp r (> (random 1.0) 0.5))))))
(define squelch-vowels
- (let ((documentation "(squelch-vowels snd chn) suppresses portions of a sound that look like steady-state"))
+ (let ((+documentation+ "(squelch-vowels snd chn) suppresses portions of a sound that look like steady-state"))
(lambda* (snd chn)
(let ((fft-size 32))
(let ((rl (make-float-vector fft-size))
@@ -769,7 +769,7 @@ then inverse ffts."))
(define fft-env-data
- (let ((documentation "(fft-env-data fft-env snd chn) applies fft-env as spectral env to current sound, returning float-vector of new data"))
+ (let ((+documentation+ "(fft-env-data fft-env snd chn) applies fft-env as spectral env to current sound, returning float-vector of new data"))
(lambda* (fft-env snd chn)
(let ((fsize (expt 2 (ceiling (log (framples snd chn) 2)))))
(let ((rdata (channel->float-vector 0 fsize snd chn))
@@ -787,13 +787,13 @@ then inverse ffts."))
(define fft-env-edit
- (let ((documentation "(fft-env-edit fft-env snd chn) edits (filters) current chan using fft-env"))
+ (let ((+documentation+ "(fft-env-edit fft-env snd chn) edits (filters) current chan using fft-env"))
(lambda* (fft-env snd chn)
(float-vector->channel (fft-env-data fft-env snd chn) 0 (- (framples) 1) snd chn #f (format #f "fft-env-edit '~A" fft-env)))))
(define fft-env-interp
- (let ((documentation "(fft-env-interp env1 env2 interp snd chn) interpolates between two fft-filtered versions (env1 and env2 are the
+ (let ((+documentation+ "(fft-env-interp env1 env2 interp snd chn) interpolates between two fft-filtered versions (env1 and env2 are the
spectral envelopes) following interp (an env between 0 and 1)"))
(lambda* (env1 env2 interp snd chn)
(let ((data1 (fft-env-data env1 snd chn))
@@ -811,7 +811,7 @@ spectral envelopes) following interp (an env between 0 and 1)"))
(define filter-fft
- (let ((documentation "(filter-fft flt normalize snd chn) gets the spectrum of all the data in the given channel, \
+ (let ((+documentation+ "(filter-fft flt normalize snd chn) gets the spectrum of all the data in the given channel, \
applies the function 'flt' to it, then inverse ffts. 'flt' should take one argument, the \
current spectrum value. (filter-fft (lambda (y) (if (< y .01) 0.0 y))) is like fft-squelch."))
(lambda* (flt (normalize #t) snd chn)
@@ -872,7 +872,7 @@ current spectrum value. (filter-fft (lambda (y) (if (< y .01) 0.0 y))) is like
(define fft-smoother
- (let ((documentation "(fft-smoother cutoff start samps snd chn) uses fft-filtering to smooth a
+ (let ((+documentation+ "(fft-smoother cutoff start samps snd chn) uses fft-filtering to smooth a
section: (float-vector->channel (fft-smoother .1 (cursor) 400) (cursor) 400)"))
(lambda* (cutoff start samps snd chn)
(let ((fftpts (floor (expt 2 (ceiling (log (+ 1 samps) 2))))))
@@ -912,7 +912,7 @@ section: (float-vector->channel (fft-smoother .1 (cursor) 400) (cursor) 400)"))
;;; -------- comb-filter
(define comb-filter
- (let ((documentation "(comb-filter scaler size) returns a comb-filter ready for map-channel etc: (map-channel (comb-filter .8 32)). If you're
+ (let ((+documentation+ "(comb-filter scaler size) returns a comb-filter ready for map-channel etc: (map-channel (comb-filter .8 32)). If you're
in a hurry use: (clm-channel (make-comb .8 32)) instead"))
(lambda (scaler size)
(let ((cmb (make-comb scaler size)))
@@ -923,7 +923,7 @@ in a hurry use: (clm-channel (make-comb .8 32)) instead"))
;;; by using filters at harmonically related sizes, we can get chords:
(define comb-chord
- (let ((documentation "(comb-chord scaler size amp) returns a set of harmonically-related comb filters: (map-channel (comb-chord .95 100 .3))"))
+ (let ((+documentation+ "(comb-chord scaler size amp) returns a set of harmonically-related comb filters: (map-channel (comb-chord .95 100 .3))"))
(lambda (scaler size amp)
(let ((cs (make-comb-bank (vector (make-comb scaler (floor size))
(make-comb scaler (floor (* size .75)))
@@ -935,7 +935,7 @@ in a hurry use: (clm-channel (make-comb .8 32)) instead"))
;;; or change the comb length via an envelope:
(define zcomb
- (letrec ((documentation "(zcomb scaler size pm) returns a comb filter whose length varies according to an
+ (letrec ((+documentation+ "(zcomb scaler size pm) returns a comb filter whose length varies according to an
envelope: (map-channel (zcomb .8 32 '(0 0 1 10)))")
(max-envelope-1
(lambda (e mx)
@@ -950,7 +950,7 @@ envelope: (map-channel (zcomb .8 32 '(0 0 1 10)))")
(define notch-filter
- (let ((documentation "(notch-filter scaler size) returns a notch-filter: (map-channel (notch-filter .8 32))"))
+ (let ((+documentation+ "(notch-filter scaler size) returns a notch-filter: (map-channel (notch-filter .8 32))"))
(lambda (scaler size)
(let ((cmb (make-notch scaler size)))
(lambda (x)
@@ -958,7 +958,7 @@ envelope: (map-channel (zcomb .8 32 '(0 0 1 10)))")
(define formant-filter
- (let ((documentation "(formant-filter radius frequency) returns a formant generator: (map-channel (formant-filter .99 2400)). Faster
+ (let ((+documentation+ "(formant-filter radius frequency) returns a formant generator: (map-channel (formant-filter .99 2400)). Faster
is: (filter-sound (make-formant 2400 .99))"))
(lambda (radius frequency)
(let ((frm (make-formant frequency radius)))
@@ -969,7 +969,7 @@ is: (filter-sound (make-formant 2400 .99))"))
;;; to impose several formants, just add them in parallel:
(define formants
- (let ((documentation "(formants r1 f1 r2 f2 r3 f3) returns 3 formant filters in parallel: (map-channel (formants .99 900 .98 1800 .99 2700))"))
+ (let ((+documentation+ "(formants r1 f1 r2 f2 r3 f3) returns 3 formant filters in parallel: (map-channel (formants .99 900 .98 1800 .99 2700))"))
(lambda (r1 f1 r2 f2 r3 f3)
(let ((fr1 (make-formant f1 r1))
(fr2 (make-formant f2 r2))
@@ -981,7 +981,7 @@ is: (filter-sound (make-formant 2400 .99))"))
(define moving-formant
- (let ((documentation "(moving-formant radius move) returns a time-varying (in frequency) formant filter: (map-channel (moving-formant .99 '(0 1200 1 2400)))"))
+ (let ((+documentation+ "(moving-formant radius move) returns a time-varying (in frequency) formant filter: (map-channel (moving-formant .99 '(0 1200 1 2400)))"))
(lambda (radius move)
(let ((frm (make-formant (cadr move) radius))
(menv (make-env move :length (framples))))
@@ -992,7 +992,7 @@ is: (filter-sound (make-formant 2400 .99))"))
(define osc-formants
- (let ((documentation "(osc-formants radius bases amounts freqs) set up any number of independently oscillating
+ (let ((+documentation+ "(osc-formants radius bases amounts freqs) set up any number of independently oscillating
formants, then calls map-channel: (osc-formants .99 (float-vector 400.0 800.0 1200.0) (float-vector 400.0 800.0 1200.0) (float-vector 4.0 2.0 3.0))"))
(lambda (radius bases amounts freqs) ; changed to call map-channel itself, 21-Apr-05
(let ((len (length bases)))
@@ -1040,7 +1040,7 @@ formants, then calls map-channel: (osc-formants .99 (float-vector 400.0 800.0 12
;;; -------- echo
(define echo
- (let ((documentation "(echo scaler secs) returns an echo maker: (map-channel (echo .5 .5) 0 44100)"))
+ (let ((+documentation+ "(echo scaler secs) returns an echo maker: (map-channel (echo .5 .5) 0 44100)"))
(lambda (scaler secs)
(let ((del (make-delay (round (* secs (srate))))))
(lambda (inval)
@@ -1048,7 +1048,7 @@ formants, then calls map-channel: (osc-formants .99 (float-vector 400.0 800.0 12
(define zecho
- (let ((documentation "(zecho scaler secs freq amp) returns a modulated echo maker: (map-channel (zecho .5 .75 6 10.0) 0 65000)"))
+ (let ((+documentation+ "(zecho scaler secs freq amp) returns a modulated echo maker: (map-channel (zecho .5 .75 6 10.0) 0 65000)"))
(lambda (scaler secs frq amp)
(let ((os (make-oscil frq))
(del (let ((len (round (* secs (srate)))))
@@ -1061,7 +1061,7 @@ formants, then calls map-channel: (osc-formants .99 (float-vector 400.0 800.0 12
(define flecho
- (let ((documentation "(flecho scaler secs) returns a low-pass filtered echo maker: (map-channel (flecho .5 .9) 0 75000)"))
+ (let ((+documentation+ "(flecho scaler secs) returns a low-pass filtered echo maker: (map-channel (flecho .5 .9) 0 75000)"))
(lambda (scaler secs)
(let ((flt (make-fir-filter :order 4 :xcoeffs #r(.125 .25 .25 .125)))
(del (make-delay (round (* secs (srate))))))
@@ -1076,7 +1076,7 @@ formants, then calls map-channel: (osc-formants .99 (float-vector 400.0 800.0 12
;;; CLM instrument is ring-modulate.ins
(define ring-mod
- (let ((documentation "(ring-mod freq gliss-env) returns a time-varying ring-modulation filter: (map-channel (ring-mod 10 (list 0 0 1 (hz->radians 100))))"))
+ (let ((+documentation+ "(ring-mod freq gliss-env) returns a time-varying ring-modulation filter: (map-channel (ring-mod 10 (list 0 0 1 (hz->radians 100))))"))
(lambda (freq gliss-env)
(let ((os (make-oscil :frequency freq))
(genv (make-env gliss-env :length (framples))))
@@ -1085,7 +1085,7 @@ formants, then calls map-channel: (osc-formants .99 (float-vector 400.0 800.0 12
(define am
- (let ((documentation "(am freq)returns an amplitude-modulator: (map-channel (am 440))"))
+ (let ((+documentation+ "(am freq)returns an amplitude-modulator: (map-channel (am 440))"))
(lambda (freq)
(let ((os (make-oscil freq)))
(lambda (inval)
@@ -1095,7 +1095,7 @@ formants, then calls map-channel: (osc-formants .99 (float-vector 400.0 800.0 12
;;; this taken from sox (vibro.c)
(define vibro
- (let ((documentation "(vibro speed depth) adds vibrato or tremolo"))
+ (let ((+documentation+ "(vibro speed depth) adds vibrato or tremolo"))
(lambda (speed depth)
(let ((sine (make-oscil speed))
(scl (* 0.5 depth)))
@@ -1109,7 +1109,7 @@ formants, then calls map-channel: (osc-formants .99 (float-vector 400.0 800.0 12
;;; CLM instrument version is in clm.html
(define hello-dentist
- (let ((documentation "(hello-dentist frq amp snd chn) varies the sampling rate randomly, making a voice sound quavery: (hello-dentist 40.0 .1)"))
+ (let ((+documentation+ "(hello-dentist frq amp snd chn) varies the sampling rate randomly, making a voice sound quavery: (hello-dentist 40.0 .1)"))
(lambda* (frq amp snd chn)
(let ((rn (make-rand-interp :frequency frq :amplitude amp))
(len (framples))
@@ -1127,7 +1127,7 @@ formants, then calls map-channel: (osc-formants .99 (float-vector 400.0 800.0 12
;;; various "Forbidden Planet" sound effects:
(define fp
- (let ((documentation "(fp sr osamp osfrq snd chn) varies the sampling rate via an oscil: (fp 1.0 .3 20)"))
+ (let ((+documentation+ "(fp sr osamp osfrq snd chn) varies the sampling rate via an oscil: (fp 1.0 .3 20)"))
(lambda* (sr osamp osfrq snd chn)
(let ((os (make-oscil osfrq))
(s (make-src :srate sr :input (let ((sf (make-sampler 0 snd chn)))
@@ -1147,7 +1147,7 @@ formants, then calls map-channel: (osc-formants .99 (float-vector 400.0 800.0 12
;; (we're eye-balling the curve on p55 of Steiglitz's "a DSP Primer")
(define compand
- (let ((documentation "(compand) returns a compander: (map-channel (compand))"))
+ (let ((+documentation+ "(compand) returns a compander: (map-channel (compand))"))
(lambda ()
(lambda (inval)
(array-interp compand-table (+ 8.0 (* 8.0 inval)) 17)))))
@@ -1160,7 +1160,7 @@ formants, then calls map-channel: (osc-formants .99 (float-vector 400.0 800.0 12
;;; CLM version is in expsrc.ins
(define expsrc
- (let ((documentation "(expsrc rate snd chn) uses sampling-rate conversion and granular synthesis
+ (let ((+documentation+ "(expsrc rate snd chn) uses sampling-rate conversion and granular synthesis
to produce a sound at a new pitch but at the original tempo. It returns a function for map-channel."))
(lambda* (rate snd chn)
(let ((sr (make-src :srate rate
@@ -1177,7 +1177,7 @@ to produce a sound at a new pitch but at the original tempo. It returns a funct
;;; the overall expansion, then use that to decide the new length.
(define expsnd
- (let ((documentation "(expsnd gr-env snd chn) uses the granulate generator to change tempo according to an envelope: (expsnd '(0 .5 2 2.0))"))
+ (let ((+documentation+ "(expsnd gr-env snd chn) uses the granulate generator to change tempo according to an envelope: (expsnd '(0 .5 2 2.0))"))
(lambda* (gr-env snd chn)
(let* ((dur (/ (* (/ (framples snd chn) (srate snd))
(integrate-envelope gr-env)) ; in env.scm
@@ -1200,7 +1200,7 @@ to produce a sound at a new pitch but at the original tempo. It returns a funct
;;; CLM version is in clm.html
(define cross-synthesis
- (let ((documentation "(cross-synthesis cross-snd amp fftsize r) does cross-synthesis between 'cross-snd' (a sound object) and the currently
+ (let ((+documentation+ "(cross-synthesis cross-snd amp fftsize r) does cross-synthesis between 'cross-snd' (a sound object) and the currently
selected sound: (map-channel (cross-synthesis (integer->sound 0) .5 128 6.0))"))
(lambda (cross-snd amp fftsize r)
(let ((freq-inc (/ fftsize 2)))
@@ -1235,7 +1235,7 @@ selected sound: (map-channel (cross-synthesis (integer->sound 0) .5 128 6.0))"))
;;; similar ideas can be used for spectral cross-fades, etc -- for example:
(define voiced->unvoiced
- (let ((documentation "(voiced->unvoiced amp fftsize r tempo snd chn) turns a vocal sound into whispering: (voiced->unvoiced 1.0 256 2.0 2.0)"))
+ (let ((+documentation+ "(voiced->unvoiced amp fftsize r tempo snd chn) turns a vocal sound into whispering: (voiced->unvoiced 1.0 256 2.0 2.0)"))
(lambda* (amp fftsize r tempo snd chn)
(let ((freq-inc (/ fftsize 2))
(len (framples snd chn)))
@@ -1285,7 +1285,7 @@ selected sound: (map-channel (cross-synthesis (integer->sound 0) .5 128 6.0))"))
;;; very similar but use ncos (glottal pulse train?) instead of white noise
(define pulse-voice
- (let ((documentation "(pulse-voice cosines (freq 440) (amp 1.0) (fftsize 256) (r 2.0) snd chn) uses ncos to manipulate speech sounds"))
+ (let ((+documentation+ "(pulse-voice cosines (freq 440) (amp 1.0) (fftsize 256) (r 2.0) snd chn) uses ncos to manipulate speech sounds"))
(lambda* (cosines (freq 440.0) (amp 1.0) (fftsize 256) (r 2.0) snd chn)
(let ((freq-inc (/ fftsize 2)))
(let ((spectr (make-float-vector freq-inc))
@@ -1335,7 +1335,7 @@ selected sound: (map-channel (cross-synthesis (integer->sound 0) .5 128 6.0))"))
;;; -------- convolution example
(define cnvtest
- (let ((documentation "(cnvtest snd0 snd1 amp) convolves snd0 and snd1, scaling by amp, returns new max amp: (cnvtest 0 1 .1)"))
+ (let ((+documentation+ "(cnvtest snd0 snd1 amp) convolves snd0 and snd1, scaling by amp, returns new max amp: (cnvtest 0 1 .1)"))
(lambda (snd0 snd1 amp)
(let* ((flt-len (framples snd0))
(total-len (+ flt-len (framples snd1)))
@@ -1356,7 +1356,7 @@ selected sound: (map-channel (cross-synthesis (integer->sound 0) .5 128 6.0))"))
;;; -------- locate-zero (Anders Vinjar)
(define locate-zero
- (let ((documentation "(locate-zero limit) looks for successive samples that sum to less than 'limit', moving the cursor if successful"))
+ (let ((+documentation+ "(locate-zero limit) looks for successive samples that sum to less than 'limit', moving the cursor if successful"))
(lambda (limit)
(let* ((start (cursor))
(sf (make-sampler start)))
@@ -1375,7 +1375,7 @@ selected sound: (map-channel (cross-synthesis (integer->sound 0) .5 128 6.0))"))
;;; interpolating between samples if necessary, the corresponding "generator" is sound-interp
(define make-sound-interp
- (let ((documentation "(make-sound-interp start snd chn) -> an interpolating reader for snd's channel chn"))
+ (let ((+documentation+ "(make-sound-interp start snd chn) -> an interpolating reader for snd's channel chn"))
(lambda* (start snd chn)
(let* ((data (channel->float-vector start #f snd chn))
(size (length data)))
@@ -1383,7 +1383,7 @@ selected sound: (map-channel (cross-synthesis (integer->sound 0) .5 128 6.0))"))
(array-interp data loc size))))))
(define sound-interp
- (let ((documentation "(sound-interp func loc) -> sample at loc (interpolated if necessary) from func created by make-sound-interp"))
+ (let ((+documentation+ "(sound-interp func loc) -> sample at loc (interpolated if necessary) from func created by make-sound-interp"))
(lambda (func loc) ;make it look like a clm generator
(func loc))))
@@ -1422,7 +1422,7 @@ selected sound: (map-channel (cross-synthesis (integer->sound 0) .5 128 6.0))"))
;; envelope to sound sample positions.
(define env-sound-interp
- (let ((documentation "(env-sound-interp env (time-scale 1.0) snd chn) reads snd's channel chn according to env and time-scale"))
+ (let ((+documentation+ "(env-sound-interp env (time-scale 1.0) snd chn) reads snd's channel chn according to env and time-scale"))
(lambda* (envelope (time-scale 1.0) snd chn)
;; since the old/new sounds can be any length, we'll write a temp file rather than trying to use map-channel
@@ -1447,7 +1447,7 @@ selected sound: (map-channel (cross-synthesis (integer->sound 0) .5 128 6.0))"))
(define granulated-sound-interp
- (let ((documentation "(granulated-sound-interp envelope (time-scale 1.0) (grain-length 0.10) (grain-envelope '(0 0 1 1 2 1 3 0)) (output-hop 0.05) snd chn) reads \
+ (let ((+documentation+ "(granulated-sound-interp envelope (time-scale 1.0) (grain-length 0.10) (grain-envelope '(0 0 1 1 2 1 3 0)) (output-hop 0.05) snd chn) reads \
the given channel following 'envelope' (as in env-sound-interp), using grains to create the re-tempo'd read"))
(lambda* (envelope (time-scale 1.0) (grain-length 0.10) (grain-envelope '(0 0 1 1 2 1 3 0)) (output-hop 0.05) snd chn)
@@ -1504,7 +1504,7 @@ the given channel following 'envelope' (as in env-sound-interp), using grains to
;;; -------- filtered-env
(define filtered-env
- (let ((documentation "(filtered-env env snd chn) is a time-varying one-pole filter: when env is at 1.0, no filtering,
+ (let ((+documentation+ "(filtered-env env snd chn) is a time-varying one-pole filter: when env is at 1.0, no filtering,
as env moves to 0.0, low-pass gets more intense; amplitude and low-pass amount move together"))
(lambda* (e snd chn)
(let ((flt (make-one-pole 1.0 0.0)))
@@ -1552,7 +1552,7 @@ as env moves to 0.0, low-pass gets more intense; amplitude and low-pass amount m
;;; -------- remove-clicks
(define find-click
- (let ((documentation "(find-click loc) finds the next click starting at 'loc'"))
+ (let ((+documentation+ "(find-click loc) finds the next click starting at 'loc'"))
(lambda (loc)
(let ((reader (make-sampler loc))
(mmax (make-moving-max 10))
@@ -1575,7 +1575,7 @@ as env moves to 0.0, low-pass gets more intense; amplitude and low-pass amount m
(return (- ctr 1))))))))))
(define remove-clicks
- (let ((documentation "(remove-clicks) tries to find and smooth-over clicks"))
+ (let ((+documentation+ "(remove-clicks) tries to find and smooth-over clicks"))
(lambda ()
;; this is very conservative -- the click detection limits above could be set much tighter in many cases
(let remove-click ((loc 0))
@@ -1589,7 +1589,7 @@ as env moves to 0.0, low-pass gets more intense; amplitude and low-pass amount m
;;; -------- searching examples (zero+, next-peak)
(define search-for-click
- (let ((documentation "(search-for-click) looks for the next click (use with C-s)"))
+ (let ((+documentation+ "(search-for-click) looks for the next click (use with C-s)"))
(lambda ()
(let ((samp0 0.0)
(samp1 0.0)
@@ -1607,7 +1607,7 @@ as env moves to 0.0, low-pass gets more intense; amplitude and low-pass amount m
(define zero+
- (let ((documentation "(zero+) finds the next positive-going zero crossing (if searching forward) (for use with C-s)"))
+ (let ((+documentation+ "(zero+) finds the next positive-going zero crossing (if searching forward) (for use with C-s)"))
(lambda ()
(let ((lastn 0.0))
(lambda (n)
@@ -1618,7 +1618,7 @@ as env moves to 0.0, low-pass gets more intense; amplitude and low-pass amount m
(define next-peak
- (let ((documentation "(next-peak) finds the next max or min point in the time-domain waveform (for use with C-s)"))
+ (let ((+documentation+ "(next-peak) finds the next max or min point in the time-domain waveform (for use with C-s)"))
(lambda ()
(let ((last0 #f)
(last1 #f))
@@ -1632,7 +1632,7 @@ as env moves to 0.0, low-pass gets more intense; amplitude and low-pass amount m
(define find-pitch
- (let ((documentation "(find-pitch pitch) finds the point in the current sound where 'pitch' (in Hz) predominates -- C-s (find-pitch 300)
+ (let ((+documentation+ "(find-pitch pitch) finds the point in the current sound where 'pitch' (in Hz) predominates -- C-s (find-pitch 300)
In most cases, this will be slightly offset from the true beginning of the note")
(interpolated-peak-offset
@@ -1684,7 +1684,7 @@ In most cases, this will be slightly offset from the true beginning of the note"
(define add-notes
- (let ((documentation "(add-notes notes snd chn) adds (mixes) 'notes' which is a list of lists of the form: file (offset 0.0) (amp 1.0)
+ (let ((+documentation+ "(add-notes notes snd chn) adds (mixes) 'notes' which is a list of lists of the form: file (offset 0.0) (amp 1.0)
starting at the cursor in the currently selected channel: (add-notes '((\"oboe.snd\") (\"pistol.snd\" 1.0 2.0)))"))
(lambda* (notes snd chn)
(let ((start (cursor snd chn)))
@@ -1707,7 +1707,7 @@ starting at the cursor in the currently selected channel: (add-notes '((\"oboe.s
(define region-play-list
- (let ((documentation "(region-play-list data): 'data' is list of lists (list (list reg time)...), time in secs, setting up
+ (let ((+documentation+ "(region-play-list data): 'data' is list of lists (list (list reg time)...), time in secs, setting up
a sort of play list: (region-play-list (list (list reg0 0.0) (list reg1 0.5) (list reg2 1.0) (list reg0 1.0)))"))
(lambda (data)
(for-each
@@ -1720,7 +1720,7 @@ a sort of play list: (region-play-list (list (list reg0 0.0) (list reg1 0.5) (li
(define region-play-sequence
- (let ((documentation "(region-play-sequence data): 'data' is list of regions which will be played one after the other: (region-play-sequence (list reg0 reg2 reg1))"))
+ (let ((+documentation+ "(region-play-sequence data): 'data' is list of regions which will be played one after the other: (region-play-sequence (list reg0 reg2 reg1))"))
(lambda (data)
(let ((time 0.0))
(region-play-list
@@ -1735,7 +1735,7 @@ a sort of play list: (region-play-list (list (list reg0 0.0) (list reg1 0.5) (li
;;; -------- explode-sf2
(define explode-sf2
- (let ((documentation "(explode-sf2) turns the currently selected soundfont file into a bunch of files of the form sample-name.aif"))
+ (let ((+documentation+ "(explode-sf2) turns the currently selected soundfont file into a bunch of files of the form sample-name.aif"))
(lambda ()
(let sf2it ((lst (soundfont-info)))
(if (pair? lst)
@@ -1836,7 +1836,7 @@ a sort of play list: (region-play-list (list (list reg0 0.0) (list reg1 0.5) (li
(define click-middle-button-to-open-next-file-in-directory
- (let ((documentation "(click-middle-button-to-open-next-file-in-directory) adds open-next-file-in-directory to the mouse-click-hook"))
+ (let ((+documentation+ "(click-middle-button-to-open-next-file-in-directory) adds open-next-file-in-directory to the mouse-click-hook"))
(lambda ()
(hook-push mouse-click-hook
(lambda (hook)
@@ -1847,7 +1847,7 @@ a sort of play list: (region-play-list (list (list reg0 0.0) (list reg1 0.5) (li
;;; -------- chain-dsps
(define chain-dsps
- (let ((documentation "(chain-dsps beg dur :rest dsps) sets up a generator patch from its arguments"))
+ (let ((+documentation+ "(chain-dsps beg dur :rest dsps) sets up a generator patch from its arguments"))
(lambda* (beg dur :rest dsps)
;; assume the dsps are already made,
@@ -1914,7 +1914,7 @@ a sort of play list: (region-play-list (list (list reg0 0.0) (list reg1 0.5) (li
(define scramble-channels
- (letrec ((documentation "scramble-channels can arbitrarily re-order a sound's channels. The new channel order is \
+ (letrec ((+documentation+ "scramble-channels can arbitrarily re-order a sound's channels. The new channel order is \
passed as the arguments so to end with channel 3 in channel 0, 2 in 1, 0 in 2, and 1 in 3, (scramble-channels 3 2 0 1)")
(scramble-channels-1
@@ -2015,7 +2015,7 @@ passed as the arguments so to end with channel 3 in channel 0, 2 in 1, 0 in 2, a
;; -------- reorder blocks within channel
(define reverse-by-blocks
- (let ((documentation "(reverse-by-blocks block-len snd chn): divide sound into block-len blocks, recombine blocks in reverse order"))
+ (let ((+documentation+ "(reverse-by-blocks block-len snd chn): divide sound into block-len blocks, recombine blocks in reverse order"))
(lambda* (block-len snd chn)
(let* ((len (framples snd chn))
(num-blocks (floor (/ len (srate snd) block-len))))
@@ -2042,7 +2042,7 @@ passed as the arguments so to end with channel 3 in channel 0, 2 in 1, 0 in 2, a
(define reverse-within-blocks
- (let ((documentation "(reverse-within-blocks block-len snd chn): divide sound into blocks, recombine in order, but each block internally reversed"))
+ (let ((+documentation+ "(reverse-within-blocks block-len snd chn): divide sound into blocks, recombine in order, but each block internally reversed"))
(lambda* (block-len snd chn)
(let* ((len (framples snd chn))
(num-blocks (floor (/ len (srate snd) block-len))))
@@ -2063,7 +2063,7 @@ passed as the arguments so to end with channel 3 in channel 0, 2 in 1, 0 in 2, a
#|
(define channel-clipped?
- (let ((documentation "(channel-clipped? snd chn) returns the sample number if it finds clipping"))
+ (let ((+documentation+ "(channel-clipped? snd chn) returns the sample number if it finds clipping"))
(lambda* (snd chn)
(let ((last-y 0.0)
(len (framples snd chn))
@@ -2081,7 +2081,7 @@ passed as the arguments so to end with channel 3 in channel 0, 2 in 1, 0 in 2, a
;;; not pretty but faster:
(define channel-clipped?
- (let ((documentation "(channel-clipped? snd chn) returns the sample number if it finds clipping"))
+ (let ((+documentation+ "(channel-clipped? snd chn) returns the sample number if it finds clipping"))
(lambda* (snd chn)
(do ((pos (scan-channel (lambda (y) (>= (abs y) 0.9999)) 0 #f snd chn)
(scan-channel (lambda (y) (>= (abs y) 0.9999)) (+ pos 1) #f snd chn)))
@@ -2093,7 +2093,7 @@ passed as the arguments so to end with channel 3 in channel 0, 2 in 1, 0 in 2, a
;;; -------- sync-everything
(define sync-everything
- (let ((documentation "(sync-everything) sets the sync fields of all currently open sounds to the same, unique value"))
+ (let ((+documentation+ "(sync-everything) sets the sync fields of all currently open sounds to the same, unique value"))
(lambda ()
(let ((new-sync (+ 1 (sync-max))))
(for-each
diff --git a/extensions.scm b/extensions.scm
index ee2ded1..6378ab5 100644
--- a/extensions.scm
+++ b/extensions.scm
@@ -16,14 +16,14 @@
(provide 'snd-extensions.scm)
(define remove-if
- (let ((documentation "(remove-if func lst) removes any element from 'lst' that 'func' likes"))
+ (let ((+documentation+ "(remove-if func lst) removes any element from 'lst' that 'func' likes"))
(lambda (pred lst)
(map (lambda (x) (if (pred x) (values) x)) lst))))
(if (not (defined? 'all-chans))
(define all-chans
- (let ((documentation "(all-chans) -> two parallel lists, the first sound objects, the second channel numbers. If we have
+ (let ((+documentation+ "(all-chans) -> two parallel lists, the first sound objects, the second channel numbers. If we have
two sounds open (indices 0 and 1 for example), and the second has two channels, (all-chans) returns '((#<sound 0> #<sound 1> #<sound 1>) (0 0 1))"))
(lambda ()
(let ((sndlist ())
@@ -39,7 +39,7 @@ two sounds open (indices 0 and 1 for example), and the second has two channels,
(define channel-sync
(dilambda
- (let ((documentation "(channel-sync snd chn) returns the sync property of that channel (it is not actually used anywhere)"))
+ (let ((+documentation+ "(channel-sync snd chn) returns the sync property of that channel (it is not actually used anywhere)"))
(lambda (snd chn)
(channel-property 'sync snd chn)))
(lambda (snd chn val)
@@ -50,7 +50,7 @@ two sounds open (indices 0 and 1 for example), and the second has two channels,
;;; -------- mix with result at original peak amp
(define normalized-mix
- (let ((documentation "(normalized-mix filename beg in-chan snd chn) is like mix but the mix result has same peak amp as unmixed snd/chn (returns scaler)"))
+ (let ((+documentation+ "(normalized-mix filename beg in-chan snd chn) is like mix but the mix result has same peak amp as unmixed snd/chn (returns scaler)"))
(lambda* (filename beg in-chan snd chn)
(let ((original-maxamp (maxamp snd chn)))
(mix filename beg in-chan snd chn)
@@ -66,7 +66,7 @@ two sounds open (indices 0 and 1 for example), and the second has two channels,
;;;-------- mix with envelope on mixed-in file
(define enveloped-mix
- (let ((documentation "(enveloped-mix filename beg e) mixes filename starting at beg with amplitude envelope e. (enveloped-mix \"pistol.snd\" 0 '(0 0 1 1 2 0))"))
+ (let ((+documentation+ "(enveloped-mix filename beg e) mixes filename starting at beg with amplitude envelope e. (enveloped-mix \"pistol.snd\" 0 '(0 0 1 1 2 0))"))
(lambda (filename beg e)
(let* ((len (framples filename))
(amp-env (make-env e :length len))
@@ -84,13 +84,13 @@ two sounds open (indices 0 and 1 for example), and the second has two channels,
;;; (map-sound-files (lambda (n) (if (> (mus-sound-duration n) 10.0) (snd-print n))))
(define map-sound-files
- (let ((documentation "(map-sound-files func dir) applies func to each sound file in dir"))
+ (let ((+documentation+ "(map-sound-files func dir) applies func to each sound file in dir"))
(lambda* (func dir)
(map func (sound-files-in-directory (or dir "."))))))
(define for-each-sound-file
- (let ((documentation "(for-each-sound-file func dir) applies func to each sound file in dir"))
+ (let ((+documentation+ "(for-each-sound-file func dir) applies func to each sound file in dir"))
(lambda* (func dir)
(for-each func (sound-files-in-directory (or dir "."))))))
@@ -107,7 +107,7 @@ two sounds open (indices 0 and 1 for example), and the second has two channels,
(define match-sound-files
- (let ((documentation "(match-sound-files func dir) applies func to each sound file in dir and returns a list of files for which func does not return #f"))
+ (let ((+documentation+ "(match-sound-files func dir) applies func to each sound file in dir and returns a list of files for which func does not return #f"))
(lambda* (func dir)
(let ((matches ()))
(for-each-sound-file (lambda (file)
@@ -120,7 +120,7 @@ two sounds open (indices 0 and 1 for example), and the second has two channels,
;;; -------- mix-channel, insert-channel, c-channel
(define mix-channel
- (let ((documentation "(mix-channel file beg dur snd chn edpos with-tag) mixes in file. file can be the file name, a sound object, or \
+ (let ((+documentation+ "(mix-channel file beg dur snd chn edpos with-tag) mixes in file. file can be the file name, a sound object, or \
a list (file-name-or-sound-object [beg [channel]])."))
(lambda* (input-data (beg 0) dur snd (chn 0) edpos with-tag)
@@ -183,7 +183,7 @@ a list (file-name-or-sound-object [beg [channel]])."))
(define insert-channel
- (let ((documentation "(insert-channel file beg dur snd chn edpos) inserts the file. file can be the file name or a list (file-name [beg [channel]])"))
+ (let ((+documentation+ "(insert-channel file beg dur snd chn edpos) inserts the file. file can be the file name or a list (file-name [beg [channel]])"))
(lambda* (file-data beg dur snd chn edpos)
(let ((file-name (if (string? file-data) file-data (car file-data)))
(file-beg (if (or (string? file-data)
@@ -210,7 +210,7 @@ a list (file-name-or-sound-object [beg [channel]])."))
;;; -------- redo-channel, undo-channel
(define redo-channel
- (let ((documentation "(redo-channel (edits 1) snd chn) is the regularized version of redo"))
+ (let ((+documentation+ "(redo-channel (edits 1) snd chn) is the regularized version of redo"))
(lambda* ((edits 1) snd chn)
(if (and snd (not (= (sync snd) 0)) chn)
(set! (edit-position snd chn) (+ (edit-position snd chn) edits))
@@ -218,7 +218,7 @@ a list (file-name-or-sound-object [beg [channel]])."))
(define undo-channel
- (let ((documentation "(undo-channel (edits 1) snd chn) is the regularized version of undo"))
+ (let ((+documentation+ "(undo-channel (edits 1) snd chn) is the regularized version of undo"))
(lambda* ((edits 1) snd chn)
(if (and snd (not (= (sync snd) 0)) chn)
(set! (edit-position snd chn) (max 0 (- (edit-position snd chn) edits)))
@@ -228,7 +228,7 @@ a list (file-name-or-sound-object [beg [channel]])."))
;;; -------- any-env-channel
(define any-env-channel
- (let ((documentation "(any-env-channel e func (beg 0) dur snd chn edpos origin) takes breakpoints in 'e', \
+ (let ((+documentation+ "(any-env-channel e func (beg 0) dur snd chn edpos origin) takes breakpoints in 'e', \
connects them with 'func', and applies the result as an amplitude envelope to the given channel"))
(lambda* (e func (beg 0) dur snd chn edpos origin)
;; handled as a sequence of funcs and scales
@@ -263,7 +263,7 @@ connects them with 'func', and applies the result as an amplitude envelope to th
;;; -------- sine-ramp sine-env-channel
(define sine-ramp
- (let ((documentation "(sine-ramp rmp0 rmp1 (beg 0) dur snd chn edpos) produces a sinsusoidal connection from rmp0 to rmp1"))
+ (let ((+documentation+ "(sine-ramp rmp0 rmp1 (beg 0) dur snd chn edpos) produces a sinsusoidal connection from rmp0 to rmp1"))
(lambda* (rmp0 rmp1 (beg 0) dur snd chn edpos)
(let ((len (if (number? dur) dur (- (framples snd chn) beg))))
(let ((data (samples beg len snd chn edpos))
@@ -281,7 +281,7 @@ connects them with 'func', and applies the result as an amplitude envelope to th
(define sine-env-channel
- (let ((documentation "(sine-env-channel e (beg 0) dur snd chn edpos) connects e's dots with sinusoids"))
+ (let ((+documentation+ "(sine-env-channel e (beg 0) dur snd chn edpos) connects e's dots with sinusoids"))
(lambda* (e (beg 0) dur snd chn edpos)
(any-env-channel e sine-ramp beg dur snd chn edpos (format #f "sine-env-channel '~A ~A ~A" e beg dur)))))
@@ -294,7 +294,7 @@ connects them with 'func', and applies the result as an amplitude envelope to th
;;; -------- blackman4-ramp, blackman4-env-channel
(define blackman4-ramp
- (let ((documentation "(blackman4-ramp rmp0 rmp1 (beg 0) dur snd chn edpos) produces a blackman4-shaped envelope"))
+ (let ((+documentation+ "(blackman4-ramp rmp0 rmp1 (beg 0) dur snd chn edpos) produces a blackman4-shaped envelope"))
(lambda* (rmp0 rmp1 (beg 0) dur snd chn edpos)
;; float-vector: angle incr off scl
(let ((len (if (number? dur) dur (- (framples snd chn) beg))))
@@ -312,7 +312,7 @@ connects them with 'func', and applies the result as an amplitude envelope to th
(define blackman4-env-channel
- (let ((documentation "(blackman4-env-channel e (beg 0) dur snd chn edpos) uses the blackman4 window to connect the dots in 'e'"))
+ (let ((+documentation+ "(blackman4-env-channel e (beg 0) dur snd chn edpos) uses the blackman4 window to connect the dots in 'e'"))
(lambda* (e (beg 0) dur snd chn edpos)
(any-env-channel e blackman4-ramp beg dur snd chn edpos (format #f "blackman4-env-channel '~A ~A ~A" e beg dur)))))
@@ -321,7 +321,7 @@ connects them with 'func', and applies the result as an amplitude envelope to th
;;; -------- ramp-squared, env-squared-channel
(define ramp-squared
- (let ((documentation "(ramp-squared rmp0 rmp1 (symmetric #t) (beg 0) dur snd chn edpos) connects rmp0 and rmp1 with an x^2 curve"))
+ (let ((+documentation+ "(ramp-squared rmp0 rmp1 (symmetric #t) (beg 0) dur snd chn edpos) connects rmp0 and rmp1 with an x^2 curve"))
(lambda* (rmp0 rmp1 (symmetric #t) (beg 0) dur snd chn edpos)
;; float-vector: start incr off scl
(let ((len (if (number? dur) dur (- (framples snd chn) beg))))
@@ -347,7 +347,7 @@ connects them with 'func', and applies the result as an amplitude envelope to th
(define env-squared-channel
- (let ((documentation "(env-squared-channel e (symmetric #t) (beg 0) dur snd chn edpos) connects e's dots with x^2 curves"))
+ (let ((+documentation+ "(env-squared-channel e (symmetric #t) (beg 0) dur snd chn edpos) connects e's dots with x^2 curves"))
(lambda* (e (symmetric #t) (beg 0) dur snd chn edpos)
(any-env-channel e
(lambda (r0 r1 b d s c e)
@@ -361,7 +361,7 @@ connects them with 'func', and applies the result as an amplitude envelope to th
;;; -------- ramp-expt, env-expt-channel
(define ramp-expt
- (let ((documentation "(ramp-expt rmp0 rmp1 exponent (symmetric #t) (beg 0) dur snd chn edpos) connects rmp0 and rmp1 with an x^exponent curve"))
+ (let ((+documentation+ "(ramp-expt rmp0 rmp1 exponent (symmetric #t) (beg 0) dur snd chn edpos) connects rmp0 and rmp1 with an x^exponent curve"))
(lambda* (rmp0 rmp1 exponent (symmetric #t) (beg 0) dur snd chn edpos)
;; float-vector: start incr off scl exponent
;; a^x = exp(x * log(a))
@@ -388,7 +388,7 @@ connects them with 'func', and applies the result as an amplitude envelope to th
(define env-expt-channel
- (let ((documentation "(env-expt-channel e exponent (symmetric #t) (beg 0) dur snd chn edpos) connects e's dots with x^exponent curves"))
+ (let ((+documentation+ "(env-expt-channel e exponent (symmetric #t) (beg 0) dur snd chn edpos) connects e's dots with x^exponent curves"))
(lambda* (e exponent (symmetric #t) (beg 0) dur snd chn edpos)
(if (= exponent 1.0)
(env-channel e beg dur snd chn edpos)
@@ -402,7 +402,7 @@ connects them with 'func', and applies the result as an amplitude envelope to th
;;; -------- offset-channel
(define offset-channel
- (let ((documentation "(offset-channel amount (beg 0) dur snd chn edpos) adds amount to each sample"))
+ (let ((+documentation+ "(offset-channel amount (beg 0) dur snd chn edpos) adds amount to each sample"))
(lambda* (dc (beg 0) dur snd chn edpos)
(let ((len (if (number? dur) dur (- (framples snd chn) beg))))
(float-vector->channel (float-vector-offset! (samples beg len snd chn edpos) dc)
@@ -410,7 +410,7 @@ connects them with 'func', and applies the result as an amplitude envelope to th
(define offset-sound
- (let ((documentation "(offset-sound off beg dur snd) adds 'off' to every sample in 'snd'"))
+ (let ((+documentation+ "(offset-sound off beg dur snd) adds 'off' to every sample in 'snd'"))
(lambda* (off (beg 0) dur snd)
(let ((index (or snd (selected-sound) (car (sounds)))))
(if (sound? index)
@@ -424,7 +424,7 @@ connects them with 'func', and applies the result as an amplitude envelope to th
;;; -------- pad-sound
(define pad-sound
- (let ((documentation "(pad-sound beg dur snd) places a block of 'dur' zeros in every channel of 'snd' starting at 'beg'"))
+ (let ((+documentation+ "(pad-sound beg dur snd) places a block of 'dur' zeros in every channel of 'snd' starting at 'beg'"))
(lambda* (beg dur snd)
(let ((index (or snd (selected-sound) (car (sounds)))))
(if (sound? index)
@@ -438,7 +438,7 @@ connects them with 'func', and applies the result as an amplitude envelope to th
;;; -------- dither-channel
(define dither-channel
- (let ((documentation "(dither-channel (amount .00006) (beg 0) dur snd chn edpos) adds amount dither to each sample"))
+ (let ((+documentation+ "(dither-channel (amount .00006) (beg 0) dur snd chn edpos) adds amount dither to each sample"))
(lambda* ((amount .00006) (beg 0) dur snd chn edpos)
(let ((len (if (number? dur) dur (- (framples snd chn) beg))))
(do ((dither (* .5 amount))
@@ -450,7 +450,7 @@ connects them with 'func', and applies the result as an amplitude envelope to th
(float-vector-set! data i (+ (float-vector-ref data i) (mus-random dither) (mus-random dither))))))))
(define dither-sound
- (let ((documentation "(dither-sound (amount .00006) beg dur snd) adds dithering to every channel of 'snd'"))
+ (let ((+documentation+ "(dither-sound (amount .00006) beg dur snd) adds dithering to every channel of 'snd'"))
(lambda* ((amount .00006) (beg 0) dur snd)
(let ((index (or snd (selected-sound) (car (sounds)))))
(if (sound? index)
@@ -464,7 +464,7 @@ connects them with 'func', and applies the result as an amplitude envelope to th
;;; -------- contrast-channel
(define contrast-channel
- (let ((documentation "(contrast-channel index (beg 0) dur snd chn edpos) applies contrast enhancement to the sound"))
+ (let ((+documentation+ "(contrast-channel index (beg 0) dur snd chn edpos) applies contrast enhancement to the sound"))
(lambda* (index (beg 0) dur snd chn edpos)
(let ((len (if (number? dur) dur (- (framples snd chn) beg))))
(do ((data (samples beg len snd chn edpos))
@@ -475,7 +475,7 @@ connects them with 'func', and applies the result as an amplitude envelope to th
(float-vector-set! data i (contrast-enhancement (float-vector-ref data i) index))))))) ; (sin (+ (* 0.5 pi y) (* index (sin (* 2.0 pi y))))))))
(define contrast-sound
- (let ((documentation "(contrast-sound index beg dur snd) applies contrast-enhancement to every channel of 'snd'"))
+ (let ((+documentation+ "(contrast-sound index beg dur snd) applies contrast-enhancement to every channel of 'snd'"))
(lambda* (index (beg 0) dur snd)
(let ((ind (or snd (selected-sound) (car (sounds)))))
(if (sound? ind)
@@ -489,7 +489,7 @@ connects them with 'func', and applies the result as an amplitude envelope to th
;;; -------- scale-sound
(define scale-sound
- (let ((documentation "(scale-sound scl beg dur snd) multiplies every sample in 'snd' by 'scl'"))
+ (let ((+documentation+ "(scale-sound scl beg dur snd) multiplies every sample in 'snd' by 'scl'"))
(lambda* (scl (beg 0) dur snd)
;; the slow way:
;; (map-sound (lambda (fr) (frame* fr scl)) beg dur snd))
@@ -505,7 +505,7 @@ connects them with 'func', and applies the result as an amplitude envelope to th
;;; -------- normalize-sound
(define normalize-sound
- (let ((documentation "(normalize-sound amp beg dur snd) scales 'snd' to peak amplitude 'amp'"))
+ (let ((+documentation+ "(normalize-sound amp beg dur snd) scales 'snd' to peak amplitude 'amp'"))
(lambda* (amp (beg 0) dur snd)
(let ((index (or snd (selected-sound) (car (sounds)))))
(if (sound? index)
@@ -521,7 +521,7 @@ connects them with 'func', and applies the result as an amplitude envelope to th
;;; -------- channels-equal
(define channels=?
- (let ((documentation "(channels=? s1 c1 s2 c2 (diff 0.0)) -> #t if the two channels are the same (within diff) modulo trailing 0's"))
+ (let ((+documentation+ "(channels=? s1 c1 s2 c2 (diff 0.0)) -> #t if the two channels are the same (within diff) modulo trailing 0's"))
(lambda* (snd1 (chn1 0) snd2 (chn2 0) (allowable-difference 0.0))
(or (and (equal? snd1 snd2)
(= chn1 chn2))
@@ -542,7 +542,7 @@ connects them with 'func', and applies the result as an amplitude envelope to th
(define channels-equal?
- (let ((documentation "(channels-equal? s1 c1 s2 c2 (diff 0.0)) -> #t if the two channels are the same (within diff)"))
+ (let ((+documentation+ "(channels-equal? s1 c1 s2 c2 (diff 0.0)) -> #t if the two channels are the same (within diff)"))
(lambda* (snd1 chn1 snd2 chn2 (allowable-difference 0.0))
(and (= (framples snd1 chn1) (framples snd2 chn2))
(channels=? snd1 chn1 snd2 chn2 allowable-difference)))))
@@ -551,7 +551,7 @@ connects them with 'func', and applies the result as an amplitude envelope to th
;;; -------- mono->stereo, mono-files->stereo
(define mono->stereo
- (let ((documentation "(mono->stereo new-name snd1 chn1 snd2 chn2) takes the two channels and combines them into a stereo sound 'new-name'"))
+ (let ((+documentation+ "(mono->stereo new-name snd1 chn1 snd2 chn2) takes the two channels and combines them into a stereo sound 'new-name'"))
(lambda (new-name snd1 chn1 snd2 chn2)
;; (mono->stereo "test.snd" 0 0 1 0)
(let ((old-ed1 (edit-position snd1 chn1))
@@ -565,7 +565,7 @@ connects them with 'func', and applies the result as an amplitude envelope to th
(define mono-files->stereo
- (let ((documentation "(mono-files->stereo new-name file1 file2) combines two mono files into the stereo file 'new-name'"))
+ (let ((+documentation+ "(mono-files->stereo new-name file1 file2) combines two mono files into the stereo file 'new-name'"))
(lambda (new-name chan1-name chan2-name)
;; (mono-files->stereo "test.snd" "oboe.snd" "pistol.snd")
(let* ((ind1 (open-sound chan1-name))
@@ -577,7 +577,7 @@ connects them with 'func', and applies the result as an amplitude envelope to th
(define stereo->mono
- (let ((documentation "(stereo->mono stereo-sound new-chan1 new-chan2) splits a stereo sound into two mono sounds named 'new-chan1' and 'new-chan2'"))
+ (let ((+documentation+ "(stereo->mono stereo-sound new-chan1 new-chan2) splits a stereo sound into two mono sounds named 'new-chan1' and 'new-chan2'"))
(lambda (orig-snd chan1-name chan2-name)
;; (stereo->mono 0 "hi1.snd" "hi2.snd")
(let ((old-ed0 (edit-position orig-snd 0))
diff --git a/extsnd.html b/extsnd.html
index fceb41b..a165115 100644
--- a/extsnd.html
+++ b/extsnd.html
@@ -2298,7 +2298,7 @@ See examp.scm for many examples. If you want to add your own graphics to the di
<pre class="indented">
(hook-push <em class=red>graph-hook</em>
- (let ((documentation "set the dot size depending on the number of samples being displayed"))
+ (let ((+documentation+ "set the dot size depending on the number of samples being displayed"))
(lambda (hook)
(let* ((snd (hook 'snd))
(chn (hook 'chn))
@@ -6027,7 +6027,7 @@ The Edit:Mix selection menu choice is (mix-selection (cursor)).
<pre class="indented">
(define brksnd
- (let ((documentation "(brksnd dur base) divides the current sound into dur-sized pieces,
+ (let ((+documentation+ "(brksnd dur base) divides the current sound into dur-sized pieces,
saving them in files named 'base'.n: (brksnd 1.0 \"sec\")"))
(lambda (dur base)
(let ((hop (floor (* (<a class=quiet href="#srate">srate</a>) dur)))
@@ -7927,7 +7927,7 @@ Used with set!, it is equivalent to <a class=quiet href="#scaleto">scale-to</a>.
<pre class="indented">
(define maxamp-all
- (let ((documentation "(maxamp-all) returns the current maxamp of all currently open sounds"))
+ (let ((+documentation+ "(maxamp-all) returns the current maxamp of all currently open sounds"))
(lambda ()
(apply max (map (lambda (snd) (apply max (<em class=red>maxamp</em> snd #t))) (<a class=quiet href="#sounds">sounds</a>))))))
</pre>
@@ -8050,7 +8050,7 @@ giving the correct values in the call to open-raw-sound.
<pre class="indented">
(define mpg
- (let ((documentation "(<a class=quiet href="sndscm.html#mpg">mpg</a> file tmpname chans) converts file from MPEG-3 to raw 16-bit samples using mpg123"))
+ (let ((+documentation+ "(<a class=quiet href="sndscm.html#mpg">mpg</a> file tmpname chans) converts file from MPEG-3 to raw 16-bit samples using mpg123"))
(lambda (mpgfile rawfile chans)
(system (<a class=quiet>format</a> #f "mpg123 -s ~A &gt; ~A" mpgfile rawfile))
(<em class=red>open-raw-sound</em> rawfile 1 44100 (if (<a class=quiet>little-endian?</a>) <a class=quiet href="#sampletype">mus-lshort</a> <a class=quiet href="#sampletype">mus-bshort</a>)))))
@@ -8276,7 +8276,7 @@ function option to time the playing of each mix in a sequence of mixes. Another
<pre class="indented">
(define play-sine
- (let ((documentation "(play-sine freq amp) plays a 1 second sinewave at freq and amp"))
+ (let ((+documentation+ "(play-sine freq amp) plays a 1 second sinewave at freq and amp"))
(lambda (freq amp)
(let ((len 22050)
(osc (<a class=quiet href="sndclm.html#make-oscil">make-oscil</a> freq)))
@@ -11986,7 +11986,7 @@ starts the help dialog with help related to the selection if "h" is typed in the
<pre class="indented">
(<a class=quiet href="#bindkey">bind-key</a> #\h 0
- (let ((documentation "start help dialog based on listener selected text"))
+ (let ((+documentation+ "start help dialog based on listener selected text"))
(lambda ()
(let ((subject (<em class=red>listener-selection</em>)))
(if (string? subject)
diff --git a/fmv.scm b/fmv.scm
index a08cccf..c989275 100644
--- a/fmv.scm
+++ b/fmv.scm
@@ -13,7 +13,7 @@
(define make-fm-violin
- (let ((documentation "(make-fm-violin frequency amplitude
+ (let ((+documentation+ "(make-fm-violin frequency amplitude
(fm-index 1.0) (amp-env #f) (periodic-vibrato-rate 5.0)
(random-vibrato-rate 16.0) (periodic-vibrato-amplitude 0.0025)
(random-vibrato-amplitude 0.005) (noise-amount 0.0)
@@ -156,7 +156,7 @@ fm-violin takes the value returned by make-fm-violin and returns a new sample ea
|#
(define fm-violin-ins
- (let ((documentation "(fm-violin-ins startime dur freq amp degree (reverb-amount 0.0) (distance 1.0) :rest args)
+ (let ((+documentation+ "(fm-violin-ins startime dur freq amp degree (reverb-amount 0.0) (distance 1.0) :rest args)
calls the fm-violin with the given args and mixes the results into the current sound"))
(lambda* (startime dur freq amp degree (reverb-amount 0.0) (distance 1.0) :rest args)
(let ((beg (floor (* startime (srate))))
@@ -175,4 +175,4 @@ calls the fm-violin with the given args and mixes the results into the current s
- \ No newline at end of file
+
diff --git a/generators.scm b/generators.scm
index 2717c5e..180dc14 100644
--- a/generators.scm
+++ b/generators.scm
@@ -32,7 +32,7 @@
(define nssb
- (let ((documentation "(make-nssb frequency (ratio 1.0) (n 1)) creates an nssb generator,
+ (let ((+documentation+ "(make-nssb frequency (ratio 1.0) (n 1)) creates an nssb generator,
similar to nxysin. (nssb gen (fm 0.0)) returns n sinusoids from frequency spaced by frequency * ratio."))
(lambda* (gen (fm 0.0))
@@ -127,7 +127,7 @@ similar to nxysin. (nssb gen (fm 0.0)) returns n sinusoids from frequency spaced
(define nxysin
- (let ((documentation "(make-nxysin frequency (ratio 1.0) (n 1)) creates an nxysin
+ (let ((+documentation+ "(make-nxysin frequency (ratio 1.0) (n 1)) creates an nxysin
generator. (nxysin gen (fm 0.0)) returns n sines from frequency spaced by frequency * ratio."))
(lambda* (gen (fm 0.0))
@@ -202,7 +202,7 @@ generator. (nxysin gen (fm 0.0)) returns n sines from frequency spaced by freque
(define nxycos
- (let ((documentation "(make-nxycos frequency (ratio 1.0) (n 1)) creates an nxycos generator. (nxycos gen (fm 0.0))
+ (let ((+documentation+ "(make-nxycos frequency (ratio 1.0) (n 1)) creates an nxycos generator. (nxycos gen (fm 0.0))
returns n cosines from frequency spaced by frequency * ratio."))
(lambda* (gen (fm 0.0))
@@ -238,7 +238,7 @@ returns n cosines from frequency spaced by frequency * ratio."))
(define nxy1cos
- (let ((documentation "(make-nxy1cos frequency (ratio 1.0) (n 1)) creates an nxy1cos
+ (let ((+documentation+ "(make-nxy1cos frequency (ratio 1.0) (n 1)) creates an nxy1cos
generator. (nxy1cos gen (fm 0.0)) returns 2n cosines from frequency spaced by frequency * ratio with every other cosine multiplied by -1."))
(lambda* (gen (fm 0.0))
@@ -284,7 +284,7 @@ generator. (nxy1cos gen (fm 0.0)) returns 2n cosines from frequency spaced by fr
(define nxy1sin
- (let ((documentation "(make-nxy1sin frequency (ratio 1.0) (n 1)) creates an nxy1sin generator. (nxy1sin gen (fm 0.0))
+ (let ((+documentation+ "(make-nxy1sin frequency (ratio 1.0) (n 1)) creates an nxy1sin generator. (nxy1sin gen (fm 0.0))
returns n sines from frequency spaced by frequency * ratio with every other sine multiplied by -1."))
(lambda* (gen (fm 0.0))
@@ -347,7 +347,7 @@ returns n sines from frequency spaced by frequency * ratio with every other sine
(define noddsin
- (let ((documentation "(make-noddsin frequency (n 1)) creates an noddsin generator. (noddsin gen (fm 0.0))
+ (let ((+documentation+ "(make-noddsin frequency (n 1)) creates an noddsin generator. (noddsin gen (fm 0.0))
returns n odd-numbered sines spaced by frequency."))
(lambda* (gen (fm 0.0))
@@ -384,7 +384,7 @@ returns n odd-numbered sines spaced by frequency."))
(define noddcos
- (let ((documentation "(make-noddcos frequency (n 1)) creates an noddcos generator. (noddcos gen (fm 0.0))
+ (let ((+documentation+ "(make-noddcos frequency (n 1)) creates an noddcos generator. (noddcos gen (fm 0.0))
returns n odd-numbered cosines spaced by frequency."))
(lambda* (gen (fm 0.0))
@@ -420,7 +420,7 @@ returns n odd-numbered cosines spaced by frequency."))
(define noddssb
- (let ((documentation "(make-noddssb frequency (ratio 1.0) (n 1)) creates an noddssb generator. (noddssb gen (fm 0.0))
+ (let ((+documentation+ "(make-noddssb frequency (ratio 1.0) (n 1)) creates an noddssb generator. (noddssb gen (fm 0.0))
returns n sinusoids from frequency spaced by 2 * ratio * frequency."))
(lambda* (gen (fm 0.0))
@@ -470,7 +470,7 @@ returns n sinusoids from frequency spaced by 2 * ratio * frequency."))
(define ncos2
- (let ((documentation "(make-ncos2 frequency (n 1)) creates an ncos2 (Fejer kernel) generator. (ncos2 gen (fm 0.0))
+ (let ((+documentation+ "(make-ncos2 frequency (n 1)) creates an ncos2 (Fejer kernel) generator. (ncos2 gen (fm 0.0))
returns n sinusoids spaced by frequency scaled by (n-k)/(n+1)"))
;; from "Trigonometric Series" Zygmund p88 with changes suggested by Katznelson "Introduction to Harmonic Analysis" p12, and
@@ -507,7 +507,7 @@ returns n sinusoids spaced by frequency scaled by (n-k)/(n+1)"))
(define ncos4
- (let ((documentation "(make-ncos4 frequency (n 1)) creates an ncos4 (Jackson kernel) generator. (ncos4 gen (fm 0.0))
+ (let ((+documentation+ "(make-ncos4 frequency (n 1)) creates an ncos4 (Jackson kernel) generator. (ncos4 gen (fm 0.0))
returns n sinusoids spaced by frequency scaled by ((n-k)/(n+1))^2"))
(lambda* (gen (fm 0.0))
@@ -530,7 +530,7 @@ returns n sinusoids spaced by frequency scaled by ((n-k)/(n+1))^2"))
(define npcos
- (let ((documentation "(make-npcos frequency (n 1)) creates an npcos (Poussin kernel) generator. (npcos gen (fm 0.0))
+ (let ((+documentation+ "(make-npcos frequency (n 1)) creates an npcos (Poussin kernel) generator. (npcos gen (fm 0.0))
returns n*2+1 sinusoids spaced by frequency with amplitudes in a sort of tent shape."))
(lambda* (gen (fm 0.0))
@@ -570,7 +570,7 @@ returns n*2+1 sinusoids spaced by frequency with amplitudes in a sort of tent sh
(define ncos5
- (let ((documentation "(make-ncos5 frequency (n 1)) creates an ncos5 generator. (ncos5 gen (fm 0.0))
+ (let ((+documentation+ "(make-ncos5 frequency (n 1)) creates an ncos5 generator. (ncos5 gen (fm 0.0))
returns n cosines spaced by frequency. All are equal amplitude except the first and last at half amp."))
;; from "Chebyshev Polynomials", Mason and Handscomb, p87
@@ -628,7 +628,7 @@ returns n cosines spaced by frequency. All are equal amplitude except the first
(define nsin5
- (let ((documentation "(make-nsin5 frequency (n 1)) creates an nsin5 generator. (nsin5 gen (fm 0.0))
+ (let ((+documentation+ "(make-nsin5 frequency (n 1)) creates an nsin5 generator. (nsin5 gen (fm 0.0))
returns n sines spaced by frequency. All are equal amplitude except last at half amp."))
;; from "Chebyshev Polynomials", Mason and Handscomb, p100
@@ -801,7 +801,7 @@ returns n sines spaced by frequency. All are equal amplitude except last at half
(define nrcos
- (let ((documentation "(make-nrcos frequency (n 1) (r 0.5)) creates an nrcos generator. (nrcos gen (fm 0.0))
+ (let ((+documentation+ "(make-nrcos frequency (n 1) (r 0.5)) creates an nrcos generator. (nrcos gen (fm 0.0))
returns n cosines spaced by frequency with amplitudes scaled by r^k."))
(lambda* (gen (fm 0.0))
@@ -910,7 +910,7 @@ returns n cosines spaced by frequency with amplitudes scaled by r^k."))
(define nrssb
- (let ((documentation "(make-nrssb frequency (ratio 1.0) (n 1) (r 0.5)) creates an nrssb generator. (nrssb gen (fm 0.0))
+ (let ((+documentation+ "(make-nrssb frequency (ratio 1.0) (n 1) (r 0.5)) creates an nrssb generator. (nrssb gen (fm 0.0))
returns n sinusoids from frequency spaced by frequency * ratio with amplitudes scaled by r^k."))
(lambda* (gen (fm 0.0))
@@ -936,7 +936,7 @@ returns n sinusoids from frequency spaced by frequency * ratio with amplitudes s
(define nrssb-interp
- (let ((documentation "(make-nrssb frequency (ratio 1.0) (n 1) (r 0.5)) creates an nrssb generator for use with
+ (let ((+documentation+ "(make-nrssb frequency (ratio 1.0) (n 1) (r 0.5)) creates an nrssb generator for use with
nrssb-interp. (nrssb-interp gen fm interp) returns n sinusoids from frequency spaced by frequency * ratio with amplitudes
scaled by r^k. The 'interp' argument determines whether the sidebands are above (1.0) or below (-1.0) frequency."))
@@ -1068,7 +1068,7 @@ scaled by r^k. The 'interp' argument determines whether the sidebands are above
(define nkssb
- (let ((documentation "(make-nkssb frequency (ratio 1.0) (n 1)) creates an nkssb generator. (nkssb gen (fm 0.0))
+ (let ((+documentation+ "(make-nkssb frequency (ratio 1.0) (n 1)) creates an nkssb generator. (nkssb gen (fm 0.0))
returns n sinusoids from frequency spaced by frequency * ratio with amplitude k."))
(lambda* (gen (fm 0.0))
@@ -1095,7 +1095,7 @@ returns n sinusoids from frequency spaced by frequency * ratio with amplitude k.
(define nkssb-interp
- (let ((documentation " (make-nkssb-interp frequency (ratio 1.0) (n 1)) creates an nkssb generator for
+ (let ((+documentation+ " (make-nkssb-interp frequency (ratio 1.0) (n 1)) creates an nkssb generator for
nkssb-interp. (nkssb-interp gen fm interp) returns n sinusoids from frequency spaced by frequency * ratio
with amplitude k. The 'interp' argument determines whether the sidebands are above (1.0) or below (-1.0) frequency."))
@@ -1255,7 +1255,7 @@ with amplitude k. The 'interp' argument determines whether the sidebands are abo
(define nsincos
- (let ((documentation "(make-nsincos frequency (n 1)) creates an nsincos generator. (nsincos gen (fm 0.0))
+ (let ((+documentation+ "(make-nsincos frequency (n 1)) creates an nsincos generator. (nsincos gen (fm 0.0))
returns n cosines spaced by frequency with amplitude sin(k*pi/(n+1))/sin(pi/(n+1))"))
(lambda* (gen (fm 0.0))
@@ -1320,7 +1320,7 @@ returns n cosines spaced by frequency with amplitude sin(k*pi/(n+1))/sin(pi/(n+1
(define npos1cos
- (let ((documentation "(make-npos1cos frequency (n 1)) creates an npos1cos generator. (npos1cos gen (fm 0.0))
+ (let ((+documentation+ "(make-npos1cos frequency (n 1)) creates an npos1cos generator. (npos1cos gen (fm 0.0))
returns n cosines spaced by frequency."))
(lambda* (gen (fm 0.0))
@@ -1353,7 +1353,7 @@ returns n cosines spaced by frequency."))
(define npos3cos
- (let ((documentation "(make-npos3cos frequency (n 1)) creates an npos3cos generator. (npos3cos gen (fm 0.0))
+ (let ((+documentation+ "(make-npos3cos frequency (n 1)) creates an npos3cos generator. (npos3cos gen (fm 0.0))
returns n cosines spaced by frequency."))
(lambda* (gen (fm 0.0))
@@ -1426,7 +1426,7 @@ returns n cosines spaced by frequency."))
(define rcos
- (let ((documentation "(make-rcos frequency (r 0.5)) creates an rcos generator. (rcos gen (fm 0.0))
+ (let ((+documentation+ "(make-rcos frequency (r 0.5)) creates an rcos generator. (rcos gen (fm 0.0))
returns many cosines spaced by frequency with amplitude r^k."))
;; from Andrews, Askey, Roy "Special Functions" 5.1.16, p243. r^k cos sum
@@ -1494,7 +1494,7 @@ returns many cosines spaced by frequency with amplitude r^k."))
(clangf (make-env '(0 0 .1 1 .2 .1 .3 0) :scaler (* amp .5) :duration .1))
(rf (make-env '(0 1 1 0) :scaler (* 0.5 r) :duration dur))
(crf (make-env '(0 1 1 0) :scaler r :duration .1)))
- (let ((set-clang-scaler (procedure-setter (clang 'mus-scaler))))
+ (let ((set-clang-scaler (setter (clang 'mus-scaler))))
(do ((i start (+ i 1)))
((= i stop))
(set-clang-scaler clang (env crf)) ;(set! (mus-scaler clang) (env crf))
@@ -1534,7 +1534,7 @@ returns many cosines spaced by frequency with amplitude r^k."))
(define rssb
- (let ((documentation "(make-rssb frequency (ratio 1.0) (r 0.5)) creates an rssb generator. (rssb gen (fm 0.0))
+ (let ((+documentation+ "(make-rssb frequency (ratio 1.0) (r 0.5)) creates an rssb generator. (rssb gen (fm 0.0))
returns many cosines from frequency spaced by frequency * ratio with amplitude r^k."))
(lambda* (gen (fm 0.0))
@@ -1555,7 +1555,7 @@ returns many cosines spaced by frequency with amplitude r^k."))
(define rssb-interp
- (let ((documentation "(make-rssb frequency (ratio 1.0) (r 0.5)) creates an rssb generator for
+ (let ((+documentation+ "(make-rssb frequency (ratio 1.0) (r 0.5)) creates an rssb generator for
rssb-interp. (rssb-interp gen fm interp) returns many cosines from frequency spaced by frequency * ratio
with amplitude r^k. The 'interp' argument determines whether the sidebands are above (1.0) or below (-1.0) frequency."))
@@ -1729,7 +1729,7 @@ with amplitude r^k. The 'interp' argument determines whether the sidebands are a
(define rxysin
- (let ((documentation "(make-rxysin frequency (ratio 1.0) (r 0.5)) creates an rxysin generator (similar to rssb). (rxysin gen (fm 0.0))
+ (let ((+documentation+ "(make-rxysin frequency (ratio 1.0) (r 0.5)) creates an rxysin generator (similar to rssb). (rxysin gen (fm 0.0))
returns many sines from frequency spaced by frequency * ratio with amplitude r^k."))
(lambda* (gen (fm 0.0))
@@ -1776,7 +1776,7 @@ returns many sines from frequency spaced by frequency * ratio with amplitude r^k
(define rxycos
- (let ((documentation "(make-rxycos frequency (ratio 1.0) (r 0.5)) creates an rxycos generator. (rxycos gen (fm 0.0))
+ (let ((+documentation+ "(make-rxycos frequency (ratio 1.0) (r 0.5)) creates an rxycos generator. (rxycos gen (fm 0.0))
returns many cosines from frequency spaced by frequency * ratio with amplitude r^k."))
(lambda* (gen (fm 0.0))
@@ -1844,7 +1844,7 @@ returns many cosines from frequency spaced by frequency * ratio with amplitude r
(define safe-rxycos
- (let ((documentation "(make-safe-rxycos frequency (ratio 1.0) (r 0.5)) creates a safe-rxycos generator. (safe-rxycos gen (fm 0.0))
+ (let ((+documentation+ "(make-safe-rxycos frequency (ratio 1.0) (r 0.5)) creates a safe-rxycos generator. (safe-rxycos gen (fm 0.0))
returns many cosines from frequency spaced by frequency * ratio with amplitude r^k where 'r' is restricted to a safe value."))
(lambda* (gen (fm 0.0))
@@ -1909,7 +1909,7 @@ returns many cosines from frequency spaced by frequency * ratio with amplitude r
(define ercos
- (let ((documentation "(make-ercos frequency (r 0.5)) creates an ercos generator (a special case of rcos). (ercos gen (fm 0.0))
+ (let ((+documentation+ "(make-ercos frequency (r 0.5)) creates an ercos generator (a special case of rcos). (ercos gen (fm 0.0))
returns many cosines from frequency with amplitude e^(-kr)."))
(lambda* (gen (fm 0.0))
@@ -1980,7 +1980,7 @@ returns many cosines from frequency with amplitude e^(-kr)."))
(define erssb
- (let ((documentation "(make-erssb frequency (ratio 1.0) (r 0.5)) creates an erssb generator (a special case of rssb). (erssb gen (fm 0.0))
+ (let ((+documentation+ "(make-erssb frequency (ratio 1.0) (r 0.5)) creates an erssb generator (a special case of rssb). (erssb gen (fm 0.0))
returns many sinusoids from frequency spaced by frequency * ratio with amplitude e^(-kr)."))
(lambda* (gen (fm 0.0))
@@ -2030,7 +2030,7 @@ returns many sinusoids from frequency spaced by frequency * ratio with amplitude
(define r2sin
- (let ((documentation "(make-r2sin frequency (r 0.5)) creates an r2sin generator. (r2sin gen (fm 0.0))
+ (let ((+documentation+ "(make-r2sin frequency (r 0.5)) creates an r2sin generator. (r2sin gen (fm 0.0))
returns many even-numbered sines from frequency with amplitude r^(2k)/(2k)!."))
(lambda* (gen (fm 0.0))
@@ -2063,7 +2063,7 @@ returns many even-numbered sines from frequency with amplitude r^(2k)/(2k)!."))
(define r2cos
- (let ((documentation "(make-r2cos frequency (r 0.5)) creates an r2cos generator. (r2cos gen (fm 0.0))
+ (let ((+documentation+ "(make-r2cos frequency (r 0.5)) creates an r2cos generator. (r2cos gen (fm 0.0))
returns many even-numbered cosines from frequency with amplitude r^(2k)/(2k)!."))
(lambda* (gen (fm 0.0))
@@ -2092,7 +2092,7 @@ returns many even-numbered cosines from frequency with amplitude r^(2k)/(2k)!.")
(define r2ssb
- (let ((documentation "(make-r2ssb frequency (ratio 1.0) (r 0.5)) creates an r2ssb generator. (r2ssb gen (fm 0.0))
+ (let ((+documentation+ "(make-r2ssb frequency (ratio 1.0) (r 0.5)) creates an r2ssb generator. (r2ssb gen (fm 0.0))
returns many even-numbered sinusoids from frequency spaced by frequency * ratio, if that makes any sense, with amplitude r^(2k)/(2k)!."))
(lambda* (gen (fm 0.0))
@@ -2161,7 +2161,7 @@ returns many even-numbered sinusoids from frequency spaced by frequency * ratio,
(define eoddcos
- (let ((documentation "(make-eoddcos frequency (r 0.5)) creates an eoddcos generator. (eoddcos gen (fm 0.0))
+ (let ((+documentation+ "(make-eoddcos frequency (r 0.5)) creates an eoddcos generator. (eoddcos gen (fm 0.0))
returns many cosines from spaced by frequency with amplitude e^(-r)."))
(lambda* (gen (fm 0.0))
@@ -2211,7 +2211,7 @@ returns many cosines from spaced by frequency with amplitude e^(-r)."))
(define koddcos
- (let ((documentation "(make-koddcos frequency) creates a koddcos generator. (koddcos gen (fm 0.0))
+ (let ((+documentation+ "(make-koddcos frequency) creates a koddcos generator. (koddcos gen (fm 0.0))
returns many cosines from spaced by frequency with amplitude too messy to write down, and the output looks wrong anyway."))
(lambda* (gen (fm 0.0))
@@ -2269,7 +2269,7 @@ returns many cosines from spaced by frequency with amplitude too messy to write
(define rkcos
- (let ((documentation "(make-rkcos frequency (r 0.5)) creates an rkcos generator. (rkcos gen (fm 0.0))
+ (let ((+documentation+ "(make-rkcos frequency (r 0.5)) creates an rkcos generator. (rkcos gen (fm 0.0))
returns many cosines from spaced by frequency with amplitude (r^k)/k."))
(lambda* (gen (fm 0.0))
@@ -2304,7 +2304,7 @@ returns many cosines from spaced by frequency with amplitude (r^k)/k."))
(define rksin
- (let ((documentation "(make-rksin frequency (r 0.5)) creates an rksin generator. (rksin gen (fm 0.0))
+ (let ((+documentation+ "(make-rksin frequency (r 0.5)) creates an rksin generator. (rksin gen (fm 0.0))
returns many sines from spaced by frequency with amplitude (r^k)/k."))
(lambda* (gen (fm 0.0))
@@ -2342,7 +2342,7 @@ returns many sines from spaced by frequency with amplitude (r^k)/k."))
(define rkssb
- (let ((documentation "(make-rkssb frequency (ratio 1.0) (r 0.5)) creates an rkssb generator. (rkssb gen (fm 0.0))
+ (let ((+documentation+ "(make-rkssb frequency (ratio 1.0) (r 0.5)) creates an rkssb generator. (rkssb gen (fm 0.0))
returns many sinusoids from frequency from spaced by frequency * ratio with amplitude (r^k)/k."))
(lambda* (gen (fm 0.0))
@@ -2396,7 +2396,7 @@ returns many sinusoids from frequency from spaced by frequency * ratio with ampl
(define rk!cos
- (let ((documentation "(make-rk!cos frequency (r 0.5)) creates an rk!cos generator. (rk!cos gen (fm 0.0))
+ (let ((+documentation+ "(make-rk!cos frequency (r 0.5)) creates an rk!cos generator. (rk!cos gen (fm 0.0))
returns many cosines spaced by frequency with amplitude (r^k)/k!."))
(lambda* (gen (fm 0.0))
@@ -2493,7 +2493,7 @@ returns many cosines spaced by frequency with amplitude (r^k)/k!."))
(define rk!ssb
- (let ((documentation "(make-rk!ssb frequency (ratio 1.0) (r 0.5)) creates an rk!ssb generator. (rk!ssb gen (fm 0.0))
+ (let ((+documentation+ "(make-rk!ssb frequency (ratio 1.0) (r 0.5)) creates an rk!ssb generator. (rk!ssb gen (fm 0.0))
returns many sinusoids from frequency spaced by frequency * ratio with amplitude (r^k)/k!."))
(lambda* (gen (fm 0.0))
@@ -2563,7 +2563,7 @@ returns many sinusoids from frequency spaced by frequency * ratio with amplitude
(define rxyk!sin
- (let ((documentation "(make-rxyk!sin frequency (ratio 1.0) (r 0.5)) creates an rxyk!sin generator. (rxyk!sin gen (fm 0.0))
+ (let ((+documentation+ "(make-rxyk!sin frequency (ratio 1.0) (r 0.5)) creates an rxyk!sin generator. (rxyk!sin gen (fm 0.0))
returns many sines from frequency spaced by frequency * ratio with amplitude r^k/k!."))
(lambda* (gen (fm 0.0))
@@ -2595,7 +2595,7 @@ returns many sines from frequency spaced by frequency * ratio with amplitude r^k
(define rxyk!cos
- (let ((documentation "(make-rxyk!cos frequency (ratio 1.0) (r 0.5)) creates an rxyk!cos generator. (rxyk!cos gen (fm 0.0))
+ (let ((+documentation+ "(make-rxyk!cos frequency (ratio 1.0) (r 0.5)) creates an rxyk!cos generator. (rxyk!cos gen (fm 0.0))
returns many cosines from frequency spaced by frequency * ratio with amplitude r^k/k!."))
(lambda* (gen (fm 0.0))
@@ -2682,7 +2682,7 @@ returns many cosines from frequency spaced by frequency * ratio with amplitude r
(define r2k!cos
- (let ((documentation "(make-2rk!cos frequency (r 0.5) (k 0.0)) creates an r2k!cos generator. (r2k!cos gen (fm 0.0))
+ (let ((+documentation+ "(make-2rk!cos frequency (r 0.5) (k 0.0)) creates an r2k!cos generator. (r2k!cos gen (fm 0.0))
returns many cosines spaced by frequency with amplitude too messy to write down."))
(lambda* (gen (fm 0.0))
@@ -2794,7 +2794,7 @@ returns many cosines spaced by frequency with amplitude too messy to write down.
(define k2sin
- (let ((documentation "(make-k2sin frequency) creates a k2sin generator. (k2sin gen (fm 0.0))
+ (let ((+documentation+ "(make-k2sin frequency) creates a k2sin generator. (k2sin gen (fm 0.0))
returns many sines spaced by frequency with amplitude 1/(2^k)."))
(lambda* (gen (fm 0.0))
@@ -2823,7 +2823,7 @@ returns many sines spaced by frequency with amplitude 1/(2^k)."))
(define k2cos
- (let ((documentation "(make-k2cos frequency) creates a k2cos generator. (k2cos gen (fm 0.0))
+ (let ((+documentation+ "(make-k2cos frequency) creates a k2cos generator. (k2cos gen (fm 0.0))
returns many cosines spaced by frequency with amplitude 1/(2^k)."))
(lambda* (gen (fm 0.0))
@@ -2851,7 +2851,7 @@ returns many cosines spaced by frequency with amplitude 1/(2^k)."))
(define k2ssb
- (let ((documentation "(make-k2ssb frequency (ratio 1.0)) creates a k2ssb generator. (k2ssb gen (fm 0.0))
+ (let ((+documentation+ "(make-k2ssb frequency (ratio 1.0)) creates a k2ssb generator. (k2ssb gen (fm 0.0))
returns many sinusoids from frequency spaced by frequency * ratio with amplitude 1/(2^k)."))
(lambda* (gen (fm 0.0))
@@ -2895,7 +2895,7 @@ returns many sinusoids from frequency spaced by frequency * ratio with amplitude
(define dblsum
- (let ((documentation "(make-dblsum frequency (r 0.5)) creates a dblsum generator. (dblsum gen (fm 0.0))
+ (let ((+documentation+ "(make-dblsum frequency (r 0.5)) creates a dblsum generator. (dblsum gen (fm 0.0))
returns many sines from frequency spaced by frequency * (2k -1) with amplitude r^k (this is buggy)."))
(lambda* (gen (fm 0.0))
@@ -2946,7 +2946,7 @@ returns many sines from frequency spaced by frequency * (2k -1) with amplitude r
(define rkoddssb
- (let ((documentation "(make-rkoddssb frequency (ratio 1.0) (r 0.5)) creates an rkoddssb generator. (rkoddssb gen (fm 0.0))
+ (let ((+documentation+ "(make-rkoddssb frequency (ratio 1.0) (r 0.5)) creates an rkoddssb generator. (rkoddssb gen (fm 0.0))
returns many sinusoids from frequency spaced by frequency * 2 * ratio with amplitude (r^(2k-1))/(2k-1)."))
(lambda* (gen (fm 0.0))
@@ -3020,7 +3020,7 @@ returns many sinusoids from frequency spaced by frequency * 2 * ratio with ampli
(define krksin
- (let ((documentation "(make-krksin frequency (r 0.5)) creates a krksin generator. (krksin gen (fm 0.0))
+ (let ((+documentation+ "(make-krksin frequency (r 0.5)) creates a krksin generator. (krksin gen (fm 0.0))
returns many sines spaced by frequency with amplitude kr^k."))
(lambda* (gen (fm 0.0))
@@ -3107,7 +3107,7 @@ returns many sines spaced by frequency with amplitude kr^k."))
(define abssin
- (let ((documentation "(make-abssin frequency) creates an abssin generator. (abssin gen (fm 0.0)) returns (abs oscil)."))
+ (let ((+documentation+ "(make-abssin frequency) creates an abssin generator. (abssin gen (fm 0.0)) returns (abs oscil)."))
(lambda* (gen (fm 0.0))
(let-set! gen 'fm fm)
@@ -3160,7 +3160,7 @@ returns many sines spaced by frequency with amplitude kr^k."))
(define abcos
- (let ((documentation "(make-abcos frequency (a 0.5) (b 0.25)) creates an abcos generator. (abcos gen (fm 0.0))
+ (let ((+documentation+ "(make-abcos frequency (a 0.5) (b 0.25)) creates an abcos generator. (abcos gen (fm 0.0))
returns many cosines spaced by frequency with amplitude (-a+sqrt(a^2-b^2))^k/b^k."))
(lambda* (gen (fm 0.0))
@@ -3190,7 +3190,7 @@ returns many cosines spaced by frequency with amplitude (-a+sqrt(a^2-b^2))^k/b^k
(define absin
- (let ((documentation "(make-absin frequency (a 0.5) (b 0.25)) creates an absin generator. (absin gen (fm 0.0))
+ (let ((+documentation+ "(make-absin frequency (a 0.5) (b 0.25)) creates an absin generator. (absin gen (fm 0.0))
returns many sines spaced by frequency with amplitude (-a+sqrt(a^2-b^2))^k/b^k."))
(lambda* (gen (fm 0.0))
@@ -3230,7 +3230,7 @@ returns many sines spaced by frequency with amplitude (-a+sqrt(a^2-b^2))^k/b^k."
(define r2k2cos
- (let ((documentation "(make-r2k2cos frequency (r 1.0)) creates an r2k2cos generator. (r2k2cos gen (fm 0.0))
+ (let ((+documentation+ "(make-r2k2cos frequency (r 1.0)) creates an r2k2cos generator. (r2k2cos gen (fm 0.0))
returns many cosines spaced by frequency with amplitude 1/(r^2+k^2)."))
(lambda* (gen (fm 0.0))
@@ -3275,7 +3275,7 @@ returns many cosines spaced by frequency with amplitude 1/(r^2+k^2)."))
(define blsaw
- (let ((documentation "(make-blsaw frequency (n 1) (r 0.5)) creates a blsaw generator. (blsaw gen (fm 0.0)) returns a band-limited sawtooth wave."))
+ (let ((+documentation+ "(make-blsaw frequency (n 1) (r 0.5)) creates a blsaw generator. (blsaw gen (fm 0.0)) returns a band-limited sawtooth wave."))
(lambda* (gen (fm 0.0))
(let-set! gen 'fm fm)
(with-let gen
@@ -3315,7 +3315,7 @@ returns many cosines spaced by frequency with amplitude 1/(r^2+k^2)."))
(define asyfm-J
- (let ((documentation "(asyfm-J gen fm) is the same as the CLM asymmetric-fm generator (index=1.0), set r != 1.0 to get the asymmetric spectra"))
+ (let ((+documentation+ "(asyfm-J gen fm) is the same as the CLM asymmetric-fm generator (index=1.0), set r != 1.0 to get the asymmetric spectra"))
(lambda* (gen (fm 0.0))
(let-set! gen 'fm fm)
(with-let gen
@@ -3368,7 +3368,7 @@ returns many cosines spaced by frequency with amplitude 1/(r^2+k^2)."))
|#
(define asyfm-I
- (let ((documentation "(asyfm-I gen fm) is the I0 case of the asymmetric-fm generator"))
+ (let ((+documentation+ "(asyfm-I gen fm) is the I0 case of the asymmetric-fm generator"))
(lambda* (gen (fm 0.0))
(let-set! gen 'fm fm)
(with-let gen
@@ -3409,7 +3409,7 @@ returns many cosines spaced by frequency with amplitude 1/(r^2+k^2)."))
(define bess
- (let ((documentation "(make-bess frequency (n 0)) creates a bessel function (Jn) generator. (bess gen (fm 0.0)) returns Jn."))
+ (let ((+documentation+ "(make-bess frequency (n 0)) creates a bessel function (Jn) generator. (bess gen (fm 0.0)) returns Jn."))
(lambda* (gen (fm 0.0))
(let-set! gen 'fm fm)
(with-let gen
@@ -3469,7 +3469,7 @@ returns many cosines spaced by frequency with amplitude 1/(r^2+k^2)."))
(define jjcos
- (let ((documentation "(make-jjcos frequency (r 0.5) (a 1.0) (k 1)) creates a jjcos generator. (jjcos gen (fm 0.0))
+ (let ((+documentation+ "(make-jjcos frequency (r 0.5) (a 1.0) (k 1)) creates a jjcos generator. (jjcos gen (fm 0.0))
returns a sum of cosines scaled by a product of Bessel functions."))
(lambda* (gen (fm 0.0))
@@ -3595,7 +3595,7 @@ which again matches
(define j0evencos
- (let ((documentation "(make-j0evencos frequency (index 1.0)) creates a j0evencos generator. (j0evencos gen (fm 0.0))
+ (let ((+documentation+ "(make-j0evencos frequency (index 1.0)) creates a j0evencos generator. (j0evencos gen (fm 0.0))
returns a sum of cosines scaled Jk^2(index/2)."))
(lambda* (gen (fm 0.0))
@@ -3721,7 +3721,7 @@ index 10 (so 10/2 is the bes-jn arg):
(define j2cos
- (let ((documentation "(make-j2cos frequency (r 0.5) (n 1)) creates a j2cos generator. (j2cos gen (fm 0.0))
+ (let ((+documentation+ "(make-j2cos frequency (r 0.5) (n 1)) creates a j2cos generator. (j2cos gen (fm 0.0))
returns a sum of cosines scaled in a very complicated way."))
(lambda* (gen (fm 0.0))
@@ -3764,7 +3764,7 @@ returns a sum of cosines scaled in a very complicated way."))
(define jpcos
- (let ((documentation "(make-jpcos frequency (r 0.5) (a 0.0) (k 1)) creates a jpcos generator. (jpcos gen (fm 0.0))
+ (let ((+documentation+ "(make-jpcos frequency (r 0.5) (a 0.0) (k 1)) creates a jpcos generator. (jpcos gen (fm 0.0))
returns a sum of cosines scaled in a very complicated way."))
(lambda* (gen (fm 0.0))
@@ -3842,7 +3842,7 @@ returns a sum of cosines scaled in a very complicated way."))
(define jncos
- (let ((documentation "(make-jncos frequency (r 0.5) (a 1.0) (n 0)) creates a jncos generator. (jncos gen (fm 0.0))
+ (let ((+documentation+ "(make-jncos frequency (r 0.5) (a 1.0) (n 0)) creates a jncos generator. (jncos gen (fm 0.0))
returns a sum of cosines scaled in a very complicated way."))
(lambda* (gen (fm 0.0))
@@ -3875,7 +3875,7 @@ returns a sum of cosines scaled in a very complicated way."))
(define j0j1cos
- (let ((documentation "(make-j0j1cos frequency (index 1.0)) creates a j0j1cos generator. (j0j1cos gen (fm 0.0))
+ (let ((+documentation+ "(make-j0j1cos frequency (index 1.0)) creates a j0j1cos generator. (j0j1cos gen (fm 0.0))
returns a sum of cosines scaled in a very complicated way."))
(lambda* (gen (fm 0.0))
@@ -3969,7 +3969,7 @@ returns a sum of cosines scaled in a very complicated way."))
(define jycos
- (let ((documentation "(make-jycos frequency (r 1.0) (a 0.5)) creates a jycos generator. (jycos gen (fm 0.0))
+ (let ((+documentation+ "(make-jycos frequency (r 1.0) (a 0.5)) creates a jycos generator. (jycos gen (fm 0.0))
returns a sum of cosines scaled by Yn(r)*Jn(r)."))
(lambda* (gen (fm 0.0))
@@ -4023,7 +4023,7 @@ returns a sum of cosines scaled by Yn(r)*Jn(r)."))
(define jcos
- (let ((documentation "(make-jcos frequency (n 0) (r 1.0) (a 0.5)) creates a jcos generator. (jcos gen (fm 0.0))
+ (let ((+documentation+ "(make-jcos frequency (n 0) (r 1.0) (a 0.5)) creates a jcos generator. (jcos gen (fm 0.0))
returns a sum of cosines scaled in some complex manner."))
(lambda* (gen (fm 0.0))
@@ -4054,7 +4054,7 @@ returns a sum of cosines scaled in some complex manner."))
(define sin2n
- (let ((documentation "(make-sin2n frequency (n 0) (r 1.0)) creates a sin2n generator. (sin2n gen (fm 0.0)) returns (r*sin)^(2n)"))
+ (let ((+documentation+ "(make-sin2n frequency (n 0) (r 1.0)) creates a sin2n generator. (sin2n gen (fm 0.0)) returns (r*sin)^(2n)"))
(lambda* (gen (fm 0.0))
(let-set! gen 'fm fm)
(with-let gen
@@ -4134,7 +4134,7 @@ returns a sum of cosines scaled in some complex manner."))
(define blackman
- (let ((documentation "(make-blackman frequency (n 4)) creates a blackman generator. (blackman gen (fm 0.0))
+ (let ((+documentation+ "(make-blackman frequency (n 4)) creates a blackman generator. (blackman gen (fm 0.0))
returns the nth Blackman-Harris fft data window as a periodic waveform. (n <= 10)"))
(lambda* (gen (fm 0.0))
@@ -4192,7 +4192,7 @@ returns the nth Blackman-Harris fft data window as a periodic waveform. (n <= 10
(define fmssb
- (let ((documentation "(make-fmssb frequency (ratio 1.0) (index 1.0)) creates an fmssb generator. (fmssb gen (fm 0.0)) returns single-sideband FM."))
+ (let ((+documentation+ "(make-fmssb frequency (ratio 1.0) (index 1.0)) creates an fmssb generator. (fmssb gen (fm 0.0)) returns single-sideband FM."))
(lambda* (gen (fm 0.0))
(let-set! gen 'fm fm)
(with-let gen
@@ -4414,7 +4414,7 @@ returns the nth Blackman-Harris fft data window as a periodic waveform. (n <= 10
(define k3sin
- (let ((documentation "(make-k3sin frequency) creates a k3sin generator. (k3sin gen (fm 0.0)) returns a sum of sines scaled by k^3."))
+ (let ((+documentation+ "(make-k3sin frequency) creates a k3sin generator. (k3sin gen (fm 0.0)) returns a sum of sines scaled by k^3."))
(lambda* (gen (fm 0.0))
(let-set! gen 'fm fm)
(with-let gen
@@ -4463,7 +4463,7 @@ returns the nth Blackman-Harris fft data window as a periodic waveform. (n <= 10
(define izcos
- (let ((documentation "(make-izcos frequency (r 1.0)) creates an izcos generator. (izcos gen (fm 0.0)) returns a sum of sines scaled by In(r)."))
+ (let ((+documentation+ "(make-izcos frequency (r 1.0)) creates an izcos generator. (izcos gen (fm 0.0)) returns a sum of sines scaled by In(r)."))
(lambda* (gen (fm 0.0))
(let-set! gen 'fm fm)
(with-let gen
@@ -4591,7 +4591,7 @@ returns the nth Blackman-Harris fft data window as a periodic waveform. (n <= 10
(define adjustable-square-wave
- (let ((documentation "(make-adjustable-square-wave frequency (duty-factor 0.5) (amplitude 1.0))
+ (let ((+documentation+ "(make-adjustable-square-wave frequency (duty-factor 0.5) (amplitude 1.0))
creates an adjustable-square-wave generator. (adjustable-square-wave gen (fm 0.0)) returns a square-wave
where the duty-factor sets the ratio of pulse duration to pulse period."))
@@ -4648,7 +4648,7 @@ where the duty-factor sets the ratio of pulse duration to pulse period."))
(define adjustable-triangle-wave
- (let ((documentation "(make-adjustable-triangle-wave frequency (duty-factor 0.5) (amplitude 1.0)) creates an
+ (let ((+documentation+ "(make-adjustable-triangle-wave frequency (duty-factor 0.5) (amplitude 1.0)) creates an
adjustable-triangle-wave generator. (adjustable-triangle-wave gen (fm 0.0)) returns a triangle-wave where the
duty-factor sets the ratio of pulse duration to pulse period."))
@@ -4705,7 +4705,7 @@ duty-factor sets the ratio of pulse duration to pulse period."))
(define adjustable-sawtooth-wave
- (let ((documentation "(make-adjustable-sawtooth-wave frequency (duty-factor 0.5) (amplitude 1.0)) creates
+ (let ((+documentation+ "(make-adjustable-sawtooth-wave frequency (duty-factor 0.5) (amplitude 1.0)) creates
an adjustable-sawtooth-wave generator. (adjustable-sawtooth-wave gen (fm 0.0)) returns a sawtooth-wave where
the duty-factor sets the ratio of pulse duration to pulse period."))
@@ -4769,7 +4769,7 @@ the duty-factor sets the ratio of pulse duration to pulse period."))
(define adjustable-oscil
- (let ((documentation "(make-adjustable-oscil frequency (duty-factor 0.5)) creates an adjustable-oscil
+ (let ((+documentation+ "(make-adjustable-oscil frequency (duty-factor 0.5)) creates an adjustable-oscil
generator. (adjustable-oscil gen (fm 0.0)) returns a sinusoid where the duty-factor sets the ratio of pulse duration to pulse period."))
(lambda* (g (fm 0.0))
@@ -4836,7 +4836,7 @@ generator. (adjustable-oscil gen (fm 0.0)) returns a sinusoid where the duty-fac
(define round-interp
- (let ((documentation "(make-round-interp frequency (n 1) (amplitude 1.0)) creates a round-interp
+ (let ((+documentation+ "(make-round-interp frequency (n 1) (amplitude 1.0)) creates a round-interp
generator. (round-interp gen (fm 0.0)) returns a rand-interp sequence low-pass filtered by a moving-average generator of length n."))
(lambda* (gen (fm 0.0))
@@ -4920,7 +4920,7 @@ generator. (round-interp gen (fm 0.0)) returns a rand-interp sequence low-pass f
(define nchoosekcos
- (let ((documentation "(make-nchoosekcos frequency (ratio 1.0) (n 1)) creates an nchoosekcos generator. (nchoosekcos gen (fm 0.0))
+ (let ((+documentation+ "(make-nchoosekcos frequency (ratio 1.0) (n 1)) creates an nchoosekcos generator. (nchoosekcos gen (fm 0.0))
returns a sum of cosines scaled by the binomial coeffcients."))
(lambda* (gen (fm 0.0))
@@ -4987,7 +4987,7 @@ returns a sum of cosines scaled by the binomial coeffcients."))
(define sinc-train
- (let ((documentation "(make-sinc-train frequency (n 1)) creates a sinc-train generator with n components. (sinc-train gen (fm 0.0)) returns a sinc-train"))
+ (let ((+documentation+ "(make-sinc-train frequency (n 1)) creates a sinc-train generator with n components. (sinc-train gen (fm 0.0)) returns a sinc-train"))
(lambda* (gen (fm 0.0))
(let-set! gen 'fm fm)
(with-let gen
@@ -5033,7 +5033,7 @@ returns a sum of cosines scaled by the binomial coeffcients."))
(define pink-noise
- (let ((documentation "(make-pink-noise (n 1)) creates a pink-noise generator with n octaves of rand (12 is recommended). (pink-noise gen)
+ (let ((+documentation+ "(make-pink-noise (n 1)) creates a pink-noise generator with n octaves of rand (12 is recommended). (pink-noise gen)
returns the next random value in the 1/f stream produced by gen."))
(lambda (gen)
@@ -5101,7 +5101,7 @@ returns the next random value in the 1/f stream produced by gen."))
(define brown-noise
- (let ((documentation "(make-brown-noise frequency (amplitude 1.0)) returns a generator that produces
+ (let ((+documentation+ "(make-brown-noise frequency (amplitude 1.0)) returns a generator that produces
brownian noise. (brown-noise gen (fm 0.0)) returns the next brownian noise sample."))
(lambda* (gen (fm 0.0))
@@ -5157,7 +5157,7 @@ brownian noise. (brown-noise gen (fm 0.0)) returns the next brownian noise sampl
(define green-noise
- (let ((documentation "(make-green-noise frequency (amplitude 1.0) (low -1.0) (high 1.0)) returns a new
+ (let ((+documentation+ "(make-green-noise frequency (amplitude 1.0) (low -1.0) (high 1.0)) returns a new
green-noise (bounded brownian noise) generator. (green-noise gen (fm 0.0)) returns the next sample in a
sequence of bounded brownian noise samples."))
@@ -5220,7 +5220,7 @@ sequence of bounded brownian noise samples."))
(define green-noise-interp
- (let ((documentation "(make-green-noise-interp frequency (amplitude 1.0) (low -1.0) (high 1.0)) returns a new
+ (let ((+documentation+ "(make-green-noise-interp frequency (amplitude 1.0) (low -1.0) (high 1.0)) returns a new
interpolating green noise (bounded brownian noise) generator. (green-noise-interp gen (fm 0.0)) returns the next
sample in a sequence of interpolated bounded brownian noise samples."))
@@ -5313,7 +5313,7 @@ sample in a sequence of interpolated bounded brownian noise samples."))
(define moving-sum
- (let ((documentation "(make-moving-sum (n 128)) returns a moving-sum generator. (moving-sum gen input)
+ (let ((+documentation+ "(make-moving-sum (n 128)) returns a moving-sum generator. (moving-sum gen input)
returns the sum of the absolute values in a moving window over the last n inputs."))
(lambda (gen y)
@@ -5380,7 +5380,7 @@ returns the sum of the absolute values in a moving window over the last n inputs
(define moving-rms
- (let ((documentation "(make-moving-rms (n 128) returns a moving-rms generator. (moving-rms gen input) returns
+ (let ((+documentation+ "(make-moving-rms (n 128) returns a moving-rms generator. (moving-rms gen input) returns
the rms of the values in a window over the last n inputs."))
(lambda (gen y)
@@ -5411,7 +5411,7 @@ the rms of the values in a window over the last n inputs."))
#|
(define moving-length
- (let ((documentation "(make-moving-length (n 128) returns a moving-length generator. (moving-length gen input)
+ (let ((+documentation+ "(make-moving-length (n 128) returns a moving-length generator. (moving-length gen input)
returns the length of the values in a window over the last few inputs."))
(lambda (gen y)
@@ -5467,7 +5467,7 @@ returns the length of the values in a window over the last few inputs."))
(define weighted-moving-average
- (let ((documentation "(make-weighted-moving-average (n 128)) returns a weighted-moving-average
+ (let ((+documentation+ "(make-weighted-moving-average (n 128)) returns a weighted-moving-average
generator. (weighted-moving-average gen y) returns the sum of the last n inputs weighted by 1/n"))
(lambda (gen y)
@@ -5497,7 +5497,7 @@ generator. (weighted-moving-average gen y) returns the sum of the last n inputs
(define exponentially-weighted-moving-average
- (let ((documentation "(make-exponentially-weighted-moving-average (n 128) returns an
+ (let ((+documentation+ "(make-exponentially-weighted-moving-average (n 128) returns an
exponentially-weighted-moving-average generator. (exponentially-weighted-moving-average gen y)
returns the sum of the last n inputs weighted by (-n/(n+1))^k"))
@@ -6041,7 +6041,7 @@ returns the sum of the last n inputs weighted by (-n/(n+1))^k"))
(define tanhsin
- (let ((documentation "(make-tanhsin (frequency 0.0) (r 1.0) (initial-phase 0.0) returns a tanhsin
+ (let ((+documentation+ "(make-tanhsin (frequency 0.0) (r 1.0) (initial-phase 0.0) returns a tanhsin
generator. (tanhsin gen (fm 0.0)) produces tanh(r*sin) which approaches a square wave as r increases."))
(lambda* (gen (fm 0.0))
@@ -6084,7 +6084,7 @@ generator. (tanhsin gen (fm 0.0)) produces tanh(r*sin) which approaches a square
(define moving-fft
- (let ((documentation "(make-moving-fft reader (size 512) (hop 128)) returns a moving-fft generator. (moving-fft gen)
+ (let ((+documentation+ "(make-moving-fft reader (size 512) (hop 128)) returns a moving-fft generator. (moving-fft gen)
produces an FFT (polar form) of 'size' samples every 'hop' samples, taking input from the readin generator 'reader'.
The magnitudes are available as mus-xcoeffs, the phases as mus-ycoeffs, and the current input data as mus-data."))
@@ -6373,7 +6373,7 @@ The magnitudes are available as mus-xcoeffs, the phases as mus-ycoeffs, and the
(define moving-autocorrelation
- (let ((documentation "(make-moving-autocorrelation reader (size 512) (hop 128)) returns a moving-autocorrelation
+ (let ((+documentation+ "(make-moving-autocorrelation reader (size 512) (hop 128)) returns a moving-autocorrelation
generator. (moving-autocorrelation gen) produces the autocorrelation of 'size' samples every 'hop' samples, taking
input from the readin generator 'reader'. The output data is available via mus-data."))
@@ -6509,7 +6509,7 @@ input from the readin generator 'reader'. The output data is available via mus-
(frequency 0.0) (angle 0.0) fm)
(define circler
- (let ((documentation "(make-circler (frequency 0.0) returns a circler generator. (circler gen (fm 0.0)) produces a waveform made up of half circles"))
+ (let ((+documentation+ "(make-circler (frequency 0.0) returns a circler generator. (circler gen (fm 0.0)) produces a waveform made up of half circles"))
(lambda* (gen (fm 0.0))
(let-set! gen 'fm fm)
(with-let gen
diff --git a/gl.c b/gl.c
index 5b41114..1ada607 100644
--- a/gl.c
+++ b/gl.c
@@ -4455,9 +4455,9 @@ static void define_functions(void)
{
#if HAVE_SCHEME
static s7_pointer s_boolean, s_integer, s_real, s_any;
-static s7_pointer pl_pit, pl_piiit, pl_piit, pl_t, pl_ttri, pl_ttit, pl_ttr, pl_ttir, pl_prrrt, pl_prrrrtttrrt, pl_ttb, pl_tti, pl_ttiti, pl_ttrriir, pl_ttititiiti, pl_ttititi, pl_ttrri, pl_ttrrri, pl_tb, pl_bt, pl_iiiiitiiit, pl_iiiiiiiit, pl_iiiiiiiiiiit, pl_iiiiiiit, pl_iiiiiiiiiit, pl_iiiiiit, pl_iiiiiiiiit, pl_i, pl_tiiit, pl_tiirrrrt, pl_tiiiit, pl_tiiiiiiit, pl_tiiiiiiiit, pl_tirriit, pl_tirriirriit, pl_tirrir, pl_tir, pl_tiit, pl_tit, pl_tiiiiiiiiit, pl_tiiiiiiiiiit, pl_tiiib, pl_ti, pl_tiiiiiit, pl_tiir, pl_tiiiiit, pl_tibiit, pl_tiib, pl_bit, pl_bi, pl_trrrrt, pl_tr;
+static s7_pointer pl_tiirrrrt, pl_tiiiiiiit, pl_tiiiiiiiit, pl_tirriirriit, pl_tiiiiiiiiit, pl_tiiiiiiiiiit, pl_tiiiiiit, pl_ti, pl_tir, pl_tit, pl_tiit, pl_tiir, pl_tiib, pl_tiiit, pl_tiiib, pl_tiiiit, pl_tirrir, pl_tibiit, pl_tirriit, pl_tiiiiit, pl_iiiiiit, pl_iiiiitiiit, pl_iiiiiiiit, pl_iiiiiiiiiiit, pl_iiiiiiit, pl_iiiiiiiiiit, pl_iiiiiiiiit, pl_prrrt, pl_prrrrtttrrt, pl_t, pl_i, pl_tb, pl_bt, pl_pit, pl_piit, pl_piiit, pl_bi, pl_tr, pl_bit, pl_trrrrt, pl_ttr, pl_ttb, pl_tti, pl_ttri, pl_ttit, pl_ttir, pl_ttiti, pl_ttrri, pl_ttrrri, pl_ttrriir, pl_ttititi, pl_ttititiiti;
#if USE_MOTIF
-static s7_pointer pl_tttti, pl_ttttb, pl_pttit, pl_pt;
+static s7_pointer pl_pt, pl_pttit, pl_tttti, pl_ttttb;
#endif
s_boolean = s7_make_symbol(s7, "boolean?");
@@ -4465,64 +4465,64 @@ static s7_pointer pl_tttti, pl_ttttb, pl_pttit, pl_pt;
s_real = s7_make_symbol(s7, "real?");
s_any = s7_t(s7);
- pl_pit = s7_make_circular_signature(s7, 2, 3, s_any, s_integer, s_any);
- pl_piiit = s7_make_circular_signature(s7, 4, 5, s_any, s_integer, s_integer, s_integer, s_any);
- pl_piit = s7_make_circular_signature(s7, 3, 4, s_any, s_integer, s_integer, s_any);
- pl_t = s7_make_circular_signature(s7, 0, 1, s_any);
- pl_ttri = s7_make_circular_signature(s7, 3, 4, s_any, s_any, s_real, s_integer);
- pl_ttit = s7_make_circular_signature(s7, 3, 4, s_any, s_any, s_integer, s_any);
- pl_ttr = s7_make_circular_signature(s7, 2, 3, s_any, s_any, s_real);
- pl_ttir = s7_make_circular_signature(s7, 3, 4, s_any, s_any, s_integer, s_real);
- pl_prrrt = s7_make_circular_signature(s7, 4, 5, s_any, s_real, s_real, s_real, s_any);
- pl_prrrrtttrrt = s7_make_circular_signature(s7, 10, 11, s_any, s_real, s_real, s_real, s_real, s_any, s_any, s_any, s_real, s_real, s_any);
- pl_ttb = s7_make_circular_signature(s7, 2, 3, s_any, s_any, s_boolean);
- pl_tti = s7_make_circular_signature(s7, 2, 3, s_any, s_any, s_integer);
- pl_ttiti = s7_make_circular_signature(s7, 4, 5, s_any, s_any, s_integer, s_any, s_integer);
- pl_ttrriir = s7_make_circular_signature(s7, 6, 7, s_any, s_any, s_real, s_real, s_integer, s_integer, s_real);
- pl_ttititiiti = s7_make_circular_signature(s7, 9, 10, s_any, s_any, s_integer, s_any, s_integer, s_any, s_integer, s_integer, s_any, s_integer);
- pl_ttititi = s7_make_circular_signature(s7, 6, 7, s_any, s_any, s_integer, s_any, s_integer, s_any, s_integer);
- pl_ttrri = s7_make_circular_signature(s7, 4, 5, s_any, s_any, s_real, s_real, s_integer);
- pl_ttrrri = s7_make_circular_signature(s7, 5, 6, s_any, s_any, s_real, s_real, s_real, s_integer);
- pl_tb = s7_make_circular_signature(s7, 1, 2, s_any, s_boolean);
- pl_bt = s7_make_circular_signature(s7, 1, 2, s_boolean, s_any);
- pl_iiiiitiiit = s7_make_circular_signature(s7, 9, 10, s_integer, s_integer, s_integer, s_integer, s_integer, s_any, s_integer, s_integer, s_integer, s_any);
- pl_iiiiiiiit = s7_make_circular_signature(s7, 8, 9, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_any);
- pl_iiiiiiiiiiit = s7_make_circular_signature(s7, 11, 12, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_any);
- pl_iiiiiiit = s7_make_circular_signature(s7, 7, 8, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_any);
- pl_iiiiiiiiiit = s7_make_circular_signature(s7, 10, 11, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_any);
- pl_iiiiiit = s7_make_circular_signature(s7, 6, 7, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_any);
- pl_iiiiiiiiit = s7_make_circular_signature(s7, 9, 10, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_any);
- pl_i = s7_make_circular_signature(s7, 0, 1, s_integer);
- pl_tiiit = s7_make_circular_signature(s7, 4, 5, s_any, s_integer, s_integer, s_integer, s_any);
pl_tiirrrrt = s7_make_circular_signature(s7, 7, 8, s_any, s_integer, s_integer, s_real, s_real, s_real, s_real, s_any);
- pl_tiiiit = s7_make_circular_signature(s7, 5, 6, s_any, s_integer, s_integer, s_integer, s_integer, s_any);
pl_tiiiiiiit = s7_make_circular_signature(s7, 8, 9, s_any, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_any);
pl_tiiiiiiiit = s7_make_circular_signature(s7, 9, 10, s_any, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_any);
- pl_tirriit = s7_make_circular_signature(s7, 6, 7, s_any, s_integer, s_real, s_real, s_integer, s_integer, s_any);
pl_tirriirriit = s7_make_circular_signature(s7, 10, 11, s_any, s_integer, s_real, s_real, s_integer, s_integer, s_real, s_real, s_integer, s_integer, s_any);
- pl_tirrir = s7_make_circular_signature(s7, 5, 6, s_any, s_integer, s_real, s_real, s_integer, s_real);
- pl_tir = s7_make_circular_signature(s7, 2, 3, s_any, s_integer, s_real);
- pl_tiit = s7_make_circular_signature(s7, 3, 4, s_any, s_integer, s_integer, s_any);
- pl_tit = s7_make_circular_signature(s7, 2, 3, s_any, s_integer, s_any);
pl_tiiiiiiiiit = s7_make_circular_signature(s7, 10, 11, s_any, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_any);
pl_tiiiiiiiiiit = s7_make_circular_signature(s7, 11, 12, s_any, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_any);
- pl_tiiib = s7_make_circular_signature(s7, 4, 5, s_any, s_integer, s_integer, s_integer, s_boolean);
- pl_ti = s7_make_circular_signature(s7, 1, 2, s_any, s_integer);
pl_tiiiiiit = s7_make_circular_signature(s7, 7, 8, s_any, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_any);
+ pl_ti = s7_make_circular_signature(s7, 1, 2, s_any, s_integer);
+ pl_tir = s7_make_circular_signature(s7, 2, 3, s_any, s_integer, s_real);
+ pl_tit = s7_make_circular_signature(s7, 2, 3, s_any, s_integer, s_any);
+ pl_tiit = s7_make_circular_signature(s7, 3, 4, s_any, s_integer, s_integer, s_any);
pl_tiir = s7_make_circular_signature(s7, 3, 4, s_any, s_integer, s_integer, s_real);
- pl_tiiiiit = s7_make_circular_signature(s7, 6, 7, s_any, s_integer, s_integer, s_integer, s_integer, s_integer, s_any);
- pl_tibiit = s7_make_circular_signature(s7, 5, 6, s_any, s_integer, s_boolean, s_integer, s_integer, s_any);
pl_tiib = s7_make_circular_signature(s7, 3, 4, s_any, s_integer, s_integer, s_boolean);
- pl_bit = s7_make_circular_signature(s7, 2, 3, s_boolean, s_integer, s_any);
+ pl_tiiit = s7_make_circular_signature(s7, 4, 5, s_any, s_integer, s_integer, s_integer, s_any);
+ pl_tiiib = s7_make_circular_signature(s7, 4, 5, s_any, s_integer, s_integer, s_integer, s_boolean);
+ pl_tiiiit = s7_make_circular_signature(s7, 5, 6, s_any, s_integer, s_integer, s_integer, s_integer, s_any);
+ pl_tirrir = s7_make_circular_signature(s7, 5, 6, s_any, s_integer, s_real, s_real, s_integer, s_real);
+ pl_tibiit = s7_make_circular_signature(s7, 5, 6, s_any, s_integer, s_boolean, s_integer, s_integer, s_any);
+ pl_tirriit = s7_make_circular_signature(s7, 6, 7, s_any, s_integer, s_real, s_real, s_integer, s_integer, s_any);
+ pl_tiiiiit = s7_make_circular_signature(s7, 6, 7, s_any, s_integer, s_integer, s_integer, s_integer, s_integer, s_any);
+ pl_iiiiiit = s7_make_circular_signature(s7, 6, 7, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_any);
+ pl_iiiiitiiit = s7_make_circular_signature(s7, 9, 10, s_integer, s_integer, s_integer, s_integer, s_integer, s_any, s_integer, s_integer, s_integer, s_any);
+ pl_iiiiiiiit = s7_make_circular_signature(s7, 8, 9, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_any);
+ pl_iiiiiiiiiiit = s7_make_circular_signature(s7, 11, 12, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_any);
+ pl_iiiiiiit = s7_make_circular_signature(s7, 7, 8, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_any);
+ pl_iiiiiiiiiit = s7_make_circular_signature(s7, 10, 11, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_any);
+ pl_iiiiiiiiit = s7_make_circular_signature(s7, 9, 10, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_integer, s_any);
+ pl_prrrt = s7_make_circular_signature(s7, 4, 5, s_any, s_real, s_real, s_real, s_any);
+ pl_prrrrtttrrt = s7_make_circular_signature(s7, 10, 11, s_any, s_real, s_real, s_real, s_real, s_any, s_any, s_any, s_real, s_real, s_any);
+ pl_t = s7_make_circular_signature(s7, 0, 1, s_any);
+ pl_i = s7_make_circular_signature(s7, 0, 1, s_integer);
+ pl_tb = s7_make_circular_signature(s7, 1, 2, s_any, s_boolean);
+ pl_bt = s7_make_circular_signature(s7, 1, 2, s_boolean, s_any);
+ pl_pit = s7_make_circular_signature(s7, 2, 3, s_any, s_integer, s_any);
+ pl_piit = s7_make_circular_signature(s7, 3, 4, s_any, s_integer, s_integer, s_any);
+ pl_piiit = s7_make_circular_signature(s7, 4, 5, s_any, s_integer, s_integer, s_integer, s_any);
pl_bi = s7_make_circular_signature(s7, 1, 2, s_boolean, s_integer);
- pl_trrrrt = s7_make_circular_signature(s7, 5, 6, s_any, s_real, s_real, s_real, s_real, s_any);
pl_tr = s7_make_circular_signature(s7, 1, 2, s_any, s_real);
+ pl_bit = s7_make_circular_signature(s7, 2, 3, s_boolean, s_integer, s_any);
+ pl_trrrrt = s7_make_circular_signature(s7, 5, 6, s_any, s_real, s_real, s_real, s_real, s_any);
+ pl_ttr = s7_make_circular_signature(s7, 2, 3, s_any, s_any, s_real);
+ pl_ttb = s7_make_circular_signature(s7, 2, 3, s_any, s_any, s_boolean);
+ pl_tti = s7_make_circular_signature(s7, 2, 3, s_any, s_any, s_integer);
+ pl_ttri = s7_make_circular_signature(s7, 3, 4, s_any, s_any, s_real, s_integer);
+ pl_ttit = s7_make_circular_signature(s7, 3, 4, s_any, s_any, s_integer, s_any);
+ pl_ttir = s7_make_circular_signature(s7, 3, 4, s_any, s_any, s_integer, s_real);
+ pl_ttiti = s7_make_circular_signature(s7, 4, 5, s_any, s_any, s_integer, s_any, s_integer);
+ pl_ttrri = s7_make_circular_signature(s7, 4, 5, s_any, s_any, s_real, s_real, s_integer);
+ pl_ttrrri = s7_make_circular_signature(s7, 5, 6, s_any, s_any, s_real, s_real, s_real, s_integer);
+ pl_ttrriir = s7_make_circular_signature(s7, 6, 7, s_any, s_any, s_real, s_real, s_integer, s_integer, s_real);
+ pl_ttititi = s7_make_circular_signature(s7, 6, 7, s_any, s_any, s_integer, s_any, s_integer, s_any, s_integer);
+ pl_ttititiiti = s7_make_circular_signature(s7, 9, 10, s_any, s_any, s_integer, s_any, s_integer, s_any, s_integer, s_integer, s_any, s_integer);
#if USE_MOTIF
+ pl_pt = s7_make_circular_signature(s7, 1, 2, s_any, s_any);
+ pl_pttit = s7_make_circular_signature(s7, 4, 5, s_any, s_any, s_any, s_integer, s_any);
pl_tttti = s7_make_circular_signature(s7, 4, 5, s_any, s_any, s_any, s_any, s_integer);
pl_ttttb = s7_make_circular_signature(s7, 4, 5, s_any, s_any, s_any, s_any, s_boolean);
- pl_pttit = s7_make_circular_signature(s7, 4, 5, s_any, s_any, s_any, s_integer, s_any);
- pl_pt = s7_make_circular_signature(s7, 1, 2, s_any, s_any);
#endif
#endif
@@ -5736,7 +5736,7 @@ void Init_libgl(void)
define_integers();
define_functions();
Xen_provide_feature("gl");
- Xen_define("gl-version", C_string_to_Xen_string("08-Sep-17"));
+ Xen_define("gl-version", C_string_to_Xen_string("09-Oct-17"));
gl_already_inited = true;
}
}
diff --git a/gtk-effects.scm b/gtk-effects.scm
index 5ba0397..b779c2f 100644
--- a/gtk-effects.scm
+++ b/gtk-effects.scm
@@ -1800,7 +1800,7 @@ http://www.bright.net/~dlphilp/linux_csound.html under Impulse Response Data."))
;;; VARIOUS AND MISCELLANEOUS
(define effects-hello-dentist
- (let ((documentation "(hello-dentist frq amp snd chn) varies the sampling rate randomly, making a voice sound quavery: (hello-dentist 40.0 .1)"))
+ (let ((+documentation+ "(hello-dentist frq amp snd chn) varies the sampling rate randomly, making a voice sound quavery: (hello-dentist 40.0 .1)"))
(lambda* (frq amp beg dur snd chn)
(let ((rn (make-rand-interp :frequency frq :amplitude amp))
(len (or dur (- (framples snd chn) beg)))
diff --git a/gtkex.scm b/gtkex.scm
index 3fd0a88..f88a993 100644
--- a/gtkex.scm
+++ b/gtkex.scm
@@ -46,14 +46,13 @@
(temp (GtkTextIter)))
(gtk_text_buffer_get_iter_at_mark repl_buf pos m)
(if (gtk_text_iter_backward_search pos s7-prompt 0 temp previous #f)
- (if (not (gtk_text_iter_forward_search pos s7-prompt 0 next temp #f))
- (begin
+ (begin
+ (if (not (gtk_text_iter_forward_search pos s7-prompt 0 next temp #f))
(gtk_text_buffer_get_end_iter repl_buf next)
- (gtk_text_buffer_get_text repl_buf previous next #t))
- (begin
- (gtk_text_iter_backward_search next "\n" 0 pos temp #f)
- (gtk_text_iter_backward_search pos "\n" 0 next temp #f)
- (gtk_text_buffer_get_text repl_buf previous next #t)))
+ (begin
+ (gtk_text_iter_backward_search next "\n" 0 pos temp #f)
+ (gtk_text_iter_backward_search pos "\n" 0 next temp #f)))
+ (gtk_text_buffer_get_text repl_buf previous next #t))
"")))
(define (repl-key-press w event data)
@@ -101,9 +100,9 @@
(gtk_text_buffer_get_end_iter repl_buf pos)
(gtk_text_buffer_insert_with_tags repl_buf pos
s7-prompt (length s7-prompt)
- (list prompt_not_editable))
- (gdk_window_resize (gtk_widget_get_window shell) 400 200)
- (gtk_main)))))
+ (list prompt_not_editable)))
+ (gdk_window_resize (gtk_widget_get_window shell) 400 200)
+ (gtk_main))))
#|
diff --git a/headers.c b/headers.c
index 1ad9314..8db9cb1 100644
--- a/headers.c
+++ b/headers.c
@@ -5882,7 +5882,7 @@ static int mus_header_read_1(const char *filename, int fd)
{
header_type = MUS_MIDI_SAMPLE_DUMP;
chans = 1;
- srate = (int)(1.0e9 / (float)((hdrbuf[7] + (hdrbuf[8] << 7) + (hdrbuf[9] << 14))));
+ srate = (int)(1.0e9 / (double)((hdrbuf[7] + (hdrbuf[8] << 7) + (hdrbuf[9] << 14))));
data_size = (hdrbuf[10] + (hdrbuf[11] << 7) + (hdrbuf[12] << 14));
/* since this file type has embedded blocks, we have to translate it elsewhere */
return(MUS_NO_ERROR);
diff --git a/hooks.scm b/hooks.scm
index 0512249..f8ba307 100644
--- a/hooks.scm
+++ b/hooks.scm
@@ -5,7 +5,7 @@
;;; -------- snd-hooks
(define snd-hooks
- (let ((documentation "(snd-hooks) -> list of all global (not channel-specific) hooks"))
+ (let ((+documentation+ "(snd-hooks) -> list of all global (not channel-specific) hooks"))
(lambda ()
(list after-graph-hook after-lisp-graph-hook lisp-graph-hook before-transform-hook mix-release-hook save-hook mus-error-hook
mouse-enter-graph-hook mouse-leave-graph-hook open-raw-sound-hook select-channel-hook after-open-hook close-hook drop-hook update-hook
@@ -21,7 +21,7 @@
before-exit-hook before-close-hook clip-hook))))
(define reset-all-hooks
- (let ((documentation "(reset-all-hooks) removes all Snd hook functions"))
+ (let ((+documentation+ "(reset-all-hooks) removes all Snd hook functions"))
(lambda ()
(for-each
(lambda (n)
@@ -41,7 +41,7 @@
;;; -------- describe-hook
(define describe-hook
- (let ((documentation "(describe-hook hook) -> description of functions on 'hook'"))
+ (let ((+documentation+ "(describe-hook hook) -> description of functions on 'hook'"))
(lambda (hook)
(for-each
(lambda (n)
@@ -52,7 +52,7 @@
;;; -------- local hook
(define with-local-hook
- (let ((documentation "(with-local-hook hook local-hook-procs thunk) evaluates thunk with hook set to local-hook-procs (a list), then restores hook to its previous state"))
+ (let ((+documentation+ "(with-local-hook hook local-hook-procs thunk) evaluates thunk with hook set to local-hook-procs (a list), then restores hook to its previous state"))
(lambda (hook local-hook-procs thunk)
(let ((old-hook-procs (hook-functions hook)))
(set! (hook-functions hook) local-hook-procs)
@@ -64,6 +64,6 @@
;;; -------- hook-member --------
(define hook-member
- (let ((documentation "(hook-member value hook) returns non-#f if 'value' is a member of the hook's function list"))
+ (let ((+documentation+ "(hook-member value hook) returns non-#f if 'value' is a member of the hook's function list"))
(lambda (value hook)
(member value (hook-functions hook)))))
diff --git a/index.html b/index.html
index 6b8fa4c..04b0c1a 100644
--- a/index.html
+++ b/index.html
@@ -37,353 +37,351 @@
</head>
<body class="body">
<div class="topheader">Index</div>
-<!-- created 04-Jul-17 12:32 PDT -->
+<!-- created 03-Oct-17 07:30 PDT -->
<table>
- <tr><td><em class=tab><a href="s7.html#sharpreaders">*#readers*</a></em></td><td></td><td><em class=tab><a href="sndclm.html#eoddcos">eoddcos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mainwidgets">main-widgets</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundsamples">mus-sound-samples</a></em></td><td></td><td><em class=tab><a href="extsnd.html#scaleby">scale-by</a></em></td></tr>
- <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#eoddcos?">eoddcos?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-abcos">make-abcos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundsrate">mus-sound-srate</a></em></td><td></td><td><em class=tab><a href="extsnd.html#scalechannel">scale-channel</a></em></td></tr>
- <tr><td class="green"><div class="centered">A</div></td><td></td><td><em class=tab><a href="extsnd.html#epsbottommargin">eps-bottom-margin</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-absin">make-absin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundtypespecifier">mus-sound-type-specifier</a></em></td><td></td><td><em class=tab><a href="sndscm.html#scaleenvelope">scale-envelope</a></em></td></tr>
- <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#epsfile">eps-file</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-adjustable-sawtooth-wave">make-adjustable-sawtooth-wave</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundwritedate">mus-sound-write-date</a></em></td><td></td><td><em class=tab><a href="sndscm.html#scalemixes">scale-mixes</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#abcos">abcos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#epsleftmargin">eps-left-margin</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-adjustable-square-wave">make-adjustable-square-wave</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mussrate">mus-srate</a></em></td><td></td><td><em class=tab><a href="extsnd.html#scaleselectionby">scale-selection-by</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#abcos?">abcos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#epssize">eps-size</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-adjustable-triangle-wave">make-adjustable-triangle-wave</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-width">mus-width</a></em></td><td></td><td><em class=tab><a href="extsnd.html#scaleselectionto">scale-selection-to</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#abort">abort</a></em></td><td></td><td><em class=tab><a href="sndclm.html#ercos">ercos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-all-pass">make-all-pass</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-xcoeff">mus-xcoeff</a></em></td><td></td><td><em class=tab><a href="sndscm.html#scalesound">scale-sound</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#absin">absin</a></em></td><td></td><td><em class=tab><a href="sndclm.html#ercos?">ercos?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#makeallpassbank">make-all-pass-bank</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-xcoeffs">mus-xcoeffs</a></em></td><td></td><td><em class=tab><a href="sndscm.html#scaletempo">scale-tempo</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#absin?">absin?</a></em></td><td></td><td><em class=tab><a href="s7.html#errorhook">*error-hook*</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-asyfm">make-asyfm</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-ycoeff">mus-ycoeff</a></em></td><td></td><td><em class=tab><a href="extsnd.html#scaleto">scale-to</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#addampcontrols">add-amp-controls</a></em></td><td></td><td><em class=tab><a href="sndclm.html#erssb">erssb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-asymmetric-fm">make-asymmetric-fm</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-ycoeffs">mus-ycoeffs</a></em></td><td></td><td><em class=tab><a href="extsnd.html#scanchannel">scan-channel</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#addcolormap">add-colormap</a></em></td><td></td><td><em class=tab><a href="sndclm.html#erssb?">erssb?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makebandpass">make-bandpass</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#dspdocscanned">scanned synthesis</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#adddeleteoption">add-delete-option</a></em></td><td></td><td><em class=tab><a href="sndclm.html#evenmultiple">even-multiple</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makebandstop">make-bandstop</a></em></td><td></td><td class="green"><div class="centered">N</div></td><td></td><td><em class=tab><a href="sndscm.html#scentroid">scentroid</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#adddirectorytoviewfileslist">add-directory-to-view-files-list</a></em></td><td></td><td><em class=tab><a href="sndclm.html#evenweight">even-weight</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-bess">make-bess</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#scratch">scratch</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#addfilefilter">add-file-filter</a></em></td><td></td><td><em class=tab><a href="sndscm.html#everysample">every-sample?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makebiquad">make-biquad</a></em></td><td></td><td><em class=tab><a href="sndclm.html#n1cos">n1cos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#scriptarg">script-arg</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#addfilesorter">add-file-sorter</a></em></td><td></td><td><em class=tab><a href="extsnd.html#exit">exit</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makebirds">make-birds</a></em></td><td></td><td><em class=tab><a href="sndclm.html#n1cos?">n1cos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#scriptargs">script-args</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#addfiletoviewfileslist">add-file-to-view-files-list</a></em></td><td></td><td><em class=tab><a href="extsnd.html#exithook">exit-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-blackman">make-blackman</a></em></td><td></td><td><em class=tab><a href="extsnd.html#nameclickhook">name-click-hook</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#sndwithnogui"><b>Scripting</b></a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#addmark">add-mark</a></em></td><td></td><td><em class=tab><a href="extsnd.html#expandcontrol">expand-control</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-brown-noise">make-brown-noise</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nchoosekcos">nchoosekcos</a></em></td><td></td><td><em class=tab><a href="sndscm.html#searchforclick">search-for-click</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#addmarkpane">add-mark-pane</a></em></td><td></td><td><em class=tab><a href="extsnd.html#expandcontrolbounds">expand-control-bounds</a></em></td><td></td><td><em class=tab><a href="s7.html#makebytevector">make-byte-vector</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nchoosekcos?">nchoosekcos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#searchprocedure">search-procedure</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#addplayer">add-player</a></em></td><td></td><td><em class=tab><a href="extsnd.html#expandcontrolhop">expand-control-hop</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makedropsite">make-channel-drop-site</a></em></td><td></td><td><em class=tab><a href="sndclm.html#ncos">ncos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#searchexamples"><b>Searching</b></a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#addsoundfileextension">add-sound-file-extension</a></em></td><td></td><td><em class=tab><a href="extsnd.html#expandcontroljitter">expand-control-jitter</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makecolor">make-color</a></em></td><td></td><td><em class=tab><a href="sndclm.html#ncos2?">ncos2?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#secondstosamples">seconds-&gt;samples</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#addsourcefileextension">add-source-file-extension</a></em></td><td></td><td><em class=tab><a href="extsnd.html#expandcontrollength">expand-control-length</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-comb">make-comb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#ncos4?">ncos4?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectall">select-all</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#addtomainmenu">add-to-main-menu</a></em></td><td></td><td><em class=tab><a href="extsnd.html#expandcontrolramp">expand-control-ramp</a></em></td><td></td><td><em class=tab><a href="sndclm.html#makecombbank">make-comb-bank</a></em></td><td></td><td><em class=tab><a href="sndclm.html#ncos?">ncos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectchannel">select-channel</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#addtomenu">add-to-menu</a></em></td><td></td><td><em class=tab><a href="extsnd.html#expandcontrolp">expand-control?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-convolve">make-convolve</a></em></td><td></td><td><em class=tab><a href="extsnd.html#newsound">new-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectchannelhook">select-channel-hook</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#addtooltip">add-tooltip</a></em></td><td></td><td><em class=tab><a href="sndscm.html#explodesf2">explode-sf2</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-delay">make-delay</a></em></td><td></td><td><em class=tab><a href="extsnd.html#newsounddialog">new-sound-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectsound">select-sound</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#addtransform">add-transform</a></em></td><td></td><td><em class=tab><a href="sndclm.html#exponentially-weighted-moving-average">exponentially-weighted-moving-average</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makedifferentiator">make-differentiator</a></em></td><td></td><td><em class=tab><a href="extsnd.html#newsoundhook">new-sound-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectsoundhook">select-sound-hook</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#spectra">additive synthesis</a></em></td><td></td><td><em class=tab><a href="sndscm.html#expsnd">expsnd</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-env">make-env</a></em></td><td></td><td><em class=tab><a href="extsnd.html#newwidgethook">new-widget-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectedchannel">selected-channel</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#adjustable-sawtooth-wave">adjustable-sawtooth-wave</a></em></td><td></td><td><em class=tab><a href="sndscm.html#expsrc">expsrc</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-eoddcos">make-eoddcos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#nextsample">next-sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selecteddatacolor">selected-data-color</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#adjustable-sawtooth-wave?">adjustable-sawtooth-wave?</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#make-ercos">make-ercos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nkssb">nkssb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectedgraphcolor">selected-graph-color</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#adjustable-square-wave">adjustable-square-wave</a></em></td><td></td><td class="green"><div class="centered">F</div></td><td></td><td><em class=tab><a href="sndclm.html#make-erssb">make-erssb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nkssbinterp">nkssb-interp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectedsound">selected-sound</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#adjustable-square-wave?">adjustable-square-wave?</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#make-fft-window">make-fft-window</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nkssb?">nkssb?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selection">selection</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#adjustable-triangle-wave">adjustable-triangle-wave</a></em></td><td></td><td><em class=tab><a href="s7.html#featureslist">*features*</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-filetoframple">make-file-&gt;frample</a></em></td><td></td><td><em class=tab><a href="sndclm.html#noddcos">noddcos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectiontomix">selection-&gt;mix</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#adjustable-triangle-wave?">adjustable-triangle-wave?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#cellon">feedback fm</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-filetosample">make-file-&gt;sample</a></em></td><td></td><td><em class=tab><a href="sndclm.html#noddcos?">noddcos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionchans">selection-chans</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#afterapplycontrolshook">after-apply-controls-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fft">fft</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-filter">make-filter</a></em></td><td></td><td><em class=tab><a href="sndclm.html#noddsin">noddsin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectioncolor">selection-color</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#afteredithook">after-edit-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fftcancel">fft-cancel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-filtered-comb">make-filtered-comb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#noddsin?">noddsin?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectioncontext">selection-context</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#aftergraphhook">after-graph-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fftedit">fft-edit</a></em></td><td></td><td><em class=tab><a href="sndclm.html#makefilteredcombbank">make-filtered-comb-bank</a></em></td><td></td><td><em class=tab><a href="sndclm.html#noddssb">noddssb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectioncreatesregion">selection-creates-region</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#afterlispgraphhook">after-lisp-graph-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fftenvedit">fft-env-edit</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-fir-coeffs">make-fir-coeffs</a></em></td><td></td><td><em class=tab><a href="sndclm.html#noddssb?">noddssb?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionframples">selection-framples</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#afteropenhook">after-open-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fftenvinterp">fft-env-interp</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-fir-filter">make-fir-filter</a></em></td><td></td><td><em class=tab><a href="sndclm.html#noid">noid</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionmaxamp">selection-maxamp</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#aftersaveashook">after-save-as-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fftlogfrequency">fft-log-frequency</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-firmant">make-firmant</a></em></td><td></td><td><em class=tab><a href="sndscm.html#cleandoc"><b>Noise Reduction</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionmaxampposition">selection-maxamp-position</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#aftersavestatehook">after-save-state-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fftlogmagnitude">fft-log-magnitude</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makefv">make-float-vector</a></em></td><td></td><td><em class=tab><a href="extsnd.html#normalizechannel">normalize-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionmember">selection-member?</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#aftertransformhook">after-transform-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fftsmoother">fft-smoother</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-flocsig">make-flocsig</a></em></td><td></td><td><em class=tab><a href="sndscm.html#normalizeenvelope">normalize-envelope</a></em></td><td></td><td><em class=tab><a href="sndscm.html#selectionmembers">selection-members</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#allchans">all-chans</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fftsquelch">fft-squelch</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-fmssb">make-fmssb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#normalizepartials">normalize-partials</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionposition">selection-position</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#all-pass">all-pass</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fftwindow">fft-window</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-formant">make-formant</a></em></td><td></td><td><em class=tab><a href="sndscm.html#normalizesound">normalize-sound</a></em></td><td></td><td><em class=tab><a href="sndscm.html#selectionrms">selection-rms</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#allpassbank">all-pass-bank</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fftalpha">fft-window-alpha</a></em></td><td></td><td><em class=tab><a href="sndclm.html#makeformantbank">make-formant-bank</a></em></td><td></td><td><em class=tab><a href="sndscm.html#normalizedmix">normalized-mix</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionsrate">selection-srate</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#allpassbankp">all-pass-bank?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fftbeta">fft-window-beta</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-frampletofile">make-frample-&gt;file</a></em></td><td></td><td><em class=tab><a href="sndclm.html#notch">notch</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionok">selection?</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#all-pass?">all-pass?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fftwithphases">fft-with-phases</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-granulate">make-granulate</a></em></td><td></td><td><em class=tab><a href="sndscm.html#notchchannel">notch-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionstuff"><b>Selections</b></a></em></td></tr>
- <tr><td><em class=tab><a href="grfsnd.html#sndandalsa"><b>Alsa</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#fftexamples"><b>FFTs</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#makegraphdata">make-graph-data</a></em></td><td></td><td><em class=tab><a href="sndscm.html#notchselection">notch-selection</a></em></td><td></td><td><em class=tab><a href="extsnd.html#setsamples">set-samples</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#ampcontrol">amp-control</a></em></td><td></td><td><em class=tab><a href="sndscm.html#nbdoc">file database</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-green-noise">make-green-noise</a></em></td><td></td><td><em class=tab><a href="sndscm.html#notchsound">notch-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#shortfilename">short-file-name</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#ampcontrolbounds">amp-control-bounds</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filetoarray">file-&gt;array</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-green-noise-interp">make-green-noise-interp</a></em></td><td></td><td><em class=tab><a href="sndclm.html#notch?">notch?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showaxes">show-axes</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#amplitude-modulate">amplitude-modulate</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filetoframple">file-&gt;frample</a></em></td><td></td><td><em class=tab><a href="s7.html#makehashtable">make-hash-table</a></em></td><td></td><td><em class=tab><a href="sndclm.html#npcos?">npcos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showcontrols">show-controls</a></em></td></tr>
- <tr><td><em class=tab><a href="grfsnd.html#analyseladspa">analyse-ladspa</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filetoframple?">file-&gt;frample?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makehighpass">make-highpass</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nrcos">nrcos</a></em></td><td></td><td><em class=tab><a href="sndscm.html#showdiskspace">show-disk-space</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#anoi">anoi</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filetosample">file-&gt;sample</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makehilberttransform">make-hilbert-transform</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nrcos?">nrcos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showfullduration">show-full-duration</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#anyenvchannel">any-env-channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filetosample?">file-&gt;sample?</a></em></td><td></td><td><em class=tab><a href="s7.html#makehook">make-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#nrev">nrev</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showfullrange">show-full-range</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#anyrandom">any-random</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filename">file-name</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-iir-filter">make-iir-filter</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nrsin">nrsin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showgrid">show-grid</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#applycontrols">apply-controls</a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericfilename"><b>file-name (generic)</b></a></em></td><td></td><td><em class=tab><a href="s7.html#makeintvector">make-int-vector</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nrsin?">nrsin?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showindices">show-indices</a></em></td></tr>
- <tr><td><em class=tab><a href="grfsnd.html#applyladspa">apply-ladspa</a></em></td><td></td><td><em class=tab><a href="s7.html#fillb">fill!</a></em></td><td></td><td><em class=tab><a href="s7.html#makeiterator">make-iterator</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nrssb">nrssb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showlistener">show-listener</a></em></td></tr>
- <tr><td><em class=tab><a href="s7.html#aritablep">aritable?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericfill"><b>fill! (generic)</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-izcos">make-izcos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nrssbinterp">nrssb-interp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showmarks">show-marks</a></em></td></tr>
- <tr><td><em class=tab><a href="s7.html#arity">arity</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fillpolygon">fill-polygon</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-j0evencos">make-j0evencos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nrssb?">nrssb?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showmixwaveforms">show-mix-waveforms</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#arraytofile">array-&gt;file</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fillrectangle">fill-rectangle</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-j0j1cos">make-j0j1cos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nrxycos">nrxycos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showselection">show-selection</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#array-interp">array-interp</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filter">filter</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-j2cos">make-j2cos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nrxycos?">nrxycos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showselectiontransform">show-selection-transform</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#asoneedit">as-one-edit</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filterchannel">filter-channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-jjcos">make-jjcos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nrxysin">nrxysin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showsonogramcursor">show-sonogram-cursor</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#askaboutunsavededits">ask-about-unsaved-edits</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filtercontrolcoeffs">filter-control-coeffs</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-jncos">make-jncos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nrxysin?">nrxysin?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showtransformpeaks">show-transform-peaks</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#askbeforeoverwrite">ask-before-overwrite</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filtercontrolenvelope">filter-control-envelope</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-jpcos">make-jpcos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nsin">nsin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showwidget">show-widget</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#asyfmI">asyfm-I</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filtercontrolindB">filter-control-in-dB</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-jycos">make-jycos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nsin?">nsin?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showyzero">show-y-zero</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#asyfmJ">asyfm-J</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filtercontrolinhz">filter-control-in-hz</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-k2cos">make-k2cos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nsincos">nsincos</a></em></td><td></td><td><em class=tab><a href="sndscm.html#silenceallmixes">silence-all-mixes</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#asyfm?">asyfm?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filtercontrolorder">filter-control-order</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-k2sin">make-k2sin</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nsincos?">nsincos?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#silencemixes">silence-mixes</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#asymmetric-fm">asymmetric-fm</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filterwaveformcolor">filter-control-waveform-color</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-k2ssb">make-k2ssb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nssb">nssb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#sinc-train">sinc-train</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#asymmetric-fm?">asymmetric-fm?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filtercontrolp">filter-control?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-k3sin">make-k3sin</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nssb?">nssb?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#sinc-train?">sinc-train?</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#autoresize">auto-resize</a></em></td><td></td><td><em class=tab><a href="sndscm.html#filterfft">filter-fft</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-krksin">make-krksin</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nxy1cos">nxy1cos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sincwidth">sinc-width</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#autosavedoc">auto-save</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filterselection">filter-selection</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-locsig">make-locsig</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nxy1cos?">nxy1cos?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sineenvchannel">sine-env-channel</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#autoupdate">auto-update</a></em></td><td></td><td><em class=tab><a href="sndscm.html#filterselectionandsmooth">filter-selection-and-smooth</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makelowpass">make-lowpass</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nxy1sin">nxy1sin</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sineramp">sine-ramp</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#autoupdateinterval">auto-update-interval</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filtersound">filter-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makemixsampler">make-mix-sampler</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nxy1sin?">nxy1sin?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#singerdoc">singer</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#autocorrelate">autocorrelate</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filter?">filter?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-move-sound">make-move-sound</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nxycos">nxycos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#smoothchannel">smooth-channel</a></em></td></tr>
- <tr><td><em class=tab><a href="s7.html#autoload"><b>autoload</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#filtered-comb">filtered-comb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-moving-autocorrelation">make-moving-autocorrelation</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nxycos?">nxycos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#smoothselection">smooth-selection</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#axiscolor">axis-color</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filteredcombbank">filtered-comb-bank</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-moving-average">make-moving-average</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nxysin">nxysin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#smoothsound">smooth-sound</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#axisinfo">axis-info</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filteredcombbankp">filtered-comb-bank?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-moving-fft">make-moving-fft</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nxysin?">nxysin?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#smoothexamples"><b>Smoothing</b></a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#axislabelfont">axis-label-font</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filtered-comb?">filtered-comb?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-moving-max">make-moving-max</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#pins">SMS synthesis</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#axisnumbersfont">axis-numbers-font</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filtersinsnd"><b>Filters</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-moving-norm">make-moving-norm</a></em></td><td></td><td class="green"><div class="centered">O</div></td><td></td><td><em class=tab><a href="sndscm.html#snapmarktobeat">snap-mark-to-beat</a></em></td></tr>
- <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#finddialog">find-dialog</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-moving-pitch">make-moving-pitch</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#snapmarks">snap-marks</a></em></td></tr>
- <tr><td class="green"><div class="centered">B</div></td><td></td><td><em class=tab><a href="extsnd.html#findmark">find-mark</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-moving-scentroid">make-moving-scentroid</a></em></td><td></td><td><em class=tab><a href="s7.html#objecttolet">object-&gt;let</a></em></td><td></td><td><em class=tab><a href="sndscm.html#snapmixtobeat">snap-mix-to-beat</a></em></td></tr>
- <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#findmix">find-mix</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-moving-spectrum">make-moving-spectrum</a></em></td><td></td><td><em class=tab><a href="s7.html#objecttostring">object-&gt;string</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndtosample">snd-&gt;sample</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#backgroundgradient">background-gradient</a></em></td><td></td><td><em class=tab><a href="extsnd.html#findsound">find-sound</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-n1cos">make-n1cos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#oddmultiple">odd-multiple</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndtosamplep">snd-&gt;sample?</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#badheaderhook">bad-header-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#finfo">finfo</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nchoosekcos">make-nchoosekcos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#oddweight">odd-weight</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndcolor">snd-color</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#bagpipe">bagpipe</a></em></td><td></td><td><em class=tab><a href="extsnd.html#finishprogressreport">finish-progress-report</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-ncos">make-ncos</a></em></td><td></td><td><em class=tab><a href="sndscm.html#offsetchannel">offset-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#snderror">snd-error</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#basiccolor">basic-color</a></em></td><td></td><td><em class=tab><a href="sndclm.html#fir-filter">fir-filter</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nkssb">make-nkssb</a></em></td><td></td><td><em class=tab><a href="sndscm.html#offsetsound">offset-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#snderrorhook">snd-error-hook</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#beatspermeasure">beats-per-measure</a></em></td><td></td><td><em class=tab><a href="sndclm.html#fir-filter?">fir-filter?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-noddcos">make-noddcos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#one-pole">one-pole</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndfont">snd-font</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#beatsperminute">beats-per-minute</a></em></td><td></td><td><em class=tab><a href="sndclm.html#firmant">firmant</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-noddsin">make-noddsin</a></em></td><td></td><td><em class=tab><a href="sndclm.html#one-pole-all-pass">one-pole-all-pass</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndgcs">snd-gcs</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#beforeclosehook">before-close-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#firmant?">firmant?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-noddssb">make-noddssb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#one-pole-all-pass?">one-pole-all-pass?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndhelp">snd-help</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#beforeexithook">before-exit-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fitselectionbetweenmarks">fit-selection-between-marks</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-noid">make-noid</a></em></td><td></td><td><em class=tab><a href="sndclm.html#one-pole?">one-pole?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sndscmhooks">snd-hooks</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#beforesaveashook">before-save-as-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#flattenpartials">flatten-partials</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-notch">make-notch</a></em></td><td></td><td><em class=tab><a href="sndclm.html#one-zero">one-zero</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndopenedsound">*snd-opened-sound*</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#beforesavestatehook">before-save-state-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fv">float-vector</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nrcos">make-nrcos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#one-zero?">one-zero?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndprint">snd-print</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#beforetransformhook">before-transform-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvtimes">float-vector*</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nrsin">make-nrsin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#openfiledialog">open-file-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndspectrum">snd-spectrum</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#besj0">bes-j0</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvplus">float-vector+</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nrssb">make-nrssb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#openfiledialogdirectory">open-file-dialog-directory</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndtempnam">snd-tempnam</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#bess">bess</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvtochannel">float-vector-&gt;channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nrxycos">make-nrxycos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#openhook">open-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndurl">snd-url</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#bess?">bess?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvtolist">float-vector-&gt;list</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nrxysin">make-nrxysin</a></em></td><td></td><td><em class=tab><a href="sndscm.html#opennextfileindirectory">open-next-file-in-directory</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndurls">snd-urls</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#analogfilterdoc">bessel filters</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvtostring">float-vector-&gt;string</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nsin">make-nsin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#openrawsound">open-raw-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndversion">snd-version</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#bigbird">bigbird</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvabs">float-vector-abs!</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nsincos">make-nsincos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#openrawsoundhook">open-raw-sound-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndwarning">snd-warning</a></em></td></tr>
- <tr><td><em class=tab><a href="s7.html#bignum">bignum</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvadd">float-vector-add!</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nssb">make-nssb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#opensound">open-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndwarninghook">snd-warning-hook</a></em></td></tr>
- <tr><td><em class=tab><a href="s7.html#bignump">bignum?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvequal">float-vector-equal?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nxy1cos">make-nxy1cos</a></em></td><td></td><td><em class=tab><a href="s7.html#openlet">openlet</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sndwarp">sndwarp</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#binaryiodoc">binary files</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvfill">float-vector-fill!</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nxy1sin">make-nxy1sin</a></em></td><td></td><td><em class=tab><a href="s7.html#openletp">openlet?</a></em></td><td></td><td><em class=tab><a href="s7.html#sortb">sort!</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#bindkey">bind-key</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvlength">float-vector-length</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nxycos">make-nxycos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#orientationhook">orientation-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-locsig"><b>Sound placement</b></a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#bird">bird</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvmax">float-vector-max</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nxysin">make-nxysin</a></em></td><td></td><td><em class=tab><a href="sndclm.html#oscil">oscil</a></em></td><td></td><td><em class=tab><a href="sndscm.html#soundtoamp_env">sound-&gt;amp-env</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#blackman">blackman</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvmin">float-vector-min</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-one-pole">make-one-pole</a></em></td><td></td><td><em class=tab><a href="sndclm.html#oscil-bank">oscil-bank</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundtointeger">sound-&gt;integer</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#blackman4envchannel">blackman4-env-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvmove">float-vector-move!</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-one-pole-all-pass">make-one-pole-all-pass</a></em></td><td></td><td><em class=tab><a href="sndclm.html#oscil-bank?">oscil-bank?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundfileextensions">sound-file-extensions</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#blackman?">blackman?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvmultiply">float-vector-multiply!</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-one-zero">make-one-zero</a></em></td><td></td><td><em class=tab><a href="sndclm.html#oscil?">oscil?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundfilep">sound-file?</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#boldpeaksfont">bold-peaks-font</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvoffset">float-vector-offset!</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-oscil">make-oscil</a></em></td><td></td><td><em class=tab><a href="sndclm.html#out-any">out-any</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundfilesindirectory">sound-files-in-directory</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#break">break</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvpeak">float-vector-peak</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-oscil-bank">make-oscil-bank</a></em></td><td></td><td><em class=tab><a href="sndclm.html#outbank">out-bank</a></em></td><td></td><td><em class=tab><a href="sndscm.html#soundinterp">sound-interp</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#brown-noise">brown-noise</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fvpolynomial">float-vector-polynomial</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-phase-vocoder">make-phase-vocoder</a></em></td><td></td><td><em class=tab><a href="sndclm.html#outa">outa</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundloopinfo">sound-loop-info</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#brown-noise?">brown-noise?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvref">float-vector-ref</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-pink-noise">make-pink-noise</a></em></td><td></td><td><em class=tab><a href="s7.html#outlet">outlet</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundproperties">sound-properties</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#analogfilterdoc">butterworth filters</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvreverse">float-vector-reverse!</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makepixmap">make-pixmap</a></em></td><td></td><td><em class=tab><a href="sndclm.html#*output*">*output*</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundproperty">sound-property</a></em></td></tr>
- <tr><td><em class=tab><a href="s7.html#bytevector">byte-vector</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvscale">float-vector-scale!</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makeplayer">make-player</a></em></td><td></td><td><em class=tab><a href="extsnd.html#outputcommenthook">output-comment-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundwidgets">sound-widgets</a></em></td></tr>
- <tr><td><em class=tab><a href="s7.html#bytevectorref">byte-vector-ref</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvset">float-vector-set!</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-polyoid">make-polyoid</a></em></td><td></td><td><em class=tab><a href="sndscm.html#overlayrmsenv">overlay-rms-env</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundp">sound?</a></em></td></tr>
- <tr><td><em class=tab><a href="s7.html#bytevectorset">byte-vector-set!</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvsubseq">float-vector-subseq</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-polyshape">make-polyshape</a></em></td><td></td><td><em class=tab><a href="s7.html#owlet">owlet</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundfontinfo">soundfont-info</a></em></td></tr>
- <tr><td><em class=tab><a href="s7.html#bytevectorp">byte-vector?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvsubtract">float-vector-subtract!</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-polywave">make-polywave</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#sounds">sounds</a></em></td></tr>
- <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#fvp">float-vector?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-pulse-train">make-pulse-train</a></em></td><td></td><td class="green"><div class="centered">P</div></td><td></td><td><em class=tab><a href="sndscm.html#soundstosegmentdata">sounds-&gt;segment-data</a></em></td></tr>
- <tr><td class="green"><div class="centered">C</div></td><td></td><td><em class=tab><a href="extsnd.html#Floatvectors"><b>Float-vectors</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-pulsed-env">make-pulsed-env</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#spectra">spectra</a></em></td></tr>
- <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#flocsig">flocsig</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-r2k!cos">make-r2k!cos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#padchannel">pad-channel</a></em></td><td></td><td><em class=tab><a href="sndscm.html#twotab">spectral interpolation</a></em></td></tr>
- <tr><td><em class=tab><a href="s7.html#definecfunction">c-define</a></em></td><td></td><td><em class=tab><a href="sndclm.html#flocsig?">flocsig?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-r2k2cos">make-r2k2cos</a></em></td><td></td><td><em class=tab><a href="sndscm.html#padmarks">pad-marks</a></em></td><td></td><td><em class=tab><a href="sndscm.html#spectralpolynomial">spectral-polynomial</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#cgp">c-g?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#stereoflute">flute model</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makeramp">make-ramp</a></em></td><td></td><td><em class=tab><a href="sndscm.html#padsound">pad-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectrohop">spectro-hop</a></em></td></tr>
- <tr><td><em class=tab><a href="s7.html#cobject">c-object?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fmbell">fm-bell</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rand">make-rand</a></em></td><td></td><td><em class=tab><a href="s7.html#pairfilename">pair-filename</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectroxangle">spectro-x-angle</a></em></td></tr>
- <tr><td><em class=tab><a href="s7.html#cpoint">c-pointer</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fmdrum">fm-drum</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rand-interp">make-rand-interp</a></em></td><td></td><td><em class=tab><a href="s7.html#pairlinenumber">pair-line-number</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectroxscale">spectro-x-scale</a></em></td></tr>
- <tr><td><em class=tab><a href="s7.html#cpointer">c-pointer?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fmnoise">fm-noise</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rcos">make-rcos</a></em></td><td></td><td><em class=tab><a href="sndscm.html#panmix">pan-mix</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectroyangle">spectro-y-angle</a></em></td></tr>
- <tr><td><em class=tab><a href="s7.html#callwithexit">call-with-exit</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fmparallelcomponent">fm-parallel-component</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-readin">make-readin</a></em></td><td></td><td><em class=tab><a href="sndscm.html#panmixfv">pan-mix-float-vector</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectroyscale">spectro-y-scale</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#bagpipe">canter</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fmvox">fm-talker</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makeregion">make-region</a></em></td><td></td><td><em class=tab><a href="sndclm.html#partialstopolynomial">partials-&gt;polynomial</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectrozangle">spectro-z-angle</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#cascadetocanonical">cascade-&gt;canonical</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fmtrumpet">fm-trumpet</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makeregionsampler">make-region-sampler</a></em></td><td></td><td><em class=tab><a href="sndclm.html#partialstowave">partials-&gt;wave</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectrozscale">spectro-z-scale</a></em></td></tr>
- <tr><td><em class=tab><a href="s7.html#catch">catch</a></em></td><td></td><td><em class=tab><a href="sndscm.html#vdoc">fm-violin</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rk!cos">make-rk!cos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#pausing">pausing</a></em></td><td></td><td><em class=tab><a href="sndclm.html#spectrum">spectrum</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#cellon">cellon</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fmvoice">fm-voice</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rk!ssb">make-rk!ssb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#peakenvdir">peak-env-dir</a></em></td><td></td><td><em class=tab><a href="sndscm.html#spectrumtocoeffs">spectrum-&gt;coeffs</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#chaindsps">chain-dsps</a></em></td><td></td><td><em class=tab><a href="sndclm.html#fmssb">fmssb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rkcos">make-rkcos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#peaks">peaks</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectrumend">spectrum-end</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#channeltofv">channel-&gt;float-vector</a></em></td><td></td><td><em class=tab><a href="sndclm.html#fmssb?">fmssb?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rkoddssb">make-rkoddssb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#peaksfont">peaks-font</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectrumstart">spectrum-start</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#channelampenvs">channel-amp-envs</a></em></td><td></td><td><em class=tab><a href="extsnd.html#focuswidget">focus-widget</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rksin">make-rksin</a></em></td><td></td><td><em class=tab><a href="sndclm.html#phase-partialstowave">phase-partials-&gt;wave</a></em></td><td></td><td><em class=tab><a href="extsnd.html#speedcontrol">speed-control</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#channeldata">channel-data</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fofins">FOF synthesis</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rkssb">make-rkssb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#phase-vocoder">phase-vocoder</a></em></td><td></td><td><em class=tab><a href="extsnd.html#speedcontrolbounds">speed-control-bounds</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#channelenvelope">channel-envelope</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fofins">fofins</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-round-interp">make-round-interp</a></em></td><td></td><td><em class=tab><a href="sndclm.html#phase-vocoder?">phase-vocoder?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#speedstyle">speed-control-style</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#channelpolynomial">channel-polynomial</a></em></td><td></td><td><em class=tab><a href="sndscm.html#foreachchild">for-each-child</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rssb">make-rssb</a></em></td><td></td><td><em class=tab><a href="sndscm.html#prc95doc"><b>Physical Models</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#speedtones">speed-control-tones</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#channelproperties">channel-properties</a></em></td><td></td><td><em class=tab><a href="sndscm.html#foreachsoundfile">for-each-sound-file</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rxycos">make-rxycos</a></em></td><td></td><td><em class=tab><a href="sndscm.html#pianodoc">piano model</a></em></td><td></td><td><em class=tab><a href="sndscm.html#spotfreq">spot-freq</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#channelproperty">channel-property</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fp">Forbidden Planet</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rxyk!cos">make-rxyk!cos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#pink-noise">pink-noise</a></em></td><td></td><td><em class=tab><a href="sndclm.html#square-wave">square-wave</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#channelrms">channel-rms</a></em></td><td></td><td><em class=tab><a href="extsnd.html#foregroundcolor">foreground-color</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rxyk!sin">make-rxyk!sin</a></em></td><td></td><td><em class=tab><a href="sndclm.html#pink-noise?">pink-noise?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#square-wave?">square-wave?</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#channelstyle">channel-style</a></em></td><td></td><td><em class=tab><a href="extsnd.html#forgetregion">forget-region</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rxysin">make-rxysin</a></em></td><td></td><td><em class=tab><a href="sndscm.html#pins">pins</a></em></td><td></td><td><em class=tab><a href="extsnd.html#squelchupdate">squelch-update</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#channelsync">channel-sync</a></em></td><td></td><td><em class=tab><a href="sndclm.html#formant">formant</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-sampletofile">make-sample-&gt;file</a></em></td><td></td><td><em class=tab><a href="sndscm.html#placesound">place-sound</a></em></td><td></td><td><em class=tab><a href="sndscm.html#squelchvowels">squelch-vowels</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#channelwidgets">channel-widgets</a></em></td><td></td><td><em class=tab><a href="sndclm.html#formantbank">formant-bank</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makesampler">make-sampler</a></em></td><td></td><td><em class=tab><a href="extsnd.html#play">play</a></em></td><td></td><td><em class=tab><a href="extsnd.html#srate">srate</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#channels">channels</a></em></td><td></td><td><em class=tab><a href="sndclm.html#formantbankp">formant-bank?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-sawtooth-wave">make-sawtooth-wave</a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericplay"><b>play (generic)</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericsrate"><b>srate (generic)</b></a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#genericchannels"><b>channels (generic)</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#formant?">formant?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makeselection">make-selection</a></em></td><td></td><td><em class=tab><a href="extsnd.html#playarrowsize">play-arrow-size</a></em></td><td></td><td><em class=tab><a href="sndclm.html#src">src</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#channelsequal">channels-equal?</a></em></td><td></td><td><em class=tab><a href="s7.html#format">format</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-sinc-train">make-sinc-train</a></em></td><td></td><td><em class=tab><a href="sndscm.html#playbetweenmarks">play-between-marks</a></em></td><td></td><td><em class=tab><a href="extsnd.html#srcchannel">src-channel</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#channelseq">channels=?</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#sndandforth"><b>Forth</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#makesndtosample">make-snd-&gt;sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#playhook">play-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#srcduration">src-duration</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#chans">chans</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fp">fp</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makesoundbox">make-sound-box</a></em></td><td></td><td><em class=tab><a href="sndscm.html#playmixes">play-mixes</a></em></td><td></td><td><em class=tab><a href="sndscm.html#srcfitenvelope">src-fit-envelope</a></em></td></tr>
- <tr><td><em class=tab><a href="s7.html#charposition">char-position</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fractionalfouriertransform">fractional-fourier-transform</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makespencerfilter">make-spencer-filter</a></em></td><td></td><td><em class=tab><a href="sndscm.html#playoften">play-often</a></em></td><td></td><td><em class=tab><a href="sndscm.html#srcmixes">src-mixes</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#chebyhka">cheby-hka</a></em></td><td></td><td><em class=tab><a href="sndclm.html#frampletofile">frample-&gt;file</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-square-wave">make-square-wave</a></em></td><td></td><td><em class=tab><a href="sndscm.html#playregionforever">play-region-forever</a></em></td><td></td><td><em class=tab><a href="extsnd.html#srcsoundselection">src-selection</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#analogfilterdoc">chebyshev filters</a></em></td><td></td><td><em class=tab><a href="sndclm.html#frampletofile?">frample-&gt;file?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-src">make-src</a></em></td><td></td><td><em class=tab><a href="sndscm.html#playsine">play-sine</a></em></td><td></td><td><em class=tab><a href="extsnd.html#srcsound">src-sound</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#checkmixtags">check-mix-tags</a></em></td><td></td><td><em class=tab><a href="sndclm.html#frampletoframple">frample-&gt;frample</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-ssb-am">make-ssb-am</a></em></td><td></td><td><em class=tab><a href="sndscm.html#playsines">play-sines</a></em></td><td></td><td><em class=tab><a href="sndclm.html#src?">src?</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#chordalize">chordalize</a></em></td><td></td><td><em class=tab><a href="extsnd.html#framples">framples</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-table-lookup">make-table-lookup</a></em></td><td></td><td><em class=tab><a href="sndscm.html#playsyncdmarks">play-syncd-marks</a></em></td><td></td><td><em class=tab><a href="sndclm.html#ssb-am">ssb-am</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#chorus">chorus</a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericframples"><b>framples (generic)</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-table-lookup-with-env">make-table-lookup-with-env</a></em></td><td></td><td><em class=tab><a href="sndscm.html#playuntilcg">play-until-c-g</a></em></td><td></td><td><em class=tab><a href="sndclm.html#ssb-am?">ssb-am?</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#cleanchannel">clean-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#freeplayer">free-player</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-tanhsin">make-tanhsin</a></em></td><td></td><td><em class=tab><a href="sndscm.html#playwithenvs">play-with-envs</a></em></td><td></td><td><em class=tab><a href="sndscm.html#ssbbank">ssb-bank</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#cleansound">clean-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#freesampler">free-sampler</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-triangle-wave">make-triangle-wave</a></em></td><td></td><td><em class=tab><a href="extsnd.html#playerhome">player-home</a></em></td><td></td><td><em class=tab><a href="sndscm.html#ssbbankenv">ssb-bank-env</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#clearlistener">clear-listener</a></em></td><td></td><td><em class=tab><a href="sndscm.html#freeverb">freeverb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-two-pole">make-two-pole</a></em></td><td></td><td><em class=tab><a href="extsnd.html#playerQ">player?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#ssbfm">ssb-fm</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#cliphook">clip-hook</a></em></td><td></td><td><em class=tab><a href="fm.html#fmintro"><b>Frequency Modulation</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-two-zero">make-two-zero</a></em></td><td></td><td><em class=tab><a href="extsnd.html#players">players</a></em></td><td></td><td><em class=tab><a href="sndscm.html#startdac">start-dac</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#clipping">clipping</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fullmix">fullmix</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makevariabledisplay">make-variable-display</a></em></td><td></td><td><em class=tab><a href="extsnd.html#playing">playing</a></em></td><td></td><td><em class=tab><a href="extsnd.html#startplaying">start-playing</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#clmchannel">clm-channel</a></em></td><td></td><td><em class=tab><a href="s7.html#funclet">funclet</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makevariablegraph">make-variable-graph</a></em></td><td></td><td><em class=tab><a href="extsnd.html#playexamples"><b>Playing</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#startplayinghook">start-playing-hook</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#clmexpsrc">clm-expsrc</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#make-wave-train">make-wave-train</a></em></td><td></td><td><em class=tab><a href="sndscm.html#pluck">pluck</a></em></td><td></td><td><em class=tab><a href="extsnd.html#startplayingselectionhook">start-playing-selection-hook</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#closehook">close-hook</a></em></td><td></td><td class="green"><div class="centered">G</div></td><td></td><td><em class=tab><a href="sndclm.html#make-wave-train-with-env">make-wave-train-with-env</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#sndandladspa"><b>Plugins</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#startprogressreport">start-progress-report</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#closesound">close-sound</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#mapchannel">map-channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polartorectangular">polar-&gt;rectangular</a></em></td><td></td><td><em class=tab><a href="extsnd.html#statusreport">status-report</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#colortolist">color-&gt;list</a></em></td><td></td><td><em class=tab><a href="sndscm.html#gaussiandistribution">gaussian-distribution</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mapsoundfiles">map-sound-files</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polynomial">polynomial</a></em></td><td></td><td><em class=tab><a href="extsnd.html#stdinprompt">stdin-prompt</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#colorcutoff">color-cutoff</a></em></td><td></td><td><em class=tab><a href="extsnd.html#gcoff">gc-off</a></em></td><td></td><td><em class=tab><a href="sndscm.html#maracadoc">maracas</a></em></td><td></td><td><em class=tab><a href="sndscm.html#polydoc">polynomial operations</a></em></td><td></td><td><em class=tab><a href="sndscm.html#stereotomono">stereo-&gt;mono</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#colorhook">color-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#gcon">gc-on</a></em></td><td></td><td><em class=tab><a href="extsnd.html#marktointeger">mark-&gt;integer</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polyoid">polyoid</a></em></td><td></td><td><em class=tab><a href="sndscm.html#stereoflute">stereo-flute</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#colorinverted">color-inverted</a></em></td><td></td><td><em class=tab><a href="sndclm.html#generators"><b>Generators</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#markclickhook">mark-click-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polyoidenv">polyoid-env</a></em></td><td></td><td><em class=tab><a href="extsnd.html#stopplayer">stop-player</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#colormixes">color-mixes</a></em></td><td></td><td><em class=tab><a href="s7.html#gensym">gensym</a></em></td><td></td><td><em class=tab><a href="sndscm.html#markclickinfo">mark-click-info</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polyoid?">polyoid?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#stopplaying">stop-playing</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#colororientationdialog">color-orientation-dialog</a></em></td><td></td><td><em class=tab><a href="s7.html#gensym?">gensym?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markcolor">mark-color</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polyshape">polyshape</a></em></td><td></td><td><em class=tab><a href="extsnd.html#stopplayinghook">stop-playing-hook</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#colorscale">color-scale</a></em></td><td></td><td><em class=tab><a href="extsnd.html#glgraphtops">gl-graph-&gt;ps</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markcontext">mark-context</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polyshape?">polyshape?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#stopplayingselectionhook">stop-playing-selection-hook</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#colorp">color?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#glspectrogram">glSpectrogram</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markdraghook">mark-drag-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polywave">polywave</a></em></td><td></td><td><em class=tab><a href="sndscm.html#stretchenvelope">stretch-envelope</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#colormap">colormap</a></em></td><td></td><td><em class=tab><a href="sndscm.html#goertzel">goertzel</a></em></td><td></td><td><em class=tab><a href="sndscm.html#markexplode">mark-explode</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polywave?">polywave?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#stretchsoundviadft">stretch-sound-via-dft</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#colormaptointeger">colormap-&gt;integer</a></em></td><td></td><td><em class=tab><a href="extsnd.html#gotolistenerend">goto-listener-end</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markhome">mark-home</a></em></td><td></td><td><em class=tab><a href="s7.html#portfilename">port-filename</a></em></td><td></td><td><em class=tab><a href="s7.html#stringtobytevector">string-&gt;byte-vector</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#colormapname">colormap-name</a></em></td><td></td><td><em class=tab><a href="sndscm.html#grani">grani</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markhook">mark-hook</a></em></td><td></td><td><em class=tab><a href="s7.html#portlinenumber">port-line-number</a></em></td><td></td><td><em class=tab><a href="s7.html#stringposition">string-position</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#colormapref">colormap-ref</a></em></td><td></td><td><em class=tab><a href="sndclm.html#grains"><b>Granular synthesis</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#markloops">mark-loops</a></em></td><td></td><td><em class=tab><a href="extsnd.html#positiontox">position-&gt;x</a></em></td><td></td><td><em class=tab><a href="s7.html#sublet">sublet</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#colormapsize">colormap-size</a></em></td><td></td><td><em class=tab><a href="sndclm.html#granulate">granulate</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markname">mark-name</a></em></td><td></td><td><em class=tab><a href="extsnd.html#positiontoy">position-&gt;y</a></em></td><td></td><td><em class=tab><a href="sndscm.html#superimposeffts">superimpose-ffts</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#colormapp">colormap?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#granulate?">granulate?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#marknametoid">mark-name-&gt;id</a></em></td><td></td><td><em class=tab><a href="extsnd.html#positioncolor">position-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#swapchannels">swap-channels</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#colors"><b>Colors</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#granulatedsoundinterp">granulated-sound-interp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markproperties">mark-properties</a></em></td><td></td><td><em class=tab><a href="sndscm.html#powerenv">power-env</a></em></td><td></td><td><em class=tab><a href="sndscm.html#swapselectionchannels">swap-selection-channels</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#comb">comb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graph">graph</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markproperty">mark-property</a></em></td><td></td><td><em class=tab><a href="sndscm.html#pqw">pqw</a></em></td><td></td><td><em class=tab><a href="s7.html#symboltodynamicvalue">symbol-&gt;dynamic-value</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#combbank">comb-bank</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graphtops">graph-&gt;ps</a></em></td><td></td><td><em class=tab><a href="extsnd.html#marksample">mark-sample</a></em></td><td></td><td><em class=tab><a href="sndscm.html#pqwvox">pqw-vox</a></em></td><td></td><td><em class=tab><a href="s7.html#symboltovalue">symbol-&gt;value</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#combbankp">comb-bank?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graphcolor">graph-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#marksync">mark-sync</a></em></td><td></td><td><em class=tab><a href="extsnd.html#preferencesdialog">preferences-dialog</a></em></td><td></td><td><em class=tab><a href="s7.html#symbolaccess">symbol-access</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#comb?">comb?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graphcursor">graph-cursor</a></em></td><td></td><td><em class=tab><a href="sndscm.html#marksynccolor">mark-sync-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#previoussample">previous-sample</a></em></td><td></td><td><em class=tab><a href="s7.html#symboltable">symbol-table</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#combineddatacolor">combined-data-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graphdata">graph-data</a></em></td><td></td><td><em class=tab><a href="extsnd.html#marksyncmax">mark-sync-max</a></em></td><td></td><td><em class=tab><a href="extsnd.html#printdialog">print-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sync">sync</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#comment">comment</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graphhook">graph-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#marktagheight">mark-tag-height</a></em></td><td></td><td><em class=tab><a href="extsnd.html#printlength">print-length</a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericsync"><b>sync (generic)</b></a></em></td></tr>
- <tr><td><em class=tab><a href="grfsnd.html#sndwithcm"><b>Common Music</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#graphstyle">graph-style</a></em></td><td></td><td><em class=tab><a href="extsnd.html#marktagwidth">mark-tag-width</a></em></td><td></td><td><em class=tab><a href="s7.html#proceduredocumentation">procedure-documentation</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sync-everything">sync-everything</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#complexify">complexify</a></em></td><td></td><td><em class=tab><a href="sndscm.html#grapheq">graphic equalizer</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markp">mark?</a></em></td><td></td><td><em class=tab><a href="s7.html#proceduresetter">procedure-setter</a></em></td><td></td><td><em class=tab><a href="extsnd.html#syncmax">sync-max</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#concatenateenvelopes">concatenate-envelopes</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graphshorizontal">graphs-horizontal</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markstuff"><b>Marking</b></a></em></td><td></td><td><em class=tab><a href="s7.html#proceduresignature">procedure-signature</a></em></td><td></td><td><em class=tab><a href="extsnd.html#syncstyle">sync-style</a></em></td></tr>
- <tr><td><em class=tab><a href="s7.html#constantp">constant?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#green-noise">green-noise</a></em></td><td></td><td><em class=tab><a href="extsnd.html#emarks">marks</a></em></td><td></td><td><em class=tab><a href="s7.html#proceduresource">procedure-source</a></em></td><td></td><td><em class=tab><a href="extsnd.html#syncdmarks">syncd-marks</a></em></td></tr>
- <tr><td><em class=tab><a href="s7.html#continuationp">continuation?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#green-noise-interp">green-noise-interp</a></em></td><td></td><td><em class=tab><a href="sndscm.html#matchsoundfiles">match-sound-files</a></em></td><td></td><td><em class=tab><a href="extsnd.html#progressreport">progress-report</a></em></td><td></td><td><em class=tab><a href="sndscm.html#syncdmixes">syncd-mixes</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#continue-frampletofile">continue-frample-&gt;file</a></em></td><td></td><td><em class=tab><a href="sndclm.html#green-noise-interp?">green-noise-interp?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#maxenvelope">max-envelope</a></em></td><td></td><td><em class=tab><a href="sndclm.html#pulse-train">pulse-train</a></em></td><td></td><td><em class=tab><a href="sndscm.html#syncup">syncup</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#continue-sampletofile">continue-sample-&gt;file</a></em></td><td></td><td><em class=tab><a href="sndclm.html#green-noise?">green-noise?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#maxregions">max-regions</a></em></td><td></td><td><em class=tab><a href="sndclm.html#pulse-train?">pulse-train?</a></em></td><td></td><td><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#contrastchannel">contrast-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#griddensity">grid-density</a></em></td><td></td><td><em class=tab><a href="extsnd.html#maxfftpeaks">max-transform-peaks</a></em></td><td></td><td><em class=tab><a href="sndclm.html#pulsedenv">pulsed-env</a></em></td><td></td><td class="green"><div class="centered">T</div></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#contrastcontrol">contrast-control</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#maxamp">maxamp</a></em></td><td></td><td><em class=tab><a href="sndclm.html#pulsedenv?">pulsed-env?</a></em></td><td></td><td><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#contrastcontrolamp">contrast-control-amp</a></em></td><td></td><td class="green"><div class="centered">H</div></td><td></td><td><em class=tab><a href="extsnd.html#genericmaxamp"><b>maxamp (generic)</b></a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#table-lookup">table-lookup</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#contrastcontrolbounds">contrast-control-bounds</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#maxampposition">maxamp-position</a></em></td><td></td><td class="green"><div class="centered">R</div></td><td></td><td><em class=tab><a href="sndclm.html#table-lookup?">table-lookup?</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#contrastcontrolp">contrast-control?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#harmonicizer">harmonicizer</a></em></td><td></td><td><em class=tab><a href="extsnd.html#maxampexamples"><b>Maxamps</b></a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#tanhsin">tanhsin</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#contrast-enhancement">contrast-enhancement</a></em></td><td></td><td><em class=tab><a href="sndscm.html#dht">Hartley transform</a></em></td><td></td><td><em class=tab><a href="extsnd.html#menuwidgets">menu-widgets</a></em></td><td></td><td><em class=tab><a href="sndclm.html#r2k!cos">r2k!cos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#tanhsin?">tanhsin?</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#contrastsound">contrast-sound</a></em></td><td></td><td><em class=tab><a href="s7.html#hashtable">hash-table</a></em></td><td></td><td><em class=tab><a href="sndscm.html#menusdoc">menus, optional</a></em></td><td></td><td><em class=tab><a href="sndclm.html#r2k!cos?">r2k!cos?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#tap">tap</a></em></td></tr>
- <tr><td><em class=tab><a href="snd.html#controls"><b>Control Panel</b></a></em></td><td></td><td><em class=tab><a href="s7.html#hashtablestar">hash-table*</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mindb">min-dB</a></em></td><td></td><td><em class=tab><a href="sndclm.html#r2k2cos">r2k2cos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#tap?">tap?</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#controlstochannel">controls-&gt;channel</a></em></td><td></td><td><em class=tab><a href="s7.html#hashtableentries">hash-table-entries</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mix">mix</a></em></td><td></td><td><em class=tab><a href="sndclm.html#r2k2cos?">r2k2cos?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#telephone">telephone</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#convolution">convolution</a></em></td><td></td><td><em class=tab><a href="s7.html#hashtableref">hash-table-ref</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixtofv">mix-&gt;float-vector</a></em></td><td></td><td><em class=tab><a href="sndclm.html#radianstodegrees">radians-&gt;degrees</a></em></td><td></td><td><em class=tab><a href="extsnd.html#tempdir">temp-dir</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#convolvewith">convolution reverb</a></em></td><td></td><td><em class=tab><a href="s7.html#hashtableset">hash-table-set!</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixtointeger">mix-&gt;integer</a></em></td><td></td><td><em class=tab><a href="sndclm.html#radianstohz">radians-&gt;hz</a></em></td><td></td><td><em class=tab><a href="extsnd.html#textfocuscolor">text-focus-color</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#convolve">convolve</a></em></td><td></td><td><em class=tab><a href="s7.html#hashtablep">hash-table?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixamp">mix-amp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#rampchannel">ramp-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#timegraphstyle">time-graph-style</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#convolvefiles">convolve-files</a></em></td><td></td><td><em class=tab><a href="extsnd.html#headertype">header-type</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixampenv">mix-amp-env</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rand">rand</a></em></td><td></td><td><em class=tab><a href="extsnd.html#timegraphtype">time-graph-type</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#convolveselectionwith">convolve-selection-with</a></em></td><td></td><td><em class=tab><a href="snd.html#formats"><b>Headers and sample types</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixchannel">mix-channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rand-interp">rand-interp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#timegraphp">time-graph?</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#convolvewith">convolve-with</a></em></td><td></td><td><em class=tab><a href="sndscm.html#hellodentist">hello-dentist</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixclickhook">mix-click-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rand-interp?">rand-interp?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#timestosamples">times-&gt;samples</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#convolve?">convolve?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#helpdialog">help-dialog</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixclickinfo">mix-click-info</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rand?">rand?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#tinyfont">tiny-font</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#fvcopy">copy</a></em></td><td></td><td><em class=tab><a href="extsnd.html#helphook">help-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixclicksetsamp">mix-click-sets-amp</a></em></td><td></td><td><em class=tab><a href="s7.html#random">random</a></em></td><td></td><td><em class=tab><a href="sndscm.html#telephone">touch-tone</a></em></td></tr>
- <tr><td><em class=tab><a href="s7.html#s7copy">copy</a></em></td><td></td><td><em class=tab><a href="extsnd.html#hidewidget">hide-widget</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixcolor">mix-color</a></em></td><td></td><td><em class=tab><a href="sndscm.html#allrandomnumbers"><b>Random Numbers</b></a></em></td><td></td><td><em class=tab><a href="s7.html#trace">trace</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#genericcopy"><b>copy (generic)</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#highlightcolor">highlight-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixdialogmix">mix-dialog-mix</a></em></td><td></td><td><em class=tab><a href="s7.html#randomstate">random-state</a></em></td><td></td><td><em class=tab><a href="extsnd.html#trackingcursors"><b>Tracking cursors</b></a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#copycontext">copy-context</a></em></td><td></td><td><em class=tab><a href="sndscm.html#hilberttransform">hilbert-transform</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixdraghook">mix-drag-hook</a></em></td><td></td><td><em class=tab><a href="s7.html#randomstatep">random-state?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#trackingcursorstyle">tracking-cursor-style</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#copysampler">copy-sampler</a></em></td><td></td><td><em class=tab><a href="s7.html#hookfunctions">hook-functions</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixfiledialog">mix-file-dialog</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rcos">rcos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformtofv">transform-&gt;float-vector</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#copying"><b>Copying</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#hookmember">hook-member</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixfv">mix-float-vector</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rcos?">rcos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformtointeger">transform-&gt;integer</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#correlate">correlate</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndhooks"><b>Hooks</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixhome">mix-home</a></em></td><td></td><td><em class=tab><a href="s7.html#readerrorhook">*read-error-hook*</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformdialog">transform-dialog</a></em></td></tr>
- <tr><td><em class=tab><a href="s7.html#coverlet">coverlet</a></em></td><td></td><td><em class=tab><a href="sndscm.html#html">html</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixlength">mix-length</a></em></td><td></td><td><em class=tab><a href="extsnd.html#readhook">read-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformframples">transform-framples</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#mixdoc">cross-fade (amplitude)</a></em></td><td></td><td><em class=tab><a href="extsnd.html#htmldir">html-dir</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixmaxamp">mix-maxamp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#readmixsample">read-mix-sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformgraphstyle">transform-graph-style</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#fadedoc">cross-fade (frequency domain)</a></em></td><td></td><td><em class=tab><a href="extsnd.html#htmlprogram">html-program</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixname">mix-name</a></em></td><td></td><td><em class=tab><a href="extsnd.html#readonly">read-only</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformgraphtype">transform-graph-type</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#crosssynthesis">cross-synthesis</a></em></td><td></td><td><em class=tab><a href="sndclm.html#hztoradians">hz-&gt;radians</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixnametoid">mix-name-&gt;id</a></em></td><td></td><td><em class=tab><a href="extsnd.html#readregionsample">read-region-sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformgraphp">transform-graph?</a></em></td></tr>
- <tr><td><em class=tab><a href="s7.html#curlet">curlet</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#mixposition">mix-position</a></em></td><td></td><td><em class=tab><a href="extsnd.html#readsample">read-sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#normalizefft">transform-normalization</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#currentfont">current-font</a></em></td><td></td><td class="green"><div class="centered">I</div></td><td></td><td><em class=tab><a href="extsnd.html#mixproperties">mix-properties</a></em></td><td></td><td><em class=tab><a href="extsnd.html#readsamplewithdirection">read-sample-with-direction</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformsample">transform-sample</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#cursor">cursor</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#mixproperty">mix-property</a></em></td><td></td><td><em class=tab><a href="s7.html#readercond">reader-cond</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformsize">transform-size</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#cursorcolor">cursor-color</a></em></td><td></td><td><em class=tab><a href="sndclm.html#iir-filter">iir-filter</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixregion">mix-region</a></em></td><td></td><td><em class=tab><a href="sndclm.html#readin">readin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformtype">transform-type</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#cursorcontext">cursor-context</a></em></td><td></td><td><em class=tab><a href="sndclm.html#iir-filter?">iir-filter?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixreleasehook">mix-release-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#readin?">readin?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformp">transform?</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#cursorlocationoffset">cursor-location-offset</a></em></td><td></td><td><em class=tab><a href="extsnd.html#gin">in</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixsamplerQ">mix-sampler?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rectangulartomagnitudes">rectangular-&gt;magnitudes</a></em></td><td></td><td><em class=tab><a href="sndscm.html#transposemixes">transpose-mixes</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#cursorposition">cursor-position</a></em></td><td></td><td><em class=tab><a href="sndclm.html#in-any">in-any</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixselection">mix-selection</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rectangulartopolar">rectangular-&gt;polar</a></em></td><td></td><td><em class=tab><a href="sndclm.html#triangle-wave">triangle-wave</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#cursorsize">cursor-size</a></em></td><td></td><td><em class=tab><a href="sndclm.html#ina">ina</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixsound">mix-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#redo">redo</a></em></td><td></td><td><em class=tab><a href="sndclm.html#triangle-wave?">triangle-wave?</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#cursorstyle">cursor-style</a></em></td><td></td><td><em class=tab><a href="sndclm.html#inb">inb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixspeed">mix-speed</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regiontofv">region-&gt;float-vector</a></em></td><td></td><td><em class=tab><a href="sndscm.html#tubebell">tubebell</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#cursorupdateinterval">cursor-update-interval</a></em></td><td></td><td><em class=tab><a href="extsnd.html#infodialog">info-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixsync">mix-sync</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regiontointeger">region-&gt;integer</a></em></td><td></td><td><em class=tab><a href="sndscm.html#tubebell">tubular bell</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#cursorexamples"><b>Cursors</b></a></em></td><td></td><td><em class=tab><a href="grfsnd.html#initladspa">init-ladspa</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixsyncmax">mix-sync-max</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionchans">region-chans</a></em></td><td></td><td><em class=tab><a href="sndclm.html#two-pole">two-pole</a></em></td></tr>
- <tr><td><em class=tab><a href="s7.html#cutlet">cutlet</a></em></td><td></td><td><em class=tab><a href="extsnd.html#initialbeg">initial-beg</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixtagheight">mix-tag-height</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionframples">region-framples</a></em></td><td></td><td><em class=tab><a href="sndclm.html#two-pole?">two-pole?</a></em></td></tr>
- <tr><td><em class=tab><a href="s7.html#cyclicsequences">cyclic-sequences</a></em></td><td></td><td><em class=tab><a href="extsnd.html#initialdur">initial-dur</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixtagwidth">mix-tag-width</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regiongraphstyle">region-graph-style</a></em></td><td></td><td><em class=tab><a href="sndscm.html#twotab">two-tab</a></em></td></tr>
- <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#initialgraphhook">initial-graph-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixtagy">mix-tag-y</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionhome">region-home</a></em></td><td></td><td><em class=tab><a href="sndclm.html#two-zero">two-zero</a></em></td></tr>
- <tr><td class="green"><div class="centered">D</div></td><td></td><td><em class=tab><a href="grfsnd.html#sndinitfile"><b>Initialization file</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixwaveformheight">mix-waveform-height</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionmaxamp">region-maxamp</a></em></td><td></td><td><em class=tab><a href="sndclm.html#two-zero?">two-zero?</a></em></td></tr>
- <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="s7.html#inlet">inlet</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixp">mix?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionmaxampposition">region-maxamp-position</a></em></td><td></td><td><em class=tab><a href="s7.html#typeof">type-of</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#dacfolding">dac-combines-channels</a></em></td><td></td><td><em class=tab><a href="sndscm.html#insertchannel">insert-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixes">mixes</a></em></td><td></td><td><em class=tab><a href="sndscm.html#regionplaylist">region-play-list</a></em></td><td></td><td><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#dacsize">dac-size</a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertfiledialog">insert-file-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndmixes"><b>Mixing</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionposition">region-position</a></em></td><td></td><td class="green"><div class="centered">U</div></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#datacolor">data-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertregion">insert-region</a></em></td><td></td><td><em class=tab><a href="sndscm.html#monotostereo">mono-&gt;stereo</a></em></td><td></td><td><em class=tab><a href="sndscm.html#regionrms">region-rms</a></em></td><td></td><td><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#datalocation">data-location</a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertsample">insert-sample</a></em></td><td></td><td><em class=tab><a href="sndscm.html#moogfilter">moog-filter</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionsample">region-sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#unbindkey">unbind-key</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#datasize">data-size</a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertsamples">insert-samples</a></em></td><td></td><td><em class=tab><a href="s7.html#morallyequalp">morally-equal?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionsamplerQ">region-sampler?</a></em></td><td></td><td><em class=tab><a href="s7.html#unboundvariablehook">*unbound-variable-hook*</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#dbtolinear">db-&gt;linear</a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertselection">insert-selection</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mouseclickhook">mouse-click-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionsrate">region-srate</a></em></td><td></td><td><em class=tab><a href="sndscm.html#unclipchannel">unclip-channel</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#cdebugging"><b>Debugging (C)</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertsilence">insert-silence</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mousedraghook">mouse-drag-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionok">region?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#undo">undo</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#variabledisplay"><b>Debugging (instruments)</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertsound">insert-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mouseentergraphhook">mouse-enter-graph-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#eregions">regions</a></em></td><td></td><td><em class=tab><a href="extsnd.html#undoexamples"><b>Undo and Redo</b></a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#snderrors"><b>Debugging (Scheme)</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertionexamples"><b>Insertions</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#mouseenterlabelhook">mouse-enter-label-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionstuff"><b>Regions</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#undohook">undo-hook</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#defaultoutputchans">default-output-chans</a></em></td><td></td><td><em class=tab><a href="s7.html#intvector">int-vector</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mouseenterlistenerhook">mouse-enter-listener-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#remembersoundstate">remember-sound-state</a></em></td><td></td><td><em class=tab><a href="s7.html#unlet">unlet</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#defaultoutputheadertype">default-output-header-type</a></em></td><td></td><td><em class=tab><a href="s7.html#intvectorref">int-vector-ref</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mouseentertexthook">mouse-enter-text-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#removeclicks">remove-clicks</a></em></td><td></td><td><em class=tab><a href="extsnd.html#unselectall">unselect-all</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#defaultoutputsampletype">default-output-sample-type</a></em></td><td></td><td><em class=tab><a href="s7.html#intvectorset">int-vector-set!</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mouseleavegraphhook">mouse-leave-graph-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#removefrommenu">remove-from-menu</a></em></td><td></td><td><em class=tab><a href="sndscm.html#updategraphs">update-graphs</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#defaultoutputsrate">default-output-srate</a></em></td><td></td><td><em class=tab><a href="s7.html#intvectorp">int-vector?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mouseleavelabelhook">mouse-leave-label-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#replacewithselection">replace-with-selection</a></em></td><td></td><td><em class=tab><a href="extsnd.html#updatehook">update-hook</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#defgenerator">defgenerator</a></em></td><td></td><td><em class=tab><a href="extsnd.html#integertocolormap">integer-&gt;colormap</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mousleavelistenerhook">mouse-leave-listener-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#reportmarknames">report-mark-names</a></em></td><td></td><td><em class=tab><a href="extsnd.html#updatelispgraph">update-lisp-graph</a></em></td></tr>
- <tr><td><em class=tab><a href="s7.html#definestar">define*</a></em></td><td></td><td><em class=tab><a href="extsnd.html#integertomark">integer-&gt;mark</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mousleavetexthook">mouse-leave-text-hook</a></em></td><td></td><td><em class=tab><a href="s7.html#requires7">require</a></em></td><td></td><td><em class=tab><a href="extsnd.html#updatesound">update-sound</a></em></td></tr>
- <tr><td><em class=tab><a href="s7.html#defineconstant">define-constant</a></em></td><td></td><td><em class=tab><a href="extsnd.html#integertomix">integer-&gt;mix</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mousepresshook">mouse-press-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#resampleexamples"><b>Resampling</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#updatetimegraph">update-time-graph</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#defineenvelope">define-envelope</a></em></td><td></td><td><em class=tab><a href="extsnd.html#integertoregion">integer-&gt;region</a></em></td><td></td><td><em class=tab><a href="sndclm.html#move-locsig">move-locsig</a></em></td><td></td><td><em class=tab><a href="sndscm.html#resetallhooks">reset-all-hooks</a></em></td><td></td><td><em class=tab><a href="extsnd.html#updatetransformgraph">update-transform-graph</a></em></td></tr>
- <tr><td><em class=tab><a href="s7.html#expansion">define-expansion</a></em></td><td></td><td><em class=tab><a href="extsnd.html#integertosound">integer-&gt;sound</a></em></td><td></td><td><em class=tab><a href="sndscm.html#movemixes">move-mixes</a></em></td><td></td><td><em class=tab><a href="extsnd.html#resetcontrols">reset-controls</a></em></td><td></td><td><em class=tab><a href="sndscm.html#uponsaveyourself">upon-save-yourself</a></em></td></tr>
- <tr><td><em class=tab><a href="s7.html#definemacro">define-macro</a></em></td><td></td><td><em class=tab><a href="extsnd.html#integertotransform">integer-&gt;transform</a></em></td><td></td><td><em class=tab><a href="sndclm.html#move-sound">move-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#resetlistenercursor">reset-listener-cursor</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sndmotifdoc">user interface extensions</a></em></td></tr>
- <tr><td><em class=tab><a href="s7.html#definemacrostar">define-macro*</a></em></td><td></td><td><em class=tab><a href="sndscm.html#integrateenvelope">integrate-envelope</a></em></td><td></td><td><em class=tab><a href="sndclm.html#move-sound?">move-sound?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#reson">reson</a></em></td><td></td><td><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#defineselectionviamarks">define-selection-via-marks</a></em></td><td></td><td><em class=tab><a href="sndscm.html#invertfilter">invert-filter</a></em></td><td></td><td><em class=tab><a href="sndscm.html#movesyncdmarks">move-syncd-marks</a></em></td><td></td><td><em class=tab><a href="extsnd.html#restorecontrols">restore-controls</a></em></td><td></td><td class="green"><div class="centered">V</div></td></tr>
- <tr><td><em class=tab><a href="s7.html#definedp">defined?</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#sndswitches"><b>Invocation flags</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-autocorrelation">moving-autocorrelation</a></em></td><td></td><td><em class=tab><a href="sndscm.html#reverbexamples"><b>Reverb</b></a></em></td><td></td><td><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#degreestoradians">degrees-&gt;radians</a></em></td><td></td><td><em class=tab><a href="s7.html#iterate">iterate</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-autocorrelation?">moving-autocorrelation?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#*reverb*">*reverb*</a></em></td><td></td><td><em class=tab><a href="sndscm.html#variabledisplay">variable-display</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#delay">delay</a></em></td><td></td><td><em class=tab><a href="s7.html#iteratoratend">iterator-at-end?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-average">moving-average</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbdecay">reverb-control-decay</a></em></td><td></td><td><em class=tab><a href="extsnd.html#variablegraphp">variable-graph?</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#delaychannelmixes">delay-channel-mixes</a></em></td><td></td><td><em class=tab><a href="s7.html#iteratorsequence">iterator-sequence</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-average?">moving-average?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbcontrolfeedback">reverb-control-feedback</a></em></td><td></td><td><em class=tab><a href="s7.html#varlet">varlet</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#delaytick">delay-tick</a></em></td><td></td><td><em class=tab><a href="s7.html#iteratorp">iterator?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-fft">moving-fft</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbcontrollength">reverb-control-length</a></em></td><td></td><td><em class=tab><a href="sndscm.html#vibratinguniformcircularstring">vibrating-uniform-circular-string</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#delay?">delay?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#izcos">izcos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-fft?">moving-fft?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbcontrollengthbounds">reverb-control-length-bounds</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesamp">view-files-amp</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#deletecolormap">delete-colormap</a></em></td><td></td><td><em class=tab><a href="sndclm.html#izcos?">izcos?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-length">moving-length</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbcontrollowpass">reverb-control-lowpass</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesampenv">view-files-amp-env</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#deletefilefilter">delete-file-filter</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#moving-max">moving-max</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbcontrolscale">reverb-control-scale</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesdialog">view-files-dialog</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#deletefilesorter">delete-file-sorter</a></em></td><td></td><td class="green"><div class="centered">J</div></td><td></td><td><em class=tab><a href="sndclm.html#moving-max?">moving-max?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbcontrolscalebounds">reverb-control-scale-bounds</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesfiles">view-files-files</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#deletemark">delete-mark</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#moving-norm">moving-norm</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbcontrolp">reverb-control?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesselecthook">view-files-select-hook</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#deletemarks">delete-marks</a></em></td><td></td><td><em class=tab><a href="sndclm.html#j0evencos">j0evencos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-norm?">moving-norm?</a></em></td><td></td><td><em class=tab><a href="s7.html#reverseb">reverse!</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesselectedfiles">view-files-selected-files</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#deletesample">delete-sample</a></em></td><td></td><td><em class=tab><a href="sndclm.html#j0evencos?">j0evencos?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-pitch">moving-pitch</a></em></td><td></td><td><em class=tab><a href="sndscm.html#reversebyblocks">reverse-by-blocks</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilessort">view-files-sort</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#deletesamples">delete-samples</a></em></td><td></td><td><em class=tab><a href="sndclm.html#j0j1cos">j0j1cos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-pitch?">moving-pitch?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reversechannel">reverse-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesspeed">view-files-speed</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#deletesamplesandsmooth">delete-samples-and-smooth</a></em></td><td></td><td><em class=tab><a href="sndclm.html#j0j1cos?">j0j1cos?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-rms">moving-rms</a></em></td><td></td><td><em class=tab><a href="sndscm.html#reverseenvelope">reverse-envelope</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesspeedstyle">view-files-speed-style</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#deleteselection">delete-selection</a></em></td><td></td><td><em class=tab><a href="sndclm.html#j2cos">j2cos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-scentroid">moving-scentroid</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reverseselection">reverse-selection</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewmixesdialog">view-mixes-dialog</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#deleteselectionandsmooth">delete-selection-and-smooth</a></em></td><td></td><td><em class=tab><a href="sndclm.html#j2cos?">j2cos?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-scentroid?">moving-scentroid?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reversesound">reverse-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewregionsdialog">view-regions-dialog</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#deletetransform">delete-transform</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#sndandjack"><b>Jack</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-spectrum">moving-spectrum</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reverseexamples"><b>Reversing</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewsound">view-sound</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#deletionexamples"><b>Deletions</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#jcreverb">jc-reverb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-spectrum?">moving-spectrum?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#revertsound">revert-sound</a></em></td><td></td><td><em class=tab><a href="sndscm.html#singerdoc">voice physical model</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#describehook">describe-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#jjcos">jjcos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-sum">moving-sum</a></em></td><td></td><td><em class=tab><a href="extsnd.html#rightsample">right-sample</a></em></td><td></td><td><em class=tab><a href="sndscm.html#voicedtounvoiced">voiced-&gt;unvoiced</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#describemark">describe-mark</a></em></td><td></td><td><em class=tab><a href="sndclm.html#jjcos?">jjcos?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mpg">mpg</a></em></td><td></td><td><em class=tab><a href="sndclm.html#ring-modulate">ring-modulate</a></em></td><td></td><td><em class=tab><a href="sndscm.html#volterrafilter">volterra-filter</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#dht">dht</a></em></td><td></td><td><em class=tab><a href="sndclm.html#jncos">jncos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musalsabuffersize">mus-alsa-buffer-size</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rk!cos">rk!cos</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fmvox">vox</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#dialogwidgets">dialog-widgets</a></em></td><td></td><td><em class=tab><a href="sndclm.html#jncos?">jncos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musalsabuffers">mus-alsa-buffers</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rk!cos?">rk!cos?</a></em></td><td></td><td><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="s7.html#dilambda">dilambda</a></em></td><td></td><td><em class=tab><a href="sndclm.html#jpcos">jpcos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musalsacapturedevice">mus-alsa-capture-device</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rk!ssb">rk!ssb</a></em></td><td></td><td class="green"><div class="centered">W</div></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#disablecontrolpanel">disable-control-panel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#jpcos?">jpcos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musalsadevice">mus-alsa-device</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rk!ssb?">rk!ssb?</a></em></td><td></td><td><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#displaybarkfft">display-bark-fft</a></em></td><td></td><td><em class=tab><a href="extsnd.html#justsounds">just-sounds</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musalsaplaybackdevice">mus-alsa-playback-device</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rkcos">rkcos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#wave-train">wave-train</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#displaycorrelation">display-correlation</a></em></td><td></td><td><em class=tab><a href="sndclm.html#jycos">jycos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musalsasquelchwarning">mus-alsa-squelch-warning</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rkcos?">rkcos?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#wave-train?">wave-train?</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#displaydb">display-db</a></em></td><td></td><td><em class=tab><a href="sndclm.html#jycos?">jycos?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#musarrayprintlength">mus-array-print-length</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rkoddssb">rkoddssb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#wavelettype">wavelet-type</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#displayedits">display-edits</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#musbytespersample">mus-bytes-per-sample</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rkoddssb?">rkoddssb?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#pqwvox">waveshaping voice</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#displayenergy">display-energy</a></em></td><td></td><td class="green"><div class="centered">K</div></td><td></td><td><em class=tab><a href="sndclm.html#mus-channel">mus-channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rksin">rksin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#wavohop">wavo-hop</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#dissolvefade">dissolve-fade</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#mus-channels">mus-channels</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rksin?">rksin?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#wavotrace">wavo-trace</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#ditherchannel">dither-channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#k2cos">k2cos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-chebyshev-tu-sum">mus-chebyshev-tu-sum</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rkssb">rkssb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#weighted-moving-average">weighted-moving-average</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#dithersound">dither-sound</a></em></td><td></td><td><em class=tab><a href="sndclm.html#k2cos?">k2cos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musclipping">mus-clipping</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rkssb?">rkssb?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#widgetposition">widget-position</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#dolph">dolph</a></em></td><td></td><td><em class=tab><a href="sndclm.html#k2sin">k2sin</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-close">mus-close</a></em></td><td></td><td><em class=tab><a href="sndscm.html#rmsgain">rms</a></em></td><td></td><td><em class=tab><a href="extsnd.html#widgetsize">widget-size</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#dot-product">dot-product</a></em></td><td></td><td><em class=tab><a href="sndclm.html#k2sin?">k2sin?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-copy">mus-copy</a></em></td><td></td><td><em class=tab><a href="sndscm.html#rmsgain">rms, gain, balance gens</a></em></td><td></td><td><em class=tab><a href="extsnd.html#widgettext">widget-text</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#dotsize">dot-size</a></em></td><td></td><td><em class=tab><a href="sndclm.html#k2ssb">k2ssb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-data">mus-data</a></em></td><td></td><td><em class=tab><a href="sndscm.html#rmsenvelope">rms-envelope</a></em></td><td></td><td><em class=tab><a href="extsnd.html#movingwindows"><b>Window size and position</b></a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#downoct">down-oct</a></em></td><td></td><td><em class=tab><a href="sndclm.html#k2ssb?">k2ssb?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-describe">mus-describe</a></em></td><td></td><td><em class=tab><a href="s7.html#rootlet">rootlet</a></em></td><td></td><td><em class=tab><a href="extsnd.html#windowheight">window-height</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#drawaxes">draw-axes</a></em></td><td></td><td><em class=tab><a href="sndclm.html#k3sin">k3sin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#muserrorhook">mus-error-hook</a></em></td><td></td><td><em class=tab><a href="s7.html#rootletredefinitionhook">*rootlet-redefinition-hook*</a></em></td><td></td><td><em class=tab><a href="sndscm.html#windowsamples">window-samples</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#drawdot">draw-dot</a></em></td><td></td><td><em class=tab><a href="sndclm.html#k3sin?">k3sin?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#muserrortypetostring">mus-error-type-&gt;string</a></em></td><td></td><td><em class=tab><a href="sndclm.html#round-interp">round-interp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#windowwidth">window-width</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#drawdots">draw-dots</a></em></td><td></td><td><em class=tab><a href="sndscm.html#kalmanfilterchannel">kalman-filter-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musexpandfilename">mus-expand-filename</a></em></td><td></td><td><em class=tab><a href="sndclm.html#round-interp?">round-interp?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#windowx">window-x</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#drawline">draw-line</a></em></td><td></td><td><em class=tab><a href="extsnd.html#key">key</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-feedback">mus-feedback</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rssb">rssb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#windowy">window-y</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#drawlines">draw-lines</a></em></td><td></td><td><em class=tab><a href="extsnd.html#keybinding">key-binding</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-feedforward">mus-feedforward</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rssbinterp">rssb-interp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withbackgroundprocesses">with-background-processes</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#drawmarkhook">draw-mark-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#keypresshook">key-press-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#fft">mus-fft</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rssb?">rssb?</a></em></td><td></td><td><em class=tab><a href="s7.html#withbaffle">with-baffle</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#drawmixhook">draw-mix-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#krksin">krksin</a></em></td><td></td><td><em class=tab><a href="sndclm.html#musfilebuffersize">mus-file-buffer-size</a></em></td><td></td><td><em class=tab><a href="sndscm.html#rubbersound">rubber-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withfilemonitor">with-file-monitor</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#drawstring">draw-string</a></em></td><td></td><td><em class=tab><a href="sndclm.html#krksin?">krksin?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musfileclipping">mus-file-clipping</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#sndandruby"><b>Ruby</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#withgl">with-gl</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#drone">drone</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#musfilemix">mus-file-mix</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rxycos">rxycos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withinsetgraph">with-inset-graph</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#makedropsite">drop sites</a></em></td><td></td><td class="green"><div class="centered">L</div></td><td></td><td><em class=tab><a href="sndclm.html#mus-file-name">mus-file-name</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rxycos?">rxycos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withinterrupts">with-interrupts</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#drophook">drop-hook</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#musfloatequalfudgefactor">mus-float-equal-fudge-factor</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rxyk!cos">rxyk!cos</a></em></td><td></td><td><em class=tab><a href="s7.html#with-let">with-let</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#duringopenhook">during-open-hook</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#ladspadescriptor">ladspa-descriptor</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-frequency">mus-frequency</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rxyk!cos?">rxyk!cos?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#withlocalhook">with-local-hook</a></em></td></tr>
- <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#ladspadir">ladspa-dir</a></em></td><td></td><td><em class=tab><a href="sndclm.html#musgeneratorp">mus-generator?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rxyk!sin">rxyk!sin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withmenuicons">with-menu-icons</a></em></td></tr>
- <tr><td class="green"><div class="centered">E</div></td><td></td><td><em class=tab><a href="s7.html#lambdastar">lambda*</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musheaderrawdefaults">mus-header-raw-defaults</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rxyk!sin?">rxyk!sin?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withmixtags">with-mix-tags</a></em></td></tr>
- <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#lbjpiano">lbj-piano</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musheadertypetostring">mus-header-type-&gt;string</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rxysin">rxysin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withpointerfocus">with-pointer-focus</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#editlists"><b>Edit lists</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#leftsample">left-sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musheadertypename">mus-header-type-name</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rxysin?">rxysin?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withrelativepanes">with-relative-panes</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#editfragment">edit-fragment</a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericlength"><b>length (generic)</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-hop">mus-hop</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#withsmptelabel">with-smpte-label</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#editheaderdialog">edit-header-dialog</a></em></td><td></td><td><em class=tab><a href="s7.html#lettolist">let-&gt;list</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-increment">mus-increment</a></em></td><td></td><td class="green"><div class="centered">S</div></td><td></td><td><em class=tab><a href="sndscm.html#withsound">with-sound</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#edithook">edit-hook</a></em></td><td></td><td><em class=tab><a href="s7.html#letref">let-ref</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-input?">mus-input?</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#withtemporaryselection">with-temporary-selection</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#editlisttofunction">edit-list-&gt;function</a></em></td><td></td><td><em class=tab><a href="s7.html#letset">let-set!</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-interp-type">mus-interp-type</a></em></td><td></td><td><em class=tab><a href="s7.html#s7doc"><b>s7 scheme</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#withtoolbar">with-toolbar</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#editposition">edit-position</a></em></td><td></td><td><em class=tab><a href="s7.html#lettemporarily">let-temporarily</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-interpolate">mus-interpolate</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sample">sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withtooltips">with-tooltips</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#editproperties">edit-properties</a></em></td><td></td><td><em class=tab><a href="s7.html#letp">let?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-length">mus-length</a></em></td><td></td><td><em class=tab><a href="sndclm.html#sampletofile">sample-&gt;file</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withtrackingcursor">with-tracking-cursor</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#editproperty">edit-property</a></em></td><td></td><td><em class=tab><a href="sndclm.html#lineartodb">linear-&gt;db</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-location">mus-location</a></em></td><td></td><td><em class=tab><a href="sndclm.html#sampletofile?">sample-&gt;file?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withverbosecursor">with-verbose-cursor</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#edittree">edit-tree</a></em></td><td></td><td><em class=tab><a href="sndscm.html#linearsrcchannel">linear-src-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musmaxmalloc">mus-max-malloc</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sampletype">sample-type</a></em></td><td></td><td><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#edits">edits</a></em></td><td></td><td><em class=tab><a href="sndscm.html#lintdoc">lint for scheme</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musmaxtablesize">mus-max-table-size</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sampleratendQ">sampler-at-end?</a></em></td><td></td><td class="green"><div class="centered">X</div></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#edot-product">edot-product</a></em></td><td></td><td><em class=tab><a href="extsnd.html#lispgraphhook">lisp-graph-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-name">mus-name</a></em></td><td></td><td><em class=tab><a href="extsnd.html#samplerhome">sampler-home</a></em></td><td></td><td><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#effectshook">effects-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#lispgraphstyle">lisp-graph-style</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-offset">mus-offset</a></em></td><td></td><td><em class=tab><a href="extsnd.html#samplerposition">sampler-position</a></em></td><td></td><td><em class=tab><a href="extsnd.html#xtoposition">x-&gt;position</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#analogfilterdoc">elliptic filters</a></em></td><td></td><td><em class=tab><a href="extsnd.html#lispgraphp">lisp-graph?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-order">mus-order</a></em></td><td></td><td><em class=tab><a href="extsnd.html#samplerQ">sampler?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#xaxislabel">x-axis-label</a></em></td></tr>
- <tr><td><em class=tab><a href="grfsnd.html#emacssnd"><b>Emacs and Snd</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#listtofv">list-&gt;float-vector</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musosssetbuffers">mus-oss-set-buffers</a></em></td><td></td><td><em class=tab><a href="extsnd.html#samplers"><b>samplers</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#xaxisstyle">x-axis-style</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#env">env</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#listladspa">list-ladspa</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-output?">mus-output?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#samples">samples</a></em></td><td></td><td><em class=tab><a href="extsnd.html#xbounds">x-bounds</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#env-any">env-any</a></em></td><td></td><td><em class=tab><a href="extsnd.html#listenerclickhook">listener-click-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-phase">mus-phase</a></em></td><td></td><td><em class=tab><a href="sndclm.html#samplestoseconds">samples-&gt;seconds</a></em></td><td></td><td><em class=tab><a href="extsnd.html#xpositionslider">x-position-slider</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#envchannel">env-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#listenercolor">listener-color</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-ramp">mus-ramp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sashcolor">sash-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#xzoomslider">x-zoom-slider</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#envchannelwithbase">env-channel-with-base</a></em></td><td></td><td><em class=tab><a href="extsnd.html#listenercolorized">listener-colorized</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-rand-seed">mus-rand-seed</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveasdialogautocomment">save-as-dialog-auto-comment</a></em></td><td></td><td><em class=tab><a href="sndscm.html#xbopen">xb-open</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#envexptchannel">env-expt-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#listenerfont">listener-font</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-random">mus-random</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveasdialogsrc">save-as-dialog-src</a></em></td><td></td><td><em class=tab><a href="extsnd.html#xrampchannel">xramp-channel</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#env-interp">env-interp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#listenerprompt">listener-prompt</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-reset">mus-reset</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savecontrols">save-controls</a></em></td><td></td><td><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#envmixes">env-mixes</a></em></td><td></td><td><em class=tab><a href="extsnd.html#listenerselection">listener-selection</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-run">mus-run</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savedir">save-dir</a></em></td><td></td><td class="green"><div class="centered">Y</div></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#envselection">env-selection</a></em></td><td></td><td><em class=tab><a href="extsnd.html#listenertextcolor">listener-text-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussampletypetostring">mus-sample-type-&gt;string</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveedithistory">save-edit-history</a></em></td><td></td><td><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#envsound">env-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#littleendianp">little-endian?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussampletypename">mus-sample-type-name</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveenvelopes">save-envelopes</a></em></td><td></td><td><em class=tab><a href="extsnd.html#ytoposition">y-&gt;position</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#envsoundinterp">env-sound-interp</a></em></td><td></td><td><em class=tab><a href="s7.html#loadhook">*load-hook*</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-scaler">mus-scaler</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savehook">save-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#yaxislabel">y-axis-label</a></em></td></tr>
- <tr><td><em class=tab><a href="sndscm.html#envsquaredchannel">env-squared-channel</a></em></td><td></td><td><em class=tab><a href="s7.html#loadpath">*load-path*</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundchans">mus-sound-chans</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savelistener">save-listener</a></em></td><td></td><td><em class=tab><a href="extsnd.html#ybounds">y-bounds</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#env?">env?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#locatezero">locate-zero</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundcomment">mus-sound-comment</a></em></td><td></td><td><em class=tab><a href="sndscm.html#savemarkproperties">save-mark-properties</a></em></td><td></td><td><em class=tab><a href="extsnd.html#ypositionslider">y-position-slider</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#envedbase">enved-base</a></em></td><td></td><td><em class=tab><a href="sndclm.html#locsig">locsig</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussounddatalocation">mus-sound-data-location</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savemarks">save-marks</a></em></td><td></td><td><em class=tab><a href="extsnd.html#yzoomslider">y-zoom-slider</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#envedclipping">enved-clip?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#locsig-ref">locsig-ref</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussounddatumsize">mus-sound-datum-size</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savemix">save-mix</a></em></td><td></td><td><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#enveddialog">enved-dialog</a></em></td><td></td><td><em class=tab><a href="sndclm.html#locsig-reverb-ref">locsig-reverb-ref</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundduration">mus-sound-duration</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveregion">save-region</a></em></td><td></td><td class="green"><div class="centered">Z</div></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#envedenvelope">enved-envelope</a></em></td><td></td><td><em class=tab><a href="sndclm.html#locsig-reverb-set!">locsig-reverb-set!</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundforget">mus-sound-forget</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveregiondialog">save-region-dialog</a></em></td><td></td><td><em class=tab> </em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#filterenv">enved-filter</a></em></td><td></td><td><em class=tab><a href="sndclm.html#locsig-set!">locsig-set!</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundframples">mus-sound-framples</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveselection">save-selection</a></em></td><td></td><td><em class=tab><a href="sndscm.html#ztransform">z-transform</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#filterenvorder">enved-filter-order</a></em></td><td></td><td><em class=tab><a href="sndclm.html#locsig-type">locsig-type</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundheadertype">mus-sound-header-type</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveselectiondialog">save-selection-dialog</a></em></td><td></td><td><em class=tab><a href="sndscm.html#zecho">zecho</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#envedhook">enved-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#locsig?">locsig?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundlength">mus-sound-length</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savesound">save-sound</a></em></td><td></td><td><em class=tab><a href="sndscm.html#zeroplus">zero+</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#envedin-dB">enved-in-dB</a></em></td><td></td><td><em class=tab><a href="extsnd.html#logfreqstart">log-freq-start</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundloopinfo">mus-sound-loop-info</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savesoundas">save-sound-as</a></em></td><td></td><td><em class=tab><a href="extsnd.html#zeropad">zero-pad</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#envedpower">enved-power</a></em></td><td></td><td><em class=tab><a href="sndscm.html#lpccoeffs">lpc-coeffs</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundmarkinfo">mus-sound-mark-info</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savesounddialog">save-sound-dialog</a></em></td><td></td><td><em class=tab><a href="sndscm.html#zerophase">zero-phase</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#envedstyle">enved-style</a></em></td><td></td><td><em class=tab><a href="sndscm.html#lpcpredict">lpc-predict</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundmaxamp">mus-sound-maxamp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savestate">save-state</a></em></td><td></td><td><em class=tab><a href="sndscm.html#zipsound">zip-sound</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#envedtarget">enved-target</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundmaxampexists">mus-sound-maxamp-exists?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savestatefile">save-state-file</a></em></td><td></td><td><em class=tab><a href="sndscm.html#zipper">zipper</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#envedwaving">enved-wave?</a></em></td><td></td><td class="green"><div class="centered">M</div></td><td></td><td><em class=tab><a href="extsnd.html#mussoundpath">mus-sound-path</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savestatehook">save-state-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#zoomcolor">zoom-color</a></em></td></tr>
- <tr><td><em class=tab><a href="extsnd.html#envedwaveformcolor">enved-waveform-color</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundpreload">mus-sound-preload</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveexamples"><b>Saving</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#zoomfocusstyle">zoom-focus-style</a></em></td></tr>
- <tr><td><em class=tab><a href="sndclm.html#envelopeinterp">envelope-interp</a></em></td><td></td><td><em class=tab><a href="s7.html#macrop">macro?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundprune">mus-sound-prune</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sgfilter">savitzky-golay-filter</a></em></td><td></td>
-</tr>
- <tr><td><em class=tab><a href="sndscm.html#envelopedmix">enveloped-mix</a></em></td><td></td><td><em class=tab><a href="s7.html#macroexpand">macroexpand</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundreportcache">mus-sound-report-cache</a></em></td><td></td><td><em class=tab><a href="sndclm.html#sawtooth-wave">sawtooth-wave</a></em></td><td></td>
-</tr>
- <tr><td><em class=tab><a href="extsnd.html#envexamples"><b>Envelopes</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#mainmenu">main-menu</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundsampletype">mus-sound-sample-type</a></em></td><td></td><td><em class=tab><a href="sndclm.html#sawtooth-wave?">sawtooth-wave?</a></em></td><td></td>
+ <tr><td><em class=tab><a href="s7.html#sharpreaders">*#readers*</a></em></td><td></td><td><em class=tab><a href="extsnd.html#envexamples"><b>Envelopes</b></a></em></td><td></td><td><em class=tab><a href="s7.html#macrop">macro?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundprune">mus-sound-prune</a></em></td><td></td><td><em class=tab><a href="extsnd.html#scaleby">scale-by</a></em></td></tr>
+ <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#eoddcos">eoddcos</a></em></td><td></td><td><em class=tab><a href="s7.html#macroexpand">macroexpand</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundreportcache">mus-sound-report-cache</a></em></td><td></td><td><em class=tab><a href="extsnd.html#scalechannel">scale-channel</a></em></td></tr>
+ <tr><td class="green"><div class="centered">A</div></td><td></td><td><em class=tab><a href="sndclm.html#eoddcos?">eoddcos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mainmenu">main-menu</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundsampletype">mus-sound-sample-type</a></em></td><td></td><td><em class=tab><a href="sndscm.html#scaleenvelope">scale-envelope</a></em></td></tr>
+ <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#epsbottommargin">eps-bottom-margin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mainwidgets">main-widgets</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundsamples">mus-sound-samples</a></em></td><td></td><td><em class=tab><a href="sndscm.html#scalemixes">scale-mixes</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#abcos">abcos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#epsfile">eps-file</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-abcos">make-abcos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundsrate">mus-sound-srate</a></em></td><td></td><td><em class=tab><a href="extsnd.html#scaleselectionby">scale-selection-by</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#abcos?">abcos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#epsleftmargin">eps-left-margin</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-absin">make-absin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundtypespecifier">mus-sound-type-specifier</a></em></td><td></td><td><em class=tab><a href="extsnd.html#scaleselectionto">scale-selection-to</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#abort">abort</a></em></td><td></td><td><em class=tab><a href="extsnd.html#epssize">eps-size</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-adjustable-sawtooth-wave">make-adjustable-sawtooth-wave</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundwritedate">mus-sound-write-date</a></em></td><td></td><td><em class=tab><a href="sndscm.html#scalesound">scale-sound</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#absin">absin</a></em></td><td></td><td><em class=tab><a href="sndclm.html#ercos">ercos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-adjustable-square-wave">make-adjustable-square-wave</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mussrate">mus-srate</a></em></td><td></td><td><em class=tab><a href="sndscm.html#scaletempo">scale-tempo</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#absin?">absin?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#ercos?">ercos?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-adjustable-triangle-wave">make-adjustable-triangle-wave</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-width">mus-width</a></em></td><td></td><td><em class=tab><a href="extsnd.html#scaleto">scale-to</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#addampcontrols">add-amp-controls</a></em></td><td></td><td><em class=tab><a href="s7.html#errorhook">*error-hook*</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-all-pass">make-all-pass</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-xcoeff">mus-xcoeff</a></em></td><td></td><td><em class=tab><a href="extsnd.html#scanchannel">scan-channel</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#addcolormap">add-colormap</a></em></td><td></td><td><em class=tab><a href="sndclm.html#erssb">erssb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#makeallpassbank">make-all-pass-bank</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-xcoeffs">mus-xcoeffs</a></em></td><td></td><td><em class=tab><a href="sndscm.html#dspdocscanned">scanned synthesis</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#adddeleteoption">add-delete-option</a></em></td><td></td><td><em class=tab><a href="sndclm.html#erssb?">erssb?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-asyfm">make-asyfm</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-ycoeff">mus-ycoeff</a></em></td><td></td><td><em class=tab><a href="sndscm.html#scentroid">scentroid</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#adddirectorytoviewfileslist">add-directory-to-view-files-list</a></em></td><td></td><td><em class=tab><a href="sndclm.html#evenmultiple">even-multiple</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-asymmetric-fm">make-asymmetric-fm</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-ycoeffs">mus-ycoeffs</a></em></td><td></td><td><em class=tab><a href="sndscm.html#scratch">scratch</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#addfilefilter">add-file-filter</a></em></td><td></td><td><em class=tab><a href="sndclm.html#evenweight">even-weight</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makebandpass">make-bandpass</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#scriptarg">script-arg</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#addfilesorter">add-file-sorter</a></em></td><td></td><td><em class=tab><a href="sndscm.html#everysample">every-sample?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makebandstop">make-bandstop</a></em></td><td></td><td class="green"><div class="centered">N</div></td><td></td><td><em class=tab><a href="extsnd.html#scriptargs">script-args</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#addfiletoviewfileslist">add-file-to-view-files-list</a></em></td><td></td><td><em class=tab><a href="extsnd.html#exit">exit</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-bess">make-bess</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="grfsnd.html#sndwithnogui"><b>Scripting</b></a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#addmark">add-mark</a></em></td><td></td><td><em class=tab><a href="extsnd.html#exithook">exit-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makebiquad">make-biquad</a></em></td><td></td><td><em class=tab><a href="sndclm.html#n1cos">n1cos</a></em></td><td></td><td><em class=tab><a href="sndscm.html#searchforclick">search-for-click</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#addmarkpane">add-mark-pane</a></em></td><td></td><td><em class=tab><a href="extsnd.html#expandcontrol">expand-control</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makebirds">make-birds</a></em></td><td></td><td><em class=tab><a href="sndclm.html#n1cos?">n1cos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#searchprocedure">search-procedure</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#addplayer">add-player</a></em></td><td></td><td><em class=tab><a href="extsnd.html#expandcontrolbounds">expand-control-bounds</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-blackman">make-blackman</a></em></td><td></td><td><em class=tab><a href="extsnd.html#nameclickhook">name-click-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#searchexamples"><b>Searching</b></a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#addsoundfileextension">add-sound-file-extension</a></em></td><td></td><td><em class=tab><a href="extsnd.html#expandcontrolhop">expand-control-hop</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-brown-noise">make-brown-noise</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nchoosekcos">nchoosekcos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#secondstosamples">seconds-&gt;samples</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#addsourcefileextension">add-source-file-extension</a></em></td><td></td><td><em class=tab><a href="extsnd.html#expandcontroljitter">expand-control-jitter</a></em></td><td></td><td><em class=tab><a href="s7.html#makebytevector">make-byte-vector</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nchoosekcos?">nchoosekcos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectall">select-all</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#addtomainmenu">add-to-main-menu</a></em></td><td></td><td><em class=tab><a href="extsnd.html#expandcontrollength">expand-control-length</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makedropsite">make-channel-drop-site</a></em></td><td></td><td><em class=tab><a href="sndclm.html#ncos">ncos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectchannel">select-channel</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#addtomenu">add-to-menu</a></em></td><td></td><td><em class=tab><a href="extsnd.html#expandcontrolramp">expand-control-ramp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makecolor">make-color</a></em></td><td></td><td><em class=tab><a href="sndclm.html#ncos2?">ncos2?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectchannelhook">select-channel-hook</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#addtooltip">add-tooltip</a></em></td><td></td><td><em class=tab><a href="extsnd.html#expandcontrolp">expand-control?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-comb">make-comb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#ncos4?">ncos4?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectsound">select-sound</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#addtransform">add-transform</a></em></td><td></td><td><em class=tab><a href="sndscm.html#explodesf2">explode-sf2</a></em></td><td></td><td><em class=tab><a href="sndclm.html#makecombbank">make-comb-bank</a></em></td><td></td><td><em class=tab><a href="sndclm.html#ncos?">ncos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectsoundhook">select-sound-hook</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#spectra">additive synthesis</a></em></td><td></td><td><em class=tab><a href="sndclm.html#exponentially-weighted-moving-average">exponentially-weighted-moving-average</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-convolve">make-convolve</a></em></td><td></td><td><em class=tab><a href="extsnd.html#newsound">new-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectedchannel">selected-channel</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#adjustable-sawtooth-wave">adjustable-sawtooth-wave</a></em></td><td></td><td><em class=tab><a href="sndscm.html#expsnd">expsnd</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-delay">make-delay</a></em></td><td></td><td><em class=tab><a href="extsnd.html#newsounddialog">new-sound-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selecteddatacolor">selected-data-color</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#adjustable-sawtooth-wave?">adjustable-sawtooth-wave?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#expsrc">expsrc</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makedifferentiator">make-differentiator</a></em></td><td></td><td><em class=tab><a href="extsnd.html#newsoundhook">new-sound-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectedgraphcolor">selected-graph-color</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#adjustable-square-wave">adjustable-square-wave</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#make-env">make-env</a></em></td><td></td><td><em class=tab><a href="extsnd.html#newwidgethook">new-widget-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectedsound">selected-sound</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#adjustable-square-wave?">adjustable-square-wave?</a></em></td><td></td><td class="green"><div class="centered">F</div></td><td></td><td><em class=tab><a href="sndclm.html#make-eoddcos">make-eoddcos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#nextsample">next-sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selection">selection</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#adjustable-triangle-wave">adjustable-triangle-wave</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#make-ercos">make-ercos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nkssb">nkssb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectiontomix">selection-&gt;mix</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#adjustable-triangle-wave?">adjustable-triangle-wave?</a></em></td><td></td><td><em class=tab><a href="s7.html#featureslist">*features*</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-erssb">make-erssb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nkssbinterp">nkssb-interp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionchans">selection-chans</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#afterapplycontrolshook">after-apply-controls-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#cellon">feedback fm</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-fft-window">make-fft-window</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nkssb?">nkssb?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectioncolor">selection-color</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#afteredithook">after-edit-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fft">fft</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-filetoframple">make-file-&gt;frample</a></em></td><td></td><td><em class=tab><a href="sndclm.html#noddcos">noddcos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectioncontext">selection-context</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#aftergraphhook">after-graph-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fftcancel">fft-cancel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-filetosample">make-file-&gt;sample</a></em></td><td></td><td><em class=tab><a href="sndclm.html#noddcos?">noddcos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectioncreatesregion">selection-creates-region</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#afterlispgraphhook">after-lisp-graph-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fftedit">fft-edit</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-filter">make-filter</a></em></td><td></td><td><em class=tab><a href="sndclm.html#noddsin">noddsin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionframples">selection-framples</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#afteropenhook">after-open-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fftenvedit">fft-env-edit</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-filtered-comb">make-filtered-comb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#noddsin?">noddsin?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionmaxamp">selection-maxamp</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#aftersaveashook">after-save-as-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fftenvinterp">fft-env-interp</a></em></td><td></td><td><em class=tab><a href="sndclm.html#makefilteredcombbank">make-filtered-comb-bank</a></em></td><td></td><td><em class=tab><a href="sndclm.html#noddssb">noddssb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionmaxampposition">selection-maxamp-position</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#aftersavestatehook">after-save-state-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fftlogfrequency">fft-log-frequency</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-fir-coeffs">make-fir-coeffs</a></em></td><td></td><td><em class=tab><a href="sndclm.html#noddssb?">noddssb?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionmember">selection-member?</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#aftertransformhook">after-transform-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fftlogmagnitude">fft-log-magnitude</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-fir-filter">make-fir-filter</a></em></td><td></td><td><em class=tab><a href="sndclm.html#noid">noid</a></em></td><td></td><td><em class=tab><a href="sndscm.html#selectionmembers">selection-members</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#allchans">all-chans</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fftsmoother">fft-smoother</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-firmant">make-firmant</a></em></td><td></td><td><em class=tab><a href="sndscm.html#cleandoc"><b>Noise Reduction</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionposition">selection-position</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#all-pass">all-pass</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fftsquelch">fft-squelch</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makefv">make-float-vector</a></em></td><td></td><td><em class=tab><a href="extsnd.html#normalizechannel">normalize-channel</a></em></td><td></td><td><em class=tab><a href="sndscm.html#selectionrms">selection-rms</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#allpassbank">all-pass-bank</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fftwindow">fft-window</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-flocsig">make-flocsig</a></em></td><td></td><td><em class=tab><a href="sndscm.html#normalizeenvelope">normalize-envelope</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionsrate">selection-srate</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#allpassbankp">all-pass-bank?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fftalpha">fft-window-alpha</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-fmssb">make-fmssb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#normalizepartials">normalize-partials</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionok">selection?</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#all-pass?">all-pass?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fftbeta">fft-window-beta</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-formant">make-formant</a></em></td><td></td><td><em class=tab><a href="sndscm.html#normalizesound">normalize-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#selectionstuff"><b>Selections</b></a></em></td></tr>
+ <tr><td><em class=tab><a href="grfsnd.html#sndandalsa"><b>Alsa</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#fftwithphases">fft-with-phases</a></em></td><td></td><td><em class=tab><a href="sndclm.html#makeformantbank">make-formant-bank</a></em></td><td></td><td><em class=tab><a href="sndscm.html#normalizedmix">normalized-mix</a></em></td><td></td><td><em class=tab><a href="extsnd.html#setsamples">set-samples</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#ampcontrol">amp-control</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fftexamples"><b>FFTs</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-frampletofile">make-frample-&gt;file</a></em></td><td></td><td><em class=tab><a href="sndclm.html#notch">notch</a></em></td><td></td><td><em class=tab><a href="s7.html#setter">setter</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#ampcontrolbounds">amp-control-bounds</a></em></td><td></td><td><em class=tab><a href="sndscm.html#nbdoc">file database</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-granulate">make-granulate</a></em></td><td></td><td><em class=tab><a href="sndscm.html#notchchannel">notch-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#shortfilename">short-file-name</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#amplitude-modulate">amplitude-modulate</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filetoarray">file-&gt;array</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makegraphdata">make-graph-data</a></em></td><td></td><td><em class=tab><a href="sndscm.html#notchselection">notch-selection</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showaxes">show-axes</a></em></td></tr>
+ <tr><td><em class=tab><a href="grfsnd.html#analyseladspa">analyse-ladspa</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filetoframple">file-&gt;frample</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-green-noise">make-green-noise</a></em></td><td></td><td><em class=tab><a href="sndscm.html#notchsound">notch-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showcontrols">show-controls</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#anoi">anoi</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filetoframple?">file-&gt;frample?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-green-noise-interp">make-green-noise-interp</a></em></td><td></td><td><em class=tab><a href="sndclm.html#notch?">notch?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#showdiskspace">show-disk-space</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#anyenvchannel">any-env-channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filetosample">file-&gt;sample</a></em></td><td></td><td><em class=tab><a href="s7.html#makehashtable">make-hash-table</a></em></td><td></td><td><em class=tab><a href="sndclm.html#npcos?">npcos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showfullduration">show-full-duration</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#anyrandom">any-random</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filetosample?">file-&gt;sample?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makehighpass">make-highpass</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nrcos">nrcos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showfullrange">show-full-range</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#applycontrols">apply-controls</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filename">file-name</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makehilberttransform">make-hilbert-transform</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nrcos?">nrcos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showgrid">show-grid</a></em></td></tr>
+ <tr><td><em class=tab><a href="grfsnd.html#applyladspa">apply-ladspa</a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericfilename"><b>file-name (generic)</b></a></em></td><td></td><td><em class=tab><a href="s7.html#makehook">make-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#nrev">nrev</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showindices">show-indices</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#aritablep">aritable?</a></em></td><td></td><td><em class=tab><a href="s7.html#fillb">fill!</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-iir-filter">make-iir-filter</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nrsin">nrsin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showlistener">show-listener</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#arity">arity</a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericfill"><b>fill! (generic)</b></a></em></td><td></td><td><em class=tab><a href="s7.html#makeintvector">make-int-vector</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nrsin?">nrsin?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showmarks">show-marks</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#arraytofile">array-&gt;file</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fillpolygon">fill-polygon</a></em></td><td></td><td><em class=tab><a href="s7.html#makeiterator">make-iterator</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nrssb">nrssb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showmixwaveforms">show-mix-waveforms</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#array-interp">array-interp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fillrectangle">fill-rectangle</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-izcos">make-izcos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nrssbinterp">nrssb-interp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showselection">show-selection</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#asoneedit">as-one-edit</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filter">filter</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-j0evencos">make-j0evencos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nrssb?">nrssb?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showselectiontransform">show-selection-transform</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#askaboutunsavededits">ask-about-unsaved-edits</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filterchannel">filter-channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-j0j1cos">make-j0j1cos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nrxycos">nrxycos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showsonogramcursor">show-sonogram-cursor</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#askbeforeoverwrite">ask-before-overwrite</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filtercontrolcoeffs">filter-control-coeffs</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-j2cos">make-j2cos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nrxycos?">nrxycos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showtransformpeaks">show-transform-peaks</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#asyfmI">asyfm-I</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filtercontrolenvelope">filter-control-envelope</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-jjcos">make-jjcos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nrxysin">nrxysin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showwidget">show-widget</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#asyfmJ">asyfm-J</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filtercontrolindB">filter-control-in-dB</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-jncos">make-jncos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nrxysin?">nrxysin?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#showyzero">show-y-zero</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#asyfm?">asyfm?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filtercontrolinhz">filter-control-in-hz</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-jpcos">make-jpcos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nsin">nsin</a></em></td><td></td><td><em class=tab><a href="s7.html#signature">signature</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#asymmetric-fm">asymmetric-fm</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filtercontrolorder">filter-control-order</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-jycos">make-jycos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nsin?">nsin?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#silenceallmixes">silence-all-mixes</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#asymmetric-fm?">asymmetric-fm?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filterwaveformcolor">filter-control-waveform-color</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-k2cos">make-k2cos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nsincos">nsincos</a></em></td><td></td><td><em class=tab><a href="sndscm.html#silencemixes">silence-mixes</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#autoresize">auto-resize</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filtercontrolp">filter-control?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-k2sin">make-k2sin</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nsincos?">nsincos?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#sinc-train">sinc-train</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#autosavedoc">auto-save</a></em></td><td></td><td><em class=tab><a href="sndscm.html#filterfft">filter-fft</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-k2ssb">make-k2ssb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nssb">nssb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#sinc-train?">sinc-train?</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#autoupdate">auto-update</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filterselection">filter-selection</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-k3sin">make-k3sin</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nssb?">nssb?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sincwidth">sinc-width</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#autoupdateinterval">auto-update-interval</a></em></td><td></td><td><em class=tab><a href="sndscm.html#filterselectionandsmooth">filter-selection-and-smooth</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-krksin">make-krksin</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nxy1cos">nxy1cos</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sineenvchannel">sine-env-channel</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#autocorrelate">autocorrelate</a></em></td><td></td><td><em class=tab><a href="extsnd.html#filtersound">filter-sound</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-locsig">make-locsig</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nxy1cos?">nxy1cos?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sineramp">sine-ramp</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#autoload"><b>autoload</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#filter?">filter?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makelowpass">make-lowpass</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nxy1sin">nxy1sin</a></em></td><td></td><td><em class=tab><a href="sndscm.html#singerdoc">singer</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#axiscolor">axis-color</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filtered-comb">filtered-comb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makemixsampler">make-mix-sampler</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nxy1sin?">nxy1sin?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#smoothchannel">smooth-channel</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#axisinfo">axis-info</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filteredcombbank">filtered-comb-bank</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-move-sound">make-move-sound</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nxycos">nxycos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#smoothselection">smooth-selection</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#axislabelfont">axis-label-font</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filteredcombbankp">filtered-comb-bank?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-moving-autocorrelation">make-moving-autocorrelation</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nxycos?">nxycos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#smoothsound">smooth-sound</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#axisnumbersfont">axis-numbers-font</a></em></td><td></td><td><em class=tab><a href="sndclm.html#filtered-comb?">filtered-comb?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-moving-average">make-moving-average</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nxysin">nxysin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#smoothexamples"><b>Smoothing</b></a></em></td></tr>
+ <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#filtersinsnd"><b>Filters</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-moving-fft">make-moving-fft</a></em></td><td></td><td><em class=tab><a href="sndclm.html#nxysin?">nxysin?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#pins">SMS synthesis</a></em></td></tr>
+ <tr><td class="green"><div class="centered">B</div></td><td></td><td><em class=tab><a href="extsnd.html#finddialog">find-dialog</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-moving-max">make-moving-max</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#snapmarktobeat">snap-mark-to-beat</a></em></td></tr>
+ <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#findmark">find-mark</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-moving-norm">make-moving-norm</a></em></td><td></td><td class="green"><div class="centered">O</div></td><td></td><td><em class=tab><a href="sndscm.html#snapmarks">snap-marks</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#backgroundgradient">background-gradient</a></em></td><td></td><td><em class=tab><a href="sndscm.html#findmix">find-mix</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-moving-pitch">make-moving-pitch</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#snapmixtobeat">snap-mix-to-beat</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#badheaderhook">bad-header-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#findsound">find-sound</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-moving-scentroid">make-moving-scentroid</a></em></td><td></td><td><em class=tab><a href="s7.html#objecttolet">object-&gt;let</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndtosample">snd-&gt;sample</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#bagpipe">bagpipe</a></em></td><td></td><td><em class=tab><a href="sndscm.html#finfo">finfo</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-moving-spectrum">make-moving-spectrum</a></em></td><td></td><td><em class=tab><a href="s7.html#objecttostring">object-&gt;string</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndtosamplep">snd-&gt;sample?</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#basiccolor">basic-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#finishprogressreport">finish-progress-report</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-n1cos">make-n1cos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#oddmultiple">odd-multiple</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndcolor">snd-color</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#beatspermeasure">beats-per-measure</a></em></td><td></td><td><em class=tab><a href="sndclm.html#fir-filter">fir-filter</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nchoosekcos">make-nchoosekcos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#oddweight">odd-weight</a></em></td><td></td><td><em class=tab><a href="extsnd.html#snderror">snd-error</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#beatsperminute">beats-per-minute</a></em></td><td></td><td><em class=tab><a href="sndclm.html#fir-filter?">fir-filter?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-ncos">make-ncos</a></em></td><td></td><td><em class=tab><a href="sndscm.html#offsetchannel">offset-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#snderrorhook">snd-error-hook</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#beforeclosehook">before-close-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#firmant">firmant</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nkssb">make-nkssb</a></em></td><td></td><td><em class=tab><a href="sndscm.html#offsetsound">offset-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndfont">snd-font</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#beforeexithook">before-exit-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#firmant?">firmant?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-noddcos">make-noddcos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#one-pole">one-pole</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndgcs">snd-gcs</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#beforesaveashook">before-save-as-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fitselectionbetweenmarks">fit-selection-between-marks</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-noddsin">make-noddsin</a></em></td><td></td><td><em class=tab><a href="sndclm.html#one-pole-all-pass">one-pole-all-pass</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndhelp">snd-help</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#beforesavestatehook">before-save-state-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#flattenpartials">flatten-partials</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-noddssb">make-noddssb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#one-pole-all-pass?">one-pole-all-pass?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sndscmhooks">snd-hooks</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#beforetransformhook">before-transform-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fv">float-vector</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-noid">make-noid</a></em></td><td></td><td><em class=tab><a href="sndclm.html#one-pole?">one-pole?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndopenedsound">*snd-opened-sound*</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#besj0">bes-j0</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvtimes">float-vector*</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-notch">make-notch</a></em></td><td></td><td><em class=tab><a href="sndclm.html#one-zero">one-zero</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndprint">snd-print</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#bess">bess</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvplus">float-vector+</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nrcos">make-nrcos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#one-zero?">one-zero?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndspectrum">snd-spectrum</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#bess?">bess?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvtochannel">float-vector-&gt;channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nrsin">make-nrsin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#openfiledialog">open-file-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndtempnam">snd-tempnam</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#analogfilterdoc">bessel filters</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvtolist">float-vector-&gt;list</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nrssb">make-nrssb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#openfiledialogdirectory">open-file-dialog-directory</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndurl">snd-url</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#bigbird">bigbird</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvtostring">float-vector-&gt;string</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nrxycos">make-nrxycos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#openhook">open-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndurls">snd-urls</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#bignum">bignum</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvabs">float-vector-abs!</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nrxysin">make-nrxysin</a></em></td><td></td><td><em class=tab><a href="sndscm.html#opennextfileindirectory">open-next-file-in-directory</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndversion">snd-version</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#bignump">bignum?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvadd">float-vector-add!</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nsin">make-nsin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#openrawsound">open-raw-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndwarning">snd-warning</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#binaryiodoc">binary files</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvequal">float-vector-equal?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nsincos">make-nsincos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#openrawsoundhook">open-raw-sound-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndwarninghook">snd-warning-hook</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#bindkey">bind-key</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvfill">float-vector-fill!</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nssb">make-nssb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#opensound">open-sound</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sndwarp">sndwarp</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#bird">bird</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvlength">float-vector-length</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nxy1cos">make-nxy1cos</a></em></td><td></td><td><em class=tab><a href="s7.html#openlet">openlet</a></em></td><td></td><td><em class=tab><a href="s7.html#sortb">sort!</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#blackman">blackman</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvmax">float-vector-max</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nxy1sin">make-nxy1sin</a></em></td><td></td><td><em class=tab><a href="s7.html#openletp">openlet?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-locsig"><b>Sound placement</b></a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#blackman4envchannel">blackman4-env-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvmin">float-vector-min</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nxycos">make-nxycos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#orientationhook">orientation-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#soundtoamp_env">sound-&gt;amp-env</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#blackman?">blackman?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvmove">float-vector-move!</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-nxysin">make-nxysin</a></em></td><td></td><td><em class=tab><a href="sndclm.html#oscil">oscil</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundtointeger">sound-&gt;integer</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#boldpeaksfont">bold-peaks-font</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvmultiply">float-vector-multiply!</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-one-pole">make-one-pole</a></em></td><td></td><td><em class=tab><a href="sndclm.html#oscil-bank">oscil-bank</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundfileextensions">sound-file-extensions</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#break">break</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvoffset">float-vector-offset!</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-one-pole-all-pass">make-one-pole-all-pass</a></em></td><td></td><td><em class=tab><a href="sndclm.html#oscil-bank?">oscil-bank?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundfilep">sound-file?</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#brown-noise">brown-noise</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvpeak">float-vector-peak</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-one-zero">make-one-zero</a></em></td><td></td><td><em class=tab><a href="sndclm.html#oscil?">oscil?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundfilesindirectory">sound-files-in-directory</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#brown-noise?">brown-noise?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fvpolynomial">float-vector-polynomial</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-oscil">make-oscil</a></em></td><td></td><td><em class=tab><a href="sndclm.html#out-any">out-any</a></em></td><td></td><td><em class=tab><a href="sndscm.html#soundinterp">sound-interp</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#analogfilterdoc">butterworth filters</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvref">float-vector-ref</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-oscil-bank">make-oscil-bank</a></em></td><td></td><td><em class=tab><a href="sndclm.html#outbank">out-bank</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundloopinfo">sound-loop-info</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#bytevector">byte-vector</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvreverse">float-vector-reverse!</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-phase-vocoder">make-phase-vocoder</a></em></td><td></td><td><em class=tab><a href="sndclm.html#outa">outa</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundproperties">sound-properties</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#bytevectorref">byte-vector-ref</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvscale">float-vector-scale!</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-pink-noise">make-pink-noise</a></em></td><td></td><td><em class=tab><a href="s7.html#outlet">outlet</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundproperty">sound-property</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#bytevectorset">byte-vector-set!</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvset">float-vector-set!</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makepixmap">make-pixmap</a></em></td><td></td><td><em class=tab><a href="sndclm.html#*output*">*output*</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundwidgets">sound-widgets</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#bytevectorp">byte-vector?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#fvsubseq">float-vector-subseq</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makeplayer">make-player</a></em></td><td></td><td><em class=tab><a href="extsnd.html#outputcommenthook">output-comment-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundp">sound?</a></em></td></tr>
+ <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#fvsubtract">float-vector-subtract!</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-polyoid">make-polyoid</a></em></td><td></td><td><em class=tab><a href="sndscm.html#overlayrmsenv">overlay-rms-env</a></em></td><td></td><td><em class=tab><a href="extsnd.html#soundfontinfo">soundfont-info</a></em></td></tr>
+ <tr><td class="green"><div class="centered">C</div></td><td></td><td><em class=tab><a href="extsnd.html#fvp">float-vector?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-polyshape">make-polyshape</a></em></td><td></td><td><em class=tab><a href="s7.html#owlet">owlet</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sounds">sounds</a></em></td></tr>
+ <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#Floatvectors"><b>Float-vectors</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-polywave">make-polywave</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#soundstosegmentdata">sounds-&gt;segment-data</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#definecfunction">c-define</a></em></td><td></td><td><em class=tab><a href="sndclm.html#flocsig">flocsig</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-pulse-train">make-pulse-train</a></em></td><td></td><td class="green"><div class="centered">P</div></td><td></td><td><em class=tab><a href="sndscm.html#spectra">spectra</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#cgp">c-g?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#flocsig?">flocsig?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-pulsed-env">make-pulsed-env</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#twotab">spectral interpolation</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#cobject">c-object?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#stereoflute">flute model</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-r2k!cos">make-r2k!cos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#padchannel">pad-channel</a></em></td><td></td><td><em class=tab><a href="sndscm.html#spectralpolynomial">spectral-polynomial</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#cpoint">c-pointer</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fmbell">fm-bell</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-r2k2cos">make-r2k2cos</a></em></td><td></td><td><em class=tab><a href="sndscm.html#padmarks">pad-marks</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectrohop">spectro-hop</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#cpointer">c-pointer?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fmdrum">fm-drum</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makeramp">make-ramp</a></em></td><td></td><td><em class=tab><a href="sndscm.html#padsound">pad-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectroxangle">spectro-x-angle</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#callwithexit">call-with-exit</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fmnoise">fm-noise</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rand">make-rand</a></em></td><td></td><td><em class=tab><a href="s7.html#pairfilename">pair-filename</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectroxscale">spectro-x-scale</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#bagpipe">canter</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fmparallelcomponent">fm-parallel-component</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rand-interp">make-rand-interp</a></em></td><td></td><td><em class=tab><a href="s7.html#pairlinenumber">pair-line-number</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectroyangle">spectro-y-angle</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#cascadetocanonical">cascade-&gt;canonical</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fmvox">fm-talker</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rcos">make-rcos</a></em></td><td></td><td><em class=tab><a href="sndscm.html#panmix">pan-mix</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectroyscale">spectro-y-scale</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#catch">catch</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fmtrumpet">fm-trumpet</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-readin">make-readin</a></em></td><td></td><td><em class=tab><a href="sndscm.html#panmixfv">pan-mix-float-vector</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectrozangle">spectro-z-angle</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#cellon">cellon</a></em></td><td></td><td><em class=tab><a href="sndscm.html#vdoc">fm-violin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makeregion">make-region</a></em></td><td></td><td><em class=tab><a href="sndclm.html#partialstopolynomial">partials-&gt;polynomial</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectrozscale">spectro-z-scale</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#chaindsps">chain-dsps</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fmvoice">fm-voice</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makeregionsampler">make-region-sampler</a></em></td><td></td><td><em class=tab><a href="sndclm.html#partialstowave">partials-&gt;wave</a></em></td><td></td><td><em class=tab><a href="sndclm.html#spectrum">spectrum</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#channeltofv">channel-&gt;float-vector</a></em></td><td></td><td><em class=tab><a href="sndclm.html#fmssb">fmssb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rk!cos">make-rk!cos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#pausing">pausing</a></em></td><td></td><td><em class=tab><a href="sndscm.html#spectrumtocoeffs">spectrum-&gt;coeffs</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#channelampenvs">channel-amp-envs</a></em></td><td></td><td><em class=tab><a href="sndclm.html#fmssb?">fmssb?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rk!ssb">make-rk!ssb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#peakenvdir">peak-env-dir</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectrumend">spectrum-end</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#channeldata">channel-data</a></em></td><td></td><td><em class=tab><a href="extsnd.html#focuswidget">focus-widget</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rkcos">make-rkcos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#peaks">peaks</a></em></td><td></td><td><em class=tab><a href="extsnd.html#spectrumstart">spectrum-start</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#channelenvelope">channel-envelope</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fofins">FOF synthesis</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rkoddssb">make-rkoddssb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#peaksfont">peaks-font</a></em></td><td></td><td><em class=tab><a href="extsnd.html#speedcontrol">speed-control</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#channelpolynomial">channel-polynomial</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fofins">fofins</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rksin">make-rksin</a></em></td><td></td><td><em class=tab><a href="sndclm.html#phase-partialstowave">phase-partials-&gt;wave</a></em></td><td></td><td><em class=tab><a href="extsnd.html#speedcontrolbounds">speed-control-bounds</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#channelproperties">channel-properties</a></em></td><td></td><td><em class=tab><a href="sndscm.html#foreachchild">for-each-child</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rkssb">make-rkssb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#phase-vocoder">phase-vocoder</a></em></td><td></td><td><em class=tab><a href="extsnd.html#speedstyle">speed-control-style</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#channelproperty">channel-property</a></em></td><td></td><td><em class=tab><a href="sndscm.html#foreachsoundfile">for-each-sound-file</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-round-interp">make-round-interp</a></em></td><td></td><td><em class=tab><a href="sndclm.html#phase-vocoder?">phase-vocoder?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#speedtones">speed-control-tones</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#channelrms">channel-rms</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fp">Forbidden Planet</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rssb">make-rssb</a></em></td><td></td><td><em class=tab><a href="sndscm.html#prc95doc"><b>Physical Models</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#spotfreq">spot-freq</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#channelstyle">channel-style</a></em></td><td></td><td><em class=tab><a href="extsnd.html#foregroundcolor">foreground-color</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rxycos">make-rxycos</a></em></td><td></td><td><em class=tab><a href="sndscm.html#pianodoc">piano model</a></em></td><td></td><td><em class=tab><a href="sndclm.html#square-wave">square-wave</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#channelsync">channel-sync</a></em></td><td></td><td><em class=tab><a href="extsnd.html#forgetregion">forget-region</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rxyk!cos">make-rxyk!cos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#pink-noise">pink-noise</a></em></td><td></td><td><em class=tab><a href="sndclm.html#square-wave?">square-wave?</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#channelwidgets">channel-widgets</a></em></td><td></td><td><em class=tab><a href="sndclm.html#formant">formant</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rxyk!sin">make-rxyk!sin</a></em></td><td></td><td><em class=tab><a href="sndclm.html#pink-noise?">pink-noise?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#squelchupdate">squelch-update</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#channels">channels</a></em></td><td></td><td><em class=tab><a href="sndclm.html#formantbank">formant-bank</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-rxysin">make-rxysin</a></em></td><td></td><td><em class=tab><a href="sndscm.html#pins">pins</a></em></td><td></td><td><em class=tab><a href="sndscm.html#squelchvowels">squelch-vowels</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#genericchannels"><b>channels (generic)</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#formantbankp">formant-bank?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-sampletofile">make-sample-&gt;file</a></em></td><td></td><td><em class=tab><a href="sndscm.html#placesound">place-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#srate">srate</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#channelsequal">channels-equal?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#formant?">formant?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makesampler">make-sampler</a></em></td><td></td><td><em class=tab><a href="extsnd.html#play">play</a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericsrate"><b>srate (generic)</b></a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#channelseq">channels=?</a></em></td><td></td><td><em class=tab><a href="s7.html#format">format</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-sawtooth-wave">make-sawtooth-wave</a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericplay"><b>play (generic)</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#src">src</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#chans">chans</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#sndandforth"><b>Forth</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#makeselection">make-selection</a></em></td><td></td><td><em class=tab><a href="extsnd.html#playarrowsize">play-arrow-size</a></em></td><td></td><td><em class=tab><a href="extsnd.html#srcchannel">src-channel</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#charposition">char-position</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fp">fp</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-sinc-train">make-sinc-train</a></em></td><td></td><td><em class=tab><a href="sndscm.html#playbetweenmarks">play-between-marks</a></em></td><td></td><td><em class=tab><a href="sndscm.html#srcduration">src-duration</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#chebyhka">cheby-hka</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fractionalfouriertransform">fractional-fourier-transform</a></em></td><td></td><td><em class=tab><a href="extsnd.html#makesndtosample">make-snd-&gt;sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#playhook">play-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#srcfitenvelope">src-fit-envelope</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#analogfilterdoc">chebyshev filters</a></em></td><td></td><td><em class=tab><a href="sndclm.html#frampletofile">frample-&gt;file</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makesoundbox">make-sound-box</a></em></td><td></td><td><em class=tab><a href="sndscm.html#playmixes">play-mixes</a></em></td><td></td><td><em class=tab><a href="sndscm.html#srcmixes">src-mixes</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#checkmixtags">check-mix-tags</a></em></td><td></td><td><em class=tab><a href="sndclm.html#frampletofile?">frample-&gt;file?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#makespencerfilter">make-spencer-filter</a></em></td><td></td><td><em class=tab><a href="sndscm.html#playoften">play-often</a></em></td><td></td><td><em class=tab><a href="extsnd.html#srcsoundselection">src-selection</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#chordalize">chordalize</a></em></td><td></td><td><em class=tab><a href="sndclm.html#frampletoframple">frample-&gt;frample</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-square-wave">make-square-wave</a></em></td><td></td><td><em class=tab><a href="sndscm.html#playregionforever">play-region-forever</a></em></td><td></td><td><em class=tab><a href="extsnd.html#srcsound">src-sound</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#chorus">chorus</a></em></td><td></td><td><em class=tab><a href="extsnd.html#framples">framples</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-src">make-src</a></em></td><td></td><td><em class=tab><a href="sndscm.html#playsine">play-sine</a></em></td><td></td><td><em class=tab><a href="sndclm.html#src?">src?</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#cleanchannel">clean-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericframples"><b>framples (generic)</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-ssb-am">make-ssb-am</a></em></td><td></td><td><em class=tab><a href="sndscm.html#playsines">play-sines</a></em></td><td></td><td><em class=tab><a href="sndclm.html#ssb-am">ssb-am</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#cleansound">clean-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#freeplayer">free-player</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-table-lookup">make-table-lookup</a></em></td><td></td><td><em class=tab><a href="sndscm.html#playsyncdmarks">play-syncd-marks</a></em></td><td></td><td><em class=tab><a href="sndclm.html#ssb-am?">ssb-am?</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#clearlistener">clear-listener</a></em></td><td></td><td><em class=tab><a href="extsnd.html#freesampler">free-sampler</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-table-lookup-with-env">make-table-lookup-with-env</a></em></td><td></td><td><em class=tab><a href="sndscm.html#playuntilcg">play-until-c-g</a></em></td><td></td><td><em class=tab><a href="sndscm.html#ssbbank">ssb-bank</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#cliphook">clip-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#freeverb">freeverb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-tanhsin">make-tanhsin</a></em></td><td></td><td><em class=tab><a href="sndscm.html#playwithenvs">play-with-envs</a></em></td><td></td><td><em class=tab><a href="sndscm.html#ssbbankenv">ssb-bank-env</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#clipping">clipping</a></em></td><td></td><td><em class=tab><a href="fm.html#fmintro"><b>Frequency Modulation</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-triangle-wave">make-triangle-wave</a></em></td><td></td><td><em class=tab><a href="extsnd.html#playerhome">player-home</a></em></td><td></td><td><em class=tab><a href="sndscm.html#ssbfm">ssb-fm</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#clmchannel">clm-channel</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fullmix">fullmix</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-two-pole">make-two-pole</a></em></td><td></td><td><em class=tab><a href="extsnd.html#playerQ">player?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#startdac">start-dac</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#clmexpsrc">clm-expsrc</a></em></td><td></td><td><em class=tab><a href="s7.html#funclet">funclet</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-two-zero">make-two-zero</a></em></td><td></td><td><em class=tab><a href="extsnd.html#players">players</a></em></td><td></td><td><em class=tab><a href="extsnd.html#startplaying">start-playing</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#closehook">close-hook</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#makevariabledisplay">make-variable-display</a></em></td><td></td><td><em class=tab><a href="extsnd.html#playing">playing</a></em></td><td></td><td><em class=tab><a href="extsnd.html#startplayinghook">start-playing-hook</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#closesound">close-sound</a></em></td><td></td><td class="green"><div class="centered">G</div></td><td></td><td><em class=tab><a href="extsnd.html#makevariablegraph">make-variable-graph</a></em></td><td></td><td><em class=tab><a href="extsnd.html#playexamples"><b>Playing</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#startplayingselectionhook">start-playing-selection-hook</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#colortolist">color-&gt;list</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#make-wave-train">make-wave-train</a></em></td><td></td><td><em class=tab><a href="sndscm.html#pluck">pluck</a></em></td><td></td><td><em class=tab><a href="extsnd.html#startprogressreport">start-progress-report</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#colorcutoff">color-cutoff</a></em></td><td></td><td><em class=tab><a href="sndscm.html#gaussiandistribution">gaussian-distribution</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-wave-train-with-env">make-wave-train-with-env</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#sndandladspa"><b>Plugins</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#statusreport">status-report</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#colorhook">color-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#gcoff">gc-off</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mapchannel">map-channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polartorectangular">polar-&gt;rectangular</a></em></td><td></td><td><em class=tab><a href="extsnd.html#stdinprompt">stdin-prompt</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#colorinverted">color-inverted</a></em></td><td></td><td><em class=tab><a href="extsnd.html#gcon">gc-on</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mapsoundfiles">map-sound-files</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polynomial">polynomial</a></em></td><td></td><td><em class=tab><a href="sndscm.html#stereotomono">stereo-&gt;mono</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#colormixes">color-mixes</a></em></td><td></td><td><em class=tab><a href="sndclm.html#generators"><b>Generators</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#maracadoc">maracas</a></em></td><td></td><td><em class=tab><a href="sndscm.html#polydoc">polynomial operations</a></em></td><td></td><td><em class=tab><a href="sndscm.html#stereoflute">stereo-flute</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#colororientationdialog">color-orientation-dialog</a></em></td><td></td><td><em class=tab><a href="s7.html#gensym">gensym</a></em></td><td></td><td><em class=tab><a href="extsnd.html#marktointeger">mark-&gt;integer</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polyoid">polyoid</a></em></td><td></td><td><em class=tab><a href="extsnd.html#stopplayer">stop-player</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#colorscale">color-scale</a></em></td><td></td><td><em class=tab><a href="s7.html#gensym?">gensym?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markclickhook">mark-click-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polyoidenv">polyoid-env</a></em></td><td></td><td><em class=tab><a href="extsnd.html#stopplaying">stop-playing</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#colorp">color?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#glgraphtops">gl-graph-&gt;ps</a></em></td><td></td><td><em class=tab><a href="sndscm.html#markclickinfo">mark-click-info</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polyoid?">polyoid?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#stopplayinghook">stop-playing-hook</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#colormap">colormap</a></em></td><td></td><td><em class=tab><a href="extsnd.html#glspectrogram">glSpectrogram</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markcolor">mark-color</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polyshape">polyshape</a></em></td><td></td><td><em class=tab><a href="extsnd.html#stopplayingselectionhook">stop-playing-selection-hook</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#colormaptointeger">colormap-&gt;integer</a></em></td><td></td><td><em class=tab><a href="sndscm.html#goertzel">goertzel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markcontext">mark-context</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polyshape?">polyshape?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#stretchenvelope">stretch-envelope</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#colormapname">colormap-name</a></em></td><td></td><td><em class=tab><a href="extsnd.html#gotolistenerend">goto-listener-end</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markdraghook">mark-drag-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polywave">polywave</a></em></td><td></td><td><em class=tab><a href="sndscm.html#stretchsoundviadft">stretch-sound-via-dft</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#colormapref">colormap-ref</a></em></td><td></td><td><em class=tab><a href="sndscm.html#grani">grani</a></em></td><td></td><td><em class=tab><a href="sndscm.html#markexplode">mark-explode</a></em></td><td></td><td><em class=tab><a href="sndclm.html#polywave?">polywave?</a></em></td><td></td><td><em class=tab><a href="s7.html#stringtobytevector">string-&gt;byte-vector</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#colormapsize">colormap-size</a></em></td><td></td><td><em class=tab><a href="sndclm.html#grains"><b>Granular synthesis</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#markhome">mark-home</a></em></td><td></td><td><em class=tab><a href="s7.html#portfilename">port-filename</a></em></td><td></td><td><em class=tab><a href="s7.html#stringposition">string-position</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#colormapp">colormap?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#granulate">granulate</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markhook">mark-hook</a></em></td><td></td><td><em class=tab><a href="s7.html#portlinenumber">port-line-number</a></em></td><td></td><td><em class=tab><a href="s7.html#sublet">sublet</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#colors"><b>Colors</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#granulate?">granulate?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#markloops">mark-loops</a></em></td><td></td><td><em class=tab><a href="extsnd.html#positiontox">position-&gt;x</a></em></td><td></td><td><em class=tab><a href="sndscm.html#superimposeffts">superimpose-ffts</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#comb">comb</a></em></td><td></td><td><em class=tab><a href="sndscm.html#granulatedsoundinterp">granulated-sound-interp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markname">mark-name</a></em></td><td></td><td><em class=tab><a href="extsnd.html#positiontoy">position-&gt;y</a></em></td><td></td><td><em class=tab><a href="extsnd.html#swapchannels">swap-channels</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#combbank">comb-bank</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graph">graph</a></em></td><td></td><td><em class=tab><a href="sndscm.html#marknametoid">mark-name-&gt;id</a></em></td><td></td><td><em class=tab><a href="extsnd.html#positioncolor">position-color</a></em></td><td></td><td><em class=tab><a href="sndscm.html#swapselectionchannels">swap-selection-channels</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#combbankp">comb-bank?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graphtops">graph-&gt;ps</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markproperties">mark-properties</a></em></td><td></td><td><em class=tab><a href="sndscm.html#powerenv">power-env</a></em></td><td></td><td><em class=tab><a href="s7.html#symboltodynamicvalue">symbol-&gt;dynamic-value</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#comb?">comb?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graphcolor">graph-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markproperty">mark-property</a></em></td><td></td><td><em class=tab><a href="sndscm.html#pqw">pqw</a></em></td><td></td><td><em class=tab><a href="s7.html#symboltovalue">symbol-&gt;value</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#combineddatacolor">combined-data-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graphcursor">graph-cursor</a></em></td><td></td><td><em class=tab><a href="extsnd.html#marksample">mark-sample</a></em></td><td></td><td><em class=tab><a href="sndscm.html#pqwvox">pqw-vox</a></em></td><td></td><td><em class=tab><a href="s7.html#symbolsetter">symbol-setter</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#comment">comment</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graphdata">graph-data</a></em></td><td></td><td><em class=tab><a href="extsnd.html#marksync">mark-sync</a></em></td><td></td><td><em class=tab><a href="extsnd.html#preferencesdialog">preferences-dialog</a></em></td><td></td><td><em class=tab><a href="s7.html#symboltable">symbol-table</a></em></td></tr>
+ <tr><td><em class=tab><a href="grfsnd.html#sndwithcm"><b>Common Music</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#graphhook">graph-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#marksynccolor">mark-sync-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#previoussample">previous-sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sync">sync</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#complexify">complexify</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graphstyle">graph-style</a></em></td><td></td><td><em class=tab><a href="extsnd.html#marksyncmax">mark-sync-max</a></em></td><td></td><td><em class=tab><a href="extsnd.html#printdialog">print-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericsync"><b>sync (generic)</b></a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#concatenateenvelopes">concatenate-envelopes</a></em></td><td></td><td><em class=tab><a href="sndscm.html#grapheq">graphic equalizer</a></em></td><td></td><td><em class=tab><a href="extsnd.html#marktagheight">mark-tag-height</a></em></td><td></td><td><em class=tab><a href="extsnd.html#printlength">print-length</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sync-everything">sync-everything</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#constantp">constant?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#graphshorizontal">graphs-horizontal</a></em></td><td></td><td><em class=tab><a href="extsnd.html#marktagwidth">mark-tag-width</a></em></td><td></td><td><em class=tab><a href="s7.html#proceduresource">procedure-source</a></em></td><td></td><td><em class=tab><a href="extsnd.html#syncmax">sync-max</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#continuationp">continuation?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#green-noise">green-noise</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markp">mark?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#progressreport">progress-report</a></em></td><td></td><td><em class=tab><a href="extsnd.html#syncstyle">sync-style</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#continue-frampletofile">continue-frample-&gt;file</a></em></td><td></td><td><em class=tab><a href="sndclm.html#green-noise-interp">green-noise-interp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#markstuff"><b>Marking</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#pulse-train">pulse-train</a></em></td><td></td><td><em class=tab><a href="extsnd.html#syncdmarks">syncd-marks</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#continue-sampletofile">continue-sample-&gt;file</a></em></td><td></td><td><em class=tab><a href="sndclm.html#green-noise-interp?">green-noise-interp?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#emarks">marks</a></em></td><td></td><td><em class=tab><a href="sndclm.html#pulse-train?">pulse-train?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#syncdmixes">syncd-mixes</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#contrastchannel">contrast-channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#green-noise?">green-noise?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#matchsoundfiles">match-sound-files</a></em></td><td></td><td><em class=tab><a href="sndclm.html#pulsedenv">pulsed-env</a></em></td><td></td><td><em class=tab><a href="sndscm.html#syncup">syncup</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#contrastcontrol">contrast-control</a></em></td><td></td><td><em class=tab><a href="extsnd.html#griddensity">grid-density</a></em></td><td></td><td><em class=tab><a href="sndscm.html#maxenvelope">max-envelope</a></em></td><td></td><td><em class=tab><a href="sndclm.html#pulsedenv?">pulsed-env?</a></em></td><td></td><td><em class=tab> </em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#contrastcontrolamp">contrast-control-amp</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#maxregions">max-regions</a></em></td><td></td><td><em class=tab> </em></td><td></td><td class="green"><div class="centered">T</div></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#contrastcontrolbounds">contrast-control-bounds</a></em></td><td></td><td class="green"><div class="centered">H</div></td><td></td><td><em class=tab><a href="extsnd.html#maxfftpeaks">max-transform-peaks</a></em></td><td></td><td class="green"><div class="centered">R</div></td><td></td><td><em class=tab> </em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#contrastcontrolp">contrast-control?</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#maxamp">maxamp</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#table-lookup">table-lookup</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#contrast-enhancement">contrast-enhancement</a></em></td><td></td><td><em class=tab><a href="sndscm.html#harmonicizer">harmonicizer</a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericmaxamp"><b>maxamp (generic)</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#r2k!cos">r2k!cos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#table-lookup?">table-lookup?</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#contrastsound">contrast-sound</a></em></td><td></td><td><em class=tab><a href="sndscm.html#dht">Hartley transform</a></em></td><td></td><td><em class=tab><a href="extsnd.html#maxampposition">maxamp-position</a></em></td><td></td><td><em class=tab><a href="sndclm.html#r2k!cos?">r2k!cos?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#tanhsin">tanhsin</a></em></td></tr>
+ <tr><td><em class=tab><a href="snd.html#controls"><b>Control Panel</b></a></em></td><td></td><td><em class=tab><a href="s7.html#hashtable">hash-table</a></em></td><td></td><td><em class=tab><a href="extsnd.html#maxampexamples"><b>Maxamps</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#r2k2cos">r2k2cos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#tanhsin?">tanhsin?</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#controlstochannel">controls-&gt;channel</a></em></td><td></td><td><em class=tab><a href="s7.html#hashtablestar">hash-table*</a></em></td><td></td><td><em class=tab><a href="extsnd.html#menuwidgets">menu-widgets</a></em></td><td></td><td><em class=tab><a href="sndclm.html#r2k2cos?">r2k2cos?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#tap">tap</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#convolution">convolution</a></em></td><td></td><td><em class=tab><a href="s7.html#hashtableentries">hash-table-entries</a></em></td><td></td><td><em class=tab><a href="sndscm.html#menusdoc">menus, optional</a></em></td><td></td><td><em class=tab><a href="sndclm.html#radianstodegrees">radians-&gt;degrees</a></em></td><td></td><td><em class=tab><a href="sndclm.html#tap?">tap?</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#convolvewith">convolution reverb</a></em></td><td></td><td><em class=tab><a href="s7.html#hashtableref">hash-table-ref</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mindb">min-dB</a></em></td><td></td><td><em class=tab><a href="sndclm.html#radianstohz">radians-&gt;hz</a></em></td><td></td><td><em class=tab><a href="sndscm.html#telephone">telephone</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#convolve">convolve</a></em></td><td></td><td><em class=tab><a href="s7.html#hashtableset">hash-table-set!</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mix">mix</a></em></td><td></td><td><em class=tab><a href="extsnd.html#rampchannel">ramp-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#tempdir">temp-dir</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#convolvefiles">convolve-files</a></em></td><td></td><td><em class=tab><a href="s7.html#hashtablep">hash-table?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixtofv">mix-&gt;float-vector</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rand">rand</a></em></td><td></td><td><em class=tab><a href="extsnd.html#textfocuscolor">text-focus-color</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#convolveselectionwith">convolve-selection-with</a></em></td><td></td><td><em class=tab><a href="extsnd.html#headertype">header-type</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixtointeger">mix-&gt;integer</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rand-interp">rand-interp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#timegraphstyle">time-graph-style</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#convolvewith">convolve-with</a></em></td><td></td><td><em class=tab><a href="snd.html#formats"><b>Headers and sample types</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixamp">mix-amp</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rand-interp?">rand-interp?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#timegraphtype">time-graph-type</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#convolve?">convolve?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#hellodentist">hello-dentist</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixampenv">mix-amp-env</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rand?">rand?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#timegraphp">time-graph?</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#fvcopy">copy</a></em></td><td></td><td><em class=tab><a href="extsnd.html#helpdialog">help-dialog</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixchannel">mix-channel</a></em></td><td></td><td><em class=tab><a href="s7.html#random">random</a></em></td><td></td><td><em class=tab><a href="sndclm.html#timestosamples">times-&gt;samples</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#s7copy">copy</a></em></td><td></td><td><em class=tab><a href="extsnd.html#helphook">help-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixclickhook">mix-click-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#allrandomnumbers"><b>Random Numbers</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#tinyfont">tiny-font</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#genericcopy"><b>copy (generic)</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#hidewidget">hide-widget</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixclickinfo">mix-click-info</a></em></td><td></td><td><em class=tab><a href="s7.html#randomstate">random-state</a></em></td><td></td><td><em class=tab><a href="sndscm.html#telephone">touch-tone</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#copycontext">copy-context</a></em></td><td></td><td><em class=tab><a href="extsnd.html#highlightcolor">highlight-color</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixclicksetsamp">mix-click-sets-amp</a></em></td><td></td><td><em class=tab><a href="s7.html#randomstatep">random-state?</a></em></td><td></td><td><em class=tab><a href="s7.html#trace">trace</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#copysampler">copy-sampler</a></em></td><td></td><td><em class=tab><a href="sndscm.html#hilberttransform">hilbert-transform</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixcolor">mix-color</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rcos">rcos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#trackingcursors"><b>Tracking cursors</b></a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#copying"><b>Copying</b></a></em></td><td></td><td><em class=tab><a href="s7.html#hookfunctions">hook-functions</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixdialogmix">mix-dialog-mix</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rcos?">rcos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#trackingcursorstyle">tracking-cursor-style</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#correlate">correlate</a></em></td><td></td><td><em class=tab><a href="sndscm.html#hookmember">hook-member</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixdraghook">mix-drag-hook</a></em></td><td></td><td><em class=tab><a href="s7.html#readerrorhook">*read-error-hook*</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformtofv">transform-&gt;float-vector</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#coverlet">coverlet</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndhooks"><b>Hooks</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixfiledialog">mix-file-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#readhook">read-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformtointeger">transform-&gt;integer</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#mixdoc">cross-fade (amplitude)</a></em></td><td></td><td><em class=tab><a href="sndscm.html#html">html</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixfv">mix-float-vector</a></em></td><td></td><td><em class=tab><a href="extsnd.html#readmixsample">read-mix-sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformdialog">transform-dialog</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#fadedoc">cross-fade (frequency domain)</a></em></td><td></td><td><em class=tab><a href="extsnd.html#htmldir">html-dir</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixhome">mix-home</a></em></td><td></td><td><em class=tab><a href="extsnd.html#readonly">read-only</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformframples">transform-framples</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#crosssynthesis">cross-synthesis</a></em></td><td></td><td><em class=tab><a href="extsnd.html#htmlprogram">html-program</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixlength">mix-length</a></em></td><td></td><td><em class=tab><a href="extsnd.html#readregionsample">read-region-sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformgraphstyle">transform-graph-style</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#curlet">curlet</a></em></td><td></td><td><em class=tab><a href="sndclm.html#hztoradians">hz-&gt;radians</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixmaxamp">mix-maxamp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#readsample">read-sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformgraphtype">transform-graph-type</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#currentfont">current-font</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#mixname">mix-name</a></em></td><td></td><td><em class=tab><a href="extsnd.html#readsamplewithdirection">read-sample-with-direction</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformgraphp">transform-graph?</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#cursor">cursor</a></em></td><td></td><td class="green"><div class="centered">I</div></td><td></td><td><em class=tab><a href="sndscm.html#mixnametoid">mix-name-&gt;id</a></em></td><td></td><td><em class=tab><a href="s7.html#readercond">reader-cond</a></em></td><td></td><td><em class=tab><a href="extsnd.html#normalizefft">transform-normalization</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#cursorcolor">cursor-color</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#mixposition">mix-position</a></em></td><td></td><td><em class=tab><a href="sndclm.html#readin">readin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformsample">transform-sample</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#cursorcontext">cursor-context</a></em></td><td></td><td><em class=tab><a href="sndclm.html#iir-filter">iir-filter</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixproperties">mix-properties</a></em></td><td></td><td><em class=tab><a href="sndclm.html#readin?">readin?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformsize">transform-size</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#cursorlocationoffset">cursor-location-offset</a></em></td><td></td><td><em class=tab><a href="sndclm.html#iir-filter?">iir-filter?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixproperty">mix-property</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rectangulartomagnitudes">rectangular-&gt;magnitudes</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformtype">transform-type</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#cursorposition">cursor-position</a></em></td><td></td><td><em class=tab><a href="s7.html#immutableb">immutable!</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixregion">mix-region</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rectangulartopolar">rectangular-&gt;polar</a></em></td><td></td><td><em class=tab><a href="extsnd.html#transformp">transform?</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#cursorsize">cursor-size</a></em></td><td></td><td><em class=tab><a href="s7.html#immutablep">immutable?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixreleasehook">mix-release-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#redo">redo</a></em></td><td></td><td><em class=tab><a href="sndscm.html#transposemixes">transpose-mixes</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#cursorstyle">cursor-style</a></em></td><td></td><td><em class=tab><a href="extsnd.html#gin">in</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixsamplerQ">mix-sampler?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regiontofv">region-&gt;float-vector</a></em></td><td></td><td><em class=tab><a href="sndclm.html#triangle-wave">triangle-wave</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#cursorupdateinterval">cursor-update-interval</a></em></td><td></td><td><em class=tab><a href="sndclm.html#in-any">in-any</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixselection">mix-selection</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regiontointeger">region-&gt;integer</a></em></td><td></td><td><em class=tab><a href="sndclm.html#triangle-wave?">triangle-wave?</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#cursorexamples"><b>Cursors</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#ina">ina</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mixsound">mix-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionchans">region-chans</a></em></td><td></td><td><em class=tab><a href="sndscm.html#tubebell">tubebell</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#cutlet">cutlet</a></em></td><td></td><td><em class=tab><a href="sndclm.html#inb">inb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixspeed">mix-speed</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionframples">region-framples</a></em></td><td></td><td><em class=tab><a href="sndscm.html#tubebell">tubular bell</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#cyclicsequences">cyclic-sequences</a></em></td><td></td><td><em class=tab><a href="extsnd.html#infodialog">info-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixsync">mix-sync</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regiongraphstyle">region-graph-style</a></em></td><td></td><td><em class=tab><a href="sndclm.html#two-pole">two-pole</a></em></td></tr>
+ <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="grfsnd.html#initladspa">init-ladspa</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixsyncmax">mix-sync-max</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionhome">region-home</a></em></td><td></td><td><em class=tab><a href="sndclm.html#two-pole?">two-pole?</a></em></td></tr>
+ <tr><td class="green"><div class="centered">D</div></td><td></td><td><em class=tab><a href="extsnd.html#initialbeg">initial-beg</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixtagheight">mix-tag-height</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionmaxamp">region-maxamp</a></em></td><td></td><td><em class=tab><a href="sndscm.html#twotab">two-tab</a></em></td></tr>
+ <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#initialdur">initial-dur</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixtagwidth">mix-tag-width</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionmaxampposition">region-maxamp-position</a></em></td><td></td><td><em class=tab><a href="sndclm.html#two-zero">two-zero</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#dacfolding">dac-combines-channels</a></em></td><td></td><td><em class=tab><a href="extsnd.html#initialgraphhook">initial-graph-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixtagy">mix-tag-y</a></em></td><td></td><td><em class=tab><a href="sndscm.html#regionplaylist">region-play-list</a></em></td><td></td><td><em class=tab><a href="sndclm.html#two-zero?">two-zero?</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#dacsize">dac-size</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#sndinitfile"><b>Initialization file</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixwaveformheight">mix-waveform-height</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionposition">region-position</a></em></td><td></td><td><em class=tab><a href="s7.html#typeof">type-of</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#datacolor">data-color</a></em></td><td></td><td><em class=tab><a href="s7.html#inlet">inlet</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixp">mix?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#regionrms">region-rms</a></em></td><td></td><td><em class=tab> </em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#datalocation">data-location</a></em></td><td></td><td><em class=tab><a href="sndscm.html#insertchannel">insert-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mixes">mixes</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionsample">region-sample</a></em></td><td></td><td class="green"><div class="centered">U</div></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#datasize">data-size</a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertfiledialog">insert-file-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sndmixes"><b>Mixing</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionsamplerQ">region-sampler?</a></em></td><td></td><td><em class=tab> </em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#dbtolinear">db-&gt;linear</a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertregion">insert-region</a></em></td><td></td><td><em class=tab><a href="sndscm.html#monotostereo">mono-&gt;stereo</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionsrate">region-srate</a></em></td><td></td><td><em class=tab><a href="extsnd.html#unbindkey">unbind-key</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#cdebugging"><b>Debugging (C)</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertsample">insert-sample</a></em></td><td></td><td><em class=tab><a href="sndscm.html#moogfilter">moog-filter</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionok">region?</a></em></td><td></td><td><em class=tab><a href="s7.html#unboundvariablehook">*unbound-variable-hook*</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#variabledisplay"><b>Debugging (instruments)</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertsamples">insert-samples</a></em></td><td></td><td><em class=tab><a href="s7.html#morallyequalp">morally-equal?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#eregions">regions</a></em></td><td></td><td><em class=tab><a href="sndscm.html#unclipchannel">unclip-channel</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#snderrors"><b>Debugging (Scheme)</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertselection">insert-selection</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mouseclickhook">mouse-click-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#regionstuff"><b>Regions</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#undo">undo</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#defaultoutputchans">default-output-chans</a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertsilence">insert-silence</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mousedraghook">mouse-drag-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#remembersoundstate">remember-sound-state</a></em></td><td></td><td><em class=tab><a href="extsnd.html#undoexamples"><b>Undo and Redo</b></a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#defaultoutputheadertype">default-output-header-type</a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertsound">insert-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mouseentergraphhook">mouse-enter-graph-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#removeclicks">remove-clicks</a></em></td><td></td><td><em class=tab><a href="extsnd.html#undohook">undo-hook</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#defaultoutputsampletype">default-output-sample-type</a></em></td><td></td><td><em class=tab><a href="extsnd.html#insertionexamples"><b>Insertions</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#mouseenterlabelhook">mouse-enter-label-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#removefrommenu">remove-from-menu</a></em></td><td></td><td><em class=tab><a href="s7.html#unlet">unlet</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#defaultoutputsrate">default-output-srate</a></em></td><td></td><td><em class=tab><a href="s7.html#intvector">int-vector</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mouseenterlistenerhook">mouse-enter-listener-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#replacewithselection">replace-with-selection</a></em></td><td></td><td><em class=tab><a href="extsnd.html#unselectall">unselect-all</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#defgenerator">defgenerator</a></em></td><td></td><td><em class=tab><a href="s7.html#intvectorref">int-vector-ref</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mouseentertexthook">mouse-enter-text-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#reportmarknames">report-mark-names</a></em></td><td></td><td><em class=tab><a href="sndscm.html#updategraphs">update-graphs</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#definestar">define*</a></em></td><td></td><td><em class=tab><a href="s7.html#intvectorset">int-vector-set!</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mouseleavegraphhook">mouse-leave-graph-hook</a></em></td><td></td><td><em class=tab><a href="s7.html#requires7">require</a></em></td><td></td><td><em class=tab><a href="extsnd.html#updatehook">update-hook</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#defineconstant">define-constant</a></em></td><td></td><td><em class=tab><a href="s7.html#intvectorp">int-vector?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mouseleavelabelhook">mouse-leave-label-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#resampleexamples"><b>Resampling</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#updatelispgraph">update-lisp-graph</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#defineenvelope">define-envelope</a></em></td><td></td><td><em class=tab><a href="extsnd.html#integertocolormap">integer-&gt;colormap</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mousleavelistenerhook">mouse-leave-listener-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#resetallhooks">reset-all-hooks</a></em></td><td></td><td><em class=tab><a href="extsnd.html#updatesound">update-sound</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#expansion">define-expansion</a></em></td><td></td><td><em class=tab><a href="extsnd.html#integertomark">integer-&gt;mark</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mousleavetexthook">mouse-leave-text-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#resetcontrols">reset-controls</a></em></td><td></td><td><em class=tab><a href="extsnd.html#updatetimegraph">update-time-graph</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#definemacro">define-macro</a></em></td><td></td><td><em class=tab><a href="extsnd.html#integertomix">integer-&gt;mix</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mousepresshook">mouse-press-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#resetlistenercursor">reset-listener-cursor</a></em></td><td></td><td><em class=tab><a href="extsnd.html#updatetransformgraph">update-transform-graph</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#definemacrostar">define-macro*</a></em></td><td></td><td><em class=tab><a href="extsnd.html#integertoregion">integer-&gt;region</a></em></td><td></td><td><em class=tab><a href="sndclm.html#move-locsig">move-locsig</a></em></td><td></td><td><em class=tab><a href="sndscm.html#reson">reson</a></em></td><td></td><td><em class=tab><a href="sndscm.html#uponsaveyourself">upon-save-yourself</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#defineselectionviamarks">define-selection-via-marks</a></em></td><td></td><td><em class=tab><a href="extsnd.html#integertosound">integer-&gt;sound</a></em></td><td></td><td><em class=tab><a href="sndscm.html#movemixes">move-mixes</a></em></td><td></td><td><em class=tab><a href="extsnd.html#restorecontrols">restore-controls</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sndmotifdoc">user interface extensions</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#definedp">defined?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#integertotransform">integer-&gt;transform</a></em></td><td></td><td><em class=tab><a href="sndclm.html#move-sound">move-sound</a></em></td><td></td><td><em class=tab><a href="sndscm.html#reverbexamples"><b>Reverb</b></a></em></td><td></td><td><em class=tab> </em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#degreestoradians">degrees-&gt;radians</a></em></td><td></td><td><em class=tab><a href="sndscm.html#integrateenvelope">integrate-envelope</a></em></td><td></td><td><em class=tab><a href="sndclm.html#move-sound?">move-sound?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#*reverb*">*reverb*</a></em></td><td></td><td class="green"><div class="centered">V</div></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#delay">delay</a></em></td><td></td><td><em class=tab><a href="sndscm.html#invertfilter">invert-filter</a></em></td><td></td><td><em class=tab><a href="sndscm.html#movesyncdmarks">move-syncd-marks</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbdecay">reverb-control-decay</a></em></td><td></td><td><em class=tab> </em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#delaychannelmixes">delay-channel-mixes</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#sndswitches"><b>Invocation flags</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-autocorrelation">moving-autocorrelation</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbcontrolfeedback">reverb-control-feedback</a></em></td><td></td><td><em class=tab><a href="sndscm.html#variabledisplay">variable-display</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#delaytick">delay-tick</a></em></td><td></td><td><em class=tab><a href="s7.html#iterate">iterate</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-autocorrelation?">moving-autocorrelation?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbcontrollength">reverb-control-length</a></em></td><td></td><td><em class=tab><a href="extsnd.html#variablegraphp">variable-graph?</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#delay?">delay?</a></em></td><td></td><td><em class=tab><a href="s7.html#iteratoratend">iterator-at-end?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-average">moving-average</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbcontrollengthbounds">reverb-control-length-bounds</a></em></td><td></td><td><em class=tab><a href="s7.html#varlet">varlet</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#deletecolormap">delete-colormap</a></em></td><td></td><td><em class=tab><a href="s7.html#iteratorsequence">iterator-sequence</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-average?">moving-average?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbcontrollowpass">reverb-control-lowpass</a></em></td><td></td><td><em class=tab><a href="sndscm.html#vibratinguniformcircularstring">vibrating-uniform-circular-string</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#deletefilefilter">delete-file-filter</a></em></td><td></td><td><em class=tab><a href="s7.html#iteratorp">iterator?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-fft">moving-fft</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbcontrolscale">reverb-control-scale</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesamp">view-files-amp</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#deletefilesorter">delete-file-sorter</a></em></td><td></td><td><em class=tab><a href="sndclm.html#izcos">izcos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-fft?">moving-fft?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbcontrolscalebounds">reverb-control-scale-bounds</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesampenv">view-files-amp-env</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#deletemark">delete-mark</a></em></td><td></td><td><em class=tab><a href="sndclm.html#izcos?">izcos?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-length">moving-length</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reverbcontrolp">reverb-control?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesdialog">view-files-dialog</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#deletemarks">delete-marks</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#moving-max">moving-max</a></em></td><td></td><td><em class=tab><a href="s7.html#reverseb">reverse!</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesfiles">view-files-files</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#deletesample">delete-sample</a></em></td><td></td><td class="green"><div class="centered">J</div></td><td></td><td><em class=tab><a href="sndclm.html#moving-max?">moving-max?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#reversebyblocks">reverse-by-blocks</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesselecthook">view-files-select-hook</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#deletesamples">delete-samples</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#moving-norm">moving-norm</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reversechannel">reverse-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesselectedfiles">view-files-selected-files</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#deletesamplesandsmooth">delete-samples-and-smooth</a></em></td><td></td><td><em class=tab><a href="sndclm.html#j0evencos">j0evencos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-norm?">moving-norm?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#reverseenvelope">reverse-envelope</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilessort">view-files-sort</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#deleteselection">delete-selection</a></em></td><td></td><td><em class=tab><a href="sndclm.html#j0evencos?">j0evencos?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-pitch">moving-pitch</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reverseselection">reverse-selection</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesspeed">view-files-speed</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#deleteselectionandsmooth">delete-selection-and-smooth</a></em></td><td></td><td><em class=tab><a href="sndclm.html#j0j1cos">j0j1cos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-pitch?">moving-pitch?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reversesound">reverse-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewfilesspeedstyle">view-files-speed-style</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#deletetransform">delete-transform</a></em></td><td></td><td><em class=tab><a href="sndclm.html#j0j1cos?">j0j1cos?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-rms">moving-rms</a></em></td><td></td><td><em class=tab><a href="extsnd.html#reverseexamples"><b>Reversing</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewmixesdialog">view-mixes-dialog</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#deletionexamples"><b>Deletions</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#j2cos">j2cos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-scentroid">moving-scentroid</a></em></td><td></td><td><em class=tab><a href="extsnd.html#revertsound">revert-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewregionsdialog">view-regions-dialog</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#describehook">describe-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#j2cos?">j2cos?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-scentroid?">moving-scentroid?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#rightsample">right-sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#viewsound">view-sound</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#describemark">describe-mark</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#sndandjack"><b>Jack</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-spectrum">moving-spectrum</a></em></td><td></td><td><em class=tab><a href="sndclm.html#ring-modulate">ring-modulate</a></em></td><td></td><td><em class=tab><a href="sndscm.html#singerdoc">voice physical model</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#dht">dht</a></em></td><td></td><td><em class=tab><a href="sndscm.html#jcreverb">jc-reverb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-spectrum?">moving-spectrum?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rk!cos">rk!cos</a></em></td><td></td><td><em class=tab><a href="sndscm.html#voicedtounvoiced">voiced-&gt;unvoiced</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#dialogwidgets">dialog-widgets</a></em></td><td></td><td><em class=tab><a href="sndclm.html#jjcos">jjcos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#moving-sum">moving-sum</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rk!cos?">rk!cos?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#volterrafilter">volterra-filter</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#dilambda">dilambda</a></em></td><td></td><td><em class=tab><a href="sndclm.html#jjcos?">jjcos?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#mpg">mpg</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rk!ssb">rk!ssb</a></em></td><td></td><td><em class=tab><a href="sndscm.html#fmvox">vox</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#disablecontrolpanel">disable-control-panel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#jncos">jncos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musalsabuffersize">mus-alsa-buffer-size</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rk!ssb?">rk!ssb?</a></em></td><td></td><td><em class=tab> </em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#displaybarkfft">display-bark-fft</a></em></td><td></td><td><em class=tab><a href="sndclm.html#jncos?">jncos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musalsabuffers">mus-alsa-buffers</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rkcos">rkcos</a></em></td><td></td><td class="green"><div class="centered">W</div></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#displaycorrelation">display-correlation</a></em></td><td></td><td><em class=tab><a href="sndclm.html#jpcos">jpcos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musalsacapturedevice">mus-alsa-capture-device</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rkcos?">rkcos?</a></em></td><td></td><td><em class=tab> </em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#displaydb">display-db</a></em></td><td></td><td><em class=tab><a href="sndclm.html#jpcos?">jpcos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musalsadevice">mus-alsa-device</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rkoddssb">rkoddssb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#wave-train">wave-train</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#displayedits">display-edits</a></em></td><td></td><td><em class=tab><a href="extsnd.html#justsounds">just-sounds</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musalsaplaybackdevice">mus-alsa-playback-device</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rkoddssb?">rkoddssb?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#wave-train?">wave-train?</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#displayenergy">display-energy</a></em></td><td></td><td><em class=tab><a href="sndclm.html#jycos">jycos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musalsasquelchwarning">mus-alsa-squelch-warning</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rksin">rksin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#wavelettype">wavelet-type</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#dissolvefade">dissolve-fade</a></em></td><td></td><td><em class=tab><a href="sndclm.html#jycos?">jycos?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#musarrayprintlength">mus-array-print-length</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rksin?">rksin?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#pqwvox">waveshaping voice</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#ditherchannel">dither-channel</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#musbytespersample">mus-bytes-per-sample</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rkssb">rkssb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#wavohop">wavo-hop</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#dithersound">dither-sound</a></em></td><td></td><td class="green"><div class="centered">K</div></td><td></td><td><em class=tab><a href="sndclm.html#mus-channel">mus-channel</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rkssb?">rkssb?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#wavotrace">wavo-trace</a></em></td></tr>
+ <tr><td><em class=tab><a href="s7.html#documentation">documentation</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#mus-channels">mus-channels</a></em></td><td></td><td><em class=tab><a href="sndscm.html#rmsgain">rms</a></em></td><td></td><td><em class=tab><a href="sndclm.html#weighted-moving-average">weighted-moving-average</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#dolph">dolph</a></em></td><td></td><td><em class=tab><a href="sndclm.html#k2cos">k2cos</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-chebyshev-tu-sum">mus-chebyshev-tu-sum</a></em></td><td></td><td><em class=tab><a href="sndscm.html#rmsgain">rms, gain, balance gens</a></em></td><td></td><td><em class=tab><a href="extsnd.html#widgetposition">widget-position</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#dot-product">dot-product</a></em></td><td></td><td><em class=tab><a href="sndclm.html#k2cos?">k2cos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musclipping">mus-clipping</a></em></td><td></td><td><em class=tab><a href="sndscm.html#rmsenvelope">rms-envelope</a></em></td><td></td><td><em class=tab><a href="extsnd.html#widgetsize">widget-size</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#dotsize">dot-size</a></em></td><td></td><td><em class=tab><a href="sndclm.html#k2sin">k2sin</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-close">mus-close</a></em></td><td></td><td><em class=tab><a href="s7.html#rootlet">rootlet</a></em></td><td></td><td><em class=tab><a href="extsnd.html#widgettext">widget-text</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#downoct">down-oct</a></em></td><td></td><td><em class=tab><a href="sndclm.html#k2sin?">k2sin?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-copy">mus-copy</a></em></td><td></td><td><em class=tab><a href="s7.html#rootletredefinitionhook">*rootlet-redefinition-hook*</a></em></td><td></td><td><em class=tab><a href="extsnd.html#movingwindows"><b>Window size and position</b></a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#drawaxes">draw-axes</a></em></td><td></td><td><em class=tab><a href="sndclm.html#k2ssb">k2ssb</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-data">mus-data</a></em></td><td></td><td><em class=tab><a href="sndclm.html#round-interp">round-interp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#windowheight">window-height</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#drawdot">draw-dot</a></em></td><td></td><td><em class=tab><a href="sndclm.html#k2ssb?">k2ssb?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-describe">mus-describe</a></em></td><td></td><td><em class=tab><a href="sndclm.html#round-interp?">round-interp?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#windowsamples">window-samples</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#drawdots">draw-dots</a></em></td><td></td><td><em class=tab><a href="sndclm.html#k3sin">k3sin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#muserrorhook">mus-error-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rssb">rssb</a></em></td><td></td><td><em class=tab><a href="extsnd.html#windowwidth">window-width</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#drawline">draw-line</a></em></td><td></td><td><em class=tab><a href="sndclm.html#k3sin?">k3sin?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#muserrortypetostring">mus-error-type-&gt;string</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rssbinterp">rssb-interp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#windowx">window-x</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#drawlines">draw-lines</a></em></td><td></td><td><em class=tab><a href="sndscm.html#kalmanfilterchannel">kalman-filter-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musexpandfilename">mus-expand-filename</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rssb?">rssb?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#windowy">window-y</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#drawmarkhook">draw-mark-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#key">key</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-feedback">mus-feedback</a></em></td><td></td><td><em class=tab><a href="sndscm.html#rubbersound">rubber-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withbackgroundprocesses">with-background-processes</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#drawmixhook">draw-mix-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#keybinding">key-binding</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-feedforward">mus-feedforward</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#sndandruby"><b>Ruby</b></a></em></td><td></td><td><em class=tab><a href="s7.html#withbaffle">with-baffle</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#drawstring">draw-string</a></em></td><td></td><td><em class=tab><a href="extsnd.html#keypresshook">key-press-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#fft">mus-fft</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rxycos">rxycos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withfilemonitor">with-file-monitor</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#drone">drone</a></em></td><td></td><td><em class=tab><a href="sndclm.html#krksin">krksin</a></em></td><td></td><td><em class=tab><a href="sndclm.html#musfilebuffersize">mus-file-buffer-size</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rxycos?">rxycos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withgl">with-gl</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#makedropsite">drop sites</a></em></td><td></td><td><em class=tab><a href="sndclm.html#krksin?">krksin?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musfileclipping">mus-file-clipping</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rxyk!cos">rxyk!cos</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withinsetgraph">with-inset-graph</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#drophook">drop-hook</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#musfilemix">mus-file-mix</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rxyk!cos?">rxyk!cos?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withinterrupts">with-interrupts</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#duringopenhook">during-open-hook</a></em></td><td></td><td class="green"><div class="centered">L</div></td><td></td><td><em class=tab><a href="sndclm.html#mus-file-name">mus-file-name</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rxyk!sin">rxyk!sin</a></em></td><td></td><td><em class=tab><a href="s7.html#with-let">with-let</a></em></td></tr>
+ <tr><td><em class=tab> </em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndclm.html#musfloatequalfudgefactor">mus-float-equal-fudge-factor</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rxyk!sin?">rxyk!sin?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#withlocalhook">with-local-hook</a></em></td></tr>
+ <tr><td class="green"><div class="centered">E</div></td><td></td><td><em class=tab><a href="grfsnd.html#ladspadescriptor">ladspa-descriptor</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-frequency">mus-frequency</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rxysin">rxysin</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withmenuicons">with-menu-icons</a></em></td></tr>
+ <tr><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#ladspadir">ladspa-dir</a></em></td><td></td><td><em class=tab><a href="sndclm.html#musgeneratorp">mus-generator?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#rxysin?">rxysin?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withmixtags">with-mix-tags</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#editlists"><b>Edit lists</b></a></em></td><td></td><td><em class=tab><a href="s7.html#lambdastar">lambda*</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musheaderrawdefaults">mus-header-raw-defaults</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#withpointerfocus">with-pointer-focus</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#editfragment">edit-fragment</a></em></td><td></td><td><em class=tab><a href="sndscm.html#lbjpiano">lbj-piano</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musheadertypetostring">mus-header-type-&gt;string</a></em></td><td></td><td class="green"><div class="centered">S</div></td><td></td><td><em class=tab><a href="extsnd.html#withrelativepanes">with-relative-panes</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#editheaderdialog">edit-header-dialog</a></em></td><td></td><td><em class=tab><a href="extsnd.html#leftsample">left-sample</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musheadertypename">mus-header-type-name</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#withsmptelabel">with-smpte-label</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#edithook">edit-hook</a></em></td><td></td><td><em class=tab><a href="extsnd.html#genericlength"><b>length (generic)</b></a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-hop">mus-hop</a></em></td><td></td><td><em class=tab><a href="s7.html#s7doc"><b>s7 scheme</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#withsound">with-sound</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#editlisttofunction">edit-list-&gt;function</a></em></td><td></td><td><em class=tab><a href="s7.html#lettolist">let-&gt;list</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-increment">mus-increment</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sample">sample</a></em></td><td></td><td><em class=tab><a href="sndscm.html#withtemporaryselection">with-temporary-selection</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#editposition">edit-position</a></em></td><td></td><td><em class=tab><a href="s7.html#letref">let-ref</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-input?">mus-input?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#sampletofile">sample-&gt;file</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withtoolbar">with-toolbar</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#editproperties">edit-properties</a></em></td><td></td><td><em class=tab><a href="s7.html#letset">let-set!</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-interp-type">mus-interp-type</a></em></td><td></td><td><em class=tab><a href="sndclm.html#sampletofile?">sample-&gt;file?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withtooltips">with-tooltips</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#editproperty">edit-property</a></em></td><td></td><td><em class=tab><a href="s7.html#lettemporarily">let-temporarily</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-interpolate">mus-interpolate</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sampletype">sample-type</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withtrackingcursor">with-tracking-cursor</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#edittree">edit-tree</a></em></td><td></td><td><em class=tab><a href="s7.html#letp">let?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-length">mus-length</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sampleratendQ">sampler-at-end?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#withverbosecursor">with-verbose-cursor</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#edits">edits</a></em></td><td></td><td><em class=tab><a href="sndclm.html#lineartodb">linear-&gt;db</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-location">mus-location</a></em></td><td></td><td><em class=tab><a href="extsnd.html#samplerhome">sampler-home</a></em></td><td></td><td><em class=tab> </em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#edot-product">edot-product</a></em></td><td></td><td><em class=tab><a href="sndscm.html#linearsrcchannel">linear-src-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musmaxmalloc">mus-max-malloc</a></em></td><td></td><td><em class=tab><a href="extsnd.html#samplerposition">sampler-position</a></em></td><td></td><td class="green"><div class="centered">X</div></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#effectshook">effects-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#lintdoc">lint for scheme</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musmaxtablesize">mus-max-table-size</a></em></td><td></td><td><em class=tab><a href="extsnd.html#samplerQ">sampler?</a></em></td><td></td><td><em class=tab> </em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#analogfilterdoc">elliptic filters</a></em></td><td></td><td><em class=tab><a href="extsnd.html#lispgraphhook">lisp-graph-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-name">mus-name</a></em></td><td></td><td><em class=tab><a href="extsnd.html#samplers"><b>samplers</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#xtoposition">x-&gt;position</a></em></td></tr>
+ <tr><td><em class=tab><a href="grfsnd.html#emacssnd"><b>Emacs and Snd</b></a></em></td><td></td><td><em class=tab><a href="extsnd.html#lispgraphstyle">lisp-graph-style</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-offset">mus-offset</a></em></td><td></td><td><em class=tab><a href="extsnd.html#samples">samples</a></em></td><td></td><td><em class=tab><a href="extsnd.html#xaxislabel">x-axis-label</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#env">env</a></em></td><td></td><td><em class=tab><a href="extsnd.html#lispgraphp">lisp-graph?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-order">mus-order</a></em></td><td></td><td><em class=tab><a href="sndclm.html#samplestoseconds">samples-&gt;seconds</a></em></td><td></td><td><em class=tab><a href="extsnd.html#xaxisstyle">x-axis-style</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#env-any">env-any</a></em></td><td></td><td><em class=tab><a href="extsnd.html#listtofv">list-&gt;float-vector</a></em></td><td></td><td><em class=tab><a href="extsnd.html#musosssetbuffers">mus-oss-set-buffers</a></em></td><td></td><td><em class=tab><a href="extsnd.html#sashcolor">sash-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#xbounds">x-bounds</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#envchannel">env-channel</a></em></td><td></td><td><em class=tab><a href="grfsnd.html#listladspa">list-ladspa</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-output?">mus-output?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveasdialogautocomment">save-as-dialog-auto-comment</a></em></td><td></td><td><em class=tab><a href="extsnd.html#xpositionslider">x-position-slider</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#envchannelwithbase">env-channel-with-base</a></em></td><td></td><td><em class=tab><a href="extsnd.html#listenerclickhook">listener-click-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-phase">mus-phase</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveasdialogsrc">save-as-dialog-src</a></em></td><td></td><td><em class=tab><a href="extsnd.html#xzoomslider">x-zoom-slider</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#envexptchannel">env-expt-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#listenercolor">listener-color</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-ramp">mus-ramp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savecontrols">save-controls</a></em></td><td></td><td><em class=tab><a href="sndscm.html#xbopen">xb-open</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#env-interp">env-interp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#listenercolorized">listener-colorized</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-rand-seed">mus-rand-seed</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savedir">save-dir</a></em></td><td></td><td><em class=tab><a href="extsnd.html#xrampchannel">xramp-channel</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#envmixes">env-mixes</a></em></td><td></td><td><em class=tab><a href="extsnd.html#listenerfont">listener-font</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-random">mus-random</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveedithistory">save-edit-history</a></em></td><td></td><td><em class=tab> </em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#envselection">env-selection</a></em></td><td></td><td><em class=tab><a href="extsnd.html#listenerprompt">listener-prompt</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-reset">mus-reset</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveenvelopes">save-envelopes</a></em></td><td></td><td class="green"><div class="centered">Y</div></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#envsound">env-sound</a></em></td><td></td><td><em class=tab><a href="extsnd.html#listenerselection">listener-selection</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-run">mus-run</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savehook">save-hook</a></em></td><td></td><td><em class=tab> </em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#envsoundinterp">env-sound-interp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#listenertextcolor">listener-text-color</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussampletypetostring">mus-sample-type-&gt;string</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savelistener">save-listener</a></em></td><td></td><td><em class=tab><a href="extsnd.html#ytoposition">y-&gt;position</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#envsquaredchannel">env-squared-channel</a></em></td><td></td><td><em class=tab><a href="extsnd.html#littleendianp">little-endian?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussampletypename">mus-sample-type-name</a></em></td><td></td><td><em class=tab><a href="sndscm.html#savemarkproperties">save-mark-properties</a></em></td><td></td><td><em class=tab><a href="extsnd.html#yaxislabel">y-axis-label</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#env?">env?</a></em></td><td></td><td><em class=tab><a href="s7.html#loadhook">*load-hook*</a></em></td><td></td><td><em class=tab><a href="sndclm.html#mus-scaler">mus-scaler</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savemarks">save-marks</a></em></td><td></td><td><em class=tab><a href="extsnd.html#ybounds">y-bounds</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#envedbase">enved-base</a></em></td><td></td><td><em class=tab><a href="s7.html#loadpath">*load-path*</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundchans">mus-sound-chans</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savemix">save-mix</a></em></td><td></td><td><em class=tab><a href="extsnd.html#ypositionslider">y-position-slider</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#envedclipping">enved-clip?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#locatezero">locate-zero</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundcomment">mus-sound-comment</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveregion">save-region</a></em></td><td></td><td><em class=tab><a href="extsnd.html#yzoomslider">y-zoom-slider</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#enveddialog">enved-dialog</a></em></td><td></td><td><em class=tab><a href="sndclm.html#locsig">locsig</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussounddatalocation">mus-sound-data-location</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveregiondialog">save-region-dialog</a></em></td><td></td><td><em class=tab> </em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#envedenvelope">enved-envelope</a></em></td><td></td><td><em class=tab><a href="sndclm.html#locsig-ref">locsig-ref</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussounddatumsize">mus-sound-datum-size</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveselection">save-selection</a></em></td><td></td><td class="green"><div class="centered">Z</div></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#filterenv">enved-filter</a></em></td><td></td><td><em class=tab><a href="sndclm.html#locsig-reverb-ref">locsig-reverb-ref</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundduration">mus-sound-duration</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveselectiondialog">save-selection-dialog</a></em></td><td></td><td><em class=tab> </em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#filterenvorder">enved-filter-order</a></em></td><td></td><td><em class=tab><a href="sndclm.html#locsig-reverb-set!">locsig-reverb-set!</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundforget">mus-sound-forget</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savesound">save-sound</a></em></td><td></td><td><em class=tab><a href="sndscm.html#ztransform">z-transform</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#envedhook">enved-hook</a></em></td><td></td><td><em class=tab><a href="sndclm.html#locsig-set!">locsig-set!</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundframples">mus-sound-framples</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savesoundas">save-sound-as</a></em></td><td></td><td><em class=tab><a href="sndscm.html#zecho">zecho</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#envedin-dB">enved-in-dB</a></em></td><td></td><td><em class=tab><a href="sndclm.html#locsig-type">locsig-type</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundheadertype">mus-sound-header-type</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savesounddialog">save-sound-dialog</a></em></td><td></td><td><em class=tab><a href="sndscm.html#zeroplus">zero+</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#envedpower">enved-power</a></em></td><td></td><td><em class=tab><a href="sndclm.html#locsig?">locsig?</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundlength">mus-sound-length</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savestate">save-state</a></em></td><td></td><td><em class=tab><a href="extsnd.html#zeropad">zero-pad</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#envedstyle">enved-style</a></em></td><td></td><td><em class=tab><a href="extsnd.html#logfreqstart">log-freq-start</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundloopinfo">mus-sound-loop-info</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savestatefile">save-state-file</a></em></td><td></td><td><em class=tab><a href="sndscm.html#zerophase">zero-phase</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#envedtarget">enved-target</a></em></td><td></td><td><em class=tab><a href="sndscm.html#lpccoeffs">lpc-coeffs</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundmarkinfo">mus-sound-mark-info</a></em></td><td></td><td><em class=tab><a href="extsnd.html#savestatehook">save-state-hook</a></em></td><td></td><td><em class=tab><a href="sndscm.html#zipsound">zip-sound</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#envedwaving">enved-wave?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#lpcpredict">lpc-predict</a></em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundmaxamp">mus-sound-maxamp</a></em></td><td></td><td><em class=tab><a href="extsnd.html#saveexamples"><b>Saving</b></a></em></td><td></td><td><em class=tab><a href="sndscm.html#zipper">zipper</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#envedwaveformcolor">enved-waveform-color</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundmaxampexists">mus-sound-maxamp-exists?</a></em></td><td></td><td><em class=tab><a href="sndscm.html#sgfilter">savitzky-golay-filter</a></em></td><td></td><td><em class=tab><a href="extsnd.html#zoomcolor">zoom-color</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndclm.html#envelopeinterp">envelope-interp</a></em></td><td></td><td class="green"><div class="centered">M</div></td><td></td><td><em class=tab><a href="extsnd.html#mussoundpath">mus-sound-path</a></em></td><td></td><td><em class=tab><a href="sndclm.html#sawtooth-wave">sawtooth-wave</a></em></td><td></td><td><em class=tab><a href="extsnd.html#zoomfocusstyle">zoom-focus-style</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#envelopedmix">enveloped-mix</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#mussoundpreload">mus-sound-preload</a></em></td><td></td><td><em class=tab><a href="sndclm.html#sawtooth-wave?">sawtooth-wave?</a></em></td><td></td>
</tr>
</table>
diff --git a/index.scm b/index.scm
index 47c31c3..0ffa235 100644
--- a/index.scm
+++ b/index.scm
@@ -3,36 +3,39 @@
(provide 'snd-index.scm)
(define html
- (let ((documentation "(html arg) where arg can be a string, symbol, or procedure looks for a corresponding url
+ (let ((+documentation+ "(html arg) where arg can be a string, symbol, or procedure looks for a corresponding url
and if one is found, and the Snd documentation can be found, calls *html-program* with that url")
(goto-html
(lambda (n)
;; look for doc on current dir, then html dir, then global dir
;; snd.html is what we'll search for
- (let ((dir (cond ((file-exists? "snd.html") (getcwd))
- ((and (string? *html-dir*)
- (file-exists? (string-append *html-dir* "/snd.html")))
- *html-dir*)
- ((file-exists? "/usr/share/doc/snd-17/snd.html") "/usr/share/doc/snd-17")
- ((file-exists? "/usr/local/share/doc/snd-17/snd.html") "/usr/local/share/doc/snd-17")
- ((file-exists? "/usr/doc/snd-17/snd.html") "/usr/doc/snd-17")
- ((file-exists? "/usr/share/doc/snd-16/snd.html") "/usr/share/doc/snd-16")
- ((file-exists? "/usr/local/share/doc/snd-16/snd.html") "/usr/local/share/doc/snd-16")
- (else (and (file-exists? "/usr/doc/snd-16/snd.html") "/usr/doc/snd-16")))))
- (if dir
- (system (string-append *html-program* " file:" dir "/" n)))))))
+ (when (and (string? n)
+ (> (length n) 0))
+ (let ((dir (cond ((file-exists? "snd.html") (getcwd))
+ ((and (string? *html-dir*)
+ (file-exists? (string-append *html-dir* "/snd.html")))
+ *html-dir*)
+ ((file-exists? "/usr/share/doc/snd-17/snd.html") "/usr/share/doc/snd-17")
+ ((file-exists? "/usr/local/share/doc/snd-17/snd.html") "/usr/local/share/doc/snd-17")
+ ((file-exists? "/usr/doc/snd-17/snd.html") "/usr/doc/snd-17")
+ ((file-exists? "/usr/share/doc/snd-16/snd.html") "/usr/share/doc/snd-16")
+ ((file-exists? "/usr/local/share/doc/snd-16/snd.html") "/usr/local/share/doc/snd-16")
+ (else (and (file-exists? "/usr/doc/snd-16/snd.html") "/usr/doc/snd-16")))))
+ (if dir
+ (system (string-append *html-program* " file:" dir "/" n))))))))
(lambda (obj)
(let ((name (if (string? obj)
obj
(if (symbol? obj)
(symbol->string obj)
(let ((doc (and (procedure? obj)
- (procedure-documentation obj))))
+ (documentation obj))))
(if (and (string? doc)
(char=? (doc 0) #\())
(let ((pos (char-position ") " doc)))
(and pos
(substring doc 1 pos)))))))))
+ (format *stderr* "name: ~S~%" name)
(cond ((not (string? name))
(snd-print (format #f "no doc for ~A?" name)))
((snd-url name) => goto-html)
diff --git a/io.c b/io.c
index ab46ef7..83eb32a 100644
--- a/io.c
+++ b/io.c
@@ -1031,7 +1031,7 @@ static const mus_float_t mus_ubyte[256] = {
#define UBYTE_ZERO 128
#define USHORT_ZERO 32768
-#define MUS_SAMPLE_UNSCALED(n) ((n) / 32768.0)
+#define MUS_SAMPLE_UNSCALED(n) (((mus_float_t)n) / 32768.0)
/* see note in _sndlib.h" values are "unscaled" from the DAC's point of view */
static mus_float_t *swapped_shorts = NULL;
@@ -2790,8 +2790,8 @@ static void min_max_floats(unsigned char *data, int bytes, int chan, int chans,
if (unscaled)
{
- (*min_samp) = cur_min / 32768.0;
- (*max_samp) = cur_max / 32768.0;
+ (*min_samp) = (double)cur_min / 32768.0;
+ (*max_samp) = (double)cur_max / 32768.0;
}
else
{
@@ -2853,8 +2853,8 @@ static void min_max_switch_floats(unsigned char *data, int bytes, int chan, int
if (unscaled)
{
- (*min_samp) = cur_min / 32768.0;
- (*max_samp) = cur_max / 32768.0;
+ (*min_samp) = (double)cur_min / 32768.0;
+ (*max_samp) = (double)cur_max / 32768.0;
}
else
{
diff --git a/json.scm b/json.scm
index 1d7ac1d..4045d6d 100644
--- a/json.scm
+++ b/json.scm
@@ -67,10 +67,8 @@
(else
(write-char (str i) p))))))))
-;;; TODO: in the strings we need to support the 4-digit stuff (\uxxxx I think)
+;;; TODO: in the strings we need to support the 4-digit stuff (\\uxxxx I think)
;;; (json->s7 "{\"test\" : \"a\\u1234b\"}") -> (inlet 'test "a\x1234;b")
-;;; but the real problem is that \u in a string is an error in scheme, so we need use read-error-hook
-;;; to catch the \unnnn stuff before we call json->s7. See lint.scm.
(define* (s7->json obj (port (current-output-port)))
(case (type-of obj)
diff --git a/libgtk_s7.c b/libgtk_s7.c
index 6fb58ee..9fb65c5 100644
--- a/libgtk_s7.c
+++ b/libgtk_s7.c
@@ -48125,7 +48125,7 @@ static void define_structs(s7_scheme *sc)
static void define_functions(s7_scheme *sc)
{
s7_pointer s_boolean, s_integer, s_real, s_string, s_any, s_pair, s_float, s_gtk_enum_t, s_pair_false;
- s7_pointer pl_iur, pl_iugi, pl_iuisi, pl_iuuui, pl_iuuuui, pl_iuis, pl_iug, pl_pit, pl_piu, pl_ius, pl_iusi, pl_iu, pl_iuui, pl_pi, pl_iui, pl_iuisut, pl_t, pl_prrru, pl_tts, pl_tti, pl_dusr, pl_dusi, pl_dui, pl_du, pl_dus, pl_pr, pl_ssig, pl_ssi, pl_psgi, pl_suiig, pl_sug, pl_psiuub, pl_psgbiiiit, pl_psrrrb, pl_sui, pl_suuub, pl_psu, pl_psb, pl_su, pl_sus, pl_ps, pl_psg, pl_psi, pl_psugt, pl_psiu, pl_psiiuusu, pl_psut, pl_pur, pl_puuui, pl_pusiig, pl_pusiigu, pl_pusiiugu, pl_puuiig, pl_puur, pl_purru, pl_puiiui, pl_pugi, pl_puuig, pl_puttiiiu, pl_pubi, pl_puiig, pl_puiigi, pl_puigu, pl_puuusuug, pl_pusi, pl_pusiu, pl_putu, pl_puri, pl_pusub, pl_pust, pl_pub, pl_puuiu, pl_pugiiu, pl_pusu, pl_pu, pl_puiiu, pl_puuubu, pl_pugu, pl_puutuuiu, pl_puutu, pl_pui, pl_pussu, pl_puibu, pl_pus, pl_pug, pl_put, pl_pusigu, pl_pusig, pl_puui, pl_puiu, pl_pusiuiu, pl_pusiuibu, pl_pusiiu, pl_puuiiu, pl_b, pl_btiib, pl_bti, pl_bt, pl_tb, pl_g, pl_i, pl_tg, pl_tiu, pl_itiiub, pl_itsub, pl_itstttg, pl_itgiiut, pl_ti, pl_it, pl_s, pl_tsu, pl_tsb, pl_st, pl_tsig, pl_ts, pl_tsi, pl_tsiu, pl_tsiiuui, pl_tsiuui, pl_p, pl_tusiuiui, pl_tuuiu, pl_tussu, pl_tuuuggu, pl_tuuggu, pl_tugiis, pl_tubu, pl_tuurru, pl_tuurrrrgr, pl_tuurrrrg, pl_tuuur, pl_tusg, pl_tuuuui, pl_tugiiu, pl_tuusb, pl_tugui, pl_tuuugi, pl_tuuuub, pl_tuttti, pl_tuuttti, pl_tuisi, pl_tugb, pl_tugs, pl_tugug, pl_turgs, pl_tubi, pl_tuttigsi, pl_tuiiiiui, pl_tuurb, pl_tuuiiiirrrrg, pl_tuuiiiirrrrgi, pl_tuiggu, pl_turrrb, pl_tuubbig, pl_pt, pl_tuuti, pl_tubbi, pl_tuti, pl_tutti, pl_tutui, pl_tutisi, pl_tuuri, pl_tuusit, pl_tuurbr, pl_tuugi, pl_tuit, pl_tusr, pl_tusri, pl_tusi, pl_turi, pl_tuui, pl_tuur, pl_tuig, pl_tur, pl_tub, pl_tui, pl_tu, pl_tus, pl_tusb, pl_tut, pl_tuuut, pl_tug, pl_tutb, pl_tust, pl_tuub, pl_tuus, pl_tuug, pl_tuibu, pl_tuut, pl_tuuig, pl_tuguig, pl_tuubr, pl_tuuub, pl_tuuiuui, pl_tugu, pl_tuuir, pl_tugr, pl_tugi, pl_tuuui, pl_tuib, pl_tusu, pl_tuusi, pl_tugt, pl_tuis, pl_tubiiiu, pl_tuiu, pl_tusiis, pl_tuiiu, pl_tuuug, pl_tusuig, pl_tuuubr, pl_big, pl_bi, pl_bsu, pl_bsigb, pl_bur, pl_buug, pl_buigu, pl_buuti, pl_butib, pl_buiuig, pl_buuusuug, pl_buuit, pl_buti, pl_butti, pl_busi, pl_buusib, pl_busib, pl_buuuub, pl_buuub, pl_buttu, pl_busgu, pl_buurbr, pl_buui, pl_buus, pl_buuui, pl_bug, pl_bu, pl_bus, pl_busu, pl_but, pl_bui, pl_buib, pl_buiu, pl_bub, pl_buub, pl_pb, pl_buig, pl_buuig, pl_igi, pl_gi, pl_iiit, pl_iit, pl_sg, pl_gs, pl_isigutttiiu, pl_isi, pl_isgt, pl_sig, pl_si, pl_is, pl_gussitu, pl_gurrsiu, pl_gus, pl_guut, pl_guuut, pl_guugbuut, pl_pgr, pl_pgu, pl_pgi, pl_gug, pl_pgbi, pl_gu, pl_pg, pl_gui, pl_bpt;
+ s7_pointer pl_b, pl_s, pl_t, pl_bsu, pl_bsigb, pl_ssi, pl_ssig, pl_bt, pl_tb, pl_bti, pl_btiib, pl_st, pl_ts, pl_tsu, pl_tsb, pl_tsi, pl_tsig, pl_tsiu, pl_tsiuui, pl_tsiiuui, pl_tts, pl_tti, pl_p, pl_g, pl_buuusuug, pl_bu, pl_pb, pl_bur, pl_bug, pl_bus, pl_but, pl_bui, pl_bub, pl_buug, pl_buti, pl_busi, pl_buui, pl_buus, pl_busu, pl_buib, pl_buiu, pl_buub, pl_buig, pl_buigu, pl_buuti, pl_butib, pl_buuit, pl_butti, pl_busib, pl_buuub, pl_buttu, pl_busgu, pl_buuui, pl_buuig, pl_buiuig, pl_buusib, pl_buuuub, pl_buurbr, pl_su, pl_ps, pl_sug, pl_sui, pl_psu, pl_psb, pl_sus, pl_psg, pl_psi, pl_psgi, pl_psiu, pl_psut, pl_suiig, pl_suuub, pl_psugt, pl_psiuub, pl_psrrrb, pl_psgbiiiit, pl_psiiuusu, pl_sg, pl_gs, pl_tusiuiui, pl_tuurrrrgr, pl_tuurrrrg, pl_tuttigsi, pl_tuiiiiui, pl_tuuiiiirrrrg, pl_tuuiiiirrrrgi, pl_pt, pl_tu, pl_tur, pl_tub, pl_tui, pl_tus, pl_tut, pl_tug, pl_tubu, pl_tusg, pl_tugb, pl_tugs, pl_tubi, pl_tuti, pl_tuit, pl_tusr, pl_tusi, pl_turi, pl_tuui, pl_tuur, pl_tuig, pl_tusb, pl_tutb, pl_tust, pl_tuub, pl_tuus, pl_tuug, pl_tuut, pl_tugu, pl_tugr, pl_tugi, pl_tuib, pl_tusu, pl_tugt, pl_tuis, pl_tuiu, pl_tuuiu, pl_tussu, pl_tuuur, pl_tuusb, pl_tugui, pl_tuisi, pl_tugug, pl_turgs, pl_tuurb, pl_tuuti, pl_tubbi, pl_tutti, pl_tutui, pl_tuuri, pl_tuugi, pl_tusri, pl_tuuut, pl_tuibu, pl_tuuig, pl_tuubr, pl_tuuub, pl_tuuir, pl_tuuui, pl_tuusi, pl_tuiiu, pl_tuuug, pl_tuuggu, pl_tugiis, pl_tuurru, pl_tuuuui, pl_tugiiu, pl_tuuugi, pl_tuuuub, pl_tuttti, pl_tuiggu, pl_turrrb, pl_tutisi, pl_tuusit, pl_tuurbr, pl_tuguig, pl_tusiis, pl_tusuig, pl_tuuubr, pl_tuuuggu, pl_tuuttti, pl_tuubbig, pl_tuuiuui, pl_tubiiiu, pl_tg, pl_i, pl_bi, pl_big, pl_si, pl_is, pl_isi, pl_sig, pl_isgt, pl_isigutttiiu, pl_pu, pl_pur, pl_pub, pl_pui, pl_pus, pl_pug, pl_put, pl_puur, pl_pugi, pl_pubi, pl_pusi, pl_putu, pl_puri, pl_pust, pl_pusu, pl_pugu, pl_puui, pl_puiu, pl_puuui, pl_purru, pl_puuig, pl_puiig, pl_puigu, pl_pusiu, pl_pusub, pl_puuiu, pl_puiiu, pl_puutu, pl_pussu, pl_puibu, pl_pusig, pl_pusiig, pl_puuiig, pl_puiiui, pl_puiigi, pl_pugiiu, pl_puuubu, pl_pusigu, pl_pusiiu, pl_puuiiu, pl_pusiigu, pl_pusiuiu, pl_guugbuut, pl_pusiiugu, pl_puttiiiu, pl_puuusuug, pl_puutuuiu, pl_pusiuibu, pl_ti, pl_it, pl_gu, pl_pg, pl_gus, pl_pgr, pl_pgu, pl_pgi, pl_gug, pl_tiu, pl_gui, pl_guut, pl_pgbi, pl_guuut, pl_itsub, pl_itiiub, pl_gussitu, pl_gurrsiu, pl_itstttg, pl_itgiiut, pl_iu, pl_pi, pl_iur, pl_iug, pl_pit, pl_piu, pl_ius, pl_iui, pl_iugi, pl_iuis, pl_iusi, pl_iuui, pl_iuisi, pl_iuuui, pl_iuuuui, pl_iuisut, pl_gi, pl_igi, pl_iit, pl_iiit, pl_du, pl_pr, pl_dui, pl_dus, pl_dusr, pl_dusi, pl_prrru, pl_bpt;
s_boolean = s7_make_symbol(sc, "boolean?");
s_integer = s7_make_symbol(sc, "integer?");
@@ -48137,281 +48137,281 @@ static void define_functions(s7_scheme *sc)
s_gtk_enum_t = s7_make_symbol(sc, "gtk_enum_t?");
s_any = s7_t(sc);
- pl_iur = s7_make_circular_signature(sc, 2, 3, s_integer, s_pair_false, s_real);
- pl_iugi = s7_make_circular_signature(sc, 3, 4, s_integer, s_pair_false, s_gtk_enum_t, s_integer);
- pl_iuisi = s7_make_circular_signature(sc, 4, 5, s_integer, s_pair_false, s_integer, s_string, s_integer);
- pl_iuuui = s7_make_circular_signature(sc, 4, 5, s_integer, s_pair_false, s_pair_false, s_pair_false, s_integer);
- pl_iuuuui = s7_make_circular_signature(sc, 5, 6, s_integer, s_pair_false, s_pair_false, s_pair_false, s_pair_false, s_integer);
- pl_iuis = s7_make_circular_signature(sc, 3, 4, s_integer, s_pair_false, s_integer, s_string);
- pl_iug = s7_make_circular_signature(sc, 2, 3, s_integer, s_pair_false, s_gtk_enum_t);
- pl_pit = s7_make_circular_signature(sc, 2, 3, s_pair, s_integer, s_any);
- pl_piu = s7_make_circular_signature(sc, 2, 3, s_pair, s_integer, s_pair_false);
- pl_ius = s7_make_circular_signature(sc, 2, 3, s_integer, s_pair_false, s_string);
- pl_iusi = s7_make_circular_signature(sc, 3, 4, s_integer, s_pair_false, s_string, s_integer);
- pl_iu = s7_make_circular_signature(sc, 1, 2, s_integer, s_pair_false);
- pl_iuui = s7_make_circular_signature(sc, 3, 4, s_integer, s_pair_false, s_pair_false, s_integer);
- pl_pi = s7_make_circular_signature(sc, 1, 2, s_pair, s_integer);
- pl_iui = s7_make_circular_signature(sc, 2, 3, s_integer, s_pair_false, s_integer);
- pl_iuisut = s7_make_circular_signature(sc, 5, 6, s_integer, s_pair_false, s_integer, s_string, s_pair_false, s_any);
+ pl_b = s7_make_circular_signature(sc, 0, 1, s_boolean);
+ pl_s = s7_make_circular_signature(sc, 0, 1, s_string);
pl_t = s7_make_circular_signature(sc, 0, 1, s_any);
- pl_prrru = s7_make_circular_signature(sc, 4, 5, s_pair, s_real, s_real, s_real, s_pair_false);
+ pl_bsu = s7_make_circular_signature(sc, 2, 3, s_boolean, s_string, s_pair_false);
+ pl_bsigb = s7_make_circular_signature(sc, 4, 5, s_boolean, s_string, s_integer, s_gtk_enum_t, s_boolean);
+ pl_ssi = s7_make_circular_signature(sc, 2, 3, s_string, s_string, s_integer);
+ pl_ssig = s7_make_circular_signature(sc, 3, 4, s_string, s_string, s_integer, s_gtk_enum_t);
+ pl_bt = s7_make_circular_signature(sc, 1, 2, s_boolean, s_any);
+ pl_tb = s7_make_circular_signature(sc, 1, 2, s_any, s_boolean);
+ pl_bti = s7_make_circular_signature(sc, 2, 3, s_boolean, s_any, s_integer);
+ pl_btiib = s7_make_circular_signature(sc, 4, 5, s_boolean, s_any, s_integer, s_integer, s_boolean);
+ pl_st = s7_make_circular_signature(sc, 1, 2, s_string, s_any);
+ pl_ts = s7_make_circular_signature(sc, 1, 2, s_any, s_string);
+ pl_tsu = s7_make_circular_signature(sc, 2, 3, s_any, s_string, s_pair_false);
+ pl_tsb = s7_make_circular_signature(sc, 2, 3, s_any, s_string, s_boolean);
+ pl_tsi = s7_make_circular_signature(sc, 2, 3, s_any, s_string, s_integer);
+ pl_tsig = s7_make_circular_signature(sc, 3, 4, s_any, s_string, s_integer, s_gtk_enum_t);
+ pl_tsiu = s7_make_circular_signature(sc, 3, 4, s_any, s_string, s_integer, s_pair_false);
+ pl_tsiuui = s7_make_circular_signature(sc, 5, 6, s_any, s_string, s_integer, s_pair_false, s_pair_false, s_integer);
+ pl_tsiiuui = s7_make_circular_signature(sc, 6, 7, s_any, s_string, s_integer, s_integer, s_pair_false, s_pair_false, s_integer);
pl_tts = s7_make_circular_signature(sc, 2, 3, s_any, s_any, s_string);
pl_tti = s7_make_circular_signature(sc, 2, 3, s_any, s_any, s_integer);
- pl_dusr = s7_make_circular_signature(sc, 3, 4, s_float, s_pair_false, s_string, s_real);
- pl_dusi = s7_make_circular_signature(sc, 3, 4, s_float, s_pair_false, s_string, s_integer);
- pl_dui = s7_make_circular_signature(sc, 2, 3, s_float, s_pair_false, s_integer);
- pl_du = s7_make_circular_signature(sc, 1, 2, s_float, s_pair_false);
- pl_dus = s7_make_circular_signature(sc, 2, 3, s_float, s_pair_false, s_string);
- pl_pr = s7_make_circular_signature(sc, 1, 2, s_pair, s_real);
- pl_ssig = s7_make_circular_signature(sc, 3, 4, s_string, s_string, s_integer, s_gtk_enum_t);
- pl_ssi = s7_make_circular_signature(sc, 2, 3, s_string, s_string, s_integer);
- pl_psgi = s7_make_circular_signature(sc, 3, 4, s_pair, s_string, s_gtk_enum_t, s_integer);
- pl_suiig = s7_make_circular_signature(sc, 4, 5, s_string, s_pair_false, s_integer, s_integer, s_gtk_enum_t);
+ pl_p = s7_make_circular_signature(sc, 0, 1, s_pair);
+ pl_g = s7_make_circular_signature(sc, 0, 1, s_gtk_enum_t);
+ pl_buuusuug = s7_make_circular_signature(sc, 7, 8, s_boolean, s_pair_false, s_pair_false, s_pair_false, s_string, s_pair_false, s_pair_false, s_gtk_enum_t);
+ pl_bu = s7_make_circular_signature(sc, 1, 2, s_boolean, s_pair_false);
+ pl_pb = s7_make_circular_signature(sc, 1, 2, s_pair, s_boolean);
+ pl_bur = s7_make_circular_signature(sc, 2, 3, s_boolean, s_pair_false, s_real);
+ pl_bug = s7_make_circular_signature(sc, 2, 3, s_boolean, s_pair_false, s_gtk_enum_t);
+ pl_bus = s7_make_circular_signature(sc, 2, 3, s_boolean, s_pair_false, s_string);
+ pl_but = s7_make_circular_signature(sc, 2, 3, s_boolean, s_pair_false, s_any);
+ pl_bui = s7_make_circular_signature(sc, 2, 3, s_boolean, s_pair_false, s_integer);
+ pl_bub = s7_make_circular_signature(sc, 2, 3, s_boolean, s_pair_false, s_boolean);
+ pl_buug = s7_make_circular_signature(sc, 3, 4, s_boolean, s_pair_false, s_pair_false, s_gtk_enum_t);
+ pl_buti = s7_make_circular_signature(sc, 3, 4, s_boolean, s_pair_false, s_any, s_integer);
+ pl_busi = s7_make_circular_signature(sc, 3, 4, s_boolean, s_pair_false, s_string, s_integer);
+ pl_buui = s7_make_circular_signature(sc, 3, 4, s_boolean, s_pair_false, s_pair_false, s_integer);
+ pl_buus = s7_make_circular_signature(sc, 3, 4, s_boolean, s_pair_false, s_pair_false, s_string);
+ pl_busu = s7_make_circular_signature(sc, 3, 4, s_boolean, s_pair_false, s_string, s_pair_false);
+ pl_buib = s7_make_circular_signature(sc, 3, 4, s_boolean, s_pair_false, s_integer, s_boolean);
+ pl_buiu = s7_make_circular_signature(sc, 3, 4, s_boolean, s_pair_false, s_integer, s_pair_false);
+ pl_buub = s7_make_circular_signature(sc, 3, 4, s_boolean, s_pair_false, s_pair_false, s_boolean);
+ pl_buig = s7_make_circular_signature(sc, 3, 4, s_boolean, s_pair_false, s_integer, s_gtk_enum_t);
+ pl_buigu = s7_make_circular_signature(sc, 4, 5, s_boolean, s_pair_false, s_integer, s_gtk_enum_t, s_pair_false);
+ pl_buuti = s7_make_circular_signature(sc, 4, 5, s_boolean, s_pair_false, s_pair_false, s_any, s_integer);
+ pl_butib = s7_make_circular_signature(sc, 4, 5, s_boolean, s_pair_false, s_any, s_integer, s_boolean);
+ pl_buuit = s7_make_circular_signature(sc, 4, 5, s_boolean, s_pair_false, s_pair_false, s_integer, s_any);
+ pl_butti = s7_make_circular_signature(sc, 4, 5, s_boolean, s_pair_false, s_any, s_any, s_integer);
+ pl_busib = s7_make_circular_signature(sc, 4, 5, s_boolean, s_pair_false, s_string, s_integer, s_boolean);
+ pl_buuub = s7_make_circular_signature(sc, 4, 5, s_boolean, s_pair_false, s_pair_false, s_pair_false, s_boolean);
+ pl_buttu = s7_make_circular_signature(sc, 4, 5, s_boolean, s_pair_false, s_any, s_any, s_pair_false);
+ pl_busgu = s7_make_circular_signature(sc, 4, 5, s_boolean, s_pair_false, s_string, s_gtk_enum_t, s_pair_false);
+ pl_buuui = s7_make_circular_signature(sc, 4, 5, s_boolean, s_pair_false, s_pair_false, s_pair_false, s_integer);
+ pl_buuig = s7_make_circular_signature(sc, 4, 5, s_boolean, s_pair_false, s_pair_false, s_integer, s_gtk_enum_t);
+ pl_buiuig = s7_make_circular_signature(sc, 5, 6, s_boolean, s_pair_false, s_integer, s_pair_false, s_integer, s_gtk_enum_t);
+ pl_buusib = s7_make_circular_signature(sc, 5, 6, s_boolean, s_pair_false, s_pair_false, s_string, s_integer, s_boolean);
+ pl_buuuub = s7_make_circular_signature(sc, 5, 6, s_boolean, s_pair_false, s_pair_false, s_pair_false, s_pair_false, s_boolean);
+ pl_buurbr = s7_make_circular_signature(sc, 5, 6, s_boolean, s_pair_false, s_pair_false, s_real, s_boolean, s_real);
+ pl_su = s7_make_circular_signature(sc, 1, 2, s_string, s_pair_false);
+ pl_ps = s7_make_circular_signature(sc, 1, 2, s_pair, s_string);
pl_sug = s7_make_circular_signature(sc, 2, 3, s_string, s_pair_false, s_gtk_enum_t);
- pl_psiuub = s7_make_circular_signature(sc, 5, 6, s_pair, s_string, s_integer, s_pair_false, s_pair_false, s_boolean);
- pl_psgbiiiit = s7_make_circular_signature(sc, 8, 9, s_pair, s_string, s_gtk_enum_t, s_boolean, s_integer, s_integer, s_integer, s_integer, s_any);
- pl_psrrrb = s7_make_circular_signature(sc, 5, 6, s_pair, s_string, s_real, s_real, s_real, s_boolean);
pl_sui = s7_make_circular_signature(sc, 2, 3, s_string, s_pair_false, s_integer);
- pl_suuub = s7_make_circular_signature(sc, 4, 5, s_string, s_pair_false, s_pair_false, s_pair_false, s_boolean);
pl_psu = s7_make_circular_signature(sc, 2, 3, s_pair, s_string, s_pair_false);
pl_psb = s7_make_circular_signature(sc, 2, 3, s_pair, s_string, s_boolean);
- pl_su = s7_make_circular_signature(sc, 1, 2, s_string, s_pair_false);
pl_sus = s7_make_circular_signature(sc, 2, 3, s_string, s_pair_false, s_string);
- pl_ps = s7_make_circular_signature(sc, 1, 2, s_pair, s_string);
pl_psg = s7_make_circular_signature(sc, 2, 3, s_pair, s_string, s_gtk_enum_t);
pl_psi = s7_make_circular_signature(sc, 2, 3, s_pair, s_string, s_integer);
- pl_psugt = s7_make_circular_signature(sc, 4, 5, s_pair, s_string, s_pair_false, s_gtk_enum_t, s_any);
+ pl_psgi = s7_make_circular_signature(sc, 3, 4, s_pair, s_string, s_gtk_enum_t, s_integer);
pl_psiu = s7_make_circular_signature(sc, 3, 4, s_pair, s_string, s_integer, s_pair_false);
- pl_psiiuusu = s7_make_circular_signature(sc, 7, 8, s_pair, s_string, s_integer, s_integer, s_pair_false, s_pair_false, s_string, s_pair_false);
pl_psut = s7_make_circular_signature(sc, 3, 4, s_pair, s_string, s_pair_false, s_any);
- pl_pur = s7_make_circular_signature(sc, 2, 3, s_pair, s_pair_false, s_real);
- pl_puuui = s7_make_circular_signature(sc, 4, 5, s_pair, s_pair_false, s_pair_false, s_pair_false, s_integer);
- pl_pusiig = s7_make_circular_signature(sc, 5, 6, s_pair, s_pair_false, s_string, s_integer, s_integer, s_gtk_enum_t);
- pl_pusiigu = s7_make_circular_signature(sc, 6, 7, s_pair, s_pair_false, s_string, s_integer, s_integer, s_gtk_enum_t, s_pair_false);
- pl_pusiiugu = s7_make_circular_signature(sc, 7, 8, s_pair, s_pair_false, s_string, s_integer, s_integer, s_pair_false, s_gtk_enum_t, s_pair_false);
- pl_puuiig = s7_make_circular_signature(sc, 5, 6, s_pair, s_pair_false, s_pair_false, s_integer, s_integer, s_gtk_enum_t);
- pl_puur = s7_make_circular_signature(sc, 3, 4, s_pair, s_pair_false, s_pair_false, s_real);
- pl_purru = s7_make_circular_signature(sc, 4, 5, s_pair, s_pair_false, s_real, s_real, s_pair_false);
- pl_puiiui = s7_make_circular_signature(sc, 5, 6, s_pair, s_pair_false, s_integer, s_integer, s_pair_false, s_integer);
- pl_pugi = s7_make_circular_signature(sc, 3, 4, s_pair, s_pair_false, s_gtk_enum_t, s_integer);
- pl_puuig = s7_make_circular_signature(sc, 4, 5, s_pair, s_pair_false, s_pair_false, s_integer, s_gtk_enum_t);
- pl_puttiiiu = s7_make_circular_signature(sc, 7, 8, s_pair, s_pair_false, s_any, s_any, s_integer, s_integer, s_integer, s_pair_false);
- pl_pubi = s7_make_circular_signature(sc, 3, 4, s_pair, s_pair_false, s_boolean, s_integer);
- pl_puiig = s7_make_circular_signature(sc, 4, 5, s_pair, s_pair_false, s_integer, s_integer, s_gtk_enum_t);
- pl_puiigi = s7_make_circular_signature(sc, 5, 6, s_pair, s_pair_false, s_integer, s_integer, s_gtk_enum_t, s_integer);
- pl_puigu = s7_make_circular_signature(sc, 4, 5, s_pair, s_pair_false, s_integer, s_gtk_enum_t, s_pair_false);
- pl_puuusuug = s7_make_circular_signature(sc, 7, 8, s_pair, s_pair_false, s_pair_false, s_pair_false, s_string, s_pair_false, s_pair_false, s_gtk_enum_t);
- pl_pusi = s7_make_circular_signature(sc, 3, 4, s_pair, s_pair_false, s_string, s_integer);
- pl_pusiu = s7_make_circular_signature(sc, 4, 5, s_pair, s_pair_false, s_string, s_integer, s_pair_false);
- pl_putu = s7_make_circular_signature(sc, 3, 4, s_pair, s_pair_false, s_any, s_pair_false);
- pl_puri = s7_make_circular_signature(sc, 3, 4, s_pair, s_pair_false, s_real, s_integer);
- pl_pusub = s7_make_circular_signature(sc, 4, 5, s_pair, s_pair_false, s_string, s_pair_false, s_boolean);
- pl_pust = s7_make_circular_signature(sc, 3, 4, s_pair, s_pair_false, s_string, s_any);
- pl_pub = s7_make_circular_signature(sc, 2, 3, s_pair, s_pair_false, s_boolean);
- pl_puuiu = s7_make_circular_signature(sc, 4, 5, s_pair, s_pair_false, s_pair_false, s_integer, s_pair_false);
- pl_pugiiu = s7_make_circular_signature(sc, 5, 6, s_pair, s_pair_false, s_gtk_enum_t, s_integer, s_integer, s_pair_false);
- pl_pusu = s7_make_circular_signature(sc, 3, 4, s_pair, s_pair_false, s_string, s_pair_false);
- pl_pu = s7_make_circular_signature(sc, 1, 2, s_pair, s_pair_false);
- pl_puiiu = s7_make_circular_signature(sc, 4, 5, s_pair, s_pair_false, s_integer, s_integer, s_pair_false);
- pl_puuubu = s7_make_circular_signature(sc, 5, 6, s_pair, s_pair_false, s_pair_false, s_pair_false, s_boolean, s_pair_false);
- pl_pugu = s7_make_circular_signature(sc, 3, 4, s_pair, s_pair_false, s_gtk_enum_t, s_pair_false);
- pl_puutuuiu = s7_make_circular_signature(sc, 7, 8, s_pair, s_pair_false, s_pair_false, s_any, s_pair_false, s_pair_false, s_integer, s_pair_false);
- pl_puutu = s7_make_circular_signature(sc, 4, 5, s_pair, s_pair_false, s_pair_false, s_any, s_pair_false);
- pl_pui = s7_make_circular_signature(sc, 2, 3, s_pair, s_pair_false, s_integer);
- pl_pussu = s7_make_circular_signature(sc, 4, 5, s_pair, s_pair_false, s_string, s_string, s_pair_false);
- pl_puibu = s7_make_circular_signature(sc, 4, 5, s_pair, s_pair_false, s_integer, s_boolean, s_pair_false);
- pl_pus = s7_make_circular_signature(sc, 2, 3, s_pair, s_pair_false, s_string);
- pl_pug = s7_make_circular_signature(sc, 2, 3, s_pair, s_pair_false, s_gtk_enum_t);
- pl_put = s7_make_circular_signature(sc, 2, 3, s_pair, s_pair_false, s_any);
- pl_pusigu = s7_make_circular_signature(sc, 5, 6, s_pair, s_pair_false, s_string, s_integer, s_gtk_enum_t, s_pair_false);
- pl_pusig = s7_make_circular_signature(sc, 4, 5, s_pair, s_pair_false, s_string, s_integer, s_gtk_enum_t);
- pl_puui = s7_make_circular_signature(sc, 3, 4, s_pair, s_pair_false, s_pair_false, s_integer);
- pl_puiu = s7_make_circular_signature(sc, 3, 4, s_pair, s_pair_false, s_integer, s_pair_false);
- pl_pusiuiu = s7_make_circular_signature(sc, 6, 7, s_pair, s_pair_false, s_string, s_integer, s_pair_false, s_integer, s_pair_false);
- pl_pusiuibu = s7_make_circular_signature(sc, 7, 8, s_pair, s_pair_false, s_string, s_integer, s_pair_false, s_integer, s_boolean, s_pair_false);
- pl_pusiiu = s7_make_circular_signature(sc, 5, 6, s_pair, s_pair_false, s_string, s_integer, s_integer, s_pair_false);
- pl_puuiiu = s7_make_circular_signature(sc, 5, 6, s_pair, s_pair_false, s_pair_false, s_integer, s_integer, s_pair_false);
- pl_b = s7_make_circular_signature(sc, 0, 1, s_boolean);
- pl_btiib = s7_make_circular_signature(sc, 4, 5, s_boolean, s_any, s_integer, s_integer, s_boolean);
- pl_bti = s7_make_circular_signature(sc, 2, 3, s_boolean, s_any, s_integer);
- pl_bt = s7_make_circular_signature(sc, 1, 2, s_boolean, s_any);
- pl_tb = s7_make_circular_signature(sc, 1, 2, s_any, s_boolean);
- pl_g = s7_make_circular_signature(sc, 0, 1, s_gtk_enum_t);
- pl_i = s7_make_circular_signature(sc, 0, 1, s_integer);
- pl_tg = s7_make_circular_signature(sc, 1, 2, s_any, s_gtk_enum_t);
- pl_tiu = s7_make_circular_signature(sc, 2, 3, s_any, s_integer, s_pair_false);
- pl_itiiub = s7_make_circular_signature(sc, 5, 6, s_integer, s_any, s_integer, s_integer, s_pair_false, s_boolean);
- pl_itsub = s7_make_circular_signature(sc, 4, 5, s_integer, s_any, s_string, s_pair_false, s_boolean);
- pl_itstttg = s7_make_circular_signature(sc, 6, 7, s_integer, s_any, s_string, s_any, s_any, s_any, s_gtk_enum_t);
- pl_itgiiut = s7_make_circular_signature(sc, 6, 7, s_integer, s_any, s_gtk_enum_t, s_integer, s_integer, s_pair_false, s_any);
- pl_ti = s7_make_circular_signature(sc, 1, 2, s_any, s_integer);
- pl_it = s7_make_circular_signature(sc, 1, 2, s_integer, s_any);
- pl_s = s7_make_circular_signature(sc, 0, 1, s_string);
- pl_tsu = s7_make_circular_signature(sc, 2, 3, s_any, s_string, s_pair_false);
- pl_tsb = s7_make_circular_signature(sc, 2, 3, s_any, s_string, s_boolean);
- pl_st = s7_make_circular_signature(sc, 1, 2, s_string, s_any);
- pl_tsig = s7_make_circular_signature(sc, 3, 4, s_any, s_string, s_integer, s_gtk_enum_t);
- pl_ts = s7_make_circular_signature(sc, 1, 2, s_any, s_string);
- pl_tsi = s7_make_circular_signature(sc, 2, 3, s_any, s_string, s_integer);
- pl_tsiu = s7_make_circular_signature(sc, 3, 4, s_any, s_string, s_integer, s_pair_false);
- pl_tsiiuui = s7_make_circular_signature(sc, 6, 7, s_any, s_string, s_integer, s_integer, s_pair_false, s_pair_false, s_integer);
- pl_tsiuui = s7_make_circular_signature(sc, 5, 6, s_any, s_string, s_integer, s_pair_false, s_pair_false, s_integer);
- pl_p = s7_make_circular_signature(sc, 0, 1, s_pair);
+ pl_suiig = s7_make_circular_signature(sc, 4, 5, s_string, s_pair_false, s_integer, s_integer, s_gtk_enum_t);
+ pl_suuub = s7_make_circular_signature(sc, 4, 5, s_string, s_pair_false, s_pair_false, s_pair_false, s_boolean);
+ pl_psugt = s7_make_circular_signature(sc, 4, 5, s_pair, s_string, s_pair_false, s_gtk_enum_t, s_any);
+ pl_psiuub = s7_make_circular_signature(sc, 5, 6, s_pair, s_string, s_integer, s_pair_false, s_pair_false, s_boolean);
+ pl_psrrrb = s7_make_circular_signature(sc, 5, 6, s_pair, s_string, s_real, s_real, s_real, s_boolean);
+ pl_psgbiiiit = s7_make_circular_signature(sc, 8, 9, s_pair, s_string, s_gtk_enum_t, s_boolean, s_integer, s_integer, s_integer, s_integer, s_any);
+ pl_psiiuusu = s7_make_circular_signature(sc, 7, 8, s_pair, s_string, s_integer, s_integer, s_pair_false, s_pair_false, s_string, s_pair_false);
+ pl_sg = s7_make_circular_signature(sc, 1, 2, s_string, s_gtk_enum_t);
+ pl_gs = s7_make_circular_signature(sc, 1, 2, s_gtk_enum_t, s_string);
pl_tusiuiui = s7_make_circular_signature(sc, 7, 8, s_any, s_pair_false, s_string, s_integer, s_pair_false, s_integer, s_pair_false, s_integer);
- pl_tuuiu = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_pair_false, s_integer, s_pair_false);
- pl_tussu = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_string, s_string, s_pair_false);
- pl_tuuuggu = s7_make_circular_signature(sc, 6, 7, s_any, s_pair_false, s_pair_false, s_pair_false, s_gtk_enum_t, s_gtk_enum_t, s_pair_false);
- pl_tuuggu = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_pair_false, s_gtk_enum_t, s_gtk_enum_t, s_pair_false);
- pl_tugiis = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_gtk_enum_t, s_integer, s_integer, s_string);
- pl_tubu = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_boolean, s_pair_false);
- pl_tuurru = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_pair_false, s_real, s_real, s_pair_false);
pl_tuurrrrgr = s7_make_circular_signature(sc, 8, 9, s_any, s_pair_false, s_pair_false, s_real, s_real, s_real, s_real, s_gtk_enum_t, s_real);
pl_tuurrrrg = s7_make_circular_signature(sc, 7, 8, s_any, s_pair_false, s_pair_false, s_real, s_real, s_real, s_real, s_gtk_enum_t);
- pl_tuuur = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_pair_false, s_pair_false, s_real);
- pl_tusg = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_string, s_gtk_enum_t);
- pl_tuuuui = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_pair_false, s_pair_false, s_pair_false, s_integer);
- pl_tugiiu = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_gtk_enum_t, s_integer, s_integer, s_pair_false);
- pl_tuusb = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_pair_false, s_string, s_boolean);
- pl_tugui = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_gtk_enum_t, s_pair_false, s_integer);
- pl_tuuugi = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_pair_false, s_pair_false, s_gtk_enum_t, s_integer);
- pl_tuuuub = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_pair_false, s_pair_false, s_pair_false, s_boolean);
- pl_tuttti = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_any, s_any, s_any, s_integer);
- pl_tuuttti = s7_make_circular_signature(sc, 6, 7, s_any, s_pair_false, s_pair_false, s_any, s_any, s_any, s_integer);
- pl_tuisi = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_integer, s_string, s_integer);
- pl_tugb = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_gtk_enum_t, s_boolean);
- pl_tugs = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_gtk_enum_t, s_string);
- pl_tugug = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_gtk_enum_t, s_pair_false, s_gtk_enum_t);
- pl_turgs = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_real, s_gtk_enum_t, s_string);
- pl_tubi = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_boolean, s_integer);
pl_tuttigsi = s7_make_circular_signature(sc, 7, 8, s_any, s_pair_false, s_any, s_any, s_integer, s_gtk_enum_t, s_string, s_integer);
pl_tuiiiiui = s7_make_circular_signature(sc, 7, 8, s_any, s_pair_false, s_integer, s_integer, s_integer, s_integer, s_pair_false, s_integer);
- pl_tuurb = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_pair_false, s_real, s_boolean);
pl_tuuiiiirrrrg = s7_make_circular_signature(sc, 11, 12, s_any, s_pair_false, s_pair_false, s_integer, s_integer, s_integer, s_integer, s_real, s_real, s_real, s_real, s_gtk_enum_t);
pl_tuuiiiirrrrgi = s7_make_circular_signature(sc, 12, 13, s_any, s_pair_false, s_pair_false, s_integer, s_integer, s_integer, s_integer, s_real, s_real, s_real, s_real, s_gtk_enum_t, s_integer);
- pl_tuiggu = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_integer, s_gtk_enum_t, s_gtk_enum_t, s_pair_false);
- pl_turrrb = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_real, s_real, s_real, s_boolean);
- pl_tuubbig = s7_make_circular_signature(sc, 6, 7, s_any, s_pair_false, s_pair_false, s_boolean, s_boolean, s_integer, s_gtk_enum_t);
pl_pt = s7_make_circular_signature(sc, 1, 2, s_pair, s_any);
- pl_tuuti = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_pair_false, s_any, s_integer);
- pl_tubbi = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_boolean, s_boolean, s_integer);
+ pl_tu = s7_make_circular_signature(sc, 1, 2, s_any, s_pair_false);
+ pl_tur = s7_make_circular_signature(sc, 2, 3, s_any, s_pair_false, s_real);
+ pl_tub = s7_make_circular_signature(sc, 2, 3, s_any, s_pair_false, s_boolean);
+ pl_tui = s7_make_circular_signature(sc, 2, 3, s_any, s_pair_false, s_integer);
+ pl_tus = s7_make_circular_signature(sc, 2, 3, s_any, s_pair_false, s_string);
+ pl_tut = s7_make_circular_signature(sc, 2, 3, s_any, s_pair_false, s_any);
+ pl_tug = s7_make_circular_signature(sc, 2, 3, s_any, s_pair_false, s_gtk_enum_t);
+ pl_tubu = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_boolean, s_pair_false);
+ pl_tusg = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_string, s_gtk_enum_t);
+ pl_tugb = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_gtk_enum_t, s_boolean);
+ pl_tugs = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_gtk_enum_t, s_string);
+ pl_tubi = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_boolean, s_integer);
pl_tuti = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_any, s_integer);
- pl_tutti = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_any, s_any, s_integer);
- pl_tutui = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_any, s_pair_false, s_integer);
- pl_tutisi = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_any, s_integer, s_string, s_integer);
- pl_tuuri = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_pair_false, s_real, s_integer);
- pl_tuusit = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_pair_false, s_string, s_integer, s_any);
- pl_tuurbr = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_pair_false, s_real, s_boolean, s_real);
- pl_tuugi = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_pair_false, s_gtk_enum_t, s_integer);
pl_tuit = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_integer, s_any);
pl_tusr = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_string, s_real);
- pl_tusri = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_string, s_real, s_integer);
pl_tusi = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_string, s_integer);
pl_turi = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_real, s_integer);
pl_tuui = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_pair_false, s_integer);
pl_tuur = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_pair_false, s_real);
pl_tuig = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_integer, s_gtk_enum_t);
- pl_tur = s7_make_circular_signature(sc, 2, 3, s_any, s_pair_false, s_real);
- pl_tub = s7_make_circular_signature(sc, 2, 3, s_any, s_pair_false, s_boolean);
- pl_tui = s7_make_circular_signature(sc, 2, 3, s_any, s_pair_false, s_integer);
- pl_tu = s7_make_circular_signature(sc, 1, 2, s_any, s_pair_false);
- pl_tus = s7_make_circular_signature(sc, 2, 3, s_any, s_pair_false, s_string);
pl_tusb = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_string, s_boolean);
- pl_tut = s7_make_circular_signature(sc, 2, 3, s_any, s_pair_false, s_any);
- pl_tuuut = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_pair_false, s_pair_false, s_any);
- pl_tug = s7_make_circular_signature(sc, 2, 3, s_any, s_pair_false, s_gtk_enum_t);
pl_tutb = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_any, s_boolean);
pl_tust = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_string, s_any);
pl_tuub = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_pair_false, s_boolean);
pl_tuus = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_pair_false, s_string);
pl_tuug = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_pair_false, s_gtk_enum_t);
- pl_tuibu = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_integer, s_boolean, s_pair_false);
pl_tuut = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_pair_false, s_any);
- pl_tuuig = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_pair_false, s_integer, s_gtk_enum_t);
- pl_tuguig = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_gtk_enum_t, s_pair_false, s_integer, s_gtk_enum_t);
- pl_tuubr = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_pair_false, s_boolean, s_real);
- pl_tuuub = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_pair_false, s_pair_false, s_boolean);
- pl_tuuiuui = s7_make_circular_signature(sc, 6, 7, s_any, s_pair_false, s_pair_false, s_integer, s_pair_false, s_pair_false, s_integer);
pl_tugu = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_gtk_enum_t, s_pair_false);
- pl_tuuir = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_pair_false, s_integer, s_real);
pl_tugr = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_gtk_enum_t, s_real);
pl_tugi = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_gtk_enum_t, s_integer);
- pl_tuuui = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_pair_false, s_pair_false, s_integer);
pl_tuib = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_integer, s_boolean);
pl_tusu = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_string, s_pair_false);
- pl_tuusi = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_pair_false, s_string, s_integer);
pl_tugt = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_gtk_enum_t, s_any);
pl_tuis = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_integer, s_string);
- pl_tubiiiu = s7_make_circular_signature(sc, 6, 7, s_any, s_pair_false, s_boolean, s_integer, s_integer, s_integer, s_pair_false);
pl_tuiu = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_integer, s_pair_false);
- pl_tusiis = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_string, s_integer, s_integer, s_string);
+ pl_tuuiu = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_pair_false, s_integer, s_pair_false);
+ pl_tussu = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_string, s_string, s_pair_false);
+ pl_tuuur = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_pair_false, s_pair_false, s_real);
+ pl_tuusb = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_pair_false, s_string, s_boolean);
+ pl_tugui = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_gtk_enum_t, s_pair_false, s_integer);
+ pl_tuisi = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_integer, s_string, s_integer);
+ pl_tugug = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_gtk_enum_t, s_pair_false, s_gtk_enum_t);
+ pl_turgs = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_real, s_gtk_enum_t, s_string);
+ pl_tuurb = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_pair_false, s_real, s_boolean);
+ pl_tuuti = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_pair_false, s_any, s_integer);
+ pl_tubbi = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_boolean, s_boolean, s_integer);
+ pl_tutti = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_any, s_any, s_integer);
+ pl_tutui = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_any, s_pair_false, s_integer);
+ pl_tuuri = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_pair_false, s_real, s_integer);
+ pl_tuugi = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_pair_false, s_gtk_enum_t, s_integer);
+ pl_tusri = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_string, s_real, s_integer);
+ pl_tuuut = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_pair_false, s_pair_false, s_any);
+ pl_tuibu = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_integer, s_boolean, s_pair_false);
+ pl_tuuig = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_pair_false, s_integer, s_gtk_enum_t);
+ pl_tuubr = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_pair_false, s_boolean, s_real);
+ pl_tuuub = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_pair_false, s_pair_false, s_boolean);
+ pl_tuuir = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_pair_false, s_integer, s_real);
+ pl_tuuui = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_pair_false, s_pair_false, s_integer);
+ pl_tuusi = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_pair_false, s_string, s_integer);
pl_tuiiu = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_integer, s_integer, s_pair_false);
pl_tuuug = s7_make_circular_signature(sc, 4, 5, s_any, s_pair_false, s_pair_false, s_pair_false, s_gtk_enum_t);
+ pl_tuuggu = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_pair_false, s_gtk_enum_t, s_gtk_enum_t, s_pair_false);
+ pl_tugiis = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_gtk_enum_t, s_integer, s_integer, s_string);
+ pl_tuurru = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_pair_false, s_real, s_real, s_pair_false);
+ pl_tuuuui = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_pair_false, s_pair_false, s_pair_false, s_integer);
+ pl_tugiiu = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_gtk_enum_t, s_integer, s_integer, s_pair_false);
+ pl_tuuugi = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_pair_false, s_pair_false, s_gtk_enum_t, s_integer);
+ pl_tuuuub = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_pair_false, s_pair_false, s_pair_false, s_boolean);
+ pl_tuttti = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_any, s_any, s_any, s_integer);
+ pl_tuiggu = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_integer, s_gtk_enum_t, s_gtk_enum_t, s_pair_false);
+ pl_turrrb = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_real, s_real, s_real, s_boolean);
+ pl_tutisi = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_any, s_integer, s_string, s_integer);
+ pl_tuusit = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_pair_false, s_string, s_integer, s_any);
+ pl_tuurbr = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_pair_false, s_real, s_boolean, s_real);
+ pl_tuguig = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_gtk_enum_t, s_pair_false, s_integer, s_gtk_enum_t);
+ pl_tusiis = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_string, s_integer, s_integer, s_string);
pl_tusuig = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_string, s_pair_false, s_integer, s_gtk_enum_t);
pl_tuuubr = s7_make_circular_signature(sc, 5, 6, s_any, s_pair_false, s_pair_false, s_pair_false, s_boolean, s_real);
- pl_big = s7_make_circular_signature(sc, 2, 3, s_boolean, s_integer, s_gtk_enum_t);
+ pl_tuuuggu = s7_make_circular_signature(sc, 6, 7, s_any, s_pair_false, s_pair_false, s_pair_false, s_gtk_enum_t, s_gtk_enum_t, s_pair_false);
+ pl_tuuttti = s7_make_circular_signature(sc, 6, 7, s_any, s_pair_false, s_pair_false, s_any, s_any, s_any, s_integer);
+ pl_tuubbig = s7_make_circular_signature(sc, 6, 7, s_any, s_pair_false, s_pair_false, s_boolean, s_boolean, s_integer, s_gtk_enum_t);
+ pl_tuuiuui = s7_make_circular_signature(sc, 6, 7, s_any, s_pair_false, s_pair_false, s_integer, s_pair_false, s_pair_false, s_integer);
+ pl_tubiiiu = s7_make_circular_signature(sc, 6, 7, s_any, s_pair_false, s_boolean, s_integer, s_integer, s_integer, s_pair_false);
+ pl_tg = s7_make_circular_signature(sc, 1, 2, s_any, s_gtk_enum_t);
+ pl_i = s7_make_circular_signature(sc, 0, 1, s_integer);
pl_bi = s7_make_circular_signature(sc, 1, 2, s_boolean, s_integer);
- pl_bsu = s7_make_circular_signature(sc, 2, 3, s_boolean, s_string, s_pair_false);
- pl_bsigb = s7_make_circular_signature(sc, 4, 5, s_boolean, s_string, s_integer, s_gtk_enum_t, s_boolean);
- pl_bur = s7_make_circular_signature(sc, 2, 3, s_boolean, s_pair_false, s_real);
- pl_buug = s7_make_circular_signature(sc, 3, 4, s_boolean, s_pair_false, s_pair_false, s_gtk_enum_t);
- pl_buigu = s7_make_circular_signature(sc, 4, 5, s_boolean, s_pair_false, s_integer, s_gtk_enum_t, s_pair_false);
- pl_buuti = s7_make_circular_signature(sc, 4, 5, s_boolean, s_pair_false, s_pair_false, s_any, s_integer);
- pl_butib = s7_make_circular_signature(sc, 4, 5, s_boolean, s_pair_false, s_any, s_integer, s_boolean);
- pl_buiuig = s7_make_circular_signature(sc, 5, 6, s_boolean, s_pair_false, s_integer, s_pair_false, s_integer, s_gtk_enum_t);
- pl_buuusuug = s7_make_circular_signature(sc, 7, 8, s_boolean, s_pair_false, s_pair_false, s_pair_false, s_string, s_pair_false, s_pair_false, s_gtk_enum_t);
- pl_buuit = s7_make_circular_signature(sc, 4, 5, s_boolean, s_pair_false, s_pair_false, s_integer, s_any);
- pl_buti = s7_make_circular_signature(sc, 3, 4, s_boolean, s_pair_false, s_any, s_integer);
- pl_butti = s7_make_circular_signature(sc, 4, 5, s_boolean, s_pair_false, s_any, s_any, s_integer);
- pl_busi = s7_make_circular_signature(sc, 3, 4, s_boolean, s_pair_false, s_string, s_integer);
- pl_buusib = s7_make_circular_signature(sc, 5, 6, s_boolean, s_pair_false, s_pair_false, s_string, s_integer, s_boolean);
- pl_busib = s7_make_circular_signature(sc, 4, 5, s_boolean, s_pair_false, s_string, s_integer, s_boolean);
- pl_buuuub = s7_make_circular_signature(sc, 5, 6, s_boolean, s_pair_false, s_pair_false, s_pair_false, s_pair_false, s_boolean);
- pl_buuub = s7_make_circular_signature(sc, 4, 5, s_boolean, s_pair_false, s_pair_false, s_pair_false, s_boolean);
- pl_buttu = s7_make_circular_signature(sc, 4, 5, s_boolean, s_pair_false, s_any, s_any, s_pair_false);
- pl_busgu = s7_make_circular_signature(sc, 4, 5, s_boolean, s_pair_false, s_string, s_gtk_enum_t, s_pair_false);
- pl_buurbr = s7_make_circular_signature(sc, 5, 6, s_boolean, s_pair_false, s_pair_false, s_real, s_boolean, s_real);
- pl_buui = s7_make_circular_signature(sc, 3, 4, s_boolean, s_pair_false, s_pair_false, s_integer);
- pl_buus = s7_make_circular_signature(sc, 3, 4, s_boolean, s_pair_false, s_pair_false, s_string);
- pl_buuui = s7_make_circular_signature(sc, 4, 5, s_boolean, s_pair_false, s_pair_false, s_pair_false, s_integer);
- pl_bug = s7_make_circular_signature(sc, 2, 3, s_boolean, s_pair_false, s_gtk_enum_t);
- pl_bu = s7_make_circular_signature(sc, 1, 2, s_boolean, s_pair_false);
- pl_bus = s7_make_circular_signature(sc, 2, 3, s_boolean, s_pair_false, s_string);
- pl_busu = s7_make_circular_signature(sc, 3, 4, s_boolean, s_pair_false, s_string, s_pair_false);
- pl_but = s7_make_circular_signature(sc, 2, 3, s_boolean, s_pair_false, s_any);
- pl_bui = s7_make_circular_signature(sc, 2, 3, s_boolean, s_pair_false, s_integer);
- pl_buib = s7_make_circular_signature(sc, 3, 4, s_boolean, s_pair_false, s_integer, s_boolean);
- pl_buiu = s7_make_circular_signature(sc, 3, 4, s_boolean, s_pair_false, s_integer, s_pair_false);
- pl_bub = s7_make_circular_signature(sc, 2, 3, s_boolean, s_pair_false, s_boolean);
- pl_buub = s7_make_circular_signature(sc, 3, 4, s_boolean, s_pair_false, s_pair_false, s_boolean);
- pl_pb = s7_make_circular_signature(sc, 1, 2, s_pair, s_boolean);
- pl_buig = s7_make_circular_signature(sc, 3, 4, s_boolean, s_pair_false, s_integer, s_gtk_enum_t);
- pl_buuig = s7_make_circular_signature(sc, 4, 5, s_boolean, s_pair_false, s_pair_false, s_integer, s_gtk_enum_t);
- pl_igi = s7_make_circular_signature(sc, 2, 3, s_integer, s_gtk_enum_t, s_integer);
- pl_gi = s7_make_circular_signature(sc, 1, 2, s_gtk_enum_t, s_integer);
- pl_iiit = s7_make_circular_signature(sc, 3, 4, s_integer, s_integer, s_integer, s_any);
- pl_iit = s7_make_circular_signature(sc, 2, 3, s_integer, s_integer, s_any);
- pl_sg = s7_make_circular_signature(sc, 1, 2, s_string, s_gtk_enum_t);
- pl_gs = s7_make_circular_signature(sc, 1, 2, s_gtk_enum_t, s_string);
- pl_isigutttiiu = s7_make_circular_signature(sc, 10, 11, s_integer, s_string, s_integer, s_gtk_enum_t, s_pair_false, s_any, s_any, s_any, s_integer, s_integer, s_pair_false);
- pl_isi = s7_make_circular_signature(sc, 2, 3, s_integer, s_string, s_integer);
- pl_isgt = s7_make_circular_signature(sc, 3, 4, s_integer, s_string, s_gtk_enum_t, s_any);
- pl_sig = s7_make_circular_signature(sc, 2, 3, s_string, s_integer, s_gtk_enum_t);
+ pl_big = s7_make_circular_signature(sc, 2, 3, s_boolean, s_integer, s_gtk_enum_t);
pl_si = s7_make_circular_signature(sc, 1, 2, s_string, s_integer);
pl_is = s7_make_circular_signature(sc, 1, 2, s_integer, s_string);
- pl_gussitu = s7_make_circular_signature(sc, 6, 7, s_gtk_enum_t, s_pair_false, s_string, s_string, s_integer, s_any, s_pair_false);
- pl_gurrsiu = s7_make_circular_signature(sc, 6, 7, s_gtk_enum_t, s_pair_false, s_real, s_real, s_string, s_integer, s_pair_false);
- pl_gus = s7_make_circular_signature(sc, 2, 3, s_gtk_enum_t, s_pair_false, s_string);
- pl_guut = s7_make_circular_signature(sc, 3, 4, s_gtk_enum_t, s_pair_false, s_pair_false, s_any);
- pl_guuut = s7_make_circular_signature(sc, 4, 5, s_gtk_enum_t, s_pair_false, s_pair_false, s_pair_false, s_any);
+ pl_isi = s7_make_circular_signature(sc, 2, 3, s_integer, s_string, s_integer);
+ pl_sig = s7_make_circular_signature(sc, 2, 3, s_string, s_integer, s_gtk_enum_t);
+ pl_isgt = s7_make_circular_signature(sc, 3, 4, s_integer, s_string, s_gtk_enum_t, s_any);
+ pl_isigutttiiu = s7_make_circular_signature(sc, 10, 11, s_integer, s_string, s_integer, s_gtk_enum_t, s_pair_false, s_any, s_any, s_any, s_integer, s_integer, s_pair_false);
+ pl_pu = s7_make_circular_signature(sc, 1, 2, s_pair, s_pair_false);
+ pl_pur = s7_make_circular_signature(sc, 2, 3, s_pair, s_pair_false, s_real);
+ pl_pub = s7_make_circular_signature(sc, 2, 3, s_pair, s_pair_false, s_boolean);
+ pl_pui = s7_make_circular_signature(sc, 2, 3, s_pair, s_pair_false, s_integer);
+ pl_pus = s7_make_circular_signature(sc, 2, 3, s_pair, s_pair_false, s_string);
+ pl_pug = s7_make_circular_signature(sc, 2, 3, s_pair, s_pair_false, s_gtk_enum_t);
+ pl_put = s7_make_circular_signature(sc, 2, 3, s_pair, s_pair_false, s_any);
+ pl_puur = s7_make_circular_signature(sc, 3, 4, s_pair, s_pair_false, s_pair_false, s_real);
+ pl_pugi = s7_make_circular_signature(sc, 3, 4, s_pair, s_pair_false, s_gtk_enum_t, s_integer);
+ pl_pubi = s7_make_circular_signature(sc, 3, 4, s_pair, s_pair_false, s_boolean, s_integer);
+ pl_pusi = s7_make_circular_signature(sc, 3, 4, s_pair, s_pair_false, s_string, s_integer);
+ pl_putu = s7_make_circular_signature(sc, 3, 4, s_pair, s_pair_false, s_any, s_pair_false);
+ pl_puri = s7_make_circular_signature(sc, 3, 4, s_pair, s_pair_false, s_real, s_integer);
+ pl_pust = s7_make_circular_signature(sc, 3, 4, s_pair, s_pair_false, s_string, s_any);
+ pl_pusu = s7_make_circular_signature(sc, 3, 4, s_pair, s_pair_false, s_string, s_pair_false);
+ pl_pugu = s7_make_circular_signature(sc, 3, 4, s_pair, s_pair_false, s_gtk_enum_t, s_pair_false);
+ pl_puui = s7_make_circular_signature(sc, 3, 4, s_pair, s_pair_false, s_pair_false, s_integer);
+ pl_puiu = s7_make_circular_signature(sc, 3, 4, s_pair, s_pair_false, s_integer, s_pair_false);
+ pl_puuui = s7_make_circular_signature(sc, 4, 5, s_pair, s_pair_false, s_pair_false, s_pair_false, s_integer);
+ pl_purru = s7_make_circular_signature(sc, 4, 5, s_pair, s_pair_false, s_real, s_real, s_pair_false);
+ pl_puuig = s7_make_circular_signature(sc, 4, 5, s_pair, s_pair_false, s_pair_false, s_integer, s_gtk_enum_t);
+ pl_puiig = s7_make_circular_signature(sc, 4, 5, s_pair, s_pair_false, s_integer, s_integer, s_gtk_enum_t);
+ pl_puigu = s7_make_circular_signature(sc, 4, 5, s_pair, s_pair_false, s_integer, s_gtk_enum_t, s_pair_false);
+ pl_pusiu = s7_make_circular_signature(sc, 4, 5, s_pair, s_pair_false, s_string, s_integer, s_pair_false);
+ pl_pusub = s7_make_circular_signature(sc, 4, 5, s_pair, s_pair_false, s_string, s_pair_false, s_boolean);
+ pl_puuiu = s7_make_circular_signature(sc, 4, 5, s_pair, s_pair_false, s_pair_false, s_integer, s_pair_false);
+ pl_puiiu = s7_make_circular_signature(sc, 4, 5, s_pair, s_pair_false, s_integer, s_integer, s_pair_false);
+ pl_puutu = s7_make_circular_signature(sc, 4, 5, s_pair, s_pair_false, s_pair_false, s_any, s_pair_false);
+ pl_pussu = s7_make_circular_signature(sc, 4, 5, s_pair, s_pair_false, s_string, s_string, s_pair_false);
+ pl_puibu = s7_make_circular_signature(sc, 4, 5, s_pair, s_pair_false, s_integer, s_boolean, s_pair_false);
+ pl_pusig = s7_make_circular_signature(sc, 4, 5, s_pair, s_pair_false, s_string, s_integer, s_gtk_enum_t);
+ pl_pusiig = s7_make_circular_signature(sc, 5, 6, s_pair, s_pair_false, s_string, s_integer, s_integer, s_gtk_enum_t);
+ pl_puuiig = s7_make_circular_signature(sc, 5, 6, s_pair, s_pair_false, s_pair_false, s_integer, s_integer, s_gtk_enum_t);
+ pl_puiiui = s7_make_circular_signature(sc, 5, 6, s_pair, s_pair_false, s_integer, s_integer, s_pair_false, s_integer);
+ pl_puiigi = s7_make_circular_signature(sc, 5, 6, s_pair, s_pair_false, s_integer, s_integer, s_gtk_enum_t, s_integer);
+ pl_pugiiu = s7_make_circular_signature(sc, 5, 6, s_pair, s_pair_false, s_gtk_enum_t, s_integer, s_integer, s_pair_false);
+ pl_puuubu = s7_make_circular_signature(sc, 5, 6, s_pair, s_pair_false, s_pair_false, s_pair_false, s_boolean, s_pair_false);
+ pl_pusigu = s7_make_circular_signature(sc, 5, 6, s_pair, s_pair_false, s_string, s_integer, s_gtk_enum_t, s_pair_false);
+ pl_pusiiu = s7_make_circular_signature(sc, 5, 6, s_pair, s_pair_false, s_string, s_integer, s_integer, s_pair_false);
+ pl_puuiiu = s7_make_circular_signature(sc, 5, 6, s_pair, s_pair_false, s_pair_false, s_integer, s_integer, s_pair_false);
+ pl_pusiigu = s7_make_circular_signature(sc, 6, 7, s_pair, s_pair_false, s_string, s_integer, s_integer, s_gtk_enum_t, s_pair_false);
+ pl_pusiuiu = s7_make_circular_signature(sc, 6, 7, s_pair, s_pair_false, s_string, s_integer, s_pair_false, s_integer, s_pair_false);
pl_guugbuut = s7_make_circular_signature(sc, 7, 8, s_gtk_enum_t, s_pair_false, s_pair_false, s_gtk_enum_t, s_boolean, s_pair_false, s_pair_false, s_any);
+ pl_pusiiugu = s7_make_circular_signature(sc, 7, 8, s_pair, s_pair_false, s_string, s_integer, s_integer, s_pair_false, s_gtk_enum_t, s_pair_false);
+ pl_puttiiiu = s7_make_circular_signature(sc, 7, 8, s_pair, s_pair_false, s_any, s_any, s_integer, s_integer, s_integer, s_pair_false);
+ pl_puuusuug = s7_make_circular_signature(sc, 7, 8, s_pair, s_pair_false, s_pair_false, s_pair_false, s_string, s_pair_false, s_pair_false, s_gtk_enum_t);
+ pl_puutuuiu = s7_make_circular_signature(sc, 7, 8, s_pair, s_pair_false, s_pair_false, s_any, s_pair_false, s_pair_false, s_integer, s_pair_false);
+ pl_pusiuibu = s7_make_circular_signature(sc, 7, 8, s_pair, s_pair_false, s_string, s_integer, s_pair_false, s_integer, s_boolean, s_pair_false);
+ pl_ti = s7_make_circular_signature(sc, 1, 2, s_any, s_integer);
+ pl_it = s7_make_circular_signature(sc, 1, 2, s_integer, s_any);
+ pl_gu = s7_make_circular_signature(sc, 1, 2, s_gtk_enum_t, s_pair_false);
+ pl_pg = s7_make_circular_signature(sc, 1, 2, s_pair, s_gtk_enum_t);
+ pl_gus = s7_make_circular_signature(sc, 2, 3, s_gtk_enum_t, s_pair_false, s_string);
pl_pgr = s7_make_circular_signature(sc, 2, 3, s_pair, s_gtk_enum_t, s_real);
pl_pgu = s7_make_circular_signature(sc, 2, 3, s_pair, s_gtk_enum_t, s_pair_false);
pl_pgi = s7_make_circular_signature(sc, 2, 3, s_pair, s_gtk_enum_t, s_integer);
pl_gug = s7_make_circular_signature(sc, 2, 3, s_gtk_enum_t, s_pair_false, s_gtk_enum_t);
- pl_pgbi = s7_make_circular_signature(sc, 3, 4, s_pair, s_gtk_enum_t, s_boolean, s_integer);
- pl_gu = s7_make_circular_signature(sc, 1, 2, s_gtk_enum_t, s_pair_false);
- pl_pg = s7_make_circular_signature(sc, 1, 2, s_pair, s_gtk_enum_t);
+ pl_tiu = s7_make_circular_signature(sc, 2, 3, s_any, s_integer, s_pair_false);
pl_gui = s7_make_circular_signature(sc, 2, 3, s_gtk_enum_t, s_pair_false, s_integer);
+ pl_guut = s7_make_circular_signature(sc, 3, 4, s_gtk_enum_t, s_pair_false, s_pair_false, s_any);
+ pl_pgbi = s7_make_circular_signature(sc, 3, 4, s_pair, s_gtk_enum_t, s_boolean, s_integer);
+ pl_guuut = s7_make_circular_signature(sc, 4, 5, s_gtk_enum_t, s_pair_false, s_pair_false, s_pair_false, s_any);
+ pl_itsub = s7_make_circular_signature(sc, 4, 5, s_integer, s_any, s_string, s_pair_false, s_boolean);
+ pl_itiiub = s7_make_circular_signature(sc, 5, 6, s_integer, s_any, s_integer, s_integer, s_pair_false, s_boolean);
+ pl_gussitu = s7_make_circular_signature(sc, 6, 7, s_gtk_enum_t, s_pair_false, s_string, s_string, s_integer, s_any, s_pair_false);
+ pl_gurrsiu = s7_make_circular_signature(sc, 6, 7, s_gtk_enum_t, s_pair_false, s_real, s_real, s_string, s_integer, s_pair_false);
+ pl_itstttg = s7_make_circular_signature(sc, 6, 7, s_integer, s_any, s_string, s_any, s_any, s_any, s_gtk_enum_t);
+ pl_itgiiut = s7_make_circular_signature(sc, 6, 7, s_integer, s_any, s_gtk_enum_t, s_integer, s_integer, s_pair_false, s_any);
+ pl_iu = s7_make_circular_signature(sc, 1, 2, s_integer, s_pair_false);
+ pl_pi = s7_make_circular_signature(sc, 1, 2, s_pair, s_integer);
+ pl_iur = s7_make_circular_signature(sc, 2, 3, s_integer, s_pair_false, s_real);
+ pl_iug = s7_make_circular_signature(sc, 2, 3, s_integer, s_pair_false, s_gtk_enum_t);
+ pl_pit = s7_make_circular_signature(sc, 2, 3, s_pair, s_integer, s_any);
+ pl_piu = s7_make_circular_signature(sc, 2, 3, s_pair, s_integer, s_pair_false);
+ pl_ius = s7_make_circular_signature(sc, 2, 3, s_integer, s_pair_false, s_string);
+ pl_iui = s7_make_circular_signature(sc, 2, 3, s_integer, s_pair_false, s_integer);
+ pl_iugi = s7_make_circular_signature(sc, 3, 4, s_integer, s_pair_false, s_gtk_enum_t, s_integer);
+ pl_iuis = s7_make_circular_signature(sc, 3, 4, s_integer, s_pair_false, s_integer, s_string);
+ pl_iusi = s7_make_circular_signature(sc, 3, 4, s_integer, s_pair_false, s_string, s_integer);
+ pl_iuui = s7_make_circular_signature(sc, 3, 4, s_integer, s_pair_false, s_pair_false, s_integer);
+ pl_iuisi = s7_make_circular_signature(sc, 4, 5, s_integer, s_pair_false, s_integer, s_string, s_integer);
+ pl_iuuui = s7_make_circular_signature(sc, 4, 5, s_integer, s_pair_false, s_pair_false, s_pair_false, s_integer);
+ pl_iuuuui = s7_make_circular_signature(sc, 5, 6, s_integer, s_pair_false, s_pair_false, s_pair_false, s_pair_false, s_integer);
+ pl_iuisut = s7_make_circular_signature(sc, 5, 6, s_integer, s_pair_false, s_integer, s_string, s_pair_false, s_any);
+ pl_gi = s7_make_circular_signature(sc, 1, 2, s_gtk_enum_t, s_integer);
+ pl_igi = s7_make_circular_signature(sc, 2, 3, s_integer, s_gtk_enum_t, s_integer);
+ pl_iit = s7_make_circular_signature(sc, 2, 3, s_integer, s_integer, s_any);
+ pl_iiit = s7_make_circular_signature(sc, 3, 4, s_integer, s_integer, s_integer, s_any);
+ pl_du = s7_make_circular_signature(sc, 1, 2, s_float, s_pair_false);
+ pl_pr = s7_make_circular_signature(sc, 1, 2, s_pair, s_real);
+ pl_dui = s7_make_circular_signature(sc, 2, 3, s_float, s_pair_false, s_integer);
+ pl_dus = s7_make_circular_signature(sc, 2, 3, s_float, s_pair_false, s_string);
+ pl_dusr = s7_make_circular_signature(sc, 3, 4, s_float, s_pair_false, s_string, s_real);
+ pl_dusi = s7_make_circular_signature(sc, 3, 4, s_float, s_pair_false, s_string, s_integer);
+ pl_prrru = s7_make_circular_signature(sc, 4, 5, s_pair, s_real, s_real, s_real, s_pair_false);
pl_bpt = s7_make_signature(sc, 2, s_pair_false, s_any);
s7_define_typed_function(sc, "g_unichar_validate", lg_g_unichar_validate, 1, 0, 0, H_g_unichar_validate, pl_bi);
@@ -55510,7 +55510,7 @@ static s7_pointer g_gtk_enum_t(s7_scheme *sc, s7_pointer args)
(!s7_is_symbol(arg)))
return(s7_make_symbol(sc, "integer?"));
func = s7_car(form);
- doc_string = s7_procedure_documentation(sc, func);
+ doc_string = s7_documentation(sc, func);
p = strchr(doc_string, (int)'(');
if (p)
{
@@ -55594,7 +55594,7 @@ void libgtk_s7_init(s7_scheme *sc)
s7_provide(sc, "gtk2");
#endif
#endif
- s7_define(sc, cur_env, s7_make_symbol(sc, "libgtk-version"), s7_make_string(sc, "08-Sep-17"));
+ s7_define(sc, cur_env, s7_make_symbol(sc, "libgtk-version"), s7_make_string(sc, "09-Oct-17"));
}
/* gcc -c libgtk_s7.c -o libgtk_s7.o -I. -fPIC `pkg-config --libs gtk+-3.0 --cflags` -lm -ldl */
/* gcc libgtk_s7.o -shared -o libgtk_s7.so */
diff --git a/lint.scm b/lint.scm
index 4ef5579..dd1bbb0 100644
--- a/lint.scm
+++ b/lint.scm
@@ -25,7 +25,7 @@
;;; else is evaluated in cond
;;; => is evaluated in both cond and case, so both are better left alone (see s7test.scm for examples)
;;; at the top-level, r7rs deems it an error to change their value
-;;; also '__func__, 'signature and 'documentation as local vars could cause confusion
+;;; also '__func__, '+signature+ and '+documentation+ as local vars could cause confusion
(define *report-built-in-functions-used-as-variables* #f) ; string and length are the most common cases
(define *report-forward-functions* #f) ; functions used before being defined
@@ -103,14 +103,14 @@
cddar cdddar cddddr cdddr cddr cdr ceiling char->integer char-alphabetic? char-ci<=?
char-ci<? char-ci=? char-ci>=? char-ci>? char-downcase char-lower-case? char-numeric?
char-position char-ready? char-upcase char-upper-case? char-whitespace? char<=? char<?
- char=? char>=? char>? char? complex complex? cond cons constant? continuation? cos
+ char=? char>=? char>? char? complex complex? cond cons continuation? cos constant?
cosh curlet current-error-port current-input-port current-output-port cyclic-sequences
defined? denominator dilambda? do dynamic-wind
eof-object? eq? equal? eqv? even? exact->inexact exact? exp expt
float? float-vector float-vector-ref float-vector? floor for-each funclet
gcd gensym gensym?
hash-table hash-table* hash-table-entries hash-table-ref hash-table? help hook-functions
- if imag-part inexact->exact inexact? infinite? inlet input-port?
+ if imag-part immutable? inexact->exact inexact? infinite? inlet input-port?
int-vector int-vector-ref int-vector? iterator-at-end? iterator-sequence integer->char
integer-decode-float integer-length integer? iterator?
keyword->symbol keyword?
@@ -120,8 +120,8 @@
make-rectangular make-shared-vector make-string make-vector map max member memq memv min modulo morally-equal?
nan? negative? not null? number->string number? numerator
object->string odd? openlet? or outlet output-port? owlet
- pair-line-number pair-filename pair? port-closed? port-filename port-line-number positive? procedure-documentation
- procedure-setter procedure-signature procedure-source procedure? proper-list? provided?
+ pair-line-number pair-filename pair? port-closed? port-filename port-line-number positive? documentation
+ setter signature procedure-source procedure? proper-list? provided?
quasiquote quote quotient
random-state random-state->list random-state? rational? rationalize real-part real? remainder reverse rootlet round
sequence? sin sinh square sqrt stacktrace string string->list string->number string->symbol string->keyword string-append
@@ -142,11 +142,11 @@
(for-each
(lambda (op)
(set! (ht op) #t))
- '(symbol? gensym? keyword? let? openlet? iterator? constant? macro? c-pointer? c-object?
+ '(symbol? gensym? keyword? let? openlet? iterator? macro? c-pointer? c-object? constant?
input-port? output-port? eof-object? integer? number? real? complex? rational? random-state?
char? string? list? pair? vector? float-vector? int-vector? byte-vector? hash-table?
continuation? procedure? dilambda? boolean? float? proper-list? sequence? null? gensym
- symbol->string string->symbol symbol symbol->value symbol->dynamic-value symbol-access
+ symbol->string string->symbol symbol symbol->value symbol->dynamic-value symbol-setter
string->keyword symbol->keyword keyword->symbol outlet rootlet curlet unlet sublet varlet
cutlet inlet owlet coverlet openlet let-ref let-set! make-iterator iterate iterator-sequence
iterator-at-end? provided? provide defined? c-pointer port-line-number port-filename
@@ -178,10 +178,10 @@
byte-vector make-byte-vector hash-table hash-table* make-hash-table hash-table-ref
hash-table-set! hash-table-entries cyclic-sequences call/cc call-with-current-continuation
call-with-exit load autoload eval eval-string apply for-each map dynamic-wind values
- catch throw error procedure-documentation procedure-signature help procedure-source funclet
- procedure-setter arity aritable? not eq? eqv? equal? morally-equal? gc s7-version emergency-exit
+ catch throw error documentation signature help procedure-source funclet
+ setter arity aritable? not eq? eqv? equal? morally-equal? gc s7-version emergency-exit
exit dilambda make-hook hook-functions stacktrace tree-leaves tree-memq object->let
- getenv directory? file-exists? type-of
+ getenv directory? file-exists? type-of immutable! immutable?
list-values apply-values unquote))
ht))
@@ -233,7 +233,7 @@
'(symbol? integer? rational? real? number? complex? float? keyword? gensym? byte-vector? string? list? sequence?
char? boolean? float-vector? int-vector? vector? let? hash-table? input-port? null? pair? proper-list?
output-port? iterator? continuation? dilambda? procedure? macro? random-state? eof-object? c-pointer?
- unspecified? c-object? constant?))
+ unspecified? c-object? immutable? constant?))
h))
(booleans (let ((h (make-hash-table)))
@@ -244,7 +244,7 @@
char? boolean? float-vector? int-vector? vector? let? hash-table? input-port? null? pair? proper-list?
output-port? iterator? continuation? dilambda? procedure? macro? random-state? eof-object? c-pointer? c-object?
unspecified? exact? inexact? defined? provided? even? odd? char-whitespace? char-numeric? char-alphabetic?
- negative? positive? zero? constant? infinite? nan? char-upper-case? char-lower-case? directory? file-exists?))
+ negative? positive? zero? immutable? constant? infinite? nan? char-upper-case? char-lower-case? directory? file-exists?))
h))
(notables (let ((h (make-hash-table)))
@@ -430,7 +430,7 @@
(denote var-ref (dilambda (lambda (v) (let-ref (cdr v) 'ref)) (lambda (v x) (let-set! (cdr v) 'ref x))))
(denote var-set (dilambda (lambda (v) (let-ref (cdr v) 'set)) (lambda (v x) (let-set! (cdr v) 'set x))))
(denote var-history (dilambda (lambda (v) (let-ref (cdr v) 'history)) (lambda (v x) (let-set! (cdr v) 'history x))))
- (denote var-ftype (dilambda (lambda (v) (let-ref (cdr v) 'ftype)) (lambda (v x) (if (defined? 'ftype (cdr v)) (let-set! (cdr v) 'ftype x)))))
+ (denote var-ftype (dilambda (lambda (v) (let-ref (cdr v) 'ftype)) (lambda (v x) (if (defined? 'ftype (cdr v) #t) (let-set! (cdr v) 'ftype x)))))
(denote var-retcons (dilambda (lambda (v) (let-ref (cdr v) 'retcons)) (lambda (v x) (let-set! (cdr v) 'retcons x))))
(denote var-arglist (dilambda (lambda (v) (let-ref (cdr v) 'arglist)) (lambda (v x) (let-set! (cdr v) 'arglist x))))
(denote var-definer (dilambda (lambda (v) (let-ref (cdr v) 'definer)) (lambda (v x) (let-set! (cdr v) 'definer x))))
@@ -466,12 +466,12 @@
(denote var-signature
(dilambda (lambda (v)
- (case (let-ref (cdr v) 'signature)
- ((()) (let-set! (cdr v) 'signature (get-signature v)))
+ (case (let-ref (cdr v) 'sig)
+ ((()) (let-set! (cdr v) 'sig (get-signature v)))
(else)))
(lambda (v x)
- (if (defined? 'signature (cdr v))
- (let-set! (cdr v) 'signature x))))) ; perhaps fallback on varlet here and in var-ftype above?
+ (if (defined? 'sig (cdr v) #t)
+ (let-set! (cdr v) 'sig x))))) ; perhaps fallback on varlet here and in var-ftype above?
(denote (make-lint-var name initial-value definer)
(let ((old (or (hash-table-ref other-identifiers name) ())))
@@ -570,8 +570,8 @@
(define applicable? arity)
(denote lint-every?
- (let ((documentation "(lint-every? func sequence) returns #t if func approves of every member of the list sequence")
- (signature '(boolean? procedure? list?)))
+ (let ((+documentation+ "(lint-every? func sequence) returns #t if func approves of every member of the list sequence")
+ (+signature+ '(boolean? procedure? list?)))
(lambda (f sequence)
(do ((arg sequence (cdr arg)))
((not (and (pair? arg)
@@ -579,8 +579,8 @@
(null? arg))))))
(denote lint-any?
- (let ((documentation "(lint-any? func sequence) returns #t if func approves of any member of the list sequence")
- (signature '(boolean? procedure? list?)))
+ (let ((+documentation+ "(lint-any? func sequence) returns #t if func approves of any member of the list sequence")
+ (+signature+ '(boolean? procedure? list?)))
(lambda (f sequence)
(do ((arg sequence (cdr arg)))
((or (not (pair? arg))
@@ -588,9 +588,9 @@
(pair? arg))))))
(denote lint-find-if
- (let ((documentation "(lint-find-if func lst) applies func to each member of the list lst.\n\
+ (let ((+documentation+ "(lint-find-if func lst) applies func to each member of the list lst.\n\
If func approves of one, find-if returns that member of the sequence")
- (signature '(#t procedure? list?)))
+ (+signature+ '(#t procedure? list?)))
(lambda (f lst)
(do ((p lst (cdr p)))
((or (not (pair? p))
@@ -616,7 +616,7 @@
;; -------- trees --------
(define copy-tree
- (let ((documentation "(copy-tree lst) returns a full copy of lst"))
+ (let ((+documentation+ "(copy-tree lst) returns a full copy of lst"))
(lambda (lis)
(if (pair? lis)
(cons (copy-tree (car lis))
@@ -878,14 +878,14 @@
cddar cdddar cddddr cdddr cddr cdr ceiling char->integer char-alphabetic? char-ci<=?
char-ci<? char-ci=? char-ci>=? char-ci>? char-downcase char-lower-case? char-numeric?
char-position char-upcase char-upper-case? char-whitespace? char<=? char<?
- char=? char>=? char>? char? complex complex? cons constant? continuation? cos
+ char=? char>=? char>? char? complex complex? cons continuation? cos constant?
cosh cyclic-sequences
denominator dilambda?
eof-object? eq? equal? eqv? even? exact->inexact exact? exp expt
float? float-vector-ref float-vector? floor
gcd gensym?
hash-table-entries hash-table-ref hash-table?
- imag-part inexact->exact inexact? infinite? inlet input-port?
+ imag-part immutable? inexact->exact inexact? infinite? inlet input-port?
int-vector-ref int-vector? iterator-at-end? iterator-sequence integer->char
integer-decode-float integer-length integer? iterator?
keyword->symbol keyword?
@@ -896,7 +896,7 @@
nan? negative? not null? number->string number? numerator
object->string odd? openlet? or output-port?
pair? port-closed? positive?
- procedure-setter procedure-signature procedure? proper-list? provided?
+ setter signature procedure? proper-list? provided?
quote quotient
random-state? rational? rationalize real-part real? remainder reverse round
sequence? sin sinh square sqrt string->number string->symbol
@@ -916,13 +916,13 @@
;; -------- func info --------
- (define (arg-signature fnc env)
+ (define (arg-signature fnc e)
(and (symbol? fnc)
- (let ((fd (var-member fnc env)))
+ (let ((fd (var-member fnc e)))
(if fd
(and (symbol? (var-ftype fd))
(var-signature fd))
- (procedure-signature fnc)))))
+ (signature fnc)))))
(define (arg-arity fnc env)
(and (symbol? fnc)
@@ -1739,7 +1739,7 @@
'arit ar
'arglist arglist
'history hist
- 'signature ()
+ 'sig ()
'side-effect ()
'ftype ftype
'initial-value initial-value
@@ -1807,6 +1807,7 @@
(define (->lint-type c)
(cond ((not (pair? c)) (->simple-type c))
+ ((procedure? (car c)) (return-type (car c) ())) ; (#_abs ...)
((not (symbol? (car c))) (or (pair? (car c)) 'pair?))
((not (eq? (car c) 'quote)) (or (return-type (car c) ()) (define->type c)))
((not (pair? (cdr c))) (->simple-type c)) ; ??
@@ -2051,7 +2052,7 @@
(and (not (null? f))
(side-effect-with-vars? f env vars)))
(cdr form))
- (let ((sig (procedure-signature (car form)))) ; sig has func arg and it is not known safe
+ (let ((sig (signature (car form)))) ; sig has func arg and it is not known safe
(and (pair? sig)
(memq 'procedure? (cdr sig))
(call-with-exit
@@ -2113,7 +2114,7 @@
vars))
(initialize-bad-var-names *report-bad-variable-names*)
- (set! (symbol-access '*report-bad-variable-names*) ; update these local variables if the global variable changes
+ (set! (symbol-setter '*report-bad-variable-names*) ; update these local variables if the global variable changes
(lambda (sym val)
(when (lint-every? symbol? val)
(initialize-bad-var-names val))
@@ -2379,7 +2380,7 @@
((or (null? p)
(eq? (car p) arg1))
i)))
- (arg-type (let ((sig (and (positive? pos) ; procedure-signature for arg2
+ (arg-type (let ((sig (and (positive? pos) ; signature for arg2
(arg-signature (car arg2) env))))
(if (zero? pos) ; its type indication for arg1's position
'procedure? ; or sequence? -- how to distinguish? use 'applicable?
@@ -2559,7 +2560,7 @@
((or (null? p)
(equal? (car p) (cadr arg1)))
(if (null? p) -1 i))))
- (arg-type (let ((sig (and (positive? pos) ; procedure-signature for arg2
+ (arg-type (let ((sig (and (positive? pos) ; signature for arg2
(arg-signature (car arg2) env))))
(if (zero? pos) ; its type indication for arg1's position
'procedure? ; or sequence? -- how to distinguish? use 'applicable?
@@ -4914,7 +4915,7 @@
`(remainder ,arg1 ,(cadr arg2)))
(and (len=3? (cadr arg2)) ; arg2 here is (* (quotient x y) y), arg1 is x
(eq? (caadr arg2) 'quotient)
- (equal? arg1 (cadr (cadr arg2)))
+ (equal? arg1 (cadadr arg2))
(equal? (caddr arg2) (caddr (cadr arg2)))
`(remainder ,arg1 ,(caddr arg2))))))
@@ -6024,7 +6025,10 @@
(hash-table-ref combinable-cxrs (car arg1))
(if arg2 (hash-table-ref combinable-cxrs (car arg2)) "")
(if arg3 (hash-table-ref combinable-cxrs (car arg3)) ""))
- (cadr (or arg3 arg2 arg1))))))))
+ (let ((val (cadr (or arg3 arg2 arg1))))
+ (if (keyword? val) ; tricky! ...(cddr :hi)... here is passed to lambda* below as last arg -> error because :hi has no argument!
+ (lint-format "~A can't be a pair" (car form) val)
+ val))))))))
#|
;; this builds the lists below:
(let ((ci ())
@@ -6124,6 +6128,7 @@
(and (pair? tree)
(or (eq? (car tree) 'apply-values)
(if (and (eq? (car tree) 'list-values)
+ (pair? (cdr tree)) ; (assq '(list-values .\ " ( \"))...)
(assq 'apply-values (cdr tree)))
(or (not (= (length tree) 3))
(not (and (pair? (caddr tree))
@@ -6154,6 +6159,51 @@
(format *stderr* "~A already has a value: ~A~%" key (hash-table-ref special-case-table key)))
(hash-table-set! special-case-table key value))
+ (define string->char=
+ (let ((substring->char? (lambda (s2)
+ (and (eq? (car s2) 'substring)
+ (= (length s2) 4)
+ (integer? (list-ref s2 2))
+ (integer? (list-ref s2 3))
+ (= (+ (list-ref s2 2) 1) (list-ref s2 3))))))
+ (lambda (caller form original-form)
+ ;; called by string=? and equal? returns true if it makes a suggestion
+ ;; look for args of form "x" (string x) (substring x 1 2) and reduces to char= (caller also tries args reversed)
+ (and (pair? (caddr form))
+ (let ((sug made-suggestion)
+ (s1 (cadr form))
+ (s2 (caddr form)))
+ (cond ((string? s1)
+ (when (= (length s1) 1)
+ (if (eq? (car s2) 'string) ; (equal? "[" (string r)) -> (char=? #\[ r)
+ (if (not (len=2? s2)) ; (eqv? "a" (string)) or (string=? "a" (string a b))
+ (lint-format "~A is #f" caller original-form)
+ (lint-format "perhaps ~A" caller
+ (lists->string original-form (list 'char=? (string-ref s1 0) (cadr s2)))))
+ (if (substring->char? s2) ; (equal? "^" (substring s 0 1)) -> (char=? #\^ (string-ref s 0))
+ (lint-format "perhaps ~A" caller
+ (lists->string original-form `(char=? ,(string-ref s1 0) (string-ref ,(cadr s2) ,(caddr s2)))))))))
+ ((not (pair? s1)))
+
+ ((not (eq? (car s1) 'string))
+ (if (and (substring->char? s1) ; (string=? (substring x 0 1) (substring y 2 3))
+ (substring->char? s2))
+ (lint-format "perhaps ~A" caller
+ (lists->string original-form `(char=? (string-ref ,(cadr s1) ,(caddr s1)) (string-ref ,(cadr s2) ,(caddr s2)))))))
+
+ ((eq? (car s2) 'string) ; (string=? (string x) (string y)) -> (char=? x y)
+ (if (not (eqv? (length s1) (length s2)))
+ (lint-format "~A is #f" caller original-form)
+ (if (len=2? s1)
+ (lint-format "perhaps ~A" caller (lists->string original-form (list 'char=? (cadr s1) (cadr s2)))))))
+
+ ((and (len=2? s1) ; (string=? (string x) (substring y 3 4)) -> (char=? x (string-ref y 3))
+ (substring->char? s2))
+ (lint-format "perhaps ~A" caller
+ (lists->string original-form `(char=? ,(cadr s1) (string-ref ,(cadr s2) ,(caddr s2)))))))
+
+ (not (= sug made-suggestion)))))))
+
;; ---------------- member and assoc ----------------
(let ()
(define sp-memx
@@ -6169,265 +6219,272 @@
caadr)))
(else #f))))))
(lambda (caller head form env)
- (when (= (length form) 4)
- (let ((func (list-ref form 3)))
- (if (symbol? func)
- (if (memq func '(eq? eqv? equal?)) ; (member x y eq?) -> (memq x y)
- (let ((op (if (eq? head 'member) ; (member (car x) entries equal?) -> (member (car x) entries)
- (case func ((eq?) 'memq) ((eqv?) 'memv) (else 'member))
- (case func ((eq?) 'assq) ((eqv?) 'assv) (else 'assoc)))))
- (lint-format "perhaps ~A" caller (lists->string form (list op (cadr form) (caddr form)))))
- (let ((sig (procedure-signature (symbol->value func)))) ; arg-signature here is too cranky
- (if (and (pair? sig)
- (not (eq? 'boolean? (car sig)))
- (not (and (pair? (car sig))
- (memq 'boolean? (car sig)))))
- (lint-format "~A is a questionable ~A function" caller func head)))) ; (member 1 x abs)
- ;; func not a symbol
- (when (and (len>2? func)
- (eq? (car func) 'lambda)
- (pair? (cadr func)))
- (if (not (memv (length (cadr func)) '(2 -1)))
- (lint-format "~A equality function (optional third arg) should take two arguments" caller head)
- (when (and (= (length func) 3) ; (member 'a x (lambda (a b c) (eq? a b)))
- (pair? (caddr func))
- (eq? head 'member))
- (let ((eq (caddr func))
- (args (cadr func)))
- (if (and (memq (car eq) '(eq? eqv? equal?))
- (eq? (car args) (cadr eq))
- (len>1? (caddr eq))
- (eq? (caaddr eq) 'car)
- (pair? (cdr args))
- (eq? (cadr args) (cadr (caddr eq))))
- (lint-format "member might perhaps be ~A" ; (member 'a x (lambda (a b) (eq? a (car b))))
- caller
- (if (or (eq? func 'eq?)
- (eq? (caaddr func) 'eq?))
- 'assq
- (if (eq? (caaddr func) 'eqv?)
- 'assv
- 'assoc)))))))))))
-
- (when (= (length form) 3)
- (let ((selector (cadr form))
- (items (caddr form)))
+ (case (length form)
+ ((3)
+ (let ((selector (cadr form))
+ (items (caddr form)))
+
+ (let ((current-eqf (case head ((memq assq) 'eq?) ((memv assv) 'eqv?) (else 'equal?)))
+ (selector-eqf (car (eqf selector env)))
+ (one-item (and (memq head '(memq memv member)) (list-one? items))))
+ ;; one-item assoc doesn't simplify cleanly
+
+ (if one-item
+ (let* ((target (one-item items))
+ (iter-eqf (eqf target env)))
+ (if (or (symbol? target)
+ (unquoted-pair? target))
+ (set! target (list 'quote target))) ; ; (member x (list "asdf")) -> (string=? x "asdf") -- maybe equal? here?
+ (lint-format "perhaps ~A" caller (lists->string form (list (cadr iter-eqf) selector target))))
+
+ ;; not one-item
+ (letrec ((duplicates? (lambda (lst fnc)
+ (and (pair? lst)
+ (or (fnc (car lst) (cdr lst))
+ (duplicates? (cdr lst) fnc)))))
+ (duplicate-constants? (lambda (lst fnc)
+ (and (pair? lst)
+ (or (and (constant? (car lst))
+ (fnc (car lst) (cdr lst)))
+ (duplicate-constants? (cdr lst) fnc))))))
+ (if (and (symbol? selector-eqf) ; (memq 1.0 x): perhaps memq -> memv
+ (not (eq? selector-eqf current-eqf)))
+ (lint-format "~A: perhaps ~A -> ~A" caller (truncated-list->string form) head
+ (if (memq head '(memq memv member))
+ (case selector-eqf ((eq?) 'memq) ((eqv?) 'memv) ((equal?) 'member))
+ (case selector-eqf ((eq?) 'assq) ((eqv?) 'assv) ((equal?) 'assoc)))))
+
+ ;; --------------------------------
+ ;; check for head mismatch with items
+ (when (pair? items)
+ (when (or (eq? (car items) 'list)
+ (quoted-pair? items))
+ (let ((elements ((if (eq? (car items) 'quote) cadr cdr) items)))
+ (let ((baddy #f))
+ (catch #t
+ (lambda ()
+ (set! baddy ((if (eq? (car items) 'list) duplicate-constants? duplicates?)
+ elements (symbol->value head))))
+ (lambda args #f))
+ (if (pair? baddy) ; (member x (list "asd" "abc" "asd"))
+ (lint-format "duplicated entry ~S in ~A" caller (car baddy) items)))
+
+ (when (proper-list? elements)
+ (let ((maxf #f)
+ (keys (if (eq? (car items) 'quote)
+ (if (memq head '(memq memv member))
+ elements
+ (and (lint-every? pair? elements)
+ (map car elements)))
+ (if (memq head '(memq memv member))
+ (and (lint-every? code-constant? elements)
+ elements)
+ (and (lint-every? (lambda (e)
+ (and (len=2? e)
+ (eq? (car e) 'quote)
+ (pair? (cadr e))))
+ elements)
+ (map caadr elements))))))
+ (when (proper-list? keys)
+ (if (eq? (car items) 'quote)
+ (do ((p keys (cdr p)))
+ ((or (null? p)
+ (memq maxf '(equal? #t))))
+ (let ((element (car p)))
+ (if (symbol? element)
+ (if (not maxf)
+ (set! maxf 'eq?))
+ (if (pair? element)
+ (begin
+ (if (and (eq? (car element) 'quote)
+ (pair? (cdr element)))
+ (lint-format "stray quote? ~A" caller form)) ; (memq x '(a 'b c))
+ (set! maxf #t))
+ (let ((type (if (symbol? element)
+ 'eq?
+ (car (->eqf (->simple-type element))))))
+ (if (or (memq maxf '(#f eq?))
+ (memq type '(#t equal?)))
+ (set! maxf type)))))))
+ ;; else (list ...)
+ (do ((p keys (cdr p)))
+ ((or (null? p)
+ (memq maxf '(equal? #t))))
+ (let ((element (car p)))
+ (if (symbol? element)
+ (set! maxf #t)
+ (let ((type (car (eqf element env))))
+ (if (or (memq maxf '(#f eq?))
+ (memq type '(#t equal?)))
+ (set! maxf type)))))))
+ (case maxf
+ ((eq?)
+ (if (not (memq head '(memq assq))) ; (member (car op) '(x y z))
+ (lint-format "~A could be ~A in ~A" caller
+ head
+ (if (memq head '(memv member)) 'memq 'assq)
+ form)))
+ ((eqv?)
+ (if (not (memq head '(memv assv))) ; (memq (strname 0) '(#\{ #\[ #\()))
+ (lint-format "~A ~Aould be ~A in ~A" caller
+ head
+ (if (memq head '(memq assq)) "sh" "c")
+ (if (memq head '(memq member)) 'memv 'assv)
+ form)))
+ ((equal? #t) ; (memq (car op) '("a" #()))
+ (if (not (memq head '(member assoc)))
+ (lint-format "~A should be ~A in ~A" caller
+ head
+ (if (memq head '(memq memv)) 'member 'assoc)
+ form))))))
+
+ (if (and (= (length elements) 2) ; (memq expr '(#t #f))
+ (memq #t elements)
+ (memq #f elements))
+ (lint-format "perhaps ~A" caller (lists->string form (list 'boolean? selector)))))))
+ ;; not (memv x '(0 0.0)) -> (zero? x) because x might not be a number
+
+ (case (car items)
+ ((map)
+ (let ((memx (memq head '(memq memv member))))
+ (when (and memx (= (length items) 3))
+ (let ((mapf (cadr items))
+ (map-items (caddr items)))
+ (cond ((eq? mapf 'car) ; (memq x (map car y)) -> (assq x y)
+ (lint-format "perhaps use assoc: ~A" caller
+ (lists->string form (list (case current-eqf ((eq?) 'assq) ((eqv?) 'assv) ((equal?) 'assoc))
+ selector map-items))))
+
+ ((eq? selector #t)
+ (if (eq? mapf 'null?) ; (memq #t (map null? items)) -> (memq () items)
+ (lint-format "perhaps ~A" caller
+ (lists->string form (list 'memq () map-items)))
+ (let ((b (if (eq? mapf 'b) 'c 'b)))
+ ;; (memq #t (map cadr items)) -> (member #t items (lambda (a b) (cadr b)))
+ (lint-format "perhaps avoid 'map: ~A" caller
+ (lists->string form `(member #t ,map-items (lambda (a ,b) (,mapf ,b))))))))
+
+ ((and (pair? selector)
+ (eq? (car selector) 'string->symbol) ; this could be extended, but it doesn't happen
+ (eq? mapf 'string->symbol)
+ (not (and (pair? map-items)
+ (eq? (car map-items) 'quote))))
+ (lint-format "perhaps ~A" caller
+ ;; (memq (string->symbol x) (map string->symbol y)) -> (member x y string=?)
+ (lists->string form `(member ,(cadr selector) ,map-items string=?))))
+
+ (else
+ ;; (member x (map b items)) -> (member x items (lambda (a c) (equal? a (b c))))
+ (let ((b (if (eq? mapf 'b) 'c 'b))) ; a below can't collide because eqf won't return 'a
+ (lint-format "perhaps avoid 'map: ~A" caller
+ (lists->string form `(member ,selector ,map-items
+ (lambda (a ,b) (,current-eqf a (,mapf ,b)))))))))))))
+
+ ((string->list) ; (memv c (string->list s)) -> (char-position c s)
+ (lint-format "perhaps ~A" caller
+ (lists->string form (cons 'char-position (cons (cadr form) (cdr items))))))
+
+ ((cons) ; (member x (cons y z)) -> (or (equal? x y) (member x z))
+ (if (and (not (pair? selector))
+ (len=3? items))
+ (lint-format "perhaps avoid 'cons: ~A" caller
+ (lists->string form `(or (,current-eqf ,selector ,(cadr items))
+ (,head ,selector ,(caddr items)))))))
+
+ ((append) ; (member x (append (list x) y)) -> (or (equal? x x) (member x y))
+ (if (and (not (pair? selector))
+ (len=3? items)
+ (len=2? (cadr items))
+ (eq? (caadr items) 'list))
+ (lint-format "perhaps ~A" caller
+ (lists->string form `(or (,current-eqf ,selector ,(cadadr items))
+ (,head ,selector ,(caddr items))))))))))))
+ (when (and (memq head '(memq memv))
+ (quoted-pair? items))
+ (let ((nitems (length (cadr items))))
+
+ (if (pair? selector) ; (memv (string-ref x 0) '(+ -)) -> #f etc
+ (let ((sig (arg-signature (car selector) env)))
+ (if (and (pair? sig)
+ (symbol? (car sig))
+ (not (eq? (car sig) 'values)))
+ (let ((vals (let ((car-sig-val (symbol->value (car sig))))
+ (map (lambda (item)
+ (if (car-sig-val item) item (values)))
+ (cadr items)))))
+ (if (not (= (length vals) nitems))
+ (lint-format "perhaps ~A" caller
+ (lists->string form
+ (and (pair? vals)
+ `(,head ,selector ',vals)))))))))
+ (if (> nitems 20)
+ (lint-format "perhaps use a hash-table here, rather than ~A" caller (truncated-list->string form)))
+
+ (let ((bad (lint-find-if (lambda (x)
+ (not (or (symbol? x)
+ (char? x)
+ (number? x)
+ (procedure? x) ; (memq abs '(1 #_abs 2)) !
+ (memq x '(#f #t () #<unspecified> #<undefined> #<eof>)))))
+ (cadr items))))
+ (if bad
+ (lint-format (if (and (pair? bad)
+ (eq? (car bad) 'unquote))
+ (values "stray comma? ~A" caller) ; (memq x '(a (unquote b) c))
+ (values "pointless list member: ~S in ~A" caller bad))
+ ;; quoted item here is caught above ; (memq x '(a (+ 1 2) 3))
+ form)))))))
- (let ((current-eqf (case head ((memq assq) 'eq?) ((memv assv) 'eqv?) (else 'equal?)))
- (selector-eqf (car (eqf selector env)))
- (one-item (and (memq head '(memq memv member)) (list-one? items))))
- ;; one-item assoc doesn't simplify cleanly
-
- (if one-item
- (let* ((target (one-item items))
- (iter-eqf (eqf target env)))
- (if (or (symbol? target)
- (unquoted-pair? target))
- (set! target (list 'quote target))) ; ; (member x (list "asdf")) -> (string=? x "asdf") -- maybe equal? here?
- (lint-format "perhaps ~A" caller (lists->string form (list (cadr iter-eqf) selector target))))
-
- ;; not one-item
- (letrec ((duplicates? (lambda (lst fnc)
- (and (pair? lst)
- (or (fnc (car lst) (cdr lst))
- (duplicates? (cdr lst) fnc)))))
- (duplicate-constants? (lambda (lst fnc)
- (and (pair? lst)
- (or (and (constant? (car lst))
- (fnc (car lst) (cdr lst)))
- (duplicate-constants? (cdr lst) fnc))))))
- (if (and (symbol? selector-eqf) ; (memq 1.0 x): perhaps memq -> memv
- (not (eq? selector-eqf current-eqf)))
- (lint-format "~A: perhaps ~A -> ~A" caller (truncated-list->string form) head
- (if (memq head '(memq memv member))
- (case selector-eqf ((eq?) 'memq) ((eqv?) 'memv) ((equal?) 'member))
- (case selector-eqf ((eq?) 'assq) ((eqv?) 'assv) ((equal?) 'assoc)))))
-
- ;; --------------------------------
- ;; check for head mismatch with items
- (when (pair? items)
- (when (or (eq? (car items) 'list)
- (quoted-pair? items))
- (let ((elements ((if (eq? (car items) 'quote) cadr cdr) items)))
- (let ((baddy #f))
- (catch #t
- (lambda ()
- (set! baddy ((if (eq? (car items) 'list) duplicate-constants? duplicates?)
- elements (symbol->value head))))
- (lambda args #f))
- (if (pair? baddy) ; (member x (list "asd" "abc" "asd"))
- (lint-format "duplicated entry ~S in ~A" caller (car baddy) items)))
-
- (when (proper-list? elements)
- (let ((maxf #f)
- (keys (if (eq? (car items) 'quote)
- (if (memq head '(memq memv member))
- elements
- (and (lint-every? pair? elements)
- (map car elements)))
- (if (memq head '(memq memv member))
- (and (lint-every? code-constant? elements)
- elements)
- (and (lint-every? (lambda (e)
- (and (len=2? e)
- (eq? (car e) 'quote)
- (pair? (cadr e))))
- elements)
- (map caadr elements))))))
- (when (proper-list? keys)
- (if (eq? (car items) 'quote)
- (do ((p keys (cdr p)))
- ((or (null? p)
- (memq maxf '(equal? #t))))
- (let ((element (car p)))
- (if (symbol? element)
- (if (not maxf)
- (set! maxf 'eq?))
- (if (pair? element)
- (begin
- (if (and (eq? (car element) 'quote)
- (pair? (cdr element)))
- (lint-format "stray quote? ~A" caller form)) ; (memq x '(a 'b c))
- (set! maxf #t))
- (let ((type (if (symbol? element)
- 'eq?
- (car (->eqf (->simple-type element))))))
- (if (or (memq maxf '(#f eq?))
- (memq type '(#t equal?)))
- (set! maxf type)))))))
- ;; else (list ...)
- (do ((p keys (cdr p)))
- ((or (null? p)
- (memq maxf '(equal? #t))))
- (let ((element (car p)))
- (if (symbol? element)
- (set! maxf #t)
- (let ((type (car (eqf element env))))
- (if (or (memq maxf '(#f eq?))
- (memq type '(#t equal?)))
- (set! maxf type)))))))
- (case maxf
- ((eq?)
- (if (not (memq head '(memq assq))) ; (member (car op) '(x y z))
- (lint-format "~A could be ~A in ~A" caller
- head
- (if (memq head '(memv member)) 'memq 'assq)
- form)))
- ((eqv?)
- (if (not (memq head '(memv assv))) ; (memq (strname 0) '(#\{ #\[ #\()))
- (lint-format "~A ~Aould be ~A in ~A" caller
- head
- (if (memq head '(memq assq)) "sh" "c")
- (if (memq head '(memq member)) 'memv 'assv)
- form)))
- ((equal? #t) ; (memq (car op) '("a" #()))
- (if (not (memq head '(member assoc)))
- (lint-format "~A should be ~A in ~A" caller
- head
- (if (memq head '(memq memv)) 'member 'assoc)
- form))))))
-
- (if (and (= (length elements) 2) ; (memq expr '(#t #f))
- (memq #t elements)
- (memq #f elements))
- (lint-format "perhaps ~A" caller (lists->string form (list 'boolean? selector)))))))
- ;; not (memv x '(0 0.0)) -> (zero? x) because x might not be a number
-
- (case (car items)
- ((map)
- (let ((memx (memq head '(memq memv member))))
- (when (and memx (= (length items) 3))
- (let ((mapf (cadr items))
- (map-items (caddr items)))
- (cond ((eq? mapf 'car) ; (memq x (map car y)) -> (assq x y)
- (lint-format "perhaps use assoc: ~A" caller
- (lists->string form (list (case current-eqf ((eq?) 'assq) ((eqv?) 'assv) ((equal?) 'assoc))
- selector map-items))))
-
- ((eq? selector #t)
- (if (eq? mapf 'null?) ; (memq #t (map null? items)) -> (memq () items)
- (lint-format "perhaps ~A" caller
- (lists->string form (list 'memq () map-items)))
- (let ((b (if (eq? mapf 'b) 'c 'b)))
- ;; (memq #t (map cadr items)) -> (member #t items (lambda (a b) (cadr b)))
- (lint-format "perhaps avoid 'map: ~A" caller
- (lists->string form `(member #t ,map-items (lambda (a ,b) (,mapf ,b))))))))
-
- ((and (pair? selector)
- (eq? (car selector) 'string->symbol) ; this could be extended, but it doesn't happen
- (eq? mapf 'string->symbol)
- (not (and (pair? map-items)
- (eq? (car map-items) 'quote))))
- (lint-format "perhaps ~A" caller
- ;; (memq (string->symbol x) (map string->symbol y)) -> (member x y string=?)
- (lists->string form `(member ,(cadr selector) ,map-items string=?))))
-
- (else
- ;; (member x (map b items)) -> (member x items (lambda (a c) (equal? a (b c))))
- (let ((b (if (eq? mapf 'b) 'c 'b))) ; a below can't collide because eqf won't return 'a
- (lint-format "perhaps avoid 'map: ~A" caller
- (lists->string form `(member ,selector ,map-items
- (lambda (a ,b) (,current-eqf a (,mapf ,b)))))))))))))
-
- ((string->list) ; (memv c (string->list s)) -> (char-position c s)
- (lint-format "perhaps ~A" caller
- (lists->string form (cons 'char-position (cons (cadr form) (cdr items))))))
-
- ((cons) ; (member x (cons y z)) -> (or (equal? x y) (member x z))
- (if (and (not (pair? selector))
- (len=3? items))
- (lint-format "perhaps avoid 'cons: ~A" caller
- (lists->string form `(or (,current-eqf ,selector ,(cadr items))
- (,head ,selector ,(caddr items)))))))
-
- ((append) ; (member x (append (list x) y)) -> (or (equal? x x) (member x y))
- (if (and (not (pair? selector))
- (len=3? items)
- (len=2? (cadr items))
- (eq? (caadr items) 'list))
- (lint-format "perhaps ~A" caller
- (lists->string form `(or (,current-eqf ,selector ,(cadadr items))
- (,head ,selector ,(caddr items))))))))))))
- (when (and (memq head '(memq memv))
- (quoted-pair? items))
- (let ((nitems (length (cadr items))))
-
- (if (pair? selector) ; (memv (string-ref x 0) '(+ -)) -> #f etc
- (let ((sig (arg-signature (car selector) env)))
- (if (and (pair? sig)
- (symbol? (car sig))
- (not (eq? (car sig) 'values)))
- (let ((vals (let ((car-sig-val (symbol->value (car sig))))
- (map (lambda (item)
- (if (car-sig-val item) item (values)))
- (cadr items)))))
- (if (not (= (length vals) nitems))
- (lint-format "perhaps ~A" caller
- (lists->string form
- (and (pair? vals)
- `(,head ,selector ',vals)))))))))
- (if (> nitems 20)
- (lint-format "perhaps use a hash-table here, rather than ~A" caller (truncated-list->string form)))
-
- (let ((bad (lint-find-if (lambda (x)
- (not (or (symbol? x)
- (char? x)
- (number? x)
- (procedure? x) ; (memq abs '(1 #_abs 2)) !
- (memq x '(#f #t () #<unspecified> #<undefined> #<eof>)))))
- (cadr items))))
- (if bad
- (lint-format (if (and (pair? bad)
- (eq? (car bad) 'unquote))
- (values "stray comma? ~A" caller) ; (memq x '(a (unquote b) c))
- (values "pointless list member: ~S in ~A" caller bad))
- ;; quoted item here is caught above ; (memq x '(a (+ 1 2) 3))
- form))))))))))
-
+ ((4)
+ (let ((func (list-ref form 3)))
+ (if (symbol? func)
+ (if (memq func '(eq? eqv? equal?)) ; (member x y eq?) -> (memq x y)
+ (let ((op (if (eq? head 'member) ; (member (car x) entries equal?) -> (member (car x) entries)
+ (case func ((eq?) 'memq) ((eqv?) 'memv) (else 'member))
+ (case func ((eq?) 'assq) ((eqv?) 'assv) (else 'assoc)))))
+ (lint-format "perhaps ~A" caller (lists->string form (list op (cadr form) (caddr form)))))
+ (let ((sig (signature (symbol->value func)))) ; arg-signature here is too cranky
+ (if (and (pair? sig)
+ (not (eq? 'boolean? (car sig)))
+ (not (and (pair? (car sig))
+ (memq 'boolean? (car sig)))))
+ (lint-format "~A is a questionable ~A function" caller func head)))) ; (member 1 x abs)
+ ;; func not a symbol
+ (when (and (len>2? func)
+ (eq? (car func) 'lambda)
+ (pair? (cadr func)))
+ (if (not (memv (length (cadr func)) '(2 -1)))
+ (lint-format "~A equality function (optional third arg) should take two arguments" caller head)
+ (when (eq? head 'member)
+ (when (and (= (length func) 3) ; (member 'a x (lambda (a b c) (eq? a b)))
+ (pair? (caddr func)))
+ (let ((eq (caddr func))
+ (args (cadr func)))
+ (if (and (memq (car eq) '(eq? eqv? equal?))
+ (eq? (car args) (cadr eq))
+ (len>1? (caddr eq))
+ (eq? (caaddr eq) 'car)
+ (pair? (cdr args))
+ (eq? (cadr args) (cadr (caddr eq))))
+ (lint-format "member might perhaps be ~A" ; (member 'a x (lambda (a b) (eq? a (car b))))
+ caller
+ (if (or (eq? func 'eq?)
+ (eq? (caaddr func) 'eq?))
+ 'assq
+ (if (eq? (caaddr func) 'eqv?)
+ 'assv
+ 'assoc))))))
+ (when (pair? (cadr form)) ; (member (abs x) lst (lambda (a b) (< b 2)))
+ (let ((args (cadr func)))
+ (when (and (pair? args)
+ (not (tree-memq (car args) (cddr func))))
+ (lint-format "~A is ignored, so perhaps (member #f ...)" caller (car args)))))))))))))))
+
+
(for-each (lambda (f)
(hash-special f sp-memx))
'(memq assq memv assv member assoc)))
-
+
;; ---------------- car, cdr, etc ----------------
(let ()
(define (sp-crx caller head form env)
@@ -6940,47 +6997,16 @@
new-args))))))
(when (and (eq? head 'string=?)
- (= (length form) 3)) ; (string=? (symbol->string a) (symbol->string b)) -> (eq? a b)
- (if (and (pair? (cadr form))
+ (= (length form) 3))
+ (unless (string->char= caller form form) ; (string=? "x" (string y))
+ (string->char= caller (cons (car form) (reverse (cdr form))) form))
+
+ (if (and (pair? (cadr form)) ; (string=? (symbol->string a) (symbol->string b)) -> (eq? a b)
(eq? (caadr form) 'symbol->string)
(pair? (caddr form))
(eq? (caaddr form) 'symbol->string))
- (lint-format "perhaps ~A" caller (lists->string form (list 'eq? (cadadr form) (cadr (caddr form)))))
- (let ((s1 #f)
- (s2 #f))
- (if (and (string? (cadr form))
- (= (length (cadr form)) 1))
- (begin
- (set! s1 (cadr form))
- (set! s2 (caddr form)))
- (if (and (string? (caddr form))
- (= (length (caddr form)) 1))
- (begin
- (set! s1 (caddr form))
- (set! s2 (cadr form)))))
- (if (and s1 ; (string=? (substring r 0 1) "S")
- (pair? s2)
- (eq? (car s2) 'substring)
- (= (length s2) 4)
- (eqv? (list-ref s2 2) 0)
- (eqv? (list-ref s2 3) 1))
- (lint-format "perhaps ~A" caller
- (lists->string form (list 'char=? (list 'string-ref (cadr s2) 0) (string-ref s1 0))))))))
-
- (if (lint-every? (lambda (a) ; (string=? "#" (string (string-ref s 0))) -> (char=? #\# (string-ref s 0))
- (or (and (string? a)
- (= (length a) 1))
- (and (len>1? a)
- (eq? (car a) 'string))))
- (cdr form))
- (lint-format "perhaps ~A" caller
- (lists->string form
- (cons (symbol "char" (substring (symbol->string head) 6))
- (map (lambda (a)
- (if (string? a)
- (string-ref a 0)
- (cadr a)))
- (cdr form)))))))
+ (lint-format "perhaps ~A" caller (lists->string form (list 'eq? (cadadr form) (cadr (caddr form))))))))
+
(for-each (lambda (f)
(hash-special f sp-string<))
'(string<? string>? string<=? string>=? string=? string-ci<? string-ci>? string-ci<=? string-ci>=? string-ci=?)))
@@ -7113,19 +7139,25 @@
;; ---------------- copy ----------------
(let ()
(define (sp-copy caller head form env)
- (cond ((and (pair? (cdr form)) ; (copy (copy x)) could be (copy x)
- (or (number? (cadr form))
- (boolean? (cadr form))
- (char? (cadr form))
- (and (pair? (cadr form))
- (memq (caadr form) '(copy string-copy))) ; or any maker?
- (and (pair? (cddr form))
- (equal? (cadr form) (caddr form)))))
+ (cond ((not (pair? (cdr form)))) ; (copy) argnum error reported elsewhere
+
+ ((or (number? (cadr form)) ; (copy 1)
+ (boolean? (cadr form))
+ (char? (cadr form))
+ (and (pair? (cadr form)) ; (copy (copy x)) -> (copy x)
+ (memq (caadr form) '(copy string-copy)))) ; or any maker?
(lint-format "~A could be ~A" caller (truncated-list->string form) (cadr form)))
- ((and (pair? (cdr form)) ; (copy (owlet)) could be (owlet)
- (equal? (cadr form) '(owlet)))
+ ((equal? (cadr form) '(owlet)) ; (copy (owlet)) -> (owlet)
(lint-format "~A could be (owlet): owlet is copied internally" caller form))
+
+ ((not (pair? (cddr form))))
+
+ ((and (eq? (cadr form) (caddr form)) ; (copy x x)
+ (or (null? (cdddr form))
+ (and (eqv? (cadddr form) 0) ; (copy x x 0)
+ (null? (cddddr form)))))
+ (lint-format "~A is a no-op" caller form))
((= (length form) 5)
(check-start-and-end caller 'copy (cdddr form) form env))))
@@ -7232,7 +7264,7 @@
(check-boolean-affinity caller form env)
(if (and (pair? (cdr form)) ; (pair? (member x y)) -> (member x y)
(pair? (cadr form))
- (memq (caadr form) '(memq memv member assq assv assoc procedure-signature)))
+ (memq (caadr form) '(memq memv member assq assv assoc signature)))
(lint-format "~A returns either #f or a pair, so ~A" caller (caadr form)
(lists->string form (cadr form)))))
(for-each (lambda (f)
@@ -8680,7 +8712,7 @@
(if (memq func '(= eq? eqv? equal? string=? char=? string-ci=? char-ci=?))
(lint-format "sort! with ~A may hang: ~A" caller func (truncated-list->string form))
(if (symbol? func)
- (let ((sig (procedure-signature (symbol->value func (rootlet)))))
+ (let ((sig (signature (symbol->value func (rootlet)))))
(if (and (pair? sig)
(not (eq? 'boolean? (car sig)))
(not (and (pair? (car sig))
@@ -8928,7 +8960,7 @@
(let ((t1 (->lint-type arg1)) ; (eq? (floor pi) 'a) -> #f
(t2 (->lint-type arg2)))
;; ->lint-type -> #t if unknown
- (when (not (compatible? t1 t2))
+ (unless (compatible? t1 t2)
(set! expr #f)))
(if (not (eq? expr 'unset)) ; (eq? x '()) -> (null? x)
@@ -8961,27 +8993,17 @@
(list head
(if (useless-copy? arg1) (cadr arg1) arg1)
(if (useless-copy? arg2) (cadr arg2) arg2)))))
- (if (and (string? (cadr form))
- (= (length (cadr form)) 1))
- (let ((s2 (caddr form)))
- (if (pair? s2)
- (if (eq? (car s2) 'string) ; (equal? "[" (string r)) -> (char=? #\[ r)
- (lint-format "perhaps ~A" caller
- (lists->string form (list 'char=? (string-ref (cadr form) 0) (cadr s2))))
- (if (and (eq? (car s2) 'substring)
- (= (length s2) 4) ; (equal? "^" (substring s 0 1)) -> (char=? #\^ (string-ref s 0))
- (eqv? (list-ref s2 2) 0)
- (eqv? (list-ref s2 3) 1))
- (lint-format "perhaps ~A" caller
- (lists->string form `(char=? ,(string-ref (cadr form) 0) (string-ref ,(cadr s2) 0)))))))))
+ (unless (string->char= caller form form)
+ (string->char= caller (cons (car form) (reverse (cdr form))) form))
(if (and (not (eq? (cadr eq1) (cadr eq2))) ; (eqv? ":" (string-ref s 0))
(memq (cadr eq1) '(char=? string=?))
(memq (cadr eq2) '(char=? string=?)))
(lint-format "this can't be right: ~A" caller form))
- ;; (equal? a (list b)) and equivalents happens a lot, but is the extra consing worse than
- ;; (and (pair? a) (equal? (car a) b) (null? (cdr a))) -- code readability seems more important here
+ ;; (equal? a (list b)) and equivalents happen a lot (well, a few dozen times), but is the extra consing worse than
+ ;; (and (pair? a) (null? (cdr a)) (equal? (car a) b)) -- code readability seems more important here
+ ;; also, a is often an expression, and let+local is worse than list
(cond ((or (eq? (car eq1) 'equal?)
(eq? (car eq2) 'equal?))
@@ -9021,8 +9043,7 @@
(let ((t1 (->lint-type arg1)) ; (eqv? (floor pi) 'a) -> #f
(t2 (->lint-type arg2)))
- ;(format *stderr* "rtn: ~A ~A~%" t1 t2)
- (when (not (compatible? t1 t2))
+ (unless (compatible? t1 t2)
(lint-format "perhaps ~A -> #f" caller form)))
)))
;; very few hits:
@@ -9047,7 +9068,7 @@
(apply morally-equal? (cdr form)))))
(let ((t1 (->lint-type arg1)) ; (morallly-equal? (floor pi) 'a) -> #f
(t2 (->lint-type arg2)))
- (when (not (compatible? t1 t2))
+ (unless (compatible? t1 t2)
(lint-format "perhaps ~A -> #f" caller form)))))))
(hash-special 'morally-equal? sp-morally-equal))
@@ -9340,10 +9361,12 @@
;; ---------------- values ----------------
(let ()
+ (define (car-values? a b) ; (values 2 (values 3 4) 5) -> (values 2 3 4 5)
+ (and (pair? b)
+ (eq? (car b) 'values)))
+
(define (sp-values caller head form env)
- (cond ((member 'values (cdr form) (lambda (a b)
- (and (pair? b) ; (values 2 (values 3 4) 5) -> (values 2 3 4 5)
- (eq? (car b) 'values))))
+ (cond ((member #f (cdr form) car-values?)
(lint-format "perhaps ~A" caller (lists->string form (cons 'values (splice-if 'values (cdr form))))))
((len=2? form)
(lint-format "perhaps ~A" caller
@@ -10178,7 +10201,7 @@
(lambda (types arg)
(if (and (symbol? types)
(not (eq? types 'values)))
- ((symbol->value types *e*) arg)
+ ((symbol->value types *e*) arg) ; not (rootlet) for *e* since we have some local checkers: unused-parameter? etc
(and (pair? types)
(or (any-checker? (car types) arg)
(any-checker? (cdr types) arg))))))
@@ -10815,7 +10838,7 @@
min-arity
(if (> min-arity 1) "s" "")
(truncated-list->string form))
- (if (and (not (procedure-setter head-value))
+ (if (and (not (setter head-value))
(> (- args (keywords (cdr form) 0)) max-arity))
(lint-format "~A has too many arguments: ~A" caller head (truncated-list->string form))))
@@ -10885,7 +10908,7 @@
(lint-format "this looks odd: ~A" caller (truncated-list->string form))))
;; now try to check arg types
- (let ((arg-data (cond ((procedure-signature head-value) => cdr) (else #f))))
+ (let ((arg-data (cond ((signature head-value) => cdr) (else #f))))
(if (pair? arg-data)
(check-args caller head data form arg-data env max-arity))
))))))))))))))
@@ -11281,7 +11304,7 @@
vname (truncated-list->string (var-initial-value local-var)) (var-definer local-var))))
;; not ref'd or set
- (if (not (memq vname '(documentation signature iterator? define-animal)))
+ (if (not (memq vname '(+documentation+ +signature+ +setter+ iterator? define-animal)))
(let ((val (truncated-list->string
(if (pair? (var-history local-var))
(car (var-history local-var))
@@ -11445,10 +11468,10 @@
((unless) (if (pair? (cdddr call)) (cons 'begin (cddr call)) (caddr call)))))))))
;; -------- arg-mismatch
- (define (arg-mismatch caller vname vtype func call env)
+ (define (arg-mismatch caller vname vtype func call e)
(let ((p (memq vname (cdr call))))
(when (pair? p)
- (let ((sig (arg-signature func env))
+ (let ((sig (arg-signature func e))
(pos (- (length call) (length p))))
(when (and (pair? sig)
(< pos (length sig)))
@@ -11781,7 +11804,7 @@
(unused-var caller head local-var otype)
(let ((vtype #f))
(move-var-inward caller local-var)
-
+
(when (and (not (memq (var-definer local-var) '(parameter named-let named-let*)))
(pair? (var-history local-var))
(or (zero? (var-set local-var))
@@ -13164,8 +13187,8 @@
;; look for outer let with var value constant, not set in func body --
;; suggest moving it to closure, modulo endless quibbles of course.
;; ignore nested lets because there we assume locality is more important.
- ;; we get here if (eq? form lint-function-body and (symbol? lint-function-name)
- ;; and not named-let (can this happen?) and only this expr in body)
+ ;; we get here if (eq? form lint-function-body) and (symbol? lint-function-name)
+ ;; and not named-let (can this happen?) and only this expr in body
;; currently called only in let-walker, but might make sense in let*-walker and letrec-walker.
;; in letrec-walker it got only 1 hit.
@@ -13210,10 +13233,10 @@
vars)))
(define (report-doc-string definer function-name args body)
- (lint-format "old-style doc string: ~S, in s7 use 'documentation:~%~NC~A" function-name
+ (lint-format "old-style doc string: ~S, in s7 use '+documentation+:~%~NC~A" function-name
(car body) (+ lint-left-margin 4) #\space
(lint-pp `(define ,function-name
- (let ((documentation ,(car body)))
+ (let ((+documentation+ ,(car body)))
(,(case definer
((define) 'lambda)
((define*) 'lambda*)
@@ -13447,7 +13470,7 @@
(if (zero? (var-ref arg-var))
(if (positive? (var-set arg-var))
(set! set (cons (var-name arg-var) set))
- (if (not (memq (var-name arg-var) '(documentation signature iterator?)))
+ (if (not (memq (var-name arg-var) '(+documentation+ +signature+ +setter+ iterator?)))
(set! unused (cons (var-name arg-var) unused))))))
args-as-vars)
(when (or (pair? set)
@@ -14607,12 +14630,12 @@
((let-ref) 'let-set!))
(append (cdadr form) (cddr form))))))
- ((and (eq? target 'symbol-access)
+ ((and (eq? target 'symbol-setter)
(len>1? setval)
(eq? (car setval) 'lambda)
(list? (cadr setval))
(not (= (length (cadr setval)) 2)))
- (lint-format "symbol-access function should take 2 arguments: ~A" caller (truncated-list->string form)))
+ (lint-format "symbol-setter function should take 2 arguments: ~A" caller (truncated-list->string form)))
((or (string? target)
(vector? target))
@@ -14624,7 +14647,7 @@
(when (symbol? (car settee))
(let ((f (symbol->value (car settee) *e*)))
(when (dilambda? f)
- (let ((sig (procedure-signature (procedure-setter f)))
+ (let ((sig (signature (setter f)))
(settee-len (length settee)))
(when (and (pair? sig)
(positive? settee-len)
@@ -15989,7 +16012,7 @@
(if (not (aritable? val 1)) ; here values might be in test expr
;; (cond (x => expt))
(lint-format "=> target (~A) may be unhappy: ~A" caller f clause))
- (let ((sig (procedure-signature val)))
+ (let ((sig (signature val)))
(if (len>1? sig)
(let ((from-type (->lint-type ((if (or (memq syn '(cond do-result))
(not (pair? (car clause))))
@@ -18955,33 +18978,36 @@
(do ((changes ())
(vs (cadr form) (cdr vs)))
((null? vs)
- (if (pair? changes)
- (let ((new-form (copy form)))
- (for-each
- (lambda (v)
- (list-set! new-form 1 (remove-if (lambda (p) (equal? p v)) (cadr new-form)))
- (set! new-form (tree-subst (cadr v) (car v) new-form)))
- changes)
- (lint-format "assuming we see all set!s, the binding~A ~{~A~^, ~} ~A pointless: perhaps ~A" caller
- (if (pair? (cdr changes)) "s" "")
- changes
- (if (pair? (cdr changes)) "are" "is")
- (lists->string form
- (if (< (tree-leaves new-form) 100)
- (if (and (null? (cadr new-form))
- (null? (cdddr new-form))
- (not (and (pair? (caddr new-form))
- (hash-table-ref open-definers-table (caaddr new-form)))))
- (caddr new-form)
- new-form)
- (cons 'let
- (cons (cadr new-form)
- (one-call-and-dots (cddr new-form))))))))))
+ (when (pair? changes)
+ (let ((new-form (copy form)))
+ (for-each
+ (lambda (v)
+ (list-set! new-form 1 (remove-if (lambda (p) (equal? p v)) (cadr new-form)))
+ (set! new-form (tree-subst (cadr v) (car v) new-form)))
+ changes)
+ (lint-format "assuming we see all set!s, the binding~A ~{~A~^, ~} ~A pointless: perhaps ~A" caller
+ (if (pair? (cdr changes)) "s" "")
+ changes
+ (if (pair? (cdr changes)) "are" "is")
+ (lists->string form
+ (if (< (tree-leaves new-form) 100)
+ (if (and (null? (cadr new-form))
+ (null? (cdddr new-form))
+ (not (and (pair? (caddr new-form))
+ (hash-table-ref open-definers-table (caaddr new-form)))))
+ (caddr new-form)
+ new-form)
+ (cons 'let
+ (cons (cadr new-form)
+ (one-call-and-dots (cddr new-form))))))))))
(let ((v (car vs)))
(when (and (len=2? v)
(symbol? (cadr v))
(not (set-target (cadr v) body env))
(not (set-target (car v) body env))
+ (let ((ev (var-member (cadr v) env))) ; perhaps its an outer var set in a function called in the let body (the set! is hidden from us)
+ (or (not (var? ev))
+ (zero? (var-set ev))))
(let ((data (var-member (cadr v) env)))
(or (not data)
(and (not (eq? (var-definer data) 'parameter))
@@ -19502,7 +19528,7 @@
,new-form)
`(let* ,(copy (cadr form) (make-list (- (length (cadr form)) 1)))
,new-form))))))))))
-
+
;; -------- let-walker --------
(define (let-walker caller form env)
(if (or (< (length form) 3) ; (let ((a 1) (set! a 2)))
@@ -19533,11 +19559,13 @@
(lint-format "perhaps ~A" caller (lists->string form (car body))))
(set! vars (walk-let-vars caller form varlist vars env))
-
+
(when (and (pair? body)
(pair? vars)
(func-definer? (car body)))
(let-local-funcs->closure caller form body (map var-name vars)))
+ ;; here we could check '+signature+ and others, but it is tricky to tell that
+ ;; var-initial-value is messed up
(let ((suggest made-suggestion))
(unless named-let
@@ -20126,48 +20154,48 @@
(lint-every? pair? varlist)))
(lint-format "let* is messed up: ~A" caller (truncated-list->string form))
(begin
- (when (and (pair? body)
- (pair? varlist)
- (func-definer? (car body)))
- (let*-local-funcs->closure caller form body
- (if named-let
- (cons (cadr form) (map car varlist))
- (map car varlist))))
-
- (let ((es (walk-letx-body caller form body
- (walk-let*-vars caller form vars env)
- env)))
- (set! vars (car es))
- (set! env (cdr es)))
-
- (when (and (not named-let)
- (pair? body)
- (proper-pair? varlist))
- (when (pair? vars)
- (let*->let+let caller form vars env))
- (let*+let*->let* caller form)
- (let*->let+do caller form env)
- ;; (define...) as first in body rarely happens in rewritable contexts
-
- (unless (unsafe-definer? body)
- (remove-unneeded-let*-vars caller form env))
- (combine-let*-vars caller form vars env)
-
- (let ((last-var (last-ref varlist)))
- (combine-let*-last-var caller form last-var env)
- (if (and (null? (cdr body))
- (len>1? (car body))
- (len=2? last-var))
- (let->case-else caller form (car last-var) (cadr last-var) body)))
- ;; last var -> if/cond in car(body) as in let only happens a few times (leaving aside stuff caught above)
-
- (when (and (> (length body) 3)
- (> (length vars) 1)
- (not (tree-set-car-member '(define define* define-macro define-macro*
- define-bacro define-bacro* define-constant define-expansion)
- body)))
- (reduce-let*-scope caller form vars))))))))
-
+ (when (and (pair? body)
+ (pair? varlist)
+ (func-definer? (car body)))
+ (let*-local-funcs->closure caller form body
+ (if named-let
+ (cons (cadr form) (map car varlist))
+ (map car varlist))))
+
+ (let ((es (walk-letx-body caller form body
+ (walk-let*-vars caller form vars env)
+ env)))
+ (set! vars (car es))
+ (set! env (cdr es)))
+
+ (when (and (not named-let)
+ (pair? body)
+ (proper-pair? varlist))
+ (when (pair? vars)
+ (let*->let+let caller form vars env))
+ (let*+let*->let* caller form)
+ (let*->let+do caller form env)
+ ;; (define...) as first in body rarely happens in rewritable contexts
+
+ (unless (unsafe-definer? body)
+ (remove-unneeded-let*-vars caller form env))
+ (combine-let*-vars caller form vars env)
+
+ (let ((last-var (last-ref varlist)))
+ (combine-let*-last-var caller form last-var env)
+ (if (and (null? (cdr body))
+ (len>1? (car body))
+ (len=2? last-var))
+ (let->case-else caller form (car last-var) (cadr last-var) body)))
+ ;; last var -> if/cond in car(body) as in let only happens a few times (leaving aside stuff caught above)
+
+ (when (and (> (length body) 3)
+ (> (length vars) 1)
+ (not (tree-set-car-member '(define define* define-macro define-macro*
+ define-bacro define-bacro* define-constant define-expansion)
+ body)))
+ (reduce-let*-scope caller form vars))))))))
+
env)
(hash-walker 'let* let*-walker)
@@ -20810,7 +20838,7 @@
(lint-format "perhaps ~A" caller
(lists->string form
(if doc-string
- (list 'let (list (list 'documentation doc-string))
+ (list 'let (list (list '+documentation+ doc-string))
(cons 'lambda (car body)))
(cons 'lambda (car body))))))
((2)
@@ -20857,7 +20885,7 @@
(lint-format "perhaps ~A" caller
(lists->string form
(if doc-string
- `(let ((documentation ,doc-string))
+ `(let ((+documentation+ ,doc-string))
(lambda* ,new-arglist ,@new-body))
(cons 'lambda* (cons new-arglist new-body)))))))))))))
env)
@@ -20917,344 +20945,341 @@
(vector-set! old 2 (cons func (vector-ref old 2))))))))))
(define (reduce-tree new-form leaves env fvar orig-form)
- (call-with-exit
- (lambda (quit)
- (let ((outer-vars (if fvar
- (do ((e (list (list (var-name fvar) (symbol "_F_") 0 ())))
- (i 1 (+ i 1))
- (args (args->proper-list (var-arglist fvar)) (cdr args)))
- ((not (pair? args)) e)
- (set! e (cons (list (car args) (symbol "_" (number->string i) "_") i ()) e)))
- (list (list () '_1_) (list () '_2_) (list () '_3_) (list () '_4_))))
- (local-ctr 0))
- (let ((line (pair-line-number orig-form))
- (reduced-form
- (let walker ((tree new-form) (vars outer-vars))
- (cond ((pair? tree)
- (case (car tree)
- ((quote)
- tree)
-
- ((let let*)
- ;; in let we need to sort locals by order of appearance in the body
- (if (<= (length tree) 2)
- (quit))
- (let ((locals ())
- (body ())
- (named-let (symbol? (cadr tree)))
- (lvars ()))
- (if named-let
- (begin
- (set! lvars (cons (list (cadr tree) (symbol "_NL" (number->string local-ctr) "_") -1) lvars))
- (set! local-ctr (+ local-ctr 1))
- (set! locals (caddr tree))
- (set! body (cdddr tree)))
- (begin
- (set! locals (cadr tree))
- (set! body (cddr tree))))
- (if (not (list? locals)) (quit))
-
- (let ((func (if (eq? (car tree) 'let)
- (lambda (local)
- (if (not (len>1? local)) (quit))
- (set! lvars (cons (list (car local) () 0 (walker (cadr local) vars)) lvars)))
- (lambda (local)
- (if (not (len>1? local)) (quit))
- (set! lvars (cons (list (car local)
- (symbol "_L" (number->string local-ctr) "_")
- local-ctr
- (walker (cadr local) (append lvars vars)))
- lvars))
- (set! local-ctr (+ local-ctr 1))))))
- (for-each func locals))
-
- ;; now walk the body, setting the reduced local name by order of encounter (in let, not let*)
- (let ((new-body (walker body (append lvars vars))))
- (unless (pair? new-body) (set! new-body (list new-body)))
- (when (and (eq? (car tree) 'let)
- ;; fill-in unused-var dummy names etc
- (pair? lvars))
- (for-each (lambda (v)
- (when (null? (cadr v))
- (list-set! v 1 (symbol "_L" (number->string local-ctr) "_"))
- (list-set! v 2 local-ctr)
- (set! local-ctr (+ local-ctr 1))))
- lvars))
- (set! lvars (sort! lvars (lambda (a b) (< (caddr a) (caddr b)))))
-
- (if named-let
- `(,(car tree) ,(cadr (assq (cadr tree) lvars))
- ,(map (lambda (v) (list (cadr v) (cadddr v))) (cdr lvars))
- ,@new-body)
- `(,(car tree)
- ,(map (lambda (v) (list (cadr v) (cadddr v))) lvars)
- ,@new-body)))))
-
- ((if)
- (if (not (and (len>1? (cdr tree))
- (list? (cdddr tree))))
- (quit))
- (let ((expr (walker (cadr tree) vars))
- (true (walker (caddr tree) vars)))
- (if (null? (cdddr tree))
- (if (and (len>1? expr)
- (eq? (car expr) 'not))
- (cons 'unless (cons (cadr expr) (unbegin true)))
- (cons 'when (cons expr (unbegin true))))
- (list 'if expr true (walker (cadddr tree) vars)))))
-
- ((when unless)
- (if (not (len>1? (cdr tree)))
- (quit))
- (cons (car tree)
- (cons (walker (cadr tree) vars)
- (map (lambda (p) (walker p vars)) (cddr tree)))))
-
- ((set!)
- (if (not (len>1? (cdr tree))) (quit))
- (if (symbol? (cadr tree))
- (let ((v (assq (cadr tree) vars)))
- (if (or (not v) ; if not a var, it's about to be an outer-var
- (and (not fvar)
- (memq (cadr v) '(_1_ _2_ _3_ _4_))))
- (quit))
- (when (null? (cadr v)) ; must be a previously unencountered local
- (list-set! v 1 (symbol "_L" (number->string local-ctr) "_"))
- (list-set! v 2 local-ctr)
- (set! local-ctr (+ local-ctr 1)))
- (list 'set! (cadr v) (walker (caddr tree) vars)))
- (list 'set! (walker (cadr tree) vars) (walker (caddr tree) vars))))
-
- ((do)
- (if (not (and (len>1? (cdr tree))
- (list? (cadr tree))
- (list? (cdddr tree))))
- (quit))
- (let ((locals (cadr tree))
- (end+result (caddr tree))
- (body (cdddr tree))
- (lvars ()))
- (if (not (and (list? end+result)
- (proper-list? body)))
+ (unless (tree-set-memq '(define define*
+ ;; these propagate backwards and we're not returning the new env in this loop,
+ ;; lvars can be null, so splicing a new local into vars is a mess,
+ ;; but if the defined name is not reduced, it can occur later as itself (not via car),
+ ;; so without lots of effort (a dummy var if null lvars, etc), we can only handle
+ ;; functions within a function (fvar not #f).
+ ;; but adding that possibility got no hits
+ list-values apply-values append quasiquote unquote
+ define-constant define-macro define-macro* define-expansion
+ define-syntax let-syntax letrec-syntax match syntax-rules
+ require import module cond-expand reader-cond while case-lambda
+ call-with-values let-values define-values let*-values multiple-value-bind)
+ new-form)
+ (call-with-exit
+ (lambda (quit)
+ (let ((outer-vars (if fvar
+ (do ((e (list (list (var-name fvar) (symbol "_F_") 0 ())))
+ (i 1 (+ i 1))
+ (args (args->proper-list (var-arglist fvar)) (cdr args)))
+ ((not (pair? args)) e)
+ (set! e (cons (list (car args) (symbol "_" (number->string i) "_") i ()) e)))
+ (list (list () '_1_) (list () '_2_) (list () '_3_) (list () '_4_))))
+ (local-ctr 0))
+ (let ((line (pair-line-number orig-form))
+ (reduced-form
+ (let walker ((tree new-form) (vars outer-vars))
+ (cond ((pair? tree)
+ (case (car tree)
+ ((quote)
+ tree)
+
+ ((let let*)
+ ;; in let we need to sort locals by order of appearance in the body
+ (if (<= (length tree) 2)
(quit))
- (for-each (lambda (local)
- (if (not (len>1? local))
- (quit))
- (set! lvars (cons (list (car local)
- () 0
- (walker (cadr local) vars)
- (if (pair? (cddr local))
- (caddr local)
- :unset))
- lvars)))
- locals)
- (let ((new-env (append lvars vars)))
- (let ((new-end (walker end+result new-env))
- (new-body (walker body new-env)))
- (unless (pair? new-body)
- (set! new-body (list new-body)))
- (when (pair? lvars)
- (for-each (lambda (lv)
- (if (not (eq? (lv 4) :unset))
- (list-set! lv 4 (walker (lv 4) new-env))))
- lvars)
+ (let ((locals ())
+ (body ())
+ (named-let (symbol? (cadr tree)))
+ (lvars ()))
+ (if named-let
+ (begin
+ (set! lvars (cons (list (cadr tree) (symbol "_NL" (number->string local-ctr) "_") -1) lvars))
+ (set! local-ctr (+ local-ctr 1))
+ (set! locals (caddr tree))
+ (set! body (cdddr tree)))
+ (begin
+ (set! locals (cadr tree))
+ (set! body (cddr tree))))
+ (if (not (list? locals)) (quit))
+
+ (let ((func (if (eq? (car tree) 'let)
+ (lambda (local)
+ (if (not (len>1? local)) (quit))
+ (set! lvars (cons (list (car local) () 0 (walker (cadr local) vars)) lvars)))
+ (lambda (local)
+ (if (not (len>1? local)) (quit))
+ (set! lvars (cons (list (car local)
+ (symbol "_L" (number->string local-ctr) "_")
+ local-ctr
+ (walker (cadr local) (append lvars vars)))
+ lvars))
+ (set! local-ctr (+ local-ctr 1))))))
+ (for-each func locals))
+
+ ;; now walk the body, setting the reduced local name by order of encounter (in let, not let*)
+ (let ((new-body (walker body (append lvars vars))))
+ (unless (pair? new-body) (set! new-body (list new-body)))
+ (when (and (eq? (car tree) 'let)
+ ;; fill-in unused-var dummy names etc
+ (pair? lvars))
(for-each (lambda (v)
(when (null? (cadr v))
(list-set! v 1 (symbol "_L" (number->string local-ctr) "_"))
(list-set! v 2 local-ctr)
(set! local-ctr (+ local-ctr 1))))
- lvars)
- (set! lvars (sort! lvars (lambda (a b) (< (caddr a) (caddr b))))))
+ lvars))
+ (set! lvars (sort! lvars (lambda (a b) (< (caddr a) (caddr b)))))
- `(do ,(map (lambda (v)
- (map v (if (eq? (v 4) :unset) '(1 3) '(1 3 4))))
- lvars)
- ,new-end
- ,@new-body)))))
-
- ((lambda)
- (if (not (proper-pair? (cdr tree)))
- (quit))
- (let* ((lvars (map (lambda (a)
- (let ((res (list a (symbol "_A" (number->string local-ctr) "_") local-ctr)))
- (set! local-ctr (+ local-ctr 1))
- res))
- (let ((args (args->proper-list (cadr tree))))
- (if (pair? args) args (quit)))))
- (new-body (let ((new-vars (append lvars vars)))
- (map (lambda (p) (walker p new-vars)) (cddr tree))))
- (new-args (if (symbol? (cadr tree))
- (cadar lvars)
- (if (proper-list? (cadr tree))
- (map cadr lvars)
- (let ((lst (map cadr lvars)))
- (append (copy lst (make-list (- (length lst) 1)))
- (last-ref lst)))))))
- (cons 'lambda (cons new-args new-body))))
-
- ((case)
- (if (not (and (len>1? (cdr tree))
- (pair? (caddr tree))))
- (quit))
- (list 'case
- (walker (cadr tree) vars)
- (map (lambda (c)
- (if (not (len>1? c))
- (quit))
- (cons (car c)
- (map (lambda (p) (walker p vars)) (cdr c))))
- (cddr tree))))
-
- ((letrec letrec*)
- (if (not (pair? (cdr tree))) (quit))
- (let ((locals (cadr tree))
- (body (cddr tree))
- (lvars ()))
- (if (not (and (list? locals) (pair? body))) (quit))
- (for-each (lambda (local)
- (if (not (len>1? local))
- (quit))
- (set! lvars (cons (list (car local)
- (symbol "_L" (number->string local-ctr) "_")
- local-ctr ())
- lvars))
- (set! local-ctr (+ local-ctr 1)))
- locals)
- (for-each (lambda (local lv)
- (list-set! lv 3 (walker (cadr local) lvars)))
- locals lvars)
+ (if named-let
+ `(,(car tree) ,(cadr (assq (cadr tree) lvars))
+ ,(map (lambda (v) (list (cadr v) (cadddr v))) (cdr lvars))
+ ,@new-body)
+ `(,(car tree)
+ ,(map (lambda (v) (list (cadr v) (cadddr v))) lvars)
+ ,@new-body)))))
+
+ ((if)
+ (if (not (and (len>1? (cdr tree))
+ (list? (cdddr tree))))
+ (quit))
+ (let ((expr (walker (cadr tree) vars))
+ (true (walker (caddr tree) vars)))
+ (if (null? (cdddr tree))
+ (if (and (len>1? expr)
+ (eq? (car expr) 'not))
+ (cons 'unless (cons (cadr expr) (unbegin true)))
+ (cons 'when (cons expr (unbegin true))))
+ (list 'if expr true (walker (cadddr tree) vars)))))
+
+ ((when unless)
+ (if (not (len>1? (cdr tree)))
+ (quit))
(cons (car tree)
- (cons (map (lambda (v) (list (cadr v) (cadddr v))) lvars)
- (walker body (append lvars vars))))))
-
- ((lambda*)
- (if (not (and (proper-pair? (cdr tree))
- (or (symbol? (cadr tree))
- (proper-list? (cadr tree)))))
- (quit))
- (let ((old-args (args->proper-list (cadr tree))))
- (if (or (not (pair? old-args))
- (lint-every? keyword? old-args)) ; (:allow-other-keys)
+ (cons (walker (cadr tree) vars)
+ (map (lambda (p) (walker p vars)) (cddr tree)))))
+
+ ((set!)
+ (if (not (len>1? (cdr tree))) (quit))
+ (if (symbol? (cadr tree))
+ (let ((v (assq (cadr tree) vars)))
+ (if (or (not v) ; if not a var, it's about to be an outer-var
+ (and (not fvar)
+ (memq (cadr v) '(_1_ _2_ _3_ _4_))))
+ (quit))
+ (when (null? (cadr v)) ; must be a previously unencountered local
+ (list-set! v 1 (symbol "_L" (number->string local-ctr) "_"))
+ (list-set! v 2 local-ctr)
+ (set! local-ctr (+ local-ctr 1)))
+ (list 'set! (cadr v) (walker (caddr tree) vars)))
+ (list 'set! (walker (cadr tree) vars) (walker (caddr tree) vars))))
+
+ ((do)
+ (if (not (and (len>1? (cdr tree))
+ (list? (cadr tree))
+ (list? (cdddr tree))))
+ (quit))
+ (let ((locals (cadr tree))
+ (end+result (caddr tree))
+ (body (cdddr tree))
+ (lvars ()))
+ (if (not (and (list? end+result)
+ (proper-list? body)))
+ (quit))
+ (for-each (lambda (local)
+ (if (not (len>1? local))
+ (quit))
+ (set! lvars (cons (list (car local)
+ () 0
+ (walker (cadr local) vars)
+ (if (pair? (cddr local))
+ (caddr local)
+ :unset))
+ lvars)))
+ locals)
+ (let ((new-env (append lvars vars)))
+ (let ((new-end (walker end+result new-env))
+ (new-body (walker body new-env)))
+ (unless (pair? new-body)
+ (set! new-body (list new-body)))
+ (when (pair? lvars)
+ (for-each (lambda (lv)
+ (if (not (eq? (lv 4) :unset))
+ (list-set! lv 4 (walker (lv 4) new-env))))
+ lvars)
+ (for-each (lambda (v)
+ (when (null? (cadr v))
+ (list-set! v 1 (symbol "_L" (number->string local-ctr) "_"))
+ (list-set! v 2 local-ctr)
+ (set! local-ctr (+ local-ctr 1))))
+ lvars)
+ (set! lvars (sort! lvars (lambda (a b) (< (caddr a) (caddr b))))))
+
+ `(do ,(map (lambda (v)
+ (map v (if (eq? (v 4) :unset) '(1 3) '(1 3 4))))
+ lvars)
+ ,new-end
+ ,@new-body)))))
+
+ ((lambda)
+ (if (not (proper-pair? (cdr tree)))
(quit))
(let* ((lvars (map (lambda (a)
- (if (memq a '(:rest :allow-other-keys))
- (values)
- (let ((res (list (if (pair? a) (car a) a)
- (symbol "_A" (number->string local-ctr) "_") local-ctr)))
- (set! local-ctr (+ local-ctr 1))
- res)))
- old-args))
+ (let ((res (list a (symbol "_A" (number->string local-ctr) "_") local-ctr)))
+ (set! local-ctr (+ local-ctr 1))
+ res))
+ (let ((args (args->proper-list (cadr tree))))
+ (if (pair? args) args (quit)))))
(new-body (let ((new-vars (append lvars vars)))
(map (lambda (p) (walker p new-vars)) (cddr tree))))
(new-args (if (symbol? (cadr tree))
(cadar lvars)
- (map (lambda (a)
- (cond ((keyword? a) a)
- ((symbol? a) (cadr (assq a lvars)))
- ((len>1? a)
- (list (assq a lvars) (cadr a)))
- (else (quit))))
- (cadr tree)))))
- (cons 'lambda* (cons new-args new-body)))))
-
- ((define define*
- ;; these propagate backwards and we're not returning the new env in this loop,
- ;; lvars can be null, so splicing a new local into vars is a mess,
- ;; but if the defined name is not reduced, it can occur later as itself (not via car),
- ;; so without lots of effort (a dummy var if null lvars, etc), we can only handle
- ;; functions within a function (fvar not #f).
- ;; but adding that possibility got no hits
-
- list-values apply-values append quasiquote unquote
-
- define-constant define-macro define-macro* define-expansion
- define-syntax let-syntax letrec-syntax match syntax-rules
- require import module cond-expand reader-cond while case-lambda
- call-with-values let-values define-values let*-values multiple-value-bind)
- (quit))
-
- (else ; still (pair? tree) but (car tree) not hit above
- (cons (cond ((pair? (car tree))
- (walker (car tree) vars))
- ((assq (car tree) vars) =>
- (lambda (v)
- ;; this might be the first appearance of (car v)
- (when (null? (cadr v))
- (list-set! v 1 (symbol "_L" (number->string local-ctr) "_"))
- (list-set! v 2 local-ctr)
- (set! local-ctr (+ local-ctr 1)))
- (cadr v)))
- (else (car tree)))
- (if (pair? (cdr tree))
- (map (lambda (p)
- (walker p vars))
- (cdr tree))
- (cdr tree))))))
-
- ;; (pair? tree) far far above
-
- ((or (not (symbol? tree))
- (keyword? tree))
- tree)
-
- ((assq tree vars) => ; replace in-tree symbol with its reduction (this includes any outer-var once set below)
- (lambda (v)
- ;; v is a list: local-name possible-reduced-name [counter value]
- (when (null? (cadr v))
- (list-set! v 1 (symbol "_L" (number->string local-ctr) "_"))
- (list-set! v 2 local-ctr)
- (set! local-ctr (+ local-ctr 1)))
- (cadr v)))
-
- (else
- (if fvar (quit))
- (let set-outer ((ovars outer-vars))
- (if (null? ovars)
- (quit)
- (if (null? (caar ovars))
- (begin
- (set-car! (car ovars) tree)
- (cadar ovars))
- (set-outer (cdr ovars))))))))))
-
- (unless line
- (set! line (let search ((tree orig-form))
- (and (pair? tree)
- (or (pair-line-number tree)
- (search (car tree))
- (search (cdr tree))))))
- (if (not line) (set! line 0)))
-
- (set! leaves (tree-leaves reduced-form)) ; if->when, for example, so tree length might change
- (if (and (<= *fragment-min-size* leaves)
- (< leaves *fragment-max-size*))
- (hash-fragment reduced-form leaves env fvar orig-form line outer-vars))
- (when fvar (quit))
-
- (unless (and (pair? lint-function-body)
- (equal? new-form (car lint-function-body)))
- (let ((fvars (let ((fcase (and (< leaves *fragment-max-size*)
- (vector-ref fragments leaves)
- (hash-table-ref (vector-ref fragments leaves) (list reduced-form)))))
- (and (vector? fcase)
- (vector-ref fcase 2)))))
- (when (pair? fvars)
- (call-with-exit
- (lambda (ok)
- (for-each (lambda (fv)
- (when (var-member (var-name fv) env)
- (format outport "~NCperhaps ~A -> (~A~{ ~A~})~%" lint-left-margin #\space
- (truncated-list->string new-form)
- (var-name fv)
- (map (lambda (a) (case (car a) ((()) (values)) (else))) outer-vars))
- (ok)))
- fvars)
- (format outport "~NCif '~A were in scope, perhaps ~A -> (~A~{ ~A~})~%" lint-left-margin #\space
- (var-name (car fvars))
- (truncated-list->string new-form)
- (var-name (car fvars))
- (map (lambda (a) (case (car a) ((()) (values)) (else))) outer-vars))))))))))))
-
+ (if (proper-list? (cadr tree))
+ (map cadr lvars)
+ (let ((lst (map cadr lvars)))
+ (append (copy lst (make-list (- (length lst) 1)))
+ (last-ref lst)))))))
+ (cons 'lambda (cons new-args new-body))))
+
+ ((case)
+ (if (not (and (len>1? (cdr tree))
+ (pair? (caddr tree))))
+ (quit))
+ (list 'case
+ (walker (cadr tree) vars)
+ (map (lambda (c)
+ (if (not (len>1? c))
+ (quit))
+ (cons (car c)
+ (map (lambda (p) (walker p vars)) (cdr c))))
+ (cddr tree))))
+
+ ((letrec letrec*)
+ (if (not (pair? (cdr tree))) (quit))
+ (let ((locals (cadr tree))
+ (body (cddr tree))
+ (lvars ()))
+ (if (not (and (list? locals) (pair? body))) (quit))
+ (for-each (lambda (local)
+ (if (not (len>1? local))
+ (quit))
+ (set! lvars (cons (list (car local)
+ (symbol "_L" (number->string local-ctr) "_")
+ local-ctr ())
+ lvars))
+ (set! local-ctr (+ local-ctr 1)))
+ locals)
+ (for-each (lambda (local lv)
+ (list-set! lv 3 (walker (cadr local) lvars)))
+ locals lvars)
+ (cons (car tree)
+ (cons (map (lambda (v) (list (cadr v) (cadddr v))) lvars)
+ (walker body (append lvars vars))))))
+
+ ((lambda*)
+ (if (not (and (proper-pair? (cdr tree))
+ (or (symbol? (cadr tree))
+ (proper-list? (cadr tree)))))
+ (quit))
+ (let ((old-args (args->proper-list (cadr tree))))
+ (if (or (not (pair? old-args))
+ (lint-every? keyword? old-args)) ; (:allow-other-keys)
+ (quit))
+ (let* ((lvars (map (lambda (a)
+ (if (memq a '(:rest :allow-other-keys))
+ (values)
+ (let ((res (list (if (pair? a) (car a) a)
+ (symbol "_A" (number->string local-ctr) "_") local-ctr)))
+ (set! local-ctr (+ local-ctr 1))
+ res)))
+ old-args))
+ (new-body (let ((new-vars (append lvars vars)))
+ (map (lambda (p) (walker p new-vars)) (cddr tree))))
+ (new-args (if (symbol? (cadr tree))
+ (cadar lvars)
+ (map (lambda (a)
+ (cond ((keyword? a) a)
+ ((symbol? a) (cadr (assq a lvars)))
+ ((len>1? a)
+ (list (assq a lvars) (cadr a)))
+ (else (quit))))
+ (cadr tree)))))
+ (cons 'lambda* (cons new-args new-body)))))
+
+ (else ; still (pair? tree) but (car tree) not hit above
+ (cons (cond ((pair? (car tree))
+ (walker (car tree) vars))
+ ((assq (car tree) vars) =>
+ (lambda (v)
+ ;; this might be the first appearance of (car v)
+ (when (null? (cadr v))
+ (list-set! v 1 (symbol "_L" (number->string local-ctr) "_"))
+ (list-set! v 2 local-ctr)
+ (set! local-ctr (+ local-ctr 1)))
+ (cadr v)))
+ (else (car tree)))
+ (if (pair? (cdr tree))
+ (map (lambda (p)
+ (walker p vars))
+ (cdr tree))
+ (cdr tree))))))
+
+ ;; (pair? tree) far far above
+
+ ((or (not (symbol? tree))
+ (keyword? tree))
+ tree)
+
+ ((assq tree vars) => ; replace in-tree symbol with its reduction (this includes any outer-var once set below)
+ (lambda (v)
+ ;; v is a list: local-name possible-reduced-name [counter value]
+ (when (null? (cadr v))
+ (list-set! v 1 (symbol "_L" (number->string local-ctr) "_"))
+ (list-set! v 2 local-ctr)
+ (set! local-ctr (+ local-ctr 1)))
+ (cadr v)))
+
+ (else
+ (if fvar (quit))
+ (let set-outer ((ovars outer-vars))
+ (if (null? ovars)
+ (quit)
+ (if (null? (caar ovars))
+ (begin
+ (set-car! (car ovars) tree)
+ (cadar ovars))
+ (set-outer (cdr ovars))))))))))
+
+ (unless line
+ (set! line (let search ((tree orig-form))
+ (and (pair? tree)
+ (or (pair-line-number tree)
+ (search (car tree))
+ (search (cdr tree))))))
+ (if (not line) (set! line 0)))
+
+ (set! leaves (tree-leaves reduced-form)) ; if->when, for example, so tree length might change
+ (if (and (<= *fragment-min-size* leaves)
+ (< leaves *fragment-max-size*))
+ (hash-fragment reduced-form leaves env fvar orig-form line outer-vars))
+ (when fvar (quit))
+
+ (unless (and (pair? lint-function-body)
+ (equal? new-form (car lint-function-body)))
+ (let ((fvars (let ((fcase (and (< leaves *fragment-max-size*)
+ (vector-ref fragments leaves)
+ (hash-table-ref (vector-ref fragments leaves) (list reduced-form)))))
+ (and (vector? fcase)
+ (vector-ref fcase 2)))))
+ (when (pair? fvars)
+ (call-with-exit
+ (lambda (ok)
+ (for-each (lambda (fv)
+ (when (var-member (var-name fv) env)
+ (format outport "~NCperhaps ~A -> (~A~{ ~A~})~%" lint-left-margin #\space
+ (truncated-list->string new-form)
+ (var-name fv)
+ (map (lambda (a) (case (car a) ((()) (values)) (else))) outer-vars))
+ (ok)))
+ fvars)
+ (format outport "~NCif '~A were in scope, perhaps ~A -> (~A~{ ~A~})~%" lint-left-margin #\space
+ (var-name (car fvars))
+ (truncated-list->string new-form)
+ (var-name (car fvars))
+ (map (lambda (a) (case (car a) ((()) (values)) (else))) outer-vars)))))))))))))
+
(define (lint-fragment form env)
(let ((leaves (tree-leaves form)))
(when (< *fragment-min-size* leaves *fragment-max-size*)
@@ -22125,8 +22150,8 @@
;;; --------------------------------------------------------------------------------'
;;; lint itself
;;;
- (let ((documentation "(lint file port) looks for infelicities in file's scheme code")
- (signature (list #t string? output-port? boolean?))
+ (let ((+documentation+ "(lint file port) looks for infelicities in file's scheme code")
+ (+signature+ (list #t string? output-port? boolean?))
(readers
(list (cons #\e (lambda (str)
(unless (string=? str "e")
@@ -22589,6 +22614,6 @@
#f))
|#
-;;; 63 911262
+;;; 62 910885
diff --git a/marks-menu.scm b/marks-menu.scm
index b1bd579..5239a79 100644
--- a/marks-menu.scm
+++ b/marks-menu.scm
@@ -32,7 +32,7 @@
(define marks-menu (add-to-main-menu "Marks" (lambda ()
(update-label marks-list))))
(define find-two-marks
- (let ((documentation "(find-two-marks) looks for the marks for the marks-menu functions to use"))
+ (let ((+documentation+ "(find-two-marks) looks for the marks for the marks-menu functions to use"))
(lambda ()
(let ((ms (marks (selected-sound) (selected-channel))))
(if (> (length ms) 1)
@@ -49,7 +49,7 @@
(define play-between-marks-menu-label #f)
(define cp-play-between-marks
- (let ((documentation "(cp-play-between-marks) plays between 2 marks (marks-menu)"))
+ (let ((+documentation+ "(cp-play-between-marks) plays between 2 marks (marks-menu)"))
(lambda ()
(play-between-marks (integer->mark play-between-marks-m1) (integer->mark play-between-marks-m2)))))
@@ -337,7 +337,7 @@
;;; -------- trim from and back (goes by first or last mark)
(define trim-front
- (let ((documentation "trim-front finds the first mark in each of the syncd channels and removes all samples before it")
+ (let ((+documentation+ "trim-front finds the first mark in each of the syncd channels and removes all samples before it")
(trim-front-one-channel
(lambda (snd chn)
(if (null? (marks snd chn))
@@ -356,7 +356,7 @@
(add-to-menu marks-menu "Trim before mark" trim-front)
(define trim-back
- (let ((documentation "trim-back finds the last mark in each of the syncd channels and removes all samples after it")
+ (let ((+documentation+ "trim-back finds the last mark in each of the syncd channels and removes all samples after it")
(trim-back-one-channel
(lambda (snd chn)
(if (null? (marks snd chn))
@@ -380,7 +380,7 @@
;;; -------- crop (trims front and back)
(define crop
- (let ((documentation "crop finds the first and last marks in each of the syncd channels and removes all samples outside them")
+ (let ((+documentation+ "crop finds the first and last marks in each of the syncd channels and removes all samples outside them")
(crop-one-channel
(lambda (snd chn)
(if (< (length (marks snd chn)) 2)
@@ -416,7 +416,7 @@
(define fit-to-mark-menu-label #f)
(define cp-fit-to-marks
- (let ((documentation "(cp-fit-to-marks) fits the selection between two marks (marks-menu)"))
+ (let ((+documentation+ "(cp-fit-to-marks) fits the selection between two marks (marks-menu)"))
(lambda ()
((if (selection?) fit-selection-between-marks define-selection-via-marks)
(integer->mark fit-to-mark-one)
@@ -491,7 +491,7 @@ between two marks,using the granulate generator to fix up the selection duration
(define define-by-mark-menu-label #f)
(define define-selection-via-marks
- (let ((documentation "(define-selection-via-marks m1 m2) defines the selection via marks (marks-menu)"))
+ (let ((+documentation+ "(define-selection-via-marks m1 m2) defines the selection via marks (marks-menu)"))
(lambda (m1 m2)
(let ((m1sc (mark-home m1))
(m2sc (mark-home m2)))
@@ -575,17 +575,17 @@ between two marks,using the granulate generator to fix up the selection duration
(define mark-sync-number 0)
(define start-sync
- (let ((documentation "(start-sync) starts mark syncing (marks-menu)"))
+ (let ((+documentation+ "(start-sync) starts mark syncing (marks-menu)"))
(lambda ()
(set! mark-sync-number (+ (mark-sync-max) 1)))))
(define stop-sync
- (let ((documentation "(stop-sync) stops mark-syncing (marks-menu)"))
+ (let ((+documentation+ "(stop-sync) stops mark-syncing (marks-menu)"))
(lambda ()
(set! mark-sync-number 0))))
(define click-to-sync
- (let ((documentation "(click-to-sync id) sets a mark's sync field when it is clicked (marks-menu)"))
+ (let ((+documentation+ "(click-to-sync id) sets a mark's sync field when it is clicked (marks-menu)"))
(lambda (id)
(set! (sync id) mark-sync-number)
#f)))
@@ -598,7 +598,7 @@ between two marks,using the granulate generator to fix up the selection duration
(define no-m-sync-label "Mark sync (Off)")
(define msync!
- (let ((documentation "(msync!) starts mark syncing (marks-menu)"))
+ (let ((+documentation+ "(msync!) starts mark syncing (marks-menu)"))
(lambda ()
(set! m-sync #t)
(if mark-sync-menu-label (change-label mark-sync-menu-label m-sync-label))
@@ -606,7 +606,7 @@ between two marks,using the granulate generator to fix up the selection duration
(mark-sync-color "yellow"))))
(define unmsync!
- (let ((documentation "(unmsync!) stops mark syncing (marks-menu)"))
+ (let ((+documentation+ "(unmsync!) stops mark syncing (marks-menu)"))
(lambda ()
(set! m-sync #f)
(if mark-sync-menu-label (change-label mark-sync-menu-label no-m-sync-label))
@@ -919,7 +919,7 @@ between two marks,using the granulate generator to fix up the selection duration
;;; -------- Explode all marks to separate files
(define mark-explode
- (let ((documentation "(mark-explode) produces separate files as delineated by successive marks (marks-menu)"))
+ (let ((+documentation+ "(mark-explode) produces separate files as delineated by successive marks (marks-menu)"))
(lambda ()
(let ((start 0))
(for-each
diff --git a/marks.scm b/marks.scm
index 1593c68..e0ae0c4 100644
--- a/marks.scm
+++ b/marks.scm
@@ -1,4 +1,4 @@
-;;; examples of mark-related functions
+;;; Examples of mark-related functions
(provide 'snd-marks.scm)
(require snd-selection.scm snd-hooks.scm)
@@ -24,7 +24,7 @@
;;; -------- mark-name->id is a global version of find-mark
(define mark-name->id
- (let ((documentation "(mark-name->id name) is like find-mark but searches all currently accessible channels"))
+ (let ((+documentation+ "(mark-name->id name) is like find-mark but searches all currently accessible channels"))
(lambda (name)
(call-with-exit
(lambda (return)
@@ -42,7 +42,7 @@
;;; -------- move-syncd-marks moves all syncd marks together
(define move-syncd-marks
- (let ((documentation "(move-syncd-marks sync diff) moves all marks sharing sync by diff samples"))
+ (let ((+documentation+ "(move-syncd-marks sync diff) moves all marks sharing sync by diff samples"))
(lambda (synch diff)
(for-each (lambda (m)
(set! (mark-sample m) (+ (mark-sample m) diff)))
@@ -52,7 +52,7 @@
;;; -------- describe-mark shows mark history
(define describe-mark
- (let ((documentation "(describe-mark mark) returns a description of the movements of mark over the channel's edit history"))
+ (let ((+documentation+ "(describe-mark mark) returns a description of the movements of mark over the channel's edit history"))
(lambda (id)
(let ((mark-setting (catch 'no-such-mark (lambda () (mark-home id)) (lambda args #f))))
(if (not mark-setting)
@@ -97,7 +97,7 @@
;;; -------- syncronize sounds at a given mark
(define syncup
- (let ((documentation "(syncup marks) pads the channels with zeros so that all the given marks occur at the same time"))
+ (let ((+documentation+ "(syncup marks) pads the channels with zeros so that all the given marks occur at the same time"))
(lambda ids
(let* ((samps (map mark-sample ids))
(max-samp (apply max samps)))
@@ -113,7 +113,7 @@
;;; -------- fit selection between marks, expanding via granulate (this needs some tweaking...)
(define fit-selection-between-marks
- (let ((documentation "(fit-selection-between-marks m1 m2) fits (and mixes) the current selection (via granulate) between the given marks"))
+ (let ((+documentation+ "(fit-selection-between-marks m1 m2) fits (and mixes) the current selection (via granulate) between the given marks"))
(lambda (m1 m2)
(let ((m1-samp (mark-sample m1))
(m2-samp (mark-sample m2))
@@ -156,7 +156,7 @@
;;; -------- pad-marks inserts silence before each in a list of marks
(define pad-marks
- (let ((documentation "(pad-marks marks secs) inserts secs seconds of silence before each mark"))
+ (let ((+documentation+ "(pad-marks marks secs) inserts secs seconds of silence before each mark"))
(lambda (ids secs)
(let* ((silence-length (floor (* secs (srate))))
(silence-samps (make-float-vector silence-length)))
@@ -173,7 +173,7 @@
;;; -------- play-syncd-marks
(define play-syncd-marks
- (let ((documentation "(play-syncd-marks sync) starts playing from all marks sharing sync"))
+ (let ((+documentation+ "(play-syncd-marks sync) starts playing from all marks sharing sync"))
(lambda (synch)
(let ((chans 1)
(rate 22050))
@@ -189,7 +189,7 @@
(start-playing chans rate)))))
(define play-between-marks
- (let ((documentation "(play-between-marks ...) plays the portion between the marks (searching for plausible default marks)"))
+ (let ((+documentation+ "(play-between-marks ...) plays the portion between the marks (searching for plausible default marks)"))
(lambda args
(let* ((snd (or (selected-sound) (car (sounds))))
(chn (or (selected-channel) 0))
@@ -230,7 +230,7 @@
;;; -------- report-mark-names causes mark names to be posted in the minibuffer as a sound is played
(define report-mark-names
- (let ((documentation "(report-mark-names) causes mark names to be printed as they are passed while playing"))
+ (let ((+documentation+ "(report-mark-names) causes mark names to be printed as they are passed while playing"))
(lambda ()
(hook-push start-playing-hook
(lambda (snd)
@@ -259,7 +259,7 @@
;;; -------- snap-marks
(define snap-marks
- (let ((documentation "snap-marks places marks at current selection boundaries"))
+ (let ((+documentation+ "snap-marks places marks at current selection boundaries"))
(lambda ()
(let ((ms ()))
(if (selection?)
@@ -276,7 +276,7 @@
;;; -------- define-selection-via-marks
(define define-selection-via-marks
- (let ((documentation "(define-selection-via-marks m1 m2) defines the current selection to lie between the marks given"))
+ (let ((+documentation+ "(define-selection-via-marks m1 m2) defines the current selection to lie between the marks given"))
(lambda (m1 m2)
(let ((m1sc (mark-home m1))
(m2sc (mark-home m2)))
@@ -296,7 +296,7 @@
;;; -------- snap-mark-to-beat
(define snap-mark-to-beat
- (let ((documentation "(snap-mark-to-beat) ensures that when a mark is dragged, its released position is always on a beat"))
+ (let ((+documentation+ "(snap-mark-to-beat) ensures that when a mark is dragged, its released position is always on a beat"))
(lambda ()
(hook-push mark-hook
(lambda (hook)
@@ -322,7 +322,7 @@
;;; write out each section of a file between marks as a separate file
(define mark-explode
- (let ((documentation "(mark-explode header-type sample-type) splits a sound into a bunch of sounds based on mark placements"))
+ (let ((+documentation+ "(mark-explode header-type sample-type) splits a sound into a bunch of sounds based on mark placements"))
(lambda* ((htype mus-next) (dformat mus-bfloat))
(let ((start 0)
(file-ctr 0)
@@ -351,7 +351,7 @@
;;; -------- save mark property lists
(define save-mark-properties
- (let ((documentation "(save-mark-properties) sets up an after-save-state-hook function to save any mark-properties"))
+ (let ((+documentation+ "(save-mark-properties) sets up an after-save-state-hook function to save any mark-properties"))
(lambda ()
(hook-push after-save-state-hook
(lambda (hook)
@@ -380,7 +380,7 @@
(define mark-click-info
- (let ((documentation "(mark-click-info n) is a mark-click-hook function that describes a mark and its properties"))
+ (let ((+documentation+ "(mark-click-info n) is a mark-click-hook function that describes a mark and its properties"))
(lambda (hook)
(let ((n (hook 'id)))
(help-dialog "Mark Help"
diff --git a/maxf.scm b/maxf.scm
index 54d64d6..eab9558 100644
--- a/maxf.scm
+++ b/maxf.scm
@@ -85,7 +85,7 @@
(define maxfilter
- (let ((documentation "(maxfilter file beg (att 1.0) (numf 1) (freqfactor 1.0)
+ (let ((+documentation+ "(maxfilter file beg (att 1.0) (numf 1) (freqfactor 1.0)
(amplitude 1.0) (amp-env '(0 1 100 1))
(degree (random 90.0)) (distance 1.0) (reverb-amount 0.2))
diff --git a/mix.scm b/mix.scm
index e5ed438..6d0675d 100644
--- a/mix.scm
+++ b/mix.scm
@@ -14,7 +14,7 @@
(provide 'snd-mix.scm)
(define tree-for-each
- (let ((documentation "(tree-for-each func tree) applies func to every leaf of 'tree'"))
+ (let ((+documentation+ "(tree-for-each func tree) applies func to every leaf of 'tree'"))
(lambda (func tree)
(cond ((null? tree) ())
((not (pair? tree)) (func tree))
@@ -22,7 +22,7 @@
(tree-for-each func (cdr tree)))))))
(define tree-for-each-reversed
- (let ((documentation "(tree-for-each-reversed func tree) applies func to every leaf of 'tree' moving in reverse through all the lists"))
+ (let ((+documentation+ "(tree-for-each-reversed func tree) applies func to every leaf of 'tree' moving in reverse through all the lists"))
(lambda (func tree)
(for-each func
(reverse
@@ -33,13 +33,13 @@
(else (cons (car lst) (flatten (cdr lst)))))))))))
(define mix-sound
- (let ((documentation "(mix-sound file start) mixes file (all chans) at start in the currently selected sound."))
+ (let ((+documentation+ "(mix-sound file start) mixes file (all chans) at start in the currently selected sound."))
(lambda (file start)
(mix file start #t))))
(define silence-all-mixes
- (let ((documentation "(silence-all-mixes) sets all mix amps to 0"))
+ (let ((+documentation+ "(silence-all-mixes) sets all mix amps to 0"))
(lambda ()
(as-one-edit
(lambda ()
@@ -50,7 +50,7 @@
(define find-mix
- (let ((documentation "(find-mix sample snd chn) returns the mix at the given sample, or #f"))
+ (let ((+documentation+ "(find-mix sample snd chn) returns the mix at the given sample, or #f"))
(lambda* (samp snd chn)
(let ((mix-list (mixes (or snd (selected-sound) (car (sounds))) (or chn (selected-channel snd) 0))))
(call-with-exit
@@ -87,7 +87,7 @@
#t)))
(define snap-mix-to-beat
- (let ((documentation "(snap-mix-to-beat) forces a dragged mix to end up on a beat (see beats-per-minute). (hook-remove mix-release-hook snap-mix-1) to cancel."))
+ (let ((+documentation+ "(snap-mix-to-beat) forces a dragged mix to end up on a beat (see beats-per-minute). (hook-remove mix-release-hook snap-mix-1) to cancel."))
(lambda ()
(hook-push mix-release-hook (lambda (hook) (set! (hook 'result) (snap-mix-1 (hook 'id) (hook 'samples))))))))
@@ -110,7 +110,7 @@
#t))
(define snap-syncd-mixes-to-beat
- (let ((documentation "(snap-mix-to-beat) forces a dragged mix to end up on a beat (see beats-per-minute). \
+ (let ((+documentation+ "(snap-mix-to-beat) forces a dragged mix to end up on a beat (see beats-per-minute). \
All mixes sync'd to it are also moved the same number of samples. (hook-remove mix-release-hook snap-syncd-mixes-1) to cancel."))
(lambda ()
(hook-push mix-release-hook (lambda (hook) (set! (hook 'result) (snap-syncd-mixes-1 (hook 'id) (hook 'samples))))))))
@@ -141,7 +141,7 @@ All mixes sync'd to it are also moved the same number of samples. (hook-remove m
;;; ---------- mix-click-info
(define mix-click-info
- (let ((documentation "(mix-click-info n) is a mix-click-hook function that describes a mix and its properties"))
+ (let ((+documentation+ "(mix-click-info n) is a mix-click-hook function that describes a mix and its properties"))
(lambda (n)
(help-dialog "Mix Help"
(format #f "Mix ~A (sync: ~A):~% position: ~D = ~,3F secs~% length: ~D (~,3F secs)~% in: ~A[~D]~% scaler: ~A~% speed: ~A~% env: ~A~A"
@@ -170,7 +170,7 @@ All mixes sync'd to it are also moved the same number of samples. (hook-remove m
;;; -------- mix-name->id
(define mix-name->id
- (let ((documentation "(mix-name->id name) returns the mix associated with 'name'"))
+ (let ((+documentation+ "(mix-name->id name) returns the mix associated with 'name'"))
(lambda (name)
(call-with-exit
(lambda (return)
@@ -190,7 +190,7 @@ All mixes sync'd to it are also moved the same number of samples. (hook-remove m
;;; ---------------- backwards compatibilty
(define delete-mix
- (let ((documentation "(delete-mix mix) sets the mix's amp to 0.0"))
+ (let ((+documentation+ "(delete-mix mix) sets the mix's amp to 0.0"))
(lambda (id)
(set! (mix-amp id) 0.0))))
@@ -202,7 +202,7 @@ All mixes sync'd to it are also moved the same number of samples. (hook-remove m
;;; (scale-mixes (syncd-mixes 2) 2.0) scales all mixes whose mix-sync field is 2 by 2.0.
(define scale-mixes
- (let ((documentation "(scale-mixes mix-list scl) scales the amplitude of each mix in 'mix-list' by 'scl'"))
+ (let ((+documentation+ "(scale-mixes mix-list scl) scales the amplitude of each mix in 'mix-list' by 'scl'"))
(lambda (mix-list scl)
(as-one-edit
(lambda ()
@@ -213,13 +213,13 @@ All mixes sync'd to it are also moved the same number of samples. (hook-remove m
(define silence-mixes
- (let ((documentation "(silence-mixes mix-list) sets the amplitude of each mix in 'mix-list' to 0.0"))
+ (let ((+documentation+ "(silence-mixes mix-list) sets the amplitude of each mix in 'mix-list' to 0.0"))
(lambda (mix-list)
(scale-mixes mix-list 0.0))))
(define move-mixes
- (let ((documentation "(move-mixes mix-list samps) moves each mix in 'mix-list' by 'samps' samples"))
+ (let ((+documentation+ "(move-mixes mix-list samps) moves each mix in 'mix-list' by 'samps' samples"))
(lambda (mix-list samps)
(as-one-edit
(lambda ()
@@ -230,7 +230,7 @@ All mixes sync'd to it are also moved the same number of samples. (hook-remove m
(define src-mixes
- (let ((documentation "(src-mixes mix-list sr) multiplies the speed (resampling ratio) of each mix in 'mix-list' by 'sr'"))
+ (let ((+documentation+ "(src-mixes mix-list sr) multiplies the speed (resampling ratio) of each mix in 'mix-list' by 'sr'"))
(lambda (mix-list sr)
(if (not (= sr 0.0))
(as-one-edit
@@ -242,14 +242,14 @@ All mixes sync'd to it are also moved the same number of samples. (hook-remove m
(define transpose-mixes
- (let ((documentation "(transpose-mixes mix-list semitones) transposes each mix in mix-list by semitones"))
+ (let ((+documentation+ "(transpose-mixes mix-list semitones) transposes each mix in mix-list by semitones"))
(lambda (mix-list semitones)
(if (not (= semitones 0))
(src-mixes mix-list (expt 2.0 (/ semitones 12.0)))))))
(define color-mixes
- (let ((documentation "(color-mixes mix-list color) sets the tag and waveform color of each mix in 'mix-list' to 'color'"))
+ (let ((+documentation+ "(color-mixes mix-list color) sets the tag and waveform color of each mix in 'mix-list' to 'color'"))
(lambda (mix-list col)
(for-each
(lambda (m)
@@ -258,7 +258,7 @@ All mixes sync'd to it are also moved the same number of samples. (hook-remove m
(define set-mixes-tag-y
- (let ((documentation "(set-mixes-tag-y mix-list new-y) sets the mix tag vertical position of each mix in 'mix-list' to 'new-y'. The \
+ (let ((+documentation+ "(set-mixes-tag-y mix-list new-y) sets the mix tag vertical position of each mix in 'mix-list' to 'new-y'. The \
position is measured from the top of the graph, so higher tag-y values position the tag lower in the graph. For \
example, if you know the frequency of the mix sound, you can reflect that in the tag height with: \n\n\
\n\
@@ -272,7 +272,7 @@ example, if you know the frequency of the mix sound, you can reflect that in the
(define mixes-maxamp
- (let ((documentation "(mixes-maxamp mix-list) returns the maximum amplitude of the data in the mixes in 'mix-list'"))
+ (let ((+documentation+ "(mixes-maxamp mix-list) returns the maximum amplitude of the data in the mixes in 'mix-list'"))
(lambda (mix-list)
(let ((mx 0.0))
(for-each
@@ -283,7 +283,7 @@ example, if you know the frequency of the mix sound, you can reflect that in the
(define scale-tempo
- (let ((documentation "(scale-tempo mix-list scl) changes the rate at which the mixes in 'mix-list' occur to reflect \
+ (let ((+documentation+ "(scale-tempo mix-list scl) changes the rate at which the mixes in 'mix-list' occur to reflect \
the tempo scaler 'scl'. If 'scl' is 2.0, for example, the mixes are re-positioned so that they \
happen twice as slowly (the data is not resampled -- each mix is untouched except that its begin time \
may change)"))
@@ -310,7 +310,7 @@ may change)"))
(define mixes-length
- (let ((documentation "(mixes-length mix-list) returns the number of samples between the start of the earliest mix and the \
+ (let ((+documentation+ "(mixes-length mix-list) returns the number of samples between the start of the earliest mix and the \
last end of the mixes in 'mix-list'"))
(lambda (mix-list)
(- (+ (apply max (map (lambda (m)
@@ -321,7 +321,7 @@ last end of the mixes in 'mix-list'"))
(define env-mixes
- (let ((documentation "(env-mixes mix-list amp-env) applies 'amp-env' as a global amplitude envelope to the mixes in 'mix-list'"))
+ (let ((+documentation+ "(env-mixes mix-list amp-env) applies 'amp-env' as a global amplitude envelope to the mixes in 'mix-list'"))
(lambda (mix-list overall-amp-env)
(let* ((mix-begs (map mix-position mix-list))
(mix-ends (map (lambda (m) (+ (mix-position m) (framples m))) mix-list))
@@ -345,7 +345,7 @@ last end of the mixes in 'mix-list'"))
(define sync-all-mixes
;; a replacement for set-all-tracks in snd-8
- (let ((documentation "(sync-all-mixes (new-sync 1)) sets the mix-sync field of every active mix to new-sync"))
+ (let ((+documentation+ "(sync-all-mixes (new-sync 1)) sets the mix-sync field of every active mix to new-sync"))
(lambda* ((new-sync 1))
(for-each
(lambda (snd-m)
@@ -360,7 +360,7 @@ last end of the mixes in 'mix-list'"))
(define syncd-mixes
- (let ((documentation "(syncd-mixes val) returns a list (possibly null) of all mixes whose mix-sync field is set to 'val'"))
+ (let ((+documentation+ "(syncd-mixes val) returns a list (possibly null) of all mixes whose mix-sync field is set to 'val'"))
(lambda (val)
(if (<= val 0)
()
@@ -380,7 +380,7 @@ last end of the mixes in 'mix-list'"))
(define play-mixes
- (let ((documentation "(play-mixes mix-list) plays the mixes in 'mix-list'"))
+ (let ((+documentation+ "(play-mixes mix-list) plays the mixes in 'mix-list'"))
(lambda (mix-list)
(let* ((sorted-mixes (sort! (copy mix-list) (lambda (a b) (< (mix-position a) (mix-position b)))))
(now (mix-position (car sorted-mixes))))
@@ -401,7 +401,7 @@ last end of the mixes in 'mix-list'"))
(define pan-mix
- (letrec ((documentation "(pan-mix file start pan-env snd (auto-delete #f)) mixes 'file' into the sound 'snd'
+ (letrec ((+documentation+ "(pan-mix file start pan-env snd (auto-delete #f)) mixes 'file' into the sound 'snd'
starting at 'start' (in samples) using 'pan-env' to decide how to split the sound between the output channels (0: all chan 0, 1: all chan 1).
So, (pan-mix \"oboe.snd\" 0 '(0 0 1 1)) goes from all chan 0 to all chan 1.
'auto-delete' determines whether the in-coming file should be treated as a temporary file and deleted when the mix
@@ -497,7 +497,7 @@ panning operation.")
(define pan-mix-selection
- (let ((documentation "(pan-mix-selection start pan-env snd) mixes the current selection into the sound 'snd'
+ (let ((+documentation+ "(pan-mix-selection start pan-env snd) mixes the current selection into the sound 'snd'
starting at 'start' (in samples) using 'pan-env' to pan (0: all chan 0, 1: all chan 1)."))
(lambda* (beg pan snd)
(if (not (selection?))
@@ -506,7 +506,7 @@ starting at 'start' (in samples) using 'pan-env' to pan (0: all chan 0, 1: all c
(define pan-mix-region
- (let ((documentation "(pan-mix-region reg start pan-env snd) mixes the given region into the sound 'snd'
+ (let ((+documentation+ "(pan-mix-region reg start pan-env snd) mixes the given region into the sound 'snd'
starting at 'start' (in samples) using 'pan-env' to pan (0: all chan 0, 1: all chan 1)."))
(lambda* (reg beg pan snd)
(if (not (region? reg))
@@ -515,7 +515,7 @@ starting at 'start' (in samples) using 'pan-env' to pan (0: all chan 0, 1: all c
(define pan-mix-float-vector
- (let ((documentation "(pan-mix-float-vector v start pan-env snd) mixes the float-vector data into the sound 'snd'
+ (let ((+documentation+ "(pan-mix-float-vector v start pan-env snd) mixes the float-vector data into the sound 'snd'
starting at 'start' (in samples) using 'pan-env' to pan (0: all chan 0, 1: all chan 1)."))
(lambda* (v beg pan snd)
(let ((temp-file (snd-tempnam)))
@@ -527,7 +527,7 @@ starting at 'start' (in samples) using 'pan-env' to pan (0: all chan 0, 1: all c
;;; -------- delay-channel-mixes
(define delay-channel-mixes
- (let ((documentation "(delay-channel-mixes beg dur snd chn) adds dur (which can be negative) to the \
+ (let ((+documentation+ "(delay-channel-mixes beg dur snd chn) adds dur (which can be negative) to the \
begin time of each mix that starts after beg in the given channel"))
(lambda* (beg dur snd chn)
(for-each
@@ -543,7 +543,7 @@ begin time of each mix that starts after beg in the given channel"))
;;; -------- check-mix-tags
(define check-mix-tags
- (let ((documentation "(check-mix-tags snd chn) tries to move mix tags around to avoid collisions"))
+ (let ((+documentation+ "(check-mix-tags snd chn) tries to move mix tags around to avoid collisions"))
(lambda* (snd chn)
(if (not snd)
(for-each check-mix-tags (sounds))
@@ -576,4 +576,4 @@ begin time of each mix that starts after beg in the given channel"))
(check-mix (car trailing-mixes) (cdr trailing-mixes)))))
(if changed
(update-time-graph snd chn))))))))
- \ No newline at end of file
+
diff --git a/mockery.scm b/mockery.scm
index 1453890..931df47 100644
--- a/mockery.scm
+++ b/mockery.scm
@@ -17,10 +17,12 @@
(define (mock->string obj . args)
- (dynamic-wind
- (lambda () (coverlet obj))
- (lambda () (apply #_object->string (obj 'value) args))
- (lambda () (openlet obj))))
+ (if (openlet? obj)
+ (dynamic-wind
+ (lambda () (coverlet obj))
+ (lambda () (apply #_object->string (obj 'value) args))
+ (lambda () (openlet obj)))
+ (apply #_object->string (obj 'value) args)))
(define (make-local-method f)
@@ -41,14 +43,14 @@
(#_vector-set! (obj 'value) i val)
(error 'wrong-type-arg "vector-set! ~S ~S ~S" obj i val))) ; the wrong arg here is 'i
'vector-set! (lambda (obj i val) ((obj 'local-set!) obj i val) val)
- 'let-set! (lambda (obj i val) ((obj 'local-set!) obj i val) val)
+ 'let-set-fallback (lambda (obj i val) ((obj 'local-set!) obj i val) val)
'vector-ref (lambda (obj i)
(if (mock-vector? obj)
(#_vector-ref (obj 'value) i)
(error 'wrong-type-arg "vector-ref ~S ~S" obj i)))
- 'let-ref (lambda (obj i) (#_vector-ref (obj 'value) i)) ; the implicit case, so 'i can't be the culprit
+ 'let-ref-fallback (lambda (obj i) (#_vector-ref (obj 'value) i)) ; the implicit case, so 'i can't be the culprit
'vector-length (lambda (obj) (#_length (obj 'value)))
'vector-append (make-local-method #_vector-append)
'reverse (lambda (obj) (#_reverse (obj 'value)))
@@ -147,9 +149,9 @@
'object->string mock->string
'initial-element #f
'vector-ref local-ref
- 'let-ref local-ref
+ 'let-ref-fallback local-ref
'vector-set! local-set!
- 'let-set! local-set!))))
+ 'let-set-fallback local-set!))))
|#
@@ -168,7 +170,7 @@
'let-ref-fallback (lambda (obj key)
(if (defined? 'mock-hash-table-table obj)
(#_hash-table-ref (obj 'mock-hash-table-table) key)))
- 'let-set!-fallback (lambda (obj key val)
+ 'let-set-fallback (lambda (obj key val)
(if (defined? 'mock-hash-table-table obj)
(#_hash-table-set! (obj 'mock-hash-table-table) key val)))
@@ -268,8 +270,8 @@
'object->string (lambda* (obj (w #t)) (copy (if (eq? w :readable) "*mock-string*" "#<mock-string-class>")))
'arity (lambda (obj) (#_arity (obj 'value)))
'make-iterator (lambda (obj) (#_make-iterator (obj 'value)))
- 'let-ref (lambda (obj i) (#_string-ref (obj 'value) i)) ; these are the implicit cases
- 'let-set! (lambda (obj i val) (string-set! (obj 'value) i val))
+ 'let-ref-fallback (lambda (obj i) (#_string-ref (obj 'value) i)) ; these are the implicit cases
+ 'let-set-fallback (lambda (obj i val) (string-set! (obj 'value) i val))
'string-length (lambda (obj) (#_length (obj 'value)))
'string-append (make-local-method #_string-append)
'string-copy (lambda (obj) (#_copy (obj 'value)))
@@ -896,8 +898,8 @@
'memq (lambda (val obj) (#_memq val (obj 'value)))
'memv (lambda (val obj) (#_memv val (obj 'value)))
'member (lambda (val obj . args) (apply #_member val (obj 'value) args))
- 'let-ref (lambda (obj ind) (coverlet obj) (let ((val (#_list-ref (obj 'value) ind))) (openlet obj) val))
- 'let-set! (lambda (obj ind val) (coverlet obj) (#_list-set! (obj 'value) ind val) (openlet obj) val)
+ 'let-ref-fallback (lambda (obj ind) (coverlet obj) (let ((val (#_list-ref (obj 'value) ind))) (openlet obj) val))
+ 'let-set-fallback (lambda (obj ind val) (coverlet obj) (#_list-set! (obj 'value) ind val) (openlet obj) val)
'arity (lambda (obj) (#_arity (obj 'value)))
'fill! (lambda (obj val) (#_fill! (obj 'value) val))
'reverse (lambda (obj) (#_reverse (obj 'value)))
@@ -962,7 +964,7 @@
(sublet (*mock-pair* 'mock-pair-class)
'object->string mock->string
- 'let-set! (lambda (obj i val)
+ 'let-set-fallback (lambda (obj i val)
(set! (obj 'value) (append (copy (obj 'value) (make-list (+ i 1))) (list-tail (obj 'value) (+ i 1))))
(list-set! (obj 'value) i val))
'list-set! (lambda (obj i val)
@@ -1001,7 +1003,7 @@
'symbol->string (lambda (obj) (#_symbol->string (obj 'value)))
'symbol->value (lambda (obj . args) (apply #_symbol->value (obj 'value) args))
'symbol->dynamic-value (lambda (obj) (#_symbol->dynamic-value (obj 'value)))
- 'symbol-access (lambda (obj . args) (apply #_symbol-access (obj 'value) args))
+ 'symbol-setter (lambda (obj . args) (apply #_symbol-setter (obj 'value) args))
'provided? (lambda (obj) (#_provided? (obj 'value)))
'provide (lambda (obj) (#_provide (obj 'value)))
'defined? (lambda (obj) (#_defined? (obj 'value)))
diff --git a/moog.scm b/moog.scm
index fa1682c..6aa09ed 100644
--- a/moog.scm
+++ b/moog.scm
@@ -74,7 +74,7 @@
(defgenerator moog freq Q s y fc gain sig)
(define make-moog-filter
- (let ((documentation "(make-moog-filter frequency Q) makes a new moog-filter generator. 'frequency' is the cutoff in Hz,
+ (let ((+documentation+ "(make-moog-filter frequency Q) makes a new moog-filter generator. 'frequency' is the cutoff in Hz,
'Q' sets the resonance: 0 = no resonance, 1: oscillates at 'frequency'"))
(lambda (frequency Q)
(let ((frq (envelope-interp (/ frequency (* *clm-srate* 0.5)) moog-freqtable)))
@@ -88,7 +88,7 @@
(define moog-frequency
(dilambda
- (let ((documentation "(moog-frequency gen) accesses the cutoff frequency of the Moog filter 'gen'"))
+ (let ((+documentation+ "(moog-frequency gen) accesses the cutoff frequency of the Moog filter 'gen'"))
(lambda (gen)
(gen 'freq)))
(lambda (gen frq)
@@ -99,7 +99,7 @@
(define moog-filter
- (let ((documentation "(moog-filter m sig) is the generator associated with make-moog-filter"))
+ (let ((+documentation+ "(moog-filter m sig) is the generator associated with make-moog-filter"))
(lambda (m sig)
(let-set! m 'sig sig)
(with-let m
@@ -123,7 +123,7 @@
(defgenerator moog freq Q s0 s1 s2 s3 y fc gain sig)
(define make-moog-filter
- (let ((documentation "(make-moog-filter frequency Q) makes a new moog-filter generator. 'frequency' is the cutoff in Hz,
+ (let ((+documentation+ "(make-moog-filter frequency Q) makes a new moog-filter generator. 'frequency' is the cutoff in Hz,
'Q' sets the resonance: 0 = no resonance, 1: oscillates at 'frequency'"))
(lambda (frequency Q)
(let ((frq (envelope-interp (/ frequency (* *clm-srate* 0.5)) moog-freqtable)))
@@ -136,7 +136,7 @@
(define moog-frequency
(dilambda
- (let ((documentation "(moog-frequency gen) accesses the cutoff frequency of the Moog filter 'gen'"))
+ (let ((+documentation+ "(moog-frequency gen) accesses the cutoff frequency of the Moog filter 'gen'"))
(lambda (gen)
(gen 'freq)))
(lambda (gen frq)
@@ -147,7 +147,7 @@
(define moog-filter
- (let ((documentation "(moog-filter m sig) is the generator associated with make-moog-filter"))
+ (let ((+documentation+ "(moog-filter m sig) is the generator associated with make-moog-filter"))
(lambda (m sig)
; see below for the "saturate" option
(let-set! m 'sig sig)
@@ -174,7 +174,7 @@
A)))))
(define moog-filter-saturated
- (let ((documentation "(moog-filter-saturated m sig) is the generator associated with make-moog-filter with internal saturation"))
+ (let ((+documentation+ "(moog-filter-saturated m sig) is the generator associated with make-moog-filter with internal saturation"))
(lambda (m sig)
(let-set! m 'sig sig)
(with-let m
diff --git a/nb.scm b/nb.scm
index b5d55d7..e4f7f94 100644
--- a/nb.scm
+++ b/nb.scm
@@ -11,7 +11,7 @@
(define nb-database "nb.db")
(define nb
- (let ((documentation "(nb file note) adds 'note' to the info asociated with 'file'"))
+ (let ((+documentation+ "(nb file note) adds 'note' to the info asociated with 'file'"))
(lambda (file note)
(let ((ptr (gdbm-open nb-database 'create)))
(if (gdbm? ptr)
@@ -26,7 +26,7 @@
(gdbm-close! ptr)))))))
(define unb
- (let ((documentation "(unb file) removes file's info from the nb (gdbm) data base"))
+ (let ((+documentation+ "(unb file) removes file's info from the nb (gdbm) data base"))
(lambda (file)
(let ((ptr (gdbm-open nb-database 'write)))
(if (gdbm? ptr)
@@ -35,7 +35,7 @@
(gdbm-close! ptr)))))))
(define prune-db
- (letrec ((documentation "(prune-db) cleans up the nb (gdbm) data base by removing references to non-existent files")
+ (letrec ((+documentation+ "(prune-db) cleans up the nb (gdbm) data base by removing references to non-existent files")
(collect-files (lambda (ptr key files)
(if key
(collect-files ptr (gdbm-next-key ptr key) (cons key files))
@@ -60,7 +60,7 @@
(define nb-mouse-response-time 0)
(define files-popup-info
- (let ((documentation "(files-popup-info type position name) is intended as a mouse-enter-label hook function.
+ (let ((+documentation+ "(files-popup-info type position name) is intended as a mouse-enter-label hook function.
It causes a description of the file to popup when the mouse crosses the filename")
(file-info (lambda (file)
diff --git a/new-effects.scm b/new-effects.scm
index 41e4c34..9c28a8c 100644
--- a/new-effects.scm
+++ b/new-effects.scm
@@ -11,7 +11,7 @@
(define effects-menu (add-to-main-menu "Effects" (lambda () (update-label effects-list))))
(define plausible-mark-samples
- (let ((documentation "(plausible-mark-samples) finds two marks in the current channel in or nearest to current window"))
+ (let ((+documentation+ "(plausible-mark-samples) finds two marks in the current channel in or nearest to current window"))
(lambda ()
(let* ((snd (selected-sound))
(chn (selected-channel))
@@ -1712,7 +1712,7 @@ Move the sliders to set the filter cutoff frequency and resonance."))
;;;
(define effects-cnv
- (let ((documentation "(effects-cnv snd0-1 amp snd chn) is used by the effects dialog to tie into edit-list->function"))
+ (let ((+documentation+ "(effects-cnv snd0-1 amp snd chn) is used by the effects dialog to tie into edit-list->function"))
(lambda* (snd0-1 amp snd chn)
(let* ((snd0 (if (sound? snd0-1) snd0-1 (car (sounds))))
(flt-len (framples snd0))
@@ -1731,7 +1731,7 @@ Move the sliders to set the filter cutoff frequency and resonance."))
(define effects-jc-reverb
- (let ((documentation "(effects-jc-reverb volume beg dur snd chn) is used by the effects dialog to tie into edit-list->function"))
+ (let ((+documentation+ "(effects-jc-reverb volume beg dur snd chn) is used by the effects dialog to tie into edit-list->function"))
(lambda* (volume beg dur snd chn)
(let ((allpass1 (make-all-pass -0.700 0.700 1051))
(allpass2 (make-all-pass -0.700 0.700 337))
@@ -1985,7 +1985,7 @@ Adds reverberation scaled by reverb amount, lowpass filtering, and feedback. Mov
;;;
(define effects-hello-dentist
- (let ((documentation "(hello-dentist frq amp snd chn) varies the sampling rate randomly, making a voice sound quavery: (hello-dentist 40.0 .1)"))
+ (let ((+documentation+ "(hello-dentist frq amp snd chn) varies the sampling rate randomly, making a voice sound quavery: (hello-dentist 40.0 .1)"))
(lambda* (frq amp beg dur snd chn)
(let ((rn (make-rand-interp :frequency frq :amplitude amp))
(len (or dur (- (framples snd chn) beg)))
@@ -2013,7 +2013,7 @@ Adds reverberation scaled by reverb amount, lowpass filtering, and feedback. Mov
(define effects-position-sound
- (let ((documentation "(effects-position-sound mono-snd pos-1 snd chn) is used by the effects dialog to tie into edit-list->function"))
+ (let ((+documentation+ "(effects-position-sound mono-snd pos-1 snd chn) is used by the effects dialog to tie into edit-list->function"))
(lambda* (mono-snd pos snd chn)
(let ((len (framples mono-snd))
(reader1 (make-sampler 0 mono-snd)))
@@ -2032,7 +2032,7 @@ Adds reverberation scaled by reverb amount, lowpass filtering, and feedback. Mov
(define effects-cross-synthesis
- (let ((documentation "(effects-cross-synthesis cross-snd amp fftsize r) is used by the effects dialog to tie into edit-list->function"))
+ (let ((+documentation+ "(effects-cross-synthesis cross-snd amp fftsize r) is used by the effects dialog to tie into edit-list->function"))
(lambda (cross-snd amp fftsize r)
;; cross-snd is the index of the other sound (as opposed to the map-channel sound)
(let ((freq-inc (/ fftsize 2)))
diff --git a/numerics.scm b/numerics.scm
index 196db08..5054e3d 100644
--- a/numerics.scm
+++ b/numerics.scm
@@ -59,7 +59,7 @@
(* (factorial m) (factorial (- n m)))))
(define n-choose-k
- (let ((documentation "(n-choose-k n k) computes the binomial coefficient C(N,K)"))
+ (let ((+documentation+ "(n-choose-k n k) computes the binomial coefficient C(N,K)"))
(lambda (n k)
(let ((mn (min k (- n k))))
(if (< mn 0)
diff --git a/peak-phases.scm b/peak-phases.scm
index bde2cc1..7b4e4e9 100644
--- a/peak-phases.scm
+++ b/peak-phases.scm
@@ -1479,21 +1479,21 @@
(vector 512 34.212551772691 #r(0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 1 0 0 1 1 1 0 1 1 1 0 0 1 1 1 0 0 1 1 1 0 1 0 0 0 0 1 1 1 0 0 1 0 0 1 1 0 0 1 0 0 0 1 0 1 1 1 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 1 1 1 0 0 1 0 1 1 0 0 1 0 1 0 0 1 1 1 0 1 0 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 1 1 1 0 0 0 0 1 1 1 0 1 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 1 0 1 1 1 1 0 0 1 0 0 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 0 1 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 1 0 0 1 1 0 1 0 1 1 0 0 0 1 0 1 1 0 0 1 1 1 0 0 1 0 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 0 0 1 0 1 1 1 0 1 0 1 1 1 1 0 1 0 1 0 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1 0 1 1 0 0 1 1 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 1 1 1 0 0 1 1 1 1 1 0 0 0 0 1 1 0 0 0 0 1 1 1 0 1 0 1 0 0 1 0 0 1 0 0 1 1 1 0 0 0 0 0 1 0 1)
;; from (try-all :all 512 513 1.0491155462743 0.38189660798029) = 28.3830
- 23.405314 #(0.000000 0.420742 1.627318 1.353046 1.823145 1.127210 0.765871 1.225027 0.491047 0.134541 0.657692 1.859410 1.534317 0.049699 1.242637 0.943374 1.506678 0.637069 0.345423 0.892222 0.018089 1.771172 0.335617 1.444607 1.195539 1.728646 0.867418 0.684584 1.149309 0.343702 0.176483 0.589575 1.810118 1.688369 0.136247 1.328783 1.161144 1.736562 0.860520 0.640946 1.297506 0.357726 0.134948 0.790903 1.889381 1.651081 0.232513 1.379189 1.191290 1.702348 0.940591 0.794540 1.221245 0.503001 0.403376 0.825111 0.084450 -0.007378 0.494104 1.666474 1.562373 0.086615 1.195850 1.084957 1.623730 0.733431 0.634724 1.129335 0.324706 0.233466 0.783981 -0.005428 1.897204 0.547510 1.721935 1.566320 0.201188 1.341079 1.235608 1.766433 0.927625 0.845929 1.349497 0.587768 0.477050 1.008479 0.363206 0.156461 0.738687 0.073305 1.864952 0.444964 1.681960 1.616315 0.140636 1.337034 1.385871 1.841054 1.019889 1.100036 1.606048 0.788124 0.781971 1.365493 0.592730 0.491271 1.112671 0.367442 0.297676 0.850369 0.103157 0.069088 0.613215 1.825603 1.810093 0.372523 1.629670 1.586656 0.161452 1.497374 1.379809 1.950074 1.306058 1.157637 1.812739 1.098553 1.002089 1.660606 0.941448 0.888146 1.440821 0.777143 0.774795 1.297249 0.544989 0.611878 1.136377 0.431743 0.426047 0.928048 0.316693 0.323143 0.891046 0.162943 0.214512 0.831374 0.045111 0.041759 0.636969 0.003512 1.976097 0.583978 1.949345 1.965894 0.582545 1.828839 1.886450 0.452994 1.759803 1.817658 0.367408 1.812448 1.752901 0.376458 1.768044 1.629418 0.352335 1.570743 1.604292 0.344217 1.546462 1.690801 0.369637 1.693530 1.704589 0.330445 1.780226 1.610915 0.299015 1.743792 1.616818 0.359768 1.649862 1.678569 0.361045 1.665729 1.689924 0.348287 1.765647 1.758949 0.464903 1.802141 1.830982 0.605178 1.809846 1.912381 0.597960 1.923917 -0.025556 0.627120 0.086556 0.132689 0.798441 0.257409 0.262517 0.910423 0.282422 0.321872 0.994101 0.329321 0.375036 1.150973 0.532118 0.546279 1.368762 0.750862 0.740564 1.500080 0.872993 0.975397 1.655760 1.007715 1.113775 1.804496 1.233990 1.254137 -0.016370 1.406138 1.325056 0.092898 1.524923 1.634778 0.378169 1.673863 1.841044 0.609533 0.036584 0.205986 0.895711 0.311144 0.270024 1.027045 0.586138 0.610687 1.348070 0.739015 0.775773 1.620714 1.025414 1.294419 1.972182 1.282444 1.370438 0.117944 1.667759 1.732835 0.426320 1.873394 -0.121920 0.707494 0.210871 0.350311 1.136725 0.432156 0.581355 1.436954 0.906057 0.971535 1.736371 1.201992 1.320200 0.081953 1.617078 1.678719 0.526263 1.963031 0.056435 0.843549 0.272488 0.392909 1.252925 0.644792 0.713966 1.480261 1.028332 1.268781 0.047855 1.552154 1.607549 0.459664 1.869592 0.147715 0.865200 0.489321 0.511516 1.433387 0.747718 0.889861 1.680715 1.251179 1.471437 0.307325 1.774872 1.823046 0.635101 0.078547 0.376712 1.105325 0.843268 0.850506 1.767723 1.166453 1.222281 0.099172 1.582221 1.873637 0.763246 0.321215 0.350526 1.327243 0.606866 0.950435 1.775828 1.299644 1.518343 0.305273 1.949108 -0.031952 0.891027 0.323733 0.617543 1.362420 1.057080 1.213228 0.078672 1.610987 1.715224 0.731095 0.211793 0.467013 1.226751 0.712443 1.067386 1.875308 1.520028 1.502977 0.424426 -0.093340 0.261182 1.014722 0.689663 0.808099 1.697247 1.337526 1.483055 0.410284 1.895083 0.191935 1.166109 0.740296 0.933410 1.827659 1.366645 1.590135 0.510604 0.000547 0.234654 1.171503 0.813018 0.966937 1.857314 1.416593 1.648454 0.581904 0.202646 0.473989 1.381748 0.842592 1.164564 0.084168 1.754984 1.994208 0.873313 0.422599 0.667083 1.640416 1.277845 1.497116 0.450810 0.008516 0.359805 1.184466 0.786945 1.024066 -0.073486 1.605191 1.861846 0.701256 0.470286 0.626892 1.647182 1.157953 1.509397 0.571879 0.172297 0.399713 1.250744 0.850598 1.298686 0.237391 1.914510 0.011925 1.017216 0.659409 0.963037 0.007977 1.606033 1.913976 0.932366 0.380675 0.794769 1.750373 1.449793 1.726549 0.589862 0.196649 0.483399 1.472437 1.189448 1.471980 0.446554 0.075122 0.419863 1.449112 1.217149 1.441017 0.368516 0.034336 0.350673 1.340618 0.979825 1.355225 0.305417 -0.100273 0.279074 1.284339 0.987664 1.309141 0.316466 0.082547 0.298121 1.331784 0.957098 1.378995 0.418607 0.066111 0.467475 1.357153 1.080465 1.381211 0.386161 0.247078 0.418249 1.478519 1.069839 1.401225 0.556393 0.195249 0.569213 1.637483 1.152062 1.687403 0.673428 0.383558 0.734017 1.747107 1.590461 1.901742 0.869848 0.631936 0.984837 0.048267 1.714470 0.137708 1.183955 0.832497 1.211035 0.302866 0.034707 0.397678 1.430516 1.188174 1.553525 0.545876 0.342098 0.810137 1.839022 1.614946 1.982275 1.022490 0.769396 1.144412 0.270021 0.024505 0.444397 1.550066 1.314398 1.781512 0.816984 0.507047 1.000399 0.102276)
+ 23.403799 #(0.000000 0.423903 1.628365 1.353684 1.827154 1.128398 0.766763 1.222470 0.495128 0.132852 0.656955 1.869776 1.538502 0.048964 1.246497 0.942405 1.497327 0.639796 0.344685 0.892743 0.012757 1.771003 0.331062 1.445217 1.200080 1.729292 0.863043 0.679643 1.142558 0.347013 0.174731 0.586260 1.813741 1.686714 0.133622 1.322888 1.167905 1.733145 0.854581 0.649047 1.300110 0.355787 0.139268 0.794185 1.888015 1.654178 0.234820 1.384533 1.199500 1.704655 0.940165 0.801492 1.221799 0.506659 0.404797 0.830076 0.087439 -0.009849 0.488876 1.669049 1.563044 0.082403 1.192583 1.090588 1.617898 0.742383 0.633279 1.124498 0.325727 0.236316 0.783907 0.001526 1.892618 0.547973 1.723008 1.570076 0.204390 1.346067 1.243101 1.768080 0.928308 0.848482 1.352311 0.593676 0.482530 1.009784 0.368516 0.163648 0.737259 0.074146 1.861801 0.444449 1.683973 1.611976 0.142044 1.335833 1.390946 1.845971 1.020532 1.109337 1.603993 0.787862 0.793437 1.370188 0.592668 0.492207 1.113012 0.365633 0.298020 0.853276 0.097923 0.070708 0.609392 1.829708 1.806506 0.373183 1.620329 1.589688 0.161830 1.499670 1.380319 1.947608 1.312567 1.160404 1.816664 1.100780 1.001115 1.662275 0.941413 0.892738 1.439291 0.773394 0.771564 1.297761 0.544535 0.612317 1.138933 0.429110 0.426592 0.927020 0.315045 0.327562 0.886614 0.160013 0.215617 0.828275 0.045025 0.045669 0.639988 0.005890 1.985251 0.586662 1.952158 1.964397 0.584415 1.822785 1.885842 0.454721 1.763109 1.823441 0.367998 1.808801 1.747030 0.371983 1.770732 1.630176 0.351580 1.573435 1.606453 0.343114 1.542819 1.690010 0.369328 1.693744 1.704905 0.332680 1.783336 1.613255 0.300616 1.750148 1.617057 0.359260 1.650569 1.673505 0.362895 1.666249 1.691342 0.347332 1.763151 1.763258 0.462898 1.802569 1.828644 0.605379 1.808134 1.913906 0.599361 1.920875 -0.021610 0.623838 0.084292 0.128726 0.795141 0.253161 0.263664 0.911285 0.282097 0.322720 0.996541 0.333704 0.373850 1.152099 0.533728 0.547763 1.364490 0.750591 0.744268 1.497259 0.878572 0.976448 1.651554 1.015866 1.116748 1.804968 1.235583 1.250908 -0.007793 1.401631 1.319277 0.092611 1.518678 1.629057 0.373476 1.676887 1.842136 0.610135 0.035009 0.211168 0.896323 0.317630 0.269472 1.024715 0.590651 0.610469 1.354507 0.732877 0.771226 1.622147 1.023164 1.302975 1.976965 1.278380 1.380327 0.122015 1.673772 1.731078 0.423417 1.873333 -0.126004 0.702549 0.217817 0.357021 1.137056 0.432814 0.585192 1.436164 0.911687 0.970780 1.738245 1.198880 1.324723 0.080539 1.627497 1.676373 0.532217 1.956112 0.057045 0.839799 0.280298 0.391830 1.261082 0.643022 0.715177 1.477214 1.024979 1.272322 0.056088 1.551305 1.606420 0.453784 1.872657 0.152062 0.864142 0.490326 0.516091 1.442117 0.751741 0.894355 1.687748 1.254210 1.472015 0.306305 1.774557 1.830988 0.643880 0.076902 0.375723 1.105021 0.847913 0.853736 1.770245 1.171736 1.221850 0.095303 1.582414 1.868991 0.760843 0.319434 0.350442 1.328612 0.608932 0.949094 1.770634 1.292512 1.519346 0.312751 1.951126 -0.033580 0.889643 0.330750 0.619657 1.358048 1.063639 1.212728 0.080130 1.606727 1.717168 0.733444 0.222847 0.471286 1.228512 0.711437 1.066543 1.874690 1.521621 1.505003 0.421348 -0.093189 0.263905 1.016065 0.684059 0.806125 1.691753 1.345060 1.485125 0.408948 1.894158 0.196924 1.163592 0.738582 0.932057 1.823623 1.367166 1.591720 0.504848 -0.000192 0.229531 1.170359 0.817079 0.966034 1.853235 1.409058 1.638319 0.581433 0.214053 0.475876 1.383892 0.837827 1.160739 0.093080 1.762051 -0.000738 0.876733 0.421967 0.665167 1.638135 1.274617 1.499923 0.453853 0.007940 0.358227 1.190297 0.785002 1.028551 -0.073214 1.601061 1.856839 0.708674 0.474238 0.618692 1.637125 1.153480 1.507465 0.577125 0.178813 0.405465 1.241494 0.846845 1.304898 0.227159 1.917234 0.006977 1.013610 0.659354 0.959737 0.012011 1.603494 1.913701 0.942526 0.384717 0.800803 1.759354 1.460943 1.728829 0.583928 0.196188 0.485319 1.471160 1.196747 1.467516 0.449944 0.075213 0.415941 1.446445 1.211684 1.445278 0.371934 0.026962 0.349212 1.339949 0.981543 1.348776 0.305779 -0.103414 0.276994 1.284853 0.985387 1.309554 0.317849 0.086198 0.294233 1.328157 0.953854 1.380449 0.413005 0.062531 0.466350 1.356493 1.077972 1.384792 0.379068 0.244681 0.421030 1.473222 1.078485 1.399902 0.553489 0.195581 0.573096 1.639786 1.151288 1.688194 0.678274 0.376494 0.733867 1.748524 1.587732 1.899456 0.870382 0.631752 0.982623 0.045853 1.716025 0.139726 1.178437 0.825863 1.210715 0.298665 0.029112 0.396309 1.435826 1.192168 1.556177 0.548717 0.341157 0.813560 1.839668 1.623850 1.988432 1.018809 0.763956 1.142688 0.271708 0.034100 0.449017 1.552287 1.315247 1.787885 0.819164 0.508237 1.004601 0.102257)
)
;;; 1024 all -------------------------------------------------------------------------------- (32)
(vector 1024 54.490282136658 #r(0 0 0 1 0 1 0 1 1 1 0 1 0 1 1 1 0 1 0 0 0 1 1 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0 0 1 1 1 1 0 0 1 0 0 0 0 1 0 1 0 0 1 0 1 0 0 1 1 1 1 1 0 1 1 0 0 0 1 1 1 0 0 0 1 1 0 1 0 0 0 0 0 1 0 1 1 1 1 1 0 1 1 1 1 1 1 0 0 0 1 1 1 1 0 1 0 1 1 1 1 0 1 1 1 1 1 1 1 0 1 0 1 0 1 0 0 0 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 0 1 1 0 1 0 1 1 0 0 0 1 0 0 1 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 1 0 1 1 1 1 1 0 0 1 1 1 1 0 1 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 0 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 0 0 0 0 0 1 0 0 0 1 1 0 1 1 1 1 1 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 1 0 0 1 0 1 0 0 1 1 1 0 0 0 0 1 0 1 1 1 1 0 1 0 1 0 1 0 0 1 1 1 0 0 0 0 1 1 0 0 1 0 0 1 0 0 1 1 0 0 0 0 1 1 0 0 0 1 1 1 1 0 1 1 0 0 1 1 1 1 1 1 0 1 1 0 0 0 0 0 1 1 0 1 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 0 1 1 0 1 1 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 1 1 0 1 1 1 0 1 0 1 1 0 0 0 0 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 1 0 1 0 0 1 0 0 0 1 0 1 1 0 1 1 0 1 1 1 0 1 0 1 1 0 1 0 0 0 0 1 1 0 0 0 0 1 0 1 1 0 1 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 1 1 1 0 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 1 0 0 0 1 1 0 1 1 1 1 0 1 1 0 1 1 0 1 1 1 0 0 1 1 0 0 0 0 1 0 1 1 1 1 0 1 0 0 0 0 0 0 1 0 0 1 1 1 1 1 1 0 0 0 1 0 1 1 1 0 0 0 0 0 1 1 0 0 0 1 0 1 1 0 0 1 0 0 0 1 1 0 0 1 1 0 1 0 1 0 1 1 1 0 1 1 0 0 1 1 0 1 0 0 0 1 0 0 1 1 0 0 0 1 1 1 0 0 1 0 1 0 0 0 0 1 0 0 1 1 0 1 0 1 1 1 1 0 1 0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 1 1 1 1 1 0 0 1 0 1 1 0 1 0 0 0 1 1 1 0 1 0 1 0 1 0 0 1 1 1 0 1 0 0 1 1 1 0 1 1 1 1 0 0 1 1 1 0 0 1 0 0 0 1 1 1 0 1 0 1 1 0 0 1 0 1 0 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 1 1 1 0 1 1 0 1 0 0 1 1 0 0 0 1 1 0 1 1 0 0 0 0 1 1 1 0 0 0 1 1 0 1 1 1 0 0 0 0 1 0 0 0 1 0 1 1 1 1 0 1 0 1 0 0 1 0 0 0 0 0 1 1 1 0 1 0 0 1 0 0 1 1 1 0 0 1 1 0 1 1 0 0 1 0 0 1 1 0 0 0 1 0 1 1 0 0 1 1 0 1 1 1 0 1 1 1 0 1 0 0 0 0 0 1 1 0 1 0 0 1 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 0 1 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 0 1 1 0 1 1 1 1 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 1 1 1 1 0)
;; from (try-all :all 1024 1025 0.0030465754082342 1.0966230312279) = 39.6408 -- starting point for next
- 33.327699 #(0.000000 0.251939 0.591787 0.994875 1.359261 1.685436 0.068383 0.452706 0.792638 1.188232 1.577674 1.939721 0.307917 0.747858 1.052252 1.462160 1.820261 0.235412 0.535414 0.939270 1.340766 1.757816 0.085026 0.555749 0.906510 1.309843 1.645826 0.097070 0.473189 0.872948 1.282503 1.740808 0.205266 0.592960 1.014563 1.387208 1.857337 0.250965 0.618905 1.090026 1.504554 1.957059 0.362176 0.834433 1.265151 1.710708 0.108932 0.582263 1.043690 1.436689 1.901500 0.325535 0.782441 1.269233 1.718053 0.125614 0.582162 1.048275 1.447760 1.934499 0.420190 0.902656 1.337000 1.851204 0.331610 0.861417 1.269397 1.748897 0.249747 0.682087 1.218577 1.721503 0.171686 0.634824 1.165967 1.644360 0.137736 0.621996 1.088086 1.604010 0.099196 0.578332 1.119472 1.650307 0.151523 0.715196 1.194997 1.701230 0.280871 0.782568 1.317499 1.820158 0.290777 0.850871 1.367812 1.912162 0.439362 0.974306 1.492706 0.045483 0.605066 1.171414 1.698370 0.261626 0.806782 1.336523 1.852127 0.431755 0.989343 1.555772 0.117593 0.633194 1.252774 1.822192 0.395027 0.968045 1.504568 0.124585 0.732314 1.269851 1.840352 0.406892 1.048370 1.580848 0.179250 0.808405 1.387540 0.002064 0.562409 1.188718 1.803164 0.393160 0.990738 1.613847 0.209832 0.781115 1.381879 0.001572 0.605537 1.235122 1.862722 0.531292 1.130073 1.745833 0.419636 1.021210 1.623009 0.268467 0.906650 1.529329 0.165655 0.863647 1.490122 0.136799 0.777139 1.392133 0.035616 0.666068 1.356775 -0.031254 0.675771 1.344644 0.015460 0.727375 1.359765 0.014199 0.671938 1.353461 -0.003745 0.650530 1.360635 0.011902 0.679204 1.415278 0.082360 0.791326 1.488696 0.154900 0.843061 1.538222 0.216994 0.946052 1.657378 0.335135 1.052031 1.749960 0.481760 1.228090 1.957293 0.647434 1.336710 0.012572 0.753548 1.494222 0.235574 0.988637 1.678049 0.442856 1.144765 1.876364 0.545577 1.299888 0.093816 0.837151 1.603270 0.331610 1.033623 1.819952 0.555765 1.339016 0.078704 0.786348 1.564182 0.368008 1.110163 1.898534 0.647072 1.409244 0.163954 0.926201 1.743490 0.475097 1.322904 0.054450 0.852835 1.629547 0.429537 1.253705 0.032302 0.797753 1.565090 0.347044 1.151024 0.002011 0.796779 1.563783 0.396822 1.187501 -0.015797 0.836498 1.633514 0.457172 1.269489 0.058467 0.915331 1.736225 0.560236 1.389792 0.204731 1.057123 1.895846 0.711311 1.576193 0.418365 1.217045 0.031145 0.893108 1.790767 0.626588 1.494324 0.320013 1.173245 0.050645 0.912841 1.791973 0.663103 1.475602 0.333571 1.196429 0.076271 0.977043 1.814761 0.674034 1.556444 0.441292 1.310098 0.223342 1.114205 0.010852 0.848217 1.748387 0.663023 1.574208 0.455108 1.358865 0.276929 1.147143 0.047699 0.925922 1.820095 0.735083 1.706065 0.641572 1.522063 0.411781 1.340714 0.315547 1.222655 0.143463 1.081232 -0.017197 0.935949 1.854101 0.820797 1.718207 0.672573 1.626160 0.548645 1.478526 0.471391 1.441835 0.369822 1.321497 0.264146 1.238598 0.180760 1.137893 0.131339 1.072924 0.039736 0.987651 -0.003817 0.933552 1.889951 0.929209 1.894420 0.824038 1.832090 0.885701 1.822934 0.749476 1.793295 0.782374 1.798883 0.753940 1.768050 0.797886 1.786649 0.742875 1.772486 0.793734 1.787516 0.806526 1.808485 0.835681 1.871648 0.878753 1.882881 0.919300 -0.010955 0.955517 0.028140 1.059567 0.071582 1.092311 0.112946 1.146197 0.178284 1.267365 0.272421 1.349572 0.372790 1.420349 0.468153 1.599166 0.588953 1.641705 0.772949 1.784681 0.819747 1.893503 0.971545 0.057218 1.106608 0.188947 1.263131 0.321938 1.426824 0.525150 1.599045 0.676378 1.709110 0.856777 1.946007 1.035759 0.172607 1.253130 0.337384 1.456086 0.496385 1.597254 0.740936 1.846365 0.978653 0.067502 1.190272 0.313545 1.360476 0.529111 1.672124 0.802916 1.905934 1.042497 0.152988 1.298069 0.430494 1.599959 0.709102 1.826958 1.011050 0.153628 1.249049 0.414434 1.577027 0.779234 1.901822 1.064280 0.221568 1.353960 0.497457 1.677228 0.831634 0.008057 1.166469 0.312984 1.496017 0.655802 1.853575 1.017752 0.222854 1.437165 0.580778 1.751444 0.963827 0.117983 1.298734 0.557930 1.730920 0.920399 0.113557 1.345174 0.551267 1.743969 0.935328 0.122849 1.392451 0.612989 1.779636 1.017857 0.223818 1.464822 0.684576 1.908560 1.120145 0.359755 1.639859 0.876324 0.059963 1.289925 0.551531 1.779521 1.011322 0.273348 1.512674 0.759645 0.029577 1.274355 0.486779 1.725803 1.020990 0.263341 1.519183 0.797767 0.043072 1.306945 0.616326 1.881354 1.152034 0.430996 1.680135 1.007795 0.302627 1.551482 0.826928 0.170463 1.450879 0.700661 -0.031214 1.273760 0.602222 1.859908 1.195672 0.518106 1.768508 1.099862 0.387096 1.704438 1.063736 0.320288 1.602404 0.958828 0.280145 1.580271 0.928791 0.275380 1.574600 0.914100 0.290242 1.572048 0.932020 0.269022 1.580715 0.966472 0.290208 1.619898 0.995077 0.308808 1.659798 0.999457 0.428574 1.757481 1.057404 0.414297 1.799940 1.182555 0.579808 1.923594 1.269571 0.658502 0.053273 1.403255 0.745158 0.169364 1.555133 0.970162 0.317918 1.685412 1.097767 0.470444 1.824039 1.290206 0.671823 0.059862 1.463225 0.898060 0.276636 1.706733 1.097120 0.540544 1.936291 1.348522 0.742337 0.168039 1.585004 1.012724 0.438556 1.844117 1.288953 0.703502 0.109741 1.615608 1.024464 0.485596 1.881431 1.345893 0.739456 0.270851 1.682911 1.144028 0.582575 0.022656 1.499643 0.921338 0.407573 1.883708 1.375820 0.805252 0.262180 1.728631 1.190004 0.695557 0.174400 1.605372 1.118974 0.623016 0.096881 1.555901 1.048279 0.567636 0.008042 1.534227 0.979264 0.492676 0.018632 1.520821 1.042898 0.502431 0.032747 1.535551 1.039109 0.580940 0.065782 1.579400 1.098690 0.648725 0.166074 1.660492 1.192890 0.744264 0.244349 1.791604 1.304126 0.852772 0.402486 1.910121 1.507888 0.986273 0.531606 0.095731 1.628142 1.234665 0.753598 0.320152 1.869107 1.434145 1.008386 0.587106 0.125562 1.633468 1.250177 0.782177 0.396495 1.982581 1.518954 1.180847 0.723875 0.284885 1.858711 1.410411 1.029087 0.622096 0.193503 1.815790 1.405594 0.996175 0.629563 0.196876 1.825780 1.365472 1.004696 0.635204 0.269472 1.862636 1.460810 1.102680 0.665089 0.363795 1.950315 1.536713 1.168891 0.814168 0.423349 0.110363 1.748447 1.349910 1.017621 0.608206 0.251585 1.903444 1.523242 1.172189 0.823841 0.506713 0.183893 1.831343 1.501914 1.149011 0.819193 0.430480 0.163363 1.805199 1.438522 1.132536 0.781460 0.448314 0.127512 1.862581 1.509353 1.224561 0.896063 0.553453 0.254762 1.925595 1.643803 1.339427 1.037169 0.710621 0.405600 0.112820 1.812964 1.576466 1.219579 0.939945 0.623158 0.408122 0.058381 1.810732 1.480289 1.239333 0.955397 0.679810 0.432479 0.152149 1.857831 1.604402 1.369987 1.071656 0.860472 0.555984 0.357825 0.052491 1.782608 1.504203 1.323645 1.022147 0.808930 0.565308 0.270814 0.100417 1.781052 1.582796 1.363147 1.096527 0.906114 0.693702 0.418587 0.181851 0.008778 1.741727 1.541223 1.378275 1.127503 0.922320 0.714178 0.503781 0.301341 0.063159 1.849554 1.742668 1.453378 1.283569 1.101850 0.898783 0.701855 0.504535 0.288508 0.141853 -0.006942 1.748197 1.588463 1.415402 1.262931 1.012959 0.929614 0.707688 0.550617 0.407225 0.218334 0.086769 1.968351 1.764908 1.619779 1.424754 1.307361 1.090841 0.967215 0.818022 0.677391 0.550424 0.434105 0.269644 0.164782 -0.016829 1.874718 1.713104 1.637015 1.473708 1.431728 1.197034 1.127184 0.998943 0.871457 0.727005 0.651372 0.501426 0.379072 0.303905 0.169657 0.041911 1.954627 1.878256 1.786257 1.657572 1.629688 1.501361 1.445108 1.400006 1.280220 1.172913 1.086706 1.020397 0.870672 0.832976 0.732699 0.746008 0.641646 0.525746 0.517674 0.446468 0.405538 0.224617 0.270770 0.177215 0.125287 0.009340 0.000130 -0.006935 1.950589 1.859621 1.794245 1.772157 1.764794 1.725580 1.643811 1.607587 1.601597 1.589900 1.507948 1.534513 1.455827 1.448792 1.423632 1.448201 1.451493 1.384562 1.401104 1.415334 1.401761 1.366662 1.387553 1.350532 1.318436 1.341996 1.368886 1.377838 1.384554 1.389811 1.381343 1.418413 1.472924 1.434287 1.444579 1.473899 1.449259 1.468727 1.510457 1.536559 1.567816 1.569796 1.662595 1.690932 1.720658 1.810972 1.815383 1.912638 1.886513 1.959782 -1.791612 0.053793 0.113610 0.165452 0.235895 0.309326 0.328636 0.432645 0.461226 0.498857 0.618106 0.670504 0.713825 0.787130 0.875930 0.946335 1.025869 1.042961 1.174177 1.305150 1.409628 1.451823 1.608802 1.670045 1.763083 1.859175 1.981266 0.036123 0.164770 0.246695 0.349794 0.471432 0.586620 0.737258 0.804566 0.959818 1.065672 1.217160 1.315100 1.446063 1.597353 1.676295 1.814676 1.963190 0.111128 0.207311 0.317848 0.451640 0.631289 0.766594 0.894948 1.060943 1.165827 1.368911 1.481914 1.640195 1.795468 -0.031611 0.162601 0.379016 0.508169 0.641151 0.845894 1.018307 1.215348 1.428140 1.566385 1.770011 1.943659 0.041081 0.299350 0.472217 0.646115 0.816234 1.062430 1.229984 1.352522 1.599802 1.736752 -0.027636 0.191010 0.373031 0.578997 0.823971 1.023332 1.254210 1.453883 1.643551 1.877343 0.136959 0.375695 0.578237 0.843461 1.091878 1.313783 1.565402 1.785868 -1.713877 0.199038 0.511477 0.714620 0.948958 1.155131 1.374123 1.703357 1.871897 0.184041 0.441048 0.693484 0.982198 1.190055 1.478497 1.755690 0.029916 0.313378 0.555647 0.800057 1.083755 1.364618 1.610351 1.913254 0.209825 0.453654 0.810047 1.121726 1.407826 1.707998 0.009843 0.315203 0.614881 0.938695 1.209520 1.544918 1.851380 0.139278 0.499347 0.748538 1.073849 1.396578 1.655736 -0.011377 0.332567 0.714551 1.029316 1.350407 1.701323 0.089175)
+ 33.312987 #(0.000000 0.245620 0.594070 0.993244 1.356033 1.685653 0.069000 0.451407 0.793949 1.189756 1.583611 1.936740 0.307966 0.750254 1.046097 1.461381 1.817801 0.239575 0.535587 0.941354 1.335627 1.752103 0.086517 0.552193 0.907399 1.307802 1.649828 0.098023 0.472781 0.877032 1.281171 1.744731 0.206176 0.594599 1.015077 1.388513 1.860281 0.249945 0.617864 1.091536 1.508009 1.955727 0.360796 0.830886 1.261918 1.710392 0.107950 0.585800 1.045591 1.439015 1.903384 0.323186 0.780437 1.268971 1.723215 0.124888 0.581101 1.048253 1.439607 1.933997 0.417716 0.899561 1.335485 1.848532 0.334663 0.857287 1.273142 1.755604 0.248494 0.685341 1.220335 1.726791 0.172966 0.638438 1.171457 1.643657 0.137927 0.622784 1.087202 1.601573 0.097665 0.580076 1.119965 1.654714 0.151225 0.711552 1.195553 1.701362 0.278096 0.779493 1.314554 1.814910 0.289844 0.849030 1.371576 1.911846 0.439865 0.970401 1.497619 0.045213 0.603689 1.167912 1.698900 0.261970 0.808003 1.338865 1.852957 0.435906 0.992534 1.561300 0.120221 0.633349 1.252673 1.821810 0.398917 0.961498 1.507833 0.124282 0.729065 1.266525 1.838245 0.409175 1.054523 1.582086 0.182199 0.813690 1.390169 0.005898 0.568908 1.185527 1.806085 0.391477 0.989942 1.615288 0.214532 0.783730 1.384100 -0.003794 0.604510 1.237824 1.859862 0.529053 1.129613 1.745848 0.418896 1.019865 1.621137 0.268430 0.904173 1.535657 0.163453 0.861544 1.488530 0.135734 0.775948 1.390943 0.039754 0.664547 1.354685 -0.028610 0.675962 1.344514 0.018571 0.727632 1.360700 0.013292 0.672315 1.354575 -0.006699 0.652661 1.362057 0.018276 0.681309 1.415159 0.079441 0.789229 1.488212 0.154249 0.841137 1.544560 0.214288 0.942359 1.658661 0.333307 1.050105 1.747031 0.479388 1.231301 1.959859 0.647190 1.339465 0.013700 0.757581 1.494809 0.232862 0.985132 1.682214 0.444419 1.145617 1.877619 0.543423 1.297068 0.091320 0.839024 1.601751 0.331718 1.039341 1.818864 0.558065 1.340931 0.080830 0.789346 1.561045 0.367645 1.107295 1.899536 0.650079 1.408334 0.166319 0.927733 1.742220 0.475025 1.326509 0.054941 0.854366 1.633647 0.428557 1.255356 0.031903 0.794300 1.569658 0.347203 1.157964 0.001962 0.796854 1.567293 0.396482 1.189757 -0.008106 0.837586 1.630862 0.454454 1.264593 0.060732 0.920625 1.739974 0.563169 1.391070 0.200565 1.059753 1.893855 0.715311 1.575838 0.413981 1.215929 0.023743 0.892108 1.784084 0.626765 1.497596 0.322039 1.174496 0.049986 0.913952 1.787366 0.663359 1.478961 0.335208 1.200058 0.072876 0.975777 1.818295 0.671277 1.557677 0.447539 1.310286 0.220028 1.112870 0.009624 0.844639 1.748246 0.659736 1.574661 0.451103 1.356613 0.275522 1.150919 0.047494 0.927674 1.825410 0.736946 1.705372 0.640601 1.525395 0.415318 1.338476 0.311509 1.218251 0.139566 1.081362 -0.015539 0.935421 1.856417 0.822725 1.719153 0.674937 1.626224 0.551378 1.476521 0.469364 1.442601 0.369336 1.318419 0.262848 1.237223 0.178206 1.137511 0.133407 1.069565 0.033714 0.984379 -0.002865 0.937693 1.889142 0.932074 1.893078 0.824857 1.831410 0.884383 1.820486 0.753326 1.791134 0.784114 1.801162 0.750625 1.767926 0.801194 1.785168 0.745881 1.771903 0.791357 1.785238 0.807297 1.811065 0.838130 1.873621 0.877233 1.880007 0.923473 -0.015462 0.954034 0.028755 1.055407 0.067156 1.090358 0.110712 1.146620 0.178886 1.265859 0.279883 1.350609 0.370102 1.423833 0.466552 1.598594 0.591304 1.644676 0.775438 1.782560 0.821437 1.894469 0.969079 0.059950 1.108571 0.188568 1.258003 0.320949 1.430344 0.526719 1.597117 0.681559 1.712648 0.854649 1.943309 1.038257 0.172976 1.249920 0.337231 1.459043 0.492556 1.597245 0.739643 1.846911 0.983049 0.058393 1.190420 0.321642 1.359264 0.529707 1.673528 0.805052 1.907847 1.040345 0.152967 1.299029 0.430637 1.603657 0.708670 1.822878 1.009316 0.150207 1.245046 0.414479 1.575346 0.773611 1.899665 1.064893 0.219479 1.355968 0.495539 1.673411 0.831043 0.008241 1.169837 0.315383 1.502332 0.653241 1.852646 1.020665 0.227922 1.440203 0.580987 1.750612 0.969223 0.118308 1.298710 0.561188 1.734609 0.922195 0.112071 1.345591 0.552323 1.739543 0.936535 0.128447 1.395206 0.610149 1.779381 1.015647 0.223861 1.464323 0.685975 1.907902 1.118706 0.364434 1.635491 0.879552 0.066596 1.292478 0.549934 1.782093 1.012554 0.273834 1.510761 0.758848 0.027579 1.270560 0.491220 1.730130 1.020153 0.262972 1.520603 0.798358 0.042763 1.308930 0.614861 1.878953 1.150218 0.430775 1.679982 1.007950 0.299921 1.547209 0.825040 0.167823 1.447169 0.701762 -0.027437 1.273281 0.602596 1.866503 1.195790 0.521145 1.765231 1.096892 0.388116 1.706773 1.060917 0.320877 1.606078 0.959081 0.283246 1.579188 0.933456 0.280185 1.575692 0.915228 0.289425 1.568904 0.933588 0.269053 1.579675 0.969659 0.290014 1.619713 0.997304 0.310120 1.659580 1.002139 0.428103 1.759122 1.059964 0.414811 1.800052 1.181336 0.579970 1.927366 1.271896 0.655532 0.051582 1.405342 0.746920 0.170258 1.552078 0.971127 0.317641 1.683694 1.097424 0.468424 1.824585 1.287204 0.670969 0.063198 1.466967 0.895146 0.278999 1.714319 1.097999 0.541399 1.935799 1.345107 0.742561 0.166023 1.585333 1.012861 0.434361 1.842075 1.284792 0.705225 0.111810 1.618426 1.023870 0.486480 1.886752 1.345500 0.735948 0.268685 1.683551 1.146656 0.578303 0.020799 1.498142 0.923964 0.407956 1.883118 1.374800 0.803660 0.261075 1.731671 1.184056 0.696696 0.171675 1.606134 1.121247 0.621541 0.096551 1.554606 1.048775 0.565846 0.010324 1.532594 0.982387 0.495693 0.017585 1.523164 1.041569 0.503303 0.026491 1.534057 1.038801 0.580028 0.065671 1.582336 1.102347 0.654729 0.166547 1.660632 1.195867 0.750077 0.241435 1.795346 1.303191 0.850627 0.400181 1.904981 1.507208 0.984852 0.527508 0.094946 1.628379 1.238684 0.751116 0.320272 1.871951 1.435815 1.009643 0.587940 0.127291 1.632081 1.249707 0.786841 0.396586 1.983885 1.521556 1.182927 0.721927 0.288495 1.852345 1.403844 1.028921 0.625161 0.197016 1.813802 1.407017 0.995210 0.629578 0.195817 1.821985 1.368264 1.003610 0.632196 0.270360 1.859339 1.458203 1.103772 0.665415 0.360177 1.949726 1.538436 1.168165 0.815511 0.427741 0.105280 1.750259 1.343970 1.018126 0.606884 0.254558 1.903892 1.519414 1.174834 0.824188 0.506025 0.186732 1.830530 1.500591 1.149255 0.818351 0.436365 0.165809 1.808370 1.438295 1.130244 0.778949 0.452846 0.126806 1.864961 1.512718 1.226321 0.893868 0.550626 0.252937 1.923637 1.646516 1.341053 1.039108 0.706461 0.411676 0.116331 1.809744 1.574906 1.215844 0.941966 0.625420 0.410630 0.060602 1.812881 1.481082 1.240637 0.952196 0.681360 0.430085 0.152151 1.859639 1.605417 1.366014 1.067159 0.863978 0.558038 0.357660 0.051830 1.783888 1.503578 1.322138 1.020737 0.810556 0.559932 0.267367 0.103071 1.780159 1.581071 1.360441 1.095420 0.903149 0.692076 0.414614 0.182832 0.006210 1.746620 1.543518 1.374810 1.128512 0.921830 0.707900 0.500497 0.302870 0.067827 1.851488 1.740641 1.451757 1.279369 1.101882 0.896330 0.699670 0.508273 0.287828 0.139242 -0.006074 1.747945 1.590500 1.417716 1.265440 1.010563 0.930771 0.710017 0.547938 0.411531 0.217773 0.082066 1.971434 1.765164 1.615336 1.417687 1.307306 1.093573 0.968006 0.818483 0.680818 0.549602 0.434567 0.271617 0.162596 -0.014348 1.872573 1.715416 1.638375 1.471633 1.432493 1.198976 1.120894 1.004965 0.870321 0.724880 0.651404 0.500974 0.377907 0.304664 0.168064 0.038305 1.958417 1.877860 1.784870 1.653018 1.626814 1.501209 1.444248 1.396800 1.280671 1.175324 1.079045 1.015869 0.872503 0.826614 0.732188 0.746363 0.640703 0.524367 0.519609 0.446349 0.406656 0.228177 0.266871 0.177119 0.128318 0.009362 0.000059 -0.004582 1.949133 1.859733 1.793182 1.766483 1.765134 1.724365 1.644334 1.603999 1.601218 1.591810 1.509564 1.537786 1.455123 1.448938 1.417436 1.447717 1.451978 1.387495 1.399757 1.412382 1.401086 1.367178 1.387019 1.350888 1.316914 1.342563 1.365544 1.381441 1.384140 1.393746 1.378491 1.420314 1.469783 1.431807 1.447912 1.470719 1.445803 1.466768 1.507049 1.534148 1.571145 1.566571 1.666162 1.694234 1.722589 1.810632 1.816152 1.914196 1.887313 1.955254 -1.795735 0.052928 0.113293 0.165638 0.233601 0.309933 0.328126 0.435372 0.465164 0.498815 0.615743 0.673798 0.713965 0.788593 0.876409 0.949677 1.026618 1.044184 1.171844 1.303735 1.407072 1.448717 1.603005 1.668528 1.766020 1.860798 1.981595 0.034035 0.165090 0.242994 0.343650 0.475200 0.582782 0.739693 0.801623 0.958646 1.063422 1.216565 1.313173 1.444244 1.598786 1.681003 1.815397 1.959584 0.117844 0.208548 0.312945 0.444946 0.627835 0.768394 0.895305 1.056837 1.168527 1.366982 1.483265 1.636359 1.797799 -0.033532 0.163626 0.378244 0.507089 0.643744 0.842548 1.015648 1.218392 1.428272 1.565872 1.767901 1.944187 0.043898 0.299771 0.470482 0.644750 0.822692 1.064588 1.226986 1.356246 1.603982 1.735496 -0.030482 0.189870 0.371806 0.579122 0.824443 1.024405 1.252881 1.455604 1.645960 1.876038 0.140561 0.372045 0.581771 0.838950 1.091326 1.314788 1.567830 1.787257 -1.716292 0.200457 0.516311 0.712636 0.954187 1.155404 1.375705 1.705620 1.875168 0.187848 0.442062 0.696799 0.979618 1.188772 1.480531 1.753987 0.033847 0.315304 0.551803 0.798112 1.086562 1.366613 1.604448 1.915321 0.211256 0.454266 0.812688 1.122400 1.405463 1.705650 0.009014 0.313027 0.618316 0.936529 1.207009 1.546322 1.852955 0.138508 0.494534 0.745905 1.074264 1.397649 1.659163 -0.012337 0.332709 0.713011 1.029735 1.352259 1.701844 0.088958)
)
;;; 2048 all -------------------------------------------------------------------------------- (45.254)
(vector 2048 89.570060996356 #r(0 1 1 0 0 1 1 0 0 1 1 1 0 0 0 1 0 0 0 0 1 1 0 1 0 0 1 1 1 0 1 0 1 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 1 0 1 0 0 0 1 1 1 1 0 0 0 0 1 0 1 1 1 1 0 1 0 0 1 0 1 0 0 1 0 1 1 1 0 0 1 0 1 0 1 0 1 1 0 1 0 0 1 0 0 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 0 0 1 1 1 1 1 1 1 1 0 1 0 0 0 0 1 0 1 0 1 0 1 1 1 1 1 0 1 0 0 0 1 1 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 0 1 0 1 1 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 1 0 1 0 0 1 1 0 0 1 1 0 1 0 0 1 1 1 1 0 1 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 1 0 1 0 1 1 0 1 1 1 0 0 1 1 0 1 1 1 0 1 1 0 1 0 1 1 0 1 0 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 1 0 1 1 0 0 1 0 0 1 1 1 0 1 0 1 0 0 1 1 0 1 1 1 1 0 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 0 0 1 1 0 1 0 1 1 1 0 1 1 0 1 0 1 0 1 1 1 1 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 1 1 0 0 1 1 1 0 1 0 0 1 1 0 1 0 1 0 1 0 0 1 1 0 0 1 0 1 1 1 1 0 0 1 0 1 0 1 0 0 1 0 1 1 0 0 1 0 1 1 1 0 0 1 0 1 0 1 1 1 0 1 1 1 1 1 1 0 0 1 0 1 1 1 0 1 0 1 1 0 1 0 1 0 0 1 1 1 1 0 0 0 1 1 1 1 1 0 0 1 0 0 0 0 0 1 1 1 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 1 0 1 1 1 1 0 0 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0 1 1 0 1 0 0 1 1 0 0 1 1 1 0 0 1 1 1 1 1 1 1 1 0 1 0 1 0 0 1 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 1 0 1 1 1 0 0 1 1 0 1 0 1 0 0 1 0 0 1 1 0 1 0 1 0 0 1 0 0 1 1 0 0 0 0 1 1 0 1 0 1 1 0 0 0 1 1 1 1 1 1 0 0 1 0 1 1 1 1 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 1 1 0 0 1 0 1 1 0 1 1 0 1 0 0 0 1 0 0 0 0 0 1 1 1 1 0 0 0 1 1 0 0 1 0 0 1 1 0 0 0 0 0 1 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 1 1 1 0 0 1 1 1 1 0 1 0 1 0 1 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 1 0 1 1 1 1 0 1 1 0 1 0 1 1 1 0 0 1 0 1 1 0 0 0 0 1 1 1 0 1 1 1 1 1 0 1 0 0 0 0 0 1 1 0 0 1 0 1 0 1 1 0 0 1 0 0 0 1 0 1 0 0 1 0 1 0 0 1 1 1 0 0 0 0 0 1 1 0 1 0 1 0 1 0 0 0 0 1 0 0 1 1 0 0 1 0 1 1 1 1 1 0 0 1 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 1 1 0 1 1 0 1 0 0 1 0 1 1 1 0 1 1 1 0 1 1 0 0 0 0 0 0 1 1 1 1 1 1 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 0 1 0 0 1 1 0 0 1 1 1 1 1 1 0 0 0 0 1 0 0 1 0 1 0 1 1 1 0 1 1 0 0 1 1 0 1 0 0 1 1 1 0 0 0 1 1 1 0 0 0 0 1 0 0 1 0 0 1 0 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 0 1 1 0 1 1 1 1 0 1 0 1 0 0 1 0 1 0 1 1 1 1 0 1 1 1 0 0 0 1 1 0 1 0 0 1 0 0 1 0 1 1 1 0 0 1 0 1 0 1 1 1 0 1 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 0 1 0 0 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 0 0 1 1 0 1 1 1 1 1 1 0 1 1 1 1 0 1 0 0 0 0 1 1 0 0 1 0 0 1 0 1 0 1 1 0 0 1 1 0 1 0 1 0 0 1 1 1 1 1 1 0 1 1 0 1 1 0 0 1 1 1 1 0 0 1 0 1 0 0 1 0 0 1 1 1 1 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 1 1 0 0 1 1 0 1 0 1 1 0 1 0 0 1 1 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 1 0 0 1 1 0 0 1 1 1 0 0 1 0 1 1 0 0 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 0 1 1 0 1 1 1 1 1 0 1 1 1 0 1 1 0 1 0 0 1 1 0 1 1 1 0 1 1 1 0 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 0 0 0 0 0 1 1 1 1 0 0 1 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 0 0 0 1 0 0 1 0 0 1 1 0 0 1 0 0 1 0 1 1 1 0 1 0 0 0 0 1 0 1 0 1 1 1 0 1 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 0 0 0 1 0 0 1 1 0 1 1 0 1 1 0 1 0 1 0 1 1 1 1 1 0 1 1 0 0 1 1 1 0 1 1 1 0 1 0 1 0 0 1 0 0 1 0 0 1 1 0 1 1 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 1 1 1 1 0 1 0 1 0 1 0 1 1 0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 0 0 1 0 0 1 1 1 1 0 0 0 0 0 0 1 0 1 0 1 1 1 0 0 1 0 1 1 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 1 0 1 1 0 0 0 0 0 0 1 1 0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 0 1 0 1 1 0 1 0 0 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 0 0 1 0 1 1 1 0 0 1 0 0 1 1 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 0 0 1 1 0 1 1 1 1 0)
;; from (try-all :all 2048 2049 1.0476749041086 0.34832901677121) = 55.7655 start for next
- 49.567718 #(0.000000 0.432867 1.592315 1.323995 1.788301 0.942703 0.643415 1.050236 0.283212 0.025371 0.428449 1.632606 1.318706 1.821043 0.939018 0.684636 1.164175 0.268794 0.039599 0.533669 1.585257 1.363257 1.842904 0.987896 0.776376 1.211229 0.311262 0.081147 0.587620 1.697268 1.455152 1.890902 1.056202 0.860299 1.271502 0.410643 0.218955 0.665895 1.768322 1.534310 0.021065 1.154424 0.897564 1.401258 0.524389 0.294853 0.802190 1.876110 1.692267 0.117786 1.244986 1.027217 1.509404 0.625436 0.412628 0.869022 0.040947 1.773072 0.261835 1.419153 1.172292 1.617825 0.833745 0.564387 1.040956 0.191258 -0.005697 0.435074 1.585421 1.377170 1.781934 1.001378 0.720411 1.225520 0.365353 0.112682 0.657016 1.800547 1.557815 0.052624 1.166032 0.965540 1.457945 0.586661 0.420974 0.868779 1.977505 1.789969 0.222728 1.420033 1.232779 1.685312 0.821134 0.626689 1.102656 0.224021 0.050011 0.530477 1.654985 1.489725 1.932123 1.092316 0.858142 1.371428 0.504196 0.305923 0.828349 1.948388 1.703840 0.245202 1.364354 1.174382 1.684899 0.783392 0.596762 1.107230 0.224881 0.067556 0.499076 1.693985 1.535059 0.001446 1.121976 0.925122 1.422024 0.581382 0.372407 0.884035 0.023342 1.851392 0.347539 1.491971 1.313966 1.779852 0.904034 0.768947 1.228624 0.348956 0.160673 0.722793 1.833992 1.643292 0.152413 1.292406 1.136257 1.585421 0.781877 0.604704 1.024490 0.200554 0.035600 0.546132 1.692718 1.473712 0.008955 1.165047 0.980141 1.473826 0.641637 0.464502 0.915569 0.114853 1.943700 0.469704 1.612993 1.411397 1.906676 1.100118 0.911825 1.445873 0.567498 0.415857 0.903867 0.068013 1.884402 0.360331 1.525704 1.394829 1.865430 1.084623 0.904061 1.343547 0.572634 0.336476 0.840254 0.057560 1.921132 0.420243 1.569849 1.376238 1.893187 1.053390 0.899818 1.382426 0.525775 0.389960 0.916373 0.054836 1.948715 0.432928 1.523038 1.393896 1.928017 1.101155 0.932227 1.421499 0.614365 0.444030 0.957529 0.097300 0.019635 0.491025 1.638886 1.498744 0.034818 1.185753 1.056856 1.570556 0.739019 0.523406 1.087860 0.280158 0.104363 0.635269 1.815726 1.629247 0.177041 1.336885 1.151719 1.737154 0.869999 0.719541 1.256829 0.410003 0.257297 0.726793 1.963292 1.804567 0.360523 1.537892 1.337141 1.845482 1.060339 0.908329 1.418199 0.611199 0.477266 0.989390 0.177001 0.054670 0.520057 1.738504 1.609601 0.124236 1.313026 1.158577 1.696629 0.893306 0.689664 1.250976 0.487865 0.276512 0.839095 -0.014723 1.880546 0.423107 1.577895 1.439623 1.968475 1.125305 1.046998 1.573048 0.745410 0.592232 1.102023 0.310229 0.178257 0.690580 1.865723 1.744379 0.239279 1.467042 1.318596 1.883647 1.038312 0.927627 1.486932 0.680660 0.528845 1.021516 0.250611 0.134403 0.680237 1.868863 1.712085 0.281125 1.426813 1.325292 1.883391 1.052708 0.925813 1.465972 0.681405 0.566325 1.066164 0.292256 0.173180 0.702438 1.906843 1.758433 0.303613 1.502706 1.410426 1.901011 1.083045 1.016817 1.575076 0.722087 0.630566 1.178939 0.388884 0.223267 0.769346 -0.008647 1.890965 0.443173 1.612405 1.444953 0.070035 1.310450 1.138086 1.700130 0.878469 0.754757 1.294507 0.551829 0.381372 0.960337 0.153258 0.054237 0.592285 1.785320 1.682326 0.247085 1.422883 1.309805 1.871557 1.121328 1.001343 1.516176 0.793449 0.649587 1.185230 0.409084 0.279917 0.848286 0.136926 1.942882 0.504428 1.754844 1.581813 0.130538 1.345934 1.261008 1.816416 1.039395 0.962109 1.489486 0.713130 0.640676 1.145434 0.395000 0.307485 0.836015 0.084223 1.959645 0.467558 1.777460 1.650785 0.151930 1.402174 1.314624 1.907809 1.134452 1.002707 1.554847 0.785786 0.681133 1.250964 0.481903 0.350188 0.900010 0.157250 0.035344 0.611498 1.834619 1.717868 0.336619 1.547099 1.424633 -0.027761 1.251422 1.108495 1.703278 0.929838 0.829866 1.431017 0.657186 0.508434 1.149093 0.368795 0.232921 0.837188 0.037339 1.956086 0.493796 1.783520 1.678399 0.258099 1.487390 1.376483 1.954082 1.172634 1.075547 1.643650 0.888512 0.764542 1.358131 0.611813 0.510833 1.066316 0.367326 0.256250 0.814523 0.082059 1.983561 0.551870 1.800002 1.689557 0.243377 1.496090 1.461841 0.037241 1.268039 1.199521 1.786369 0.995714 0.933699 1.492500 0.783061 0.634712 1.224586 0.501188 0.389373 1.018480 0.252584 0.135552 0.772629 -0.002227 1.959295 0.504878 1.737503 1.655076 0.234820 1.456420 1.427717 0.005719 1.247486 1.195125 1.786480 1.038846 0.946696 1.521820 0.768202 0.721783 1.274051 0.568343 0.469325 1.079628 0.326091 0.217077 0.882315 0.093790 0.035595 0.579972 1.858356 1.782383 0.338593 1.626232 1.565866 0.150354 1.389893 1.341040 1.952591 1.195759 1.108814 1.721577 0.932533 0.940764 1.478577 0.775545 0.697512 1.295069 0.550814 0.470192 1.081738 0.367690 0.242133 0.869829 0.122597 0.036062 0.647288 1.949491 1.856569 0.456770 1.689870 1.681971 0.270299 1.526378 1.473801 0.085664 1.320890 1.264940 1.856977 1.130485 1.071360 1.689398 0.947308 0.917854 1.542225 0.800455 0.751407 1.317878 0.654332 0.527805 1.174615 0.456795 0.391118 0.973215 0.208164 0.162768 0.773930 0.035787 -0.018162 0.636843 1.895370 1.829842 0.461273 1.752415 1.695237 0.324348 1.549211 1.505015 0.104885 1.366286 1.347033 1.945153 1.223066 1.209878 1.778483 1.030392 1.008268 1.676055 0.907042 0.886059 1.485547 0.754779 0.729864 1.305490 0.614361 0.557204 1.148555 0.432620 0.399513 1.059758 0.336187 0.306871 0.917328 0.195607 0.144377 0.757972 0.042932 -0.025403 0.654044 1.904409 1.878542 0.484407 1.795905 1.720086 0.369889 1.611880 1.577601 0.212774 1.489451 1.461584 0.078125 1.377544 1.316192 1.973728 1.252602 1.219313 1.887717 1.138539 1.124115 1.749584 1.008718 0.972502 1.650776 0.936705 0.897271 1.483349 0.839204 0.803267 1.383351 0.666797 0.691959 1.289189 0.594447 0.549014 1.146559 0.532234 0.450430 1.054646 0.377082 0.379950 0.983679 0.285356 0.260365 0.892783 0.180530 0.155008 0.799971 0.119070 0.063418 0.700631 -0.024320 0.000170 0.630423 1.927514 1.906035 0.526315 1.822263 1.825919 0.415292 1.740026 1.766881 0.335748 1.680886 1.646165 0.305899 1.614131 1.582157 0.242276 1.541161 1.491496 0.149009 1.453356 1.377175 0.081163 1.397028 1.349297 -0.011181 1.311184 1.306557 1.929038 1.230725 1.251112 1.870756 1.183126 1.202330 1.820339 1.154435 1.130646 1.743670 1.062827 1.022731 1.753544 1.044073 1.013880 1.657691 1.025048 0.945797 1.608786 0.953184 0.897629 1.564752 0.884660 0.912465 1.552122 0.891748 0.880727 1.498790 0.881046 0.785958 1.466080 0.816359 0.814253 1.422614 0.752222 0.762901 1.421287 0.714778 0.724042 1.403352 0.733653 0.671688 1.413019 0.640957 0.651266 1.358207 0.689404 0.653890 1.258220 0.661205 0.621518 1.301511 0.608917 0.595871 1.270073 0.606471 0.610460 1.255754 0.599099 0.606736 1.272585 0.589569 0.602911 1.242558 0.567288 0.574684 1.248498 0.547464 0.580687 1.248524 0.545849 0.574265 1.243398 0.563722 0.590784 1.303067 0.596378 0.599196 1.285863 0.574011 0.620349 1.267366 0.562971 0.616460 1.243064 0.596590 0.640258 1.292667 0.620786 0.679497 1.288162 0.665417 0.653482 1.326572 0.693112 0.675977 1.348536 0.691835 0.747129 1.379145 0.761967 0.742459 1.416156 0.785349 0.778842 1.424212 0.795212 0.800323 1.486389 0.838794 0.827984 1.512202 0.908388 0.871184 1.542758 0.885313 0.898872 1.638107 0.949651 0.961518 1.678278 0.986634 1.018410 1.678263 1.002837 1.095772 1.783440 1.108401 1.076599 1.796125 1.146088 1.167775 1.816550 1.227047 1.207885 1.925869 1.302311 1.252608 -0.033560 1.332917 1.372627 0.028810 1.451612 1.418497 0.130595 1.489658 1.508959 0.175720 1.549544 1.577506 0.265334 1.598754 1.655386 0.303636 1.682920 1.705085 0.422937 1.763758 1.808759 0.487597 1.819959 1.862534 0.535522 1.946809 -0.115040 0.665727 0.023440 0.070347 0.775932 0.128014 0.196216 0.864642 0.216597 0.251771 0.984063 0.303565 0.389204 1.026850 0.448606 0.433946 1.150404 0.556464 0.544755 1.273544 0.632335 0.676696 1.365522 0.745089 0.790602 1.470979 0.821280 0.853694 1.597705 0.968043 0.975805 1.674665 1.077440 1.127454 1.852922 1.212641 1.210402 1.962614 1.303429 1.316053 0.085094 1.447808 1.478256 0.169251 1.574497 1.634558 0.360911 1.688192 1.728019 0.453907 1.814498 1.871393 0.547317 1.939141 1.980060 0.752858 0.075684 0.159658 0.827663 0.212550 0.303773 0.950489 0.357186 0.409593 1.123641 0.513729 0.535927 1.304278 0.654770 0.715276 1.455028 0.770911 0.875458 1.545623 0.969556 0.999326 1.730343 1.091944 1.221903 1.897206 1.279698 1.350940 0.033121 1.429331 1.444500 0.214645 1.624520 1.675381 0.342678 1.741234 1.839710 0.569067 1.948230 0.014741 0.698607 0.131538 0.151472 0.884075 0.272063 0.340173 1.096109 0.482874 0.517643 1.264982 0.675270 0.687646 1.422498 0.814473 0.927878 1.655072 1.068595 1.094027 1.815286 1.225952 1.260627 0.017518 1.420732 1.474908 0.221079 1.588411 1.648864 0.402394 1.777837 1.840849 0.625734 -0.013551 0.070997 0.793117 0.190649 0.284534 1.004964 0.437911 0.489005 1.218364 0.602492 0.683422 1.464901 0.844705 0.911894 1.639234 1.028938 1.131046 1.851461 1.268449 1.311957 0.057751 1.468700 1.529995 0.288719 1.690772 1.761890 0.472035 1.930738 -0.013466 0.739963 0.165160 0.208786 0.994602 0.366476 0.464112 1.182693 0.636295 0.685026 1.456920 0.844690 0.909542 1.694912 1.067458 1.181710 1.896020 1.331547 1.405093 0.149419 1.644291 1.679491 0.384699 1.817854 1.890845 0.639752 0.071469 0.176258 0.919643 0.272564 0.419048 1.133077 0.581062 0.644372 1.397392 0.836011 0.922411 1.687262 1.141512 1.208415 1.976298 1.393176 1.445999 0.156886 1.639451 1.717861 0.452034 1.880223 0.020039 0.710467 0.191458 0.199131 1.008126 0.419293 0.531426 1.302951 0.702043 0.804382 1.530971 0.954520 1.055688 1.859776 1.306332 1.378402 0.138346 1.530246 1.649136 0.425226 1.840371 1.950895 0.700119 0.117848 0.243983 0.998337 0.485082 0.495644 1.262421 0.732943 0.825281 1.562148 1.044597 1.134859 1.913786 1.329348 1.407982 0.210241 1.639570 1.724221 0.485359 1.936637 0.022416 0.780234 0.222800 0.379146 1.116670 0.562320 0.646806 1.461100 0.840574 0.975096 1.751925 1.215860 1.314689 0.085684 1.505585 1.627253 0.425272 1.825694 1.933635 0.732471 0.154002 0.293364 1.026476 0.529439 0.620517 1.349346 0.791393 0.981595 1.732717 1.162814 1.225302 0.032429 1.513773 1.592540 0.424285 1.837515 1.932787 0.696363 0.191608 0.297201 1.088546 0.526024 0.647177 1.416664 0.853591 1.001064 1.787249 1.217712 1.365926 0.134884 1.560031 1.707163 0.491278 1.939608 0.026142 0.825490 0.317127 0.432137 1.195215 0.647750 0.771485 1.535312 0.952377 1.145164 1.979879 1.386545 1.494030 0.242720 1.734870 1.909421 0.657965 0.105480 0.241113 1.055904 0.511362 0.606258 1.419393 0.863439 0.976471 1.804572 1.254523 1.393261 0.156202 1.623783 1.773755 0.556200 0.012104 0.102034 0.957510 0.383106 0.558804 1.328628 0.782936 0.931226 1.712243 1.224120 1.337231 0.125210 1.547047 1.739529 0.510601 0.052040 0.125175 0.904023 0.374677 0.569617 1.339044 0.817825 0.963857 1.765379 1.223730 1.352932 0.124896 1.578329 1.763732 0.590983 0.058356 0.175690 0.983226 0.431599 0.619198 1.384475 0.890644 1.022662 1.823770 1.277398 1.414323 0.246027 1.745775 1.841464 0.633812 0.150686 0.265666 1.101643 0.557667 0.757426 1.529067 1.026131 1.147606 1.946928 1.439934 1.588390 0.427026 1.863237 0.041843 0.827397 0.317282 0.467943 1.262095 0.770564 0.903911 1.707068 1.197056 1.353472 0.157130 1.644999 1.795871 0.592263 0.101480 0.281064 1.107924 0.556122 0.665051 1.514588 0.975568 1.214099 1.960652 1.475473 1.655324 0.415803 1.950937 0.141089 0.905192 0.433424 0.554192 1.404809 0.831603 1.008522 1.856348 1.331058 1.485868 0.315647 1.815809 0.002424 0.798849 0.288136 0.481137 1.323716 0.759501 0.934442 1.789036 1.266893 1.370494 0.217484 1.720213 1.919463 0.723899 0.279695 0.397755 1.213550 0.696571 0.890358 1.736645 1.231543 1.417332 0.197845 1.741080 1.896170 0.753298 0.211116 0.352101 1.189152 0.687416 0.826788 1.674516 1.203169 1.368921 0.227999 1.703726 1.892471 0.730212 0.258617 0.421947 1.253927 0.723675 0.894852 1.780759 1.244874 1.374194 0.270281 1.786799 1.924311 0.787792 0.286652 0.422414 1.333642 0.808115 0.983879 1.840926 1.336161 1.553946 0.371662 1.894203 0.031162 0.873908 0.422052 0.586318 1.373886 0.935990 1.074467 1.960591 1.422997 1.641904 0.497239 0.007073 0.173833 1.064348 0.554953 0.715806 1.604883 1.101410 1.263671 0.160544 1.626125 1.849808 0.621828 0.159765 0.396942 1.257864 0.728289 0.977198 1.782265 1.323199 1.476814 0.383227 1.860638 0.066505 0.875510 0.419639 0.592848 1.462867 0.999254 1.162814 0.047296 1.554802 1.743336 0.580100 0.114118 0.307921 1.210498 0.685105 0.901542 1.754068 1.284226 1.473677 0.317399 1.833581 0.067373 0.938188 0.414790 0.612327 1.463908 1.036784 1.215437 0.093746 1.580122 1.813987 0.627014 0.181787 0.397287 1.253371 0.802703 0.974485 1.878884 1.346846 1.564781 0.444509 1.911658 0.150029 1.015281 0.595721 0.761125 1.640760 1.167717 1.372912 0.200176 1.785258 -0.019662 0.840630 0.369426 0.587060 1.465713 1.021618 1.203091 0.040141 1.602672 1.800614 0.698057 0.247455 0.379317 1.303082 0.846768 1.017198 1.888623 1.465776 1.638269 0.541981 0.082494 0.285198 1.148968 0.705085 0.912920 1.802423 1.357456 1.532562 0.461763 1.959510 0.188507 1.029767 0.569579 0.826009 1.710408 1.244470 1.465600 0.305543 1.879511 0.140560 0.968833 0.509426 0.742378 1.595553 1.166937 1.391349 0.251220 1.804569 0.065483 0.904416 0.467821 0.675549 1.578415 1.102664 1.363505 0.225789 1.744895 0.006398 0.881609 0.439267 0.696361 1.578824 1.062765 1.333865 0.189103 1.764751 1.991878 0.885034 0.443513 0.696318 1.536554 1.147984 1.325871 0.207460 1.752430 -0.021946 0.928092 0.463239 0.697470 1.577903 1.110855 1.341102 0.235079 1.806741 0.037476 0.904080 0.507650 0.736964 1.620175 1.231259 1.392307 0.318665 1.877280 0.116842 0.978372 0.545913 0.769693 1.667961 1.283131 1.491074 0.424546 1.941070 0.197910 1.078564 0.633137 0.876361 1.807223 1.325766 1.611501 0.507095 0.124134 0.285335 1.237648 0.733340 0.978806 1.917702 1.533685 1.761848 0.630112 0.194523 0.428624 1.351718 0.919721 1.153829 0.062880 1.647141 1.887808 0.778596 0.339900 0.610463 1.475324 1.083130 1.334579 0.240549 1.812202 0.055999 0.973238 0.579286 0.807094 1.698750 1.228808 1.518635 0.430736 -0.012304 0.231054 1.209403 0.734779 1.038578 1.894830 1.498448 1.763986 0.657407 0.194521 0.485914 1.397948 0.988514 1.256110 0.153261 1.733640 1.992053 0.883045 0.443065 0.712486 1.633878 1.261009 1.474940 0.412344 -0.005277 0.267033 1.204129 0.726134 1.027350 1.958993 1.534647 1.774233 0.680617 0.314539 0.547491 1.449432 1.056656 1.382780 0.243879 1.840823 0.080001 1.022845 0.597784 0.872738 1.745699 1.382093 1.654893 0.544864 0.137355 0.415733 1.354930 0.924122 1.192702 0.160596 1.779323 0.027680 0.918930 0.526350 0.740720 1.741394 1.293016 1.580301 0.522582 0.148985 0.379137 1.271111 0.885268 1.161554 0.096769 1.727884 1.966293 0.905501 0.495623 0.749064 1.674483 1.271381 1.574377 0.486034 0.117247 0.354026 1.328065 0.969102 1.214717 0.194395 1.746610 -0.011926 0.972086 0.559529 0.831238 1.789798 1.390595 1.633953 0.642188 0.174475 0.493395 1.382830 1.026271 1.280363 0.200974 1.846777 0.115115 1.069072 0.652710 0.976859 1.891103 1.503908 1.795969 0.721397 0.315004 0.608687 1.595182 1.176729 1.447257 0.409452 -0.008371 0.314838 1.251449 0.874129 1.137144 0.109162 1.701645 0.014051 0.927713 0.575774 0.845669 1.784397 1.378207 1.683674 0.663238 0.278254 0.535506 1.483556 1.100153 1.457016 0.388883 0.005642 0.316097 1.207284 0.888972 1.128414 0.058575 1.729190 0.016896 0.963591 0.554187 0.867852 1.840929 1.453733 1.737448 0.632445 0.290099 0.615559 1.536348 1.165103 1.515835 0.452780 0.110661 0.369432 1.332977 0.980508 1.262246 0.221989 1.793856 0.136310 1.089617 0.696209 1.043272 1.992267 1.629651 1.912819 0.835810 0.540995 0.763069 1.769268 1.379271 1.666600 0.617625 0.266932 0.567664 1.553620 1.191093 1.449009 0.486150 0.105269 0.393769 1.344240 0.989875 1.268496 0.256408 1.909223 0.231907 1.208420 0.813732 1.116992 0.160912 1.753805 0.098769 1.030323 0.706213 0.963514 1.940588 1.623921 1.883706 0.859012 0.512713 0.828728 1.767054 1.408708 1.712574 0.655296 0.349156 0.645282 1.655359 1.247024 1.560644 0.595395 0.173306 0.503331 1.532382 1.117532 1.452275 0.421233 0.111605 0.389834 1.338474 1.003248 1.356157 0.328873 1.951186 0.256599 1.269061 0.952057 1.250685 0.230464 1.854952 0.199831 1.199646 0.829254 1.151579 0.141779 1.799156 0.135198 1.075152 0.740282 1.039186 0.038840 1.699937 0.039328 0.938138 0.683856 0.961632 1.946342 1.640662 1.960053 0.902599 0.592891 0.917501 1.942287 1.513528 1.845283 0.917328 0.519135 0.871603 1.848472 1.476078 1.823906 0.797781 0.499777 0.785745 1.824452 1.466051 1.818340 0.799165 0.467044 0.777651 1.772042 1.422136 1.762520 0.738261 0.400462 0.721746 1.731793 1.437157 1.750757 0.732094 0.438580 0.744346 1.796305 1.448744 1.773567 0.730097 0.434096 0.747319 1.785067 1.479070 1.763370 0.805637 0.487393 0.779616 1.819973 1.488783 1.832681 0.813767 0.505826 0.833425 1.858212 1.502633 1.851705 0.819234 0.522378 0.854397 1.897769 1.496096 1.849506 0.874322 0.582195 0.931231 1.880681 1.582342 1.908420 0.891883 0.600239 0.873954 1.945481 1.612615 1.975069 0.989682 0.654105 0.964289 -0.033283 1.680923 0.036407 1.061717 0.660894 1.067857 0.084996 1.774037 0.115802 1.149613 0.781168 1.165428 0.145114 1.821545 0.214019 1.233513 0.960694 1.300412 0.293985 1.936251 0.318657 1.335897 1.050699 1.368725 0.394256 0.069338 0.428718 1.495760 1.128420 1.503430 0.551211 0.258693 0.578947 1.607794 1.347069 1.700158 0.631741 0.350029 0.713138 1.719097 1.447040 1.777128 0.807703 0.560825 0.860972 1.892299 1.555448 1.958070 1.020335 0.656430 0.993913 0.054574 1.770096 0.072417 1.164607 0.874963 1.247577 0.213886 1.910705 0.337815 1.298213 0.997251 1.330676 0.412032 0.139185 0.409467 1.505135 1.259292 1.538564 0.588793 0.328973 0.648793 1.669944 1.400329 1.810945 0.824459 0.526764 0.862310 1.889120 1.613821 1.953223 0.985616 0.707986 1.076940 0.127569 1.819620 0.255010 1.256703 0.943536 1.288612 0.326366 0.016115 0.447524 1.466762 1.195710 1.507434 0.613095 0.266207 0.687339 1.722612 1.388605 1.857805 0.885634 0.587547 0.933374 -0.005388 1.693599 0.062846 1.146963 0.850164 1.245771 0.275554 1.937687 0.299011 1.431014 1.121367 1.475253 0.520718 0.242063 0.609886 1.707586 1.410361 1.821705 0.846212 0.556384 0.947359 -0.849897 1.713846 0.069565 1.108976 0.840501 1.227874 0.262847 0.054942 0.366844 1.418132 1.152965 1.554913 0.612241 0.355480 0.720332 1.758793 1.524871 1.892693 0.944797 0.665782 1.030720 0.086832 1.844454 0.230649 1.279426 1.037255 1.437346 0.459424 0.191795 0.622807 1.682771 1.382333 1.770397 0.856995 0.597453 0.997708 0.029755 1.824568 0.143040 1.204709 0.967982 1.370680 0.435315 0.168763 0.558103 1.637902 1.394735 1.743083 0.854087 0.621070 0.948249 0.028012)
+ 49.504011 #(0.000000 0.431787 1.592856 1.326984 1.783219 0.947549 0.649413 1.051888 0.282618 0.023887 0.432764 1.630683 1.317611 1.816758 0.938967 0.683765 1.170207 0.272307 0.040740 0.537368 1.585538 1.360924 1.847211 0.988472 0.774682 1.206752 0.313011 0.074280 0.585367 1.695142 1.452645 1.894157 1.061617 0.854525 1.267852 0.413595 0.222537 0.664421 1.771618 1.536178 0.020800 1.150710 0.897631 1.400826 0.528618 0.292904 0.799215 1.871898 1.687390 0.115510 1.249708 1.027376 1.503451 0.618390 0.413344 0.870798 0.036015 1.770099 0.258701 1.418768 1.169681 1.615991 0.827550 0.565289 1.037436 0.188490 -0.005315 0.431752 1.586770 1.381159 1.785137 1.002695 0.726445 1.221175 0.366445 0.113601 0.659479 1.801761 1.555532 0.049324 1.164355 0.965726 1.459615 0.582821 0.414480 0.863751 1.980168 1.788377 0.228687 1.421841 1.229890 1.681154 0.814464 0.625692 1.102447 0.225758 0.045595 0.523168 1.656501 1.486090 1.928814 1.094273 0.865743 1.370100 0.504395 0.309184 0.830448 1.948076 1.709275 0.242156 1.362168 1.173627 1.680913 0.778129 0.600868 1.110430 0.219569 0.069097 0.501574 1.696692 1.535749 0.004744 1.121017 0.925539 1.423891 0.581509 0.366264 0.881029 0.026578 1.847688 0.343168 1.491979 1.311077 1.777377 0.904643 0.764155 1.226783 0.349493 0.157488 0.721859 1.834886 1.644262 0.154865 1.288407 1.129406 1.591536 0.786622 0.606974 1.023166 0.198189 0.036334 0.546387 1.691583 1.473385 0.006268 1.161407 0.978275 1.468299 0.639584 0.460671 0.916956 0.114631 1.942619 0.468503 1.618531 1.407604 1.909180 1.101844 0.911293 1.442390 0.565852 0.421009 0.906543 0.070821 1.882528 0.354366 1.526220 1.395547 1.863840 1.080775 0.901640 1.341203 0.571141 0.331779 0.838777 0.057446 1.921739 0.419257 1.573225 1.379066 1.898094 1.049756 0.900705 1.383261 0.525295 0.390882 0.913560 0.052333 1.949812 0.434137 1.525811 1.395341 1.924956 1.097829 0.931764 1.426911 0.613470 0.449567 0.959956 0.093501 0.013693 0.488033 1.639192 1.501373 0.033540 1.183030 1.058422 1.567406 0.740919 0.523627 1.083969 0.277581 0.110269 0.641547 1.820102 1.625939 0.176355 1.337400 1.157253 1.738828 0.864563 0.717210 1.254920 0.410540 0.256436 0.731517 1.963593 1.803984 0.360198 1.538935 1.336817 1.848131 1.057393 0.914901 1.417861 0.611247 0.480547 0.986369 0.177854 0.054010 0.522216 1.738228 1.606436 0.124128 1.313067 1.158083 1.699908 0.894558 0.681208 1.250386 0.493617 0.275482 0.838949 -0.017567 1.888931 0.420163 1.578469 1.442008 1.969592 1.122736 1.050967 1.568409 0.742113 0.590204 1.095335 0.310726 0.180303 0.691099 1.867306 1.742321 0.238685 1.469174 1.321033 1.880817 1.042189 0.929459 1.489318 0.679656 0.524597 1.021052 0.251223 0.131180 0.687266 1.870613 1.712516 0.277968 1.429826 1.336228 1.887719 1.057408 0.928308 1.465671 0.681364 0.569683 1.068391 0.290769 0.173135 0.696703 1.907255 1.759210 0.305023 1.505198 1.410526 1.899901 1.084931 1.017940 1.577448 0.720788 0.630419 1.179196 0.385535 0.228151 0.768811 -0.010726 1.892015 0.447084 1.614060 1.450051 0.065386 1.313462 1.135863 1.699955 0.879370 0.753426 1.304037 0.554033 0.385190 0.961511 0.150145 0.055862 0.591891 1.789651 1.680965 0.248941 1.419104 1.311549 1.869475 1.118052 1.006423 1.520673 0.794362 0.647793 1.182905 0.404349 0.279465 0.845902 0.138948 1.943532 0.507091 1.752449 1.585979 0.134700 1.351715 1.264579 1.817292 1.037861 0.962337 1.490742 0.711616 0.639233 1.144421 0.397221 0.310536 0.832207 0.083306 1.964699 0.465971 1.781216 1.651359 0.154525 1.401739 1.313974 1.907398 1.130457 1.002528 1.553738 0.786943 0.681681 1.251628 0.480091 0.352834 0.895942 0.160658 0.036691 0.615780 1.836232 1.718478 0.337205 1.554476 1.427271 -0.030321 1.258628 1.112085 1.704529 0.933530 0.829487 1.435631 0.656317 0.507508 1.146457 0.365961 0.233247 0.838186 0.038480 1.956192 0.497260 1.787556 1.676368 0.261620 1.488482 1.375149 1.954323 1.176381 1.077422 1.639757 0.885122 0.767028 1.354674 0.611102 0.515763 1.067013 0.364073 0.253316 0.816696 0.080343 1.981526 0.555923 1.803210 1.690965 0.243436 1.498929 1.463776 0.035105 1.265788 1.211322 1.786383 0.996848 0.934603 1.494136 0.782164 0.637529 1.228549 0.500978 0.387621 1.016711 0.254408 0.131542 0.768989 -0.001437 1.951668 0.509696 1.741982 1.657491 0.237766 1.457853 1.424797 0.006908 1.243116 1.200785 1.781903 1.037263 0.947291 1.519388 0.769311 0.718584 1.269579 0.566314 0.467526 1.077800 0.328200 0.219303 0.887474 0.089485 0.038790 0.583440 1.856777 1.781586 0.336518 1.622994 1.564761 0.147799 1.391240 1.339568 1.957150 1.195129 1.109114 1.720696 0.936126 0.931387 1.478374 0.778666 0.695342 1.295854 0.551731 0.466356 1.077513 0.363727 0.236749 0.869975 0.123830 0.038322 0.650808 1.954640 1.855436 0.458032 1.688877 1.683350 0.268535 1.531217 1.468606 0.080818 1.318825 1.267355 1.855784 1.138649 1.072054 1.684860 0.949404 0.917764 1.543391 0.800543 0.749267 1.316511 0.653451 0.531759 1.173924 0.459672 0.388411 0.968867 0.210010 0.162084 0.779687 0.040451 -0.015836 0.632581 1.899294 1.833387 0.463317 1.758205 1.697163 0.325100 1.554911 1.500427 0.104741 1.368800 1.346532 1.947689 1.221814 1.214108 1.781541 1.030032 1.015910 1.673792 0.911171 0.883757 1.489984 0.760252 0.734843 1.305295 0.618099 0.559931 1.152153 0.429958 0.402597 1.055942 0.330699 0.312047 0.913700 0.195501 0.140501 0.760440 0.043815 -0.024782 0.662348 1.905708 1.879582 0.485503 1.801886 1.719808 0.367132 1.617344 1.577322 0.208291 1.492298 1.460603 0.077971 1.381403 1.314968 1.977540 1.254596 1.222710 1.889115 1.135091 1.128380 1.746465 1.010721 0.972758 1.653934 0.939537 0.893909 1.484775 0.839088 0.802146 1.384873 0.666890 0.683703 1.283870 0.592931 0.551511 1.154013 0.534355 0.454085 1.056739 0.378022 0.377516 0.982069 0.287749 0.260730 0.889496 0.171890 0.158397 0.798476 0.117288 0.059663 0.701879 -0.026047 -0.003331 0.627812 1.927303 1.907711 0.524230 1.820594 1.829790 0.412511 1.739198 1.764410 0.335638 1.678035 1.648928 0.308040 1.620500 1.587690 0.239023 1.543189 1.490571 0.147311 1.456241 1.374130 0.076657 1.397715 1.351472 -0.013871 1.316553 1.304873 1.928333 1.230877 1.248671 1.866305 1.180952 1.202959 1.824051 1.153785 1.133515 1.753854 1.062312 1.020753 1.742039 1.041863 1.013732 1.660433 1.024964 0.945314 1.610704 0.955874 0.895751 1.565689 0.889511 0.917846 1.556922 0.889813 0.884614 1.501074 0.881369 0.789791 1.465293 0.808674 0.813265 1.419089 0.752659 0.764469 1.419935 0.714871 0.723214 1.402228 0.730919 0.671712 1.414170 0.641525 0.649443 1.356771 0.686128 0.656472 1.262438 0.660480 0.615659 1.298859 0.613637 0.594583 1.272146 0.605560 0.607230 1.257251 0.596911 0.606668 1.269435 0.591071 0.603975 1.240419 0.563231 0.570475 1.247027 0.551792 0.578100 1.245551 0.547997 0.579997 1.242629 0.568073 0.590620 1.308780 0.594750 0.593040 1.286276 0.573366 0.617087 1.271049 0.565768 0.616388 1.247601 0.598075 0.638292 1.291845 0.619123 0.683649 1.295247 0.669434 0.650012 1.327896 0.690426 0.669830 1.347378 0.692324 0.746237 1.377913 0.764795 0.743775 1.422155 0.782463 0.779424 1.425040 0.792342 0.801078 1.480671 0.836045 0.830118 1.517349 0.901549 0.871029 1.543830 0.884190 0.893173 1.634109 0.949692 0.963160 1.686658 0.989873 1.019707 1.677015 1.010015 1.096653 1.783645 1.109406 1.073941 1.798061 1.146977 1.164263 1.816279 1.234841 1.208860 1.929157 1.300960 1.251535 -0.035326 1.334435 1.368020 0.032720 1.449005 1.420336 0.126665 1.487205 1.502926 0.175140 1.552860 1.568484 0.271380 1.597004 1.655568 0.303717 1.683521 1.706258 0.419917 1.759464 1.818208 0.487690 1.816146 1.857809 0.540072 1.945980 -0.113524 0.668908 0.023429 0.076083 0.766039 0.121704 0.194908 0.865930 0.217435 0.255966 0.985893 0.299285 0.392434 1.023435 0.447695 0.431117 1.151251 0.560716 0.544974 1.271441 0.627920 0.679734 1.369202 0.742802 0.788754 1.475102 0.821072 0.855588 1.599129 0.961044 0.978010 1.675275 1.080419 1.126645 1.850312 1.211362 1.213546 1.958576 1.303095 1.316222 0.085624 1.446177 1.477241 0.177360 1.573439 1.630932 0.364034 1.688695 1.731381 0.456671 1.812810 1.870473 0.547577 1.944303 1.980810 0.753645 0.076051 0.163015 0.825854 0.211767 0.304182 0.953417 0.356014 0.406864 1.118088 0.512921 0.531146 1.305779 0.657105 0.714940 1.454594 0.772878 0.875130 1.544615 0.967590 0.997807 1.731551 1.090546 1.223177 1.892563 1.281142 1.356079 0.034625 1.424369 1.440889 0.219269 1.621485 1.668749 0.340113 1.745277 1.833605 0.567267 1.946728 0.016872 0.701566 0.128390 0.153663 0.890502 0.271761 0.336952 1.092448 0.489116 0.520934 1.273771 0.675119 0.688160 1.425914 0.818769 0.926861 1.654610 1.069824 1.091129 1.821552 1.219166 1.260952 0.015190 1.412502 1.477857 0.216687 1.594293 1.648608 0.397809 1.779605 1.841995 0.626629 -0.011475 0.071665 0.791106 0.188644 0.282962 1.002874 0.437952 0.486457 1.219706 0.606200 0.679581 1.464471 0.847465 0.910415 1.636187 1.028624 1.135270 1.851233 1.273690 1.318163 0.054236 1.466203 1.531938 0.289293 1.694450 1.762939 0.471363 1.927536 -0.013269 0.743236 0.163463 0.209802 0.994107 0.366181 0.459461 1.179183 0.638157 0.689216 1.458398 0.837108 0.908360 1.694542 1.066598 1.182196 1.898096 1.331109 1.402429 0.147276 1.647404 1.673607 0.389204 1.817396 1.891904 0.643362 0.075523 0.186168 0.921886 0.271247 0.415825 1.136750 0.582496 0.642064 1.395993 0.827882 0.924716 1.683985 1.140335 1.203400 1.975309 1.392530 1.452964 0.157031 1.639029 1.724200 0.453495 1.879664 0.016946 0.711420 0.193103 0.204906 1.008736 0.424590 0.535714 1.298683 0.710274 0.802078 1.527173 0.959653 1.058324 1.860199 1.298758 1.376550 0.145426 1.530099 1.657524 0.422851 1.840804 1.940735 0.699736 0.120721 0.242099 0.998015 0.486220 0.493685 1.263249 0.733386 0.822136 1.558272 1.041710 1.137934 1.914214 1.335854 1.409462 0.212916 1.642595 1.723486 0.484137 1.934454 0.026617 0.787902 0.226067 0.381756 1.117995 0.560792 0.651747 1.464217 0.838182 0.979280 1.748427 1.214125 1.316448 0.089397 1.507231 1.628383 0.423956 1.823642 1.931783 0.736485 0.148936 0.288641 1.029992 0.533704 0.621921 1.353356 0.791934 0.975932 1.731597 1.167161 1.230257 0.028847 1.514816 1.598184 0.426874 1.843229 1.938647 0.694387 0.192969 0.295593 1.086746 0.529443 0.645451 1.417950 0.850251 1.002085 1.790740 1.213995 1.362842 0.136805 1.556736 1.704632 0.493539 1.946015 0.020170 0.817720 0.316033 0.431659 1.197862 0.649525 0.778207 1.537358 0.953581 1.139582 1.980562 1.385165 1.495360 0.239194 1.737883 1.911149 0.665058 0.108607 0.238325 1.051621 0.513474 0.603265 1.423730 0.871573 0.977088 1.801178 1.254323 1.390411 0.154190 1.625230 1.776363 0.546395 0.009718 0.102085 0.953495 0.386185 0.559031 1.328198 0.781079 0.935488 1.706525 1.227948 1.335555 0.125891 1.550307 1.738224 0.515373 0.054358 0.116124 0.902717 0.377871 0.571957 1.344904 0.818864 0.960463 1.764095 1.226879 1.344893 0.127114 1.575738 1.759955 0.593171 0.056121 0.176750 0.984941 0.431485 0.620713 1.385434 0.893730 1.018544 1.820984 1.273350 1.420567 0.244057 1.738408 1.844971 0.635008 0.153201 0.266598 1.099972 0.560140 0.754939 1.525912 1.024981 1.150422 1.949242 1.437003 1.585908 0.428530 1.862943 0.044308 0.830697 0.315338 0.469706 1.264005 0.769853 0.901387 1.716282 1.194950 1.350210 0.159881 1.647446 1.795351 0.587692 0.106392 0.284412 1.108898 0.553343 0.663817 1.520345 0.978334 1.211788 1.959707 1.479123 1.650805 0.414541 1.954601 0.142242 0.902598 0.432982 0.551890 1.398144 0.829719 1.007669 1.859314 1.329596 1.484239 0.313002 1.818009 0.001080 0.796362 0.288360 0.481472 1.324394 0.758735 0.935702 1.792813 1.263386 1.370544 0.214130 1.717410 1.918026 0.724834 0.281778 0.401545 1.215815 0.689590 0.889768 1.740262 1.233748 1.420828 0.200177 1.739249 1.891567 0.754136 0.205319 0.352535 1.189896 0.689087 0.823009 1.674042 1.199527 1.369876 0.226135 1.709272 1.892025 0.728864 0.256243 0.423944 1.253268 0.718893 0.890523 1.782137 1.245738 1.375936 0.270324 1.788505 1.921728 0.791322 0.286210 0.419097 1.328004 0.809369 0.982312 1.837718 1.333655 1.550631 0.367503 1.893850 0.028147 0.874955 0.414441 0.590144 1.374416 0.934093 1.074882 1.961245 1.420793 1.639187 0.499300 0.010989 0.176456 1.061631 0.554114 0.715314 1.607979 1.099243 1.262111 0.158988 1.628014 1.853293 0.617910 0.166513 0.390677 1.256613 0.723953 0.976822 1.783144 1.322774 1.475080 0.379616 1.858640 0.067320 0.878401 0.420297 0.594117 1.469465 0.997448 1.167858 0.050335 1.554091 1.741484 0.577080 0.119504 0.304699 1.211447 0.691744 0.899794 1.756920 1.284233 1.466405 0.313864 1.830665 0.070522 0.940245 0.413676 0.609268 1.463133 1.039841 1.214679 0.096519 1.579318 1.812459 0.627537 0.183372 0.390466 1.255735 0.795748 0.972873 1.885213 1.345315 1.561109 0.445536 1.908876 0.149872 1.019891 0.589516 0.759449 1.636514 1.164589 1.379274 0.198597 1.785400 -0.022022 0.847826 0.370281 0.583072 1.462040 1.021857 1.202923 0.044823 1.592450 1.801031 0.698903 0.246931 0.376948 1.298281 0.843462 1.013654 1.889859 1.470526 1.635703 0.535811 0.082655 0.289929 1.150008 0.701868 0.912899 1.803009 1.356897 1.530606 0.463241 1.959311 0.189708 1.032183 0.569388 0.827244 1.711296 1.245689 1.470756 0.309874 1.881011 0.142585 0.969168 0.506829 0.744163 1.595554 1.171442 1.388291 0.246804 1.806027 0.063823 0.906554 0.465187 0.676658 1.575891 1.105722 1.368063 0.226180 1.745299 0.006220 0.883797 0.445577 0.691748 1.576687 1.063233 1.331287 0.190718 1.766105 1.988682 0.883464 0.439646 0.692340 1.539622 1.152153 1.325668 0.208660 1.756129 -0.021485 0.926059 0.463630 0.693516 1.577939 1.111374 1.331449 0.229087 1.804097 0.037190 0.910107 0.505454 0.735286 1.619743 1.230108 1.393725 0.325528 1.875050 0.113346 0.981614 0.547023 0.767971 1.667838 1.280799 1.488791 0.424185 1.936922 0.203380 1.076427 0.638120 0.879442 1.806133 1.329312 1.610289 0.498850 0.121871 0.290245 1.231361 0.735547 0.975212 1.916502 1.530967 1.758763 0.630952 0.192947 0.428287 1.351216 0.932233 1.153079 0.066965 1.647258 1.890814 0.780767 0.341281 0.611282 1.475179 1.082271 1.334393 0.240529 1.812236 0.051916 0.974058 0.579081 0.810928 1.700656 1.226634 1.514199 0.429785 -0.011348 0.229585 1.211772 0.736308 1.038508 1.889375 1.500577 1.762893 0.659305 0.190560 0.485958 1.398194 0.986315 1.253089 0.152072 1.731783 1.992215 0.882797 0.441024 0.708386 1.634786 1.263798 1.470116 0.411531 -0.005672 0.268382 1.211019 0.722655 1.033455 1.952288 1.533916 1.764406 0.685469 0.310542 0.548020 1.449453 1.054775 1.384783 0.238186 1.842447 0.077105 1.019488 0.598378 0.871641 1.744587 1.381631 1.656052 0.540655 0.135019 0.414342 1.355077 0.928962 1.190322 0.159160 1.774401 0.029482 0.926951 0.530640 0.738131 1.746363 1.288763 1.583112 0.526930 0.145276 0.380223 1.271359 0.891130 1.161867 0.098923 1.732518 1.971885 0.905190 0.501078 0.749119 1.671217 1.265993 1.574030 0.485601 0.116382 0.357609 1.327476 0.972859 1.213898 0.190683 1.746959 -0.006764 0.968758 0.556214 0.827648 1.785162 1.388294 1.633836 0.642381 0.172026 0.490428 1.385268 1.026159 1.282405 0.202776 1.853990 0.112088 1.067284 0.650862 0.977014 1.885667 1.507486 1.791030 0.721799 0.310525 0.613330 1.595494 1.179376 1.442995 0.406361 -0.010454 0.310021 1.255521 0.876438 1.131603 0.108204 1.701506 0.013148 0.928048 0.576193 0.847384 1.788206 1.377605 1.679449 0.669253 0.282191 0.535632 1.484813 1.100941 1.452221 0.389174 0.011962 0.313638 1.207847 0.886829 1.128638 0.056751 1.731164 0.019897 0.961750 0.553057 0.868102 1.843402 1.449244 1.735843 0.627535 0.284218 0.617926 1.535276 1.161682 1.513665 0.447356 0.106629 0.376850 1.332656 0.980321 1.265819 0.222175 1.794918 0.135653 1.091472 0.694373 1.039086 1.989735 1.627539 1.912835 0.838595 0.536944 0.758742 1.769571 1.372701 1.669373 0.620303 0.262421 0.568854 1.548573 1.188959 1.450816 0.484493 0.109277 0.391440 1.350274 0.988902 1.268492 0.254811 1.909085 0.228897 1.210779 0.811394 1.116966 0.162415 1.751880 0.095349 1.035206 0.710897 0.966743 1.944178 1.620062 1.885755 0.860924 0.521586 0.828169 1.774861 1.410689 1.705217 0.657344 0.353082 0.646896 1.654066 1.245515 1.561160 0.600160 0.173054 0.504795 1.533965 1.120033 1.450190 0.421264 0.111677 0.386624 1.342889 1.008845 1.351996 0.329100 1.951450 0.259412 1.274939 0.952299 1.253300 0.226454 1.854877 0.202244 1.192405 0.827438 1.148867 0.145261 1.796957 0.128825 1.077066 0.739797 1.036404 0.040803 1.694469 0.036316 0.943524 0.687748 0.965233 1.945423 1.644871 1.963427 0.903246 0.587096 0.916045 1.943618 1.517719 1.843916 0.913295 0.520287 0.874993 1.853077 1.479234 1.822141 0.797047 0.491952 0.782523 1.825877 1.468584 1.816460 0.800204 0.466197 0.774927 1.773854 1.418914 1.754816 0.738098 0.396606 0.720689 1.731021 1.439597 1.746859 0.731649 0.438377 0.746065 1.796366 1.453885 1.775274 0.731960 0.435085 0.746353 1.782126 1.478129 1.762158 0.807642 0.491128 0.783764 1.822618 1.488792 1.833738 0.811271 0.503461 0.834140 1.865877 1.503824 1.851536 0.818040 0.521558 0.855024 1.902901 1.495861 1.847547 0.879079 0.581955 0.929022 1.879578 1.586647 1.908285 0.891890 0.602140 0.878317 1.949114 1.612634 1.980076 0.986724 0.655426 0.963876 -0.032623 1.680998 0.037923 1.062079 0.659257 1.066648 0.085384 1.770996 0.117042 1.146204 0.782534 1.163707 0.152044 1.823085 0.212490 1.232702 0.958665 1.303444 0.292353 1.939052 0.322923 1.336095 1.049723 1.369190 0.391715 0.065983 0.431251 1.498166 1.129064 1.504266 0.550280 0.254222 0.579504 1.609208 1.344210 1.699311 0.632483 0.352053 0.711401 1.717015 1.447764 1.779819 0.805697 0.567002 0.863988 1.897811 1.554546 1.960708 1.016574 0.654578 0.997506 0.055778 1.769384 0.072801 1.171068 0.874042 1.243524 0.213364 1.906690 0.336022 1.294084 0.998333 1.328401 0.413911 0.142485 0.412635 1.503118 1.260398 1.541823 0.588015 0.333526 0.644897 1.674563 1.395031 1.806357 0.822996 0.526602 0.861956 1.888581 1.615490 1.953706 0.983438 0.707460 1.070840 0.123757 1.813918 0.254744 1.256561 0.943004 1.289267 0.324548 0.008841 0.451385 1.466215 1.190311 1.510709 0.612130 0.263979 0.684018 1.725661 1.388923 1.858811 0.886444 0.586039 0.931842 -0.004318 1.691939 0.061006 1.144334 0.848449 1.246097 0.281005 1.936984 0.303635 1.431835 1.119663 1.467990 0.526415 0.244381 0.612840 1.703875 1.409528 1.819734 0.849351 0.555075 0.951590 -0.842205 1.712680 0.071077 1.105053 0.836731 1.227355 0.260203 0.057091 0.370090 1.416610 1.151986 1.554613 0.612412 0.353625 0.719435 1.760068 1.525708 1.888414 0.943186 0.664888 1.032537 0.081970 1.842779 0.226782 1.278696 1.038846 1.437643 0.462342 0.190767 0.619933 1.677530 1.385699 1.764513 0.855670 0.600930 0.997941 0.028629 1.829204 0.147669 1.203773 0.974277 1.368250 0.429870 0.168028 0.557174 1.637166 1.397792 1.745803 0.859091 0.632012 0.953408 0.025939)
)
@@ -2021,7 +2021,7 @@
;;; 71 odd -------------------------------------------------------------------------------- ; 8.4261
(vector 71 10.642364501953 #r(0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 1 0 0 0 0 1 0 0 1 1 1 0 1 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 1 0 0 1 1 0 0)
- 8.385861 #(0.000000 1.144511 0.109267 1.049574 0.078787 0.972362 0.082925 0.901606 1.725287 0.495907 1.393879 0.196182 0.915293 1.683141 0.381517 1.154499 1.783653 0.331402 0.847409 1.498592 0.125674 0.561688 0.770046 0.873277 1.603760 0.191083 0.058482 0.458030 1.250172 1.531745 1.636499 -0.115007 0.295590 -0.154328 0.340248 0.625688 0.817738 0.618244 0.791963 0.763782 0.965830 0.732384 0.372520 0.633577 0.148745 0.255363 0.360470 1.449262 1.176282 1.064821 0.800281 0.236314 0.046573 -0.000568 1.463085 0.726302 0.079276 -0.238658 1.567708 0.913843 0.194119 -0.291508 1.111349 0.448080 -0.336316 1.054497 0.322996 1.607539 0.310703 -0.264736 1.227410)
+ 8.383514 #(0.000000 1.185298 0.116042 1.091638 0.092095 0.944947 0.102271 0.915149 1.750053 0.485778 1.383200 0.211530 0.862686 1.607558 0.338543 1.220252 1.822776 0.384578 0.842174 1.479065 0.101864 0.525001 0.798322 0.852215 1.596297 0.205674 0.038735 0.440702 1.266574 1.519994 1.627453 -0.116698 0.274743 -0.092846 0.414048 0.680894 0.850034 0.611891 0.773865 0.799723 0.948168 0.795050 0.386289 0.687156 0.139254 0.239355 0.431827 1.449182 1.225677 1.018884 0.815038 0.231330 0.044514 0.056652 1.511296 0.700931 0.111889 -0.266780 1.539396 0.924047 0.245892 -0.239038 1.134806 0.447706 -0.314739 1.073421 0.342294 1.686009 0.291079 -0.242099 1.241743)
)
;;; 72 odd -------------------------------------------------------------------------------- ; 8.4853
@@ -2410,29 +2410,27 @@
;;; 256 odd --------------------------------------------------------------------------------
(vector 256 22.546259712247 #r(0 1 1 1 0 1 0 0 1 0 1 0 0 1 0 0 1 1 0 0 1 0 0 0 1 1 0 0 1 1 1 0 1 1 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 1 0 1 1 0 0 0 0 1 1 1 1 0 1 0 0 0 0 0 1 0 0 0 1 1 1 0 1 1 1 1 0 1 0 1 1 0 0 1 0 0 0 1 1 0 1 1 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 1 1 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 1 1 1 0 1 1 1 0 0 0 0 1 0 1 1 0 1 0 1 0 1 0 0 0 0 0 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 0 1 0 0 0 1 1 0 0 1 0 1 1 0 1 0 1 1 0 1 1 0 0 1 1 0 1 0 0 1 0 1 1 1 0 1 0 1 0 1 1 0 1 1 0 0 0 0 0 1 1 1 1 1 1 0 1 1 0 1 1 0 0 1 1 1 0 0 1 0 1 0 0 1 1 0 0 0 0 0 1 0 1 0 0 1)
- 16.795239 #(0.000000 0.296154 1.680877 -0.254080 1.501754 -0.512663 1.828962 -0.203122 1.617623 0.512792 0.031508 0.128064 1.700674 1.579780 0.780671 1.382749 0.156230 0.508361 0.684835 -0.082656 0.952163 0.216290 1.325868 1.705996 0.689607 1.611356 0.161173 0.669332 0.552848 1.961725 0.036125 0.787049 1.929903 1.548616 1.622816 1.183061 1.155276 1.811641 0.114476 0.016874 1.295393 0.971408 0.748286 0.978588 0.864055 0.867948 1.094178 0.191483 1.177458 0.889452 -0.048163 1.250308 1.754915 0.202781 0.168326 1.843132 0.053492 1.600000 0.170385 0.614104 -0.014299 1.311293 1.695962 0.614804 -0.011317 0.218558 0.216379 1.177709 1.557001 0.032671 1.210733 0.440978 0.777401 -0.011566 0.449033 0.616164 0.545308 -0.141242 0.073641 0.897111 1.791004 -0.169952 0.402638 1.317670 0.024113 1.622985 0.570193 0.167442 1.784453 1.110120 0.320283 0.157779 1.689633 0.097787 1.652636 0.011835 0.290012 0.477116 1.632275 -0.001345 1.211165 1.255620 1.598080 1.572426 0.388765 0.310957 1.287724 0.011672 0.183174 0.906100 1.006665 0.935380 1.222060 1.305452 1.835007 0.309348 1.690662 1.782585 1.267761 1.743137 0.701398 1.383418 0.900583 1.554290 0.626691 1.043053 0.667701 0.773466 0.148379 1.434723 1.592405 1.720212 0.638560 0.810936 0.148703 0.837104 1.856938 1.601356 0.819165 1.801723 0.386201 0.324614 0.171004 1.202167 1.467975 1.678016 1.324956 1.235357 0.221312 0.427891 1.471086 1.389842 1.234609 1.858920 1.173508 -0.029963 1.148991 1.815644 0.293148 0.085655 1.464822 0.435470 1.196187 1.120437 0.502444 1.690961 1.226962 0.008225 0.949523 0.104300 1.187380 0.628636 0.392034 0.356962 1.386925 0.446430 1.851786 -0.063581 -0.475924 1.470171 0.815816 0.756648 0.604433 1.660325 0.993483 1.971856 -0.012075 0.756969 0.272069 -0.303274 0.843836 0.097037 1.184864 1.891334 0.577274 0.212782 0.644529 0.726566 1.267011 -0.347422 0.267066 0.302885 1.247685 1.428158 1.218169 0.322597 0.142997 0.473452 1.868226 1.049720 1.114667 1.781008 0.417450 1.011920 0.079529 0.911909 1.478189 0.747170 1.579828 1.276291 0.737080 0.964944 0.705651 -0.380989 0.837972 1.471874 0.544370 0.117037 -0.019460 0.117557 1.628410 0.517544 0.803780 1.689923 0.875515 1.105116 0.197643 0.862186 1.055017 1.347532 0.529576 1.633184 1.473109 -0.014100 0.561648 1.213884 1.249792 1.719036 1.780713 1.727736 1.468222 0.647895 0.150121 -0.211790 0.915321 0.832161)
+ 16.515863 #(0.000000 0.383712 1.640455 -0.233986 1.497056 -0.530303 1.724487 -0.200270 1.620532 0.523824 0.102676 0.080123 1.694963 1.618876 0.748548 1.319601 0.129628 0.432760 0.611473 -0.094294 0.950624 0.202525 1.365889 1.691851 0.700009 1.640840 0.226881 0.553664 0.519774 0.012642 0.008450 0.844665 1.919265 1.483284 1.574804 1.276743 1.257333 1.867291 0.036491 0.064150 1.415729 1.033230 0.781198 1.011767 0.876330 0.801377 1.147364 0.105369 1.145701 0.944075 0.068527 1.198465 1.751731 0.105623 0.166787 1.956590 0.021688 1.609353 0.150088 0.645074 -0.021211 1.271054 1.624848 0.615441 -0.024698 0.253203 0.197090 1.207159 1.665888 0.098838 1.176532 0.497470 0.718595 -0.056751 0.420935 0.573575 0.698378 -0.170340 0.004469 0.853745 1.744688 -0.250819 0.410734 1.416600 -0.053313 1.588975 0.585222 0.169850 1.904865 1.016426 0.326827 0.188328 1.743480 0.161077 1.672171 0.033822 0.259030 0.491991 1.637041 -0.048602 1.211218 1.236351 1.536210 1.540931 0.269462 0.324564 1.269881 -0.042051 0.177548 0.929986 1.018870 0.883478 1.244826 1.315485 1.717677 0.259948 1.681201 1.822924 1.346420 1.715651 0.684772 1.323708 0.951285 1.456936 0.616483 1.053623 0.648858 0.858807 0.079641 1.379665 1.627332 1.593920 0.596819 0.843882 0.190698 0.774701 1.879798 1.634807 0.798435 1.792686 0.449452 0.359382 0.276201 1.297297 1.386352 1.747087 1.275679 1.217818 0.167521 0.473557 1.481135 1.356727 1.235692 1.841903 1.115763 -0.081677 1.128390 1.815422 0.309577 0.068711 1.491781 0.486917 1.267046 1.100459 0.509215 1.731253 1.248328 0.020441 0.916812 0.187497 1.152088 0.615698 0.306936 0.365030 1.377931 0.504108 1.879034 -0.089910 -0.505278 1.516849 0.822624 0.801933 0.582360 1.766199 0.945265 1.952752 -0.062706 0.750887 0.331512 -0.281385 0.807081 -0.041724 1.166122 1.901087 0.591978 0.164876 0.635107 0.747710 1.254573 -0.401258 0.182246 0.359089 1.244936 1.442492 1.220170 0.349397 0.121238 0.504362 1.874987 1.105601 1.110828 1.760988 0.402959 0.987402 0.145687 0.946484 1.428894 0.782916 1.561547 1.338758 0.760402 0.969337 0.716683 -0.383799 0.815829 1.495809 0.619618 0.101387 -0.095619 0.049994 1.573529 0.479023 0.809773 1.710045 0.971876 1.041119 0.143860 0.836048 1.155518 1.249315 0.521182 1.622885 1.540192 -0.064163 0.508321 1.287105 1.217586 1.716742 1.795861 1.835661 1.532839 0.681766 0.184018 -0.148326 0.859605 0.793133)
)
;;; 512 odd --------------------------------------------------------------------------------
(vector 512 35.541 #r(0 1 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 1 0 1 1 0 1 1 1 1 0 0 1 1 0 0 0 1 1 1 1 0 0 1 0 0 1 1 1 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 1 0 0 0 0 1 0 1 1 0 0 1 1 0 1 0 1 0 1 0 0 0 1 1 1 0 1 0 1 1 0 1 0 0 0 0 0 0 1 0 0 1 1 1 1 1 0 1 1 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 1 1 0 0 0 1 1 1 0 1 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 0 1 1 0 0 0 0 0 1 1 0 0 1 0 0 0 1 1 0 1 0 1 1 0 0 0 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 1 0 1 0 0 1 0 0 1 1 0 0 1 0 1 1 0 1 1 0 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 1 0 0 0 0 1 1 0 1 0 0 1 1 0 1 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 1 0 0 1 1 1 1 0 1 1 1 0 1 1 1 1 1 0 1 0 1 0 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 0 1 0 0 1 1 1 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 1 1 1 1 1 1 0 1 1 0 0 1 0 1 1 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0 0 1 1 1 0 1 1 1 1 0 0 1 0 0 0 1 1 0 1 1 0 0 1 0 0 0 0 1 0 1 1 1 1 1 0 1 0 0 0 1 0 0 1 0 1 0 1 1 0 1 0 0 0 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 1 0 1 1 1 0 1 0 0 1 0 1 0 0 0 0 0 0 1 1 1 0 1 0 0)
;; from (try-all :odd 512 513 0.0057812032540294 1.0142361702487) = 28.7291 start for next
- 23.671929 #(0.000000 1.394774 0.712446 0.011390 1.320968 0.659351 -0.008320 1.313240 0.694851 0.060183 1.432654 0.813529 0.163626 1.535999 0.879450 0.278926 1.617184 1.004506 0.375540 1.782345 1.197449 0.607355 0.002396 1.363420 0.756097 0.185031 1.621603 1.037243 0.483395 1.928119 1.363762 0.804526 0.189778 1.651558 1.062208 0.500941 -0.075074 1.405257 0.890818 0.394842 1.911903 1.355672 0.849224 0.301066 1.807390 1.255870 0.693187 0.227600 1.735043 1.242178 0.742336 0.233952 1.762299 1.270235 0.790011 0.308951 1.836644 1.354488 0.921400 0.494999 0.025201 1.587671 1.103973 0.691355 0.220676 1.734558 1.286929 0.843709 0.410420 -0.006971 1.607196 1.209111 0.751765 0.386155 1.942608 1.557321 1.164938 0.751583 0.327905 1.936579 1.577912 1.206377 0.857161 0.505199 0.118727 1.717026 1.345140 0.993575 0.646730 0.303538 -0.011386 1.650842 1.312008 0.942736 0.567994 0.248650 1.939815 1.633206 1.347278 1.045017 0.717493 0.404068 0.067008 1.765012 1.486042 1.162071 0.894044 0.630469 0.397971 0.091219 1.810554 1.526476 1.250148 0.961972 0.700896 0.483003 0.223175 1.963082 1.710143 1.486233 1.218696 0.988351 0.739642 0.554498 0.355837 0.133963 1.915891 1.705644 1.523419 1.285832 1.053062 0.874125 0.692572 0.484481 0.311565 0.170248 1.976224 1.742644 1.599596 1.464221 1.277195 1.116864 0.962109 0.809938 0.634326 0.497278 0.396860 0.284580 0.128985 -0.071217 1.797139 1.689775 1.561871 1.443254 1.404159 1.268988 1.090595 1.014300 0.948946 0.849232 0.746745 0.663564 0.581278 0.529565 0.441404 0.352080 0.331281 0.258865 0.169196 0.108151 0.057169 0.008492 1.949526 1.938926 1.918542 1.813205 1.824349 1.830337 1.762353 1.746749 1.769559 1.736903 1.696380 1.708741 1.693274 1.668654 1.702992 1.761560 1.718068 1.712045 1.783757 1.824135 1.787552 1.872780 1.931601 1.904160 -0.054686 0.045327 0.087323 0.111606 0.190216 0.218731 0.277511 0.375174 0.454469 0.525126 0.598612 0.697356 0.774922 0.813883 0.920068 1.048886 1.190227 1.277134 1.333680 1.438283 1.560240 1.699496 1.824833 1.976083 0.100327 0.235895 0.398739 0.489620 0.625797 0.806554 0.956104 1.099545 1.234377 1.401592 1.603650 1.788527 1.956992 0.141911 0.268264 0.480605 0.673081 0.875537 1.064387 1.257849 1.454531 1.716863 1.919865 0.129815 0.306350 0.577622 0.772298 1.036637 1.213402 1.513774 1.729662 -0.002596 0.208869 0.488779 0.685562 0.981987 1.211994 1.498318 1.771767 0.102947 0.329653 0.640725 0.943659 1.210741 1.456094 1.730763 0.047563 0.349860 0.721965 1.014490 1.351627 1.621199 1.982774 0.271984 0.626092 0.960662 1.279387 1.631453 1.909420 0.358768 0.626258 1.065703 1.352080 1.733193 0.090620 0.485078 0.863194 1.232466 1.604769 0.046467 0.420883 0.806679 1.118547 1.582862 1.969919 0.406212 0.804928 1.217456 1.613674 -0.002335 0.501556 0.874690 1.391434 1.743749 0.230084 0.640621 1.109027 1.523323 0.024025 0.428615 0.967310 1.387309 1.847686 0.298267 0.764416 1.340389 1.762131 0.294339 0.729188 1.230573 1.747255 0.261177 0.768666 1.299822 1.752087 0.274965 0.810803 1.332883 1.911034 0.431328 0.924227 1.456104 0.011967 0.512099 1.153407 1.655289 0.277959 0.756008 1.365887 1.950449 0.530665 1.070693 1.715361 0.220081 0.797361 1.455116 0.018653 0.570229 1.237031 1.800803 0.351577 1.033360 1.674236 0.246152 0.935462 1.598491 0.130968 0.813866 1.422645 0.076390 0.727354 1.354867 0.043180 0.630693 1.349296 -0.010156 0.662877 1.386692 -0.000234 0.700841 1.361643 0.025338 0.791248 1.467397 0.147530 0.905656 1.576415 0.249147 0.951858 1.647660 0.379926 1.119037 1.837465 0.628540 1.307793 0.124757 0.807484 1.562900 0.346466 1.015329 1.814495 0.567565 1.397053 0.084414 0.887038 1.685760 0.363451 1.243000 1.937877 0.756922 1.610544 0.355044 1.195580 -0.011045 0.819695 1.584370 0.458439 1.249964 0.092165 0.810572 1.762628 0.546518 1.441999 0.184963 1.122115 1.857001 0.792761 1.561414 0.480428 1.365453 0.196430 1.050124 -0.001030 0.870676 1.745548 0.631218 1.470766 0.421821 1.242678 0.163647 1.078029 0.030979 0.859462 1.794884 0.730493 1.745946 0.557381 1.548194 0.471779 1.399659 0.300074 1.268305 0.253862 1.130144 0.144439 1.052163 0.019837 0.984609 1.918876 0.993764 1.965206 0.986351 1.891665 0.866004 1.908249 0.900866 1.931553 0.902848 1.883758 0.893879 1.911009 0.894248 1.918833 0.906771 -0.008589 1.000182 0.039433 1.077034 0.171908 1.195972 0.264925 1.357117 0.408478 1.398499 0.476193 1.546542 0.595313 1.722825 0.806510 1.895014 0.919561 0.011635 1.126697 0.267939 1.310178 0.397573 1.531947 0.593069 1.751591 0.893706 0.031306 1.162353 0.275347 1.437714 0.516873 1.653660 0.810480 0.034958 1.132399 0.325845 1.473179 0.656546 1.760044 1.029004 0.197563 1.319950 0.556254 1.759284 0.969808 0.241789 1.454259 0.717776)
+ 23.617554 #(0.000000 1.409952 0.714457 0.004790 1.325701 0.647414 -0.019979 1.313423 0.705656 0.068542 1.432997 0.828532 0.170621 1.557056 0.888342 0.272139 1.613082 1.007578 0.371145 1.780897 1.195389 0.603080 0.013067 1.367865 0.764696 0.185550 1.606252 1.024407 0.467560 1.920178 1.378050 0.815997 0.208069 1.672723 1.075155 0.504233 -0.074230 1.396063 0.881968 0.373990 1.907202 1.348685 0.854480 0.310735 1.801156 1.266856 0.705070 0.224514 1.722699 1.233213 0.732424 0.230305 1.764771 1.246128 0.761700 0.290900 1.820021 1.354697 0.927414 0.494066 0.017771 1.586837 1.125760 0.698888 0.222952 1.732446 1.275619 0.828136 0.429994 0.011706 1.628423 1.219014 0.758581 0.383196 1.952197 1.569189 1.159372 0.762884 0.326924 1.938708 1.570357 1.215005 0.851810 0.490928 0.104167 1.711402 1.358716 1.007453 0.648208 0.302004 -0.012292 1.668251 1.312484 0.945957 0.561387 0.240313 1.941124 1.620987 1.341680 1.038635 0.728826 0.401436 0.078793 1.766761 1.473336 1.150944 0.879424 0.618059 0.381685 0.082548 1.804203 1.521126 1.233939 0.965687 0.712491 0.484222 0.229328 1.958894 1.704039 1.468683 1.206081 0.969296 0.727818 0.544360 0.348147 0.125765 1.905986 1.697140 1.536038 1.298237 1.057552 0.864845 0.694996 0.472185 0.309383 0.164050 1.973356 1.717701 1.577433 1.454365 1.264924 1.094866 0.960307 0.814396 0.621680 0.495487 0.411806 0.278442 0.121442 -0.078534 1.789979 1.667655 1.558774 1.443990 1.404076 1.287829 1.099877 1.005736 0.969952 0.860755 0.742330 0.672414 0.592118 0.526828 0.439051 0.353574 0.335905 0.260222 0.165112 0.103700 0.063961 0.010991 1.937293 1.956727 1.939312 1.822686 1.829126 1.814857 1.763337 1.757361 1.792522 1.736239 1.691930 1.690465 1.693642 1.661695 1.696142 1.751211 1.717304 1.707994 1.762489 1.802759 1.790252 1.873225 1.932754 1.920842 -0.052854 0.037118 0.101882 0.111335 0.188816 0.209092 0.271676 0.371753 0.446344 0.513975 0.593260 0.707120 0.770243 0.819612 0.920195 1.042225 1.169874 1.255918 1.326461 1.436107 1.554173 1.686563 1.831155 1.977188 0.114500 0.231996 0.399683 0.494368 0.614432 0.806867 0.944454 1.124532 1.234309 1.401264 1.606388 1.785148 1.953487 0.127668 0.265664 0.483120 0.668458 0.861650 1.060730 1.269237 1.442920 1.714784 1.918833 0.136244 0.322842 0.574559 0.767851 1.040633 1.196563 1.518007 1.729673 0.013640 0.207616 0.474660 0.673328 0.987142 1.214557 1.493171 1.761704 0.099543 0.330233 0.652232 0.942952 1.213088 1.455486 1.727234 0.050077 0.332812 0.734094 1.002851 1.339692 1.616216 -0.000443 0.266618 0.622951 0.953460 1.270338 1.638513 1.918824 0.354478 0.633977 1.063387 1.346029 1.724064 0.090826 0.459218 0.861784 1.223972 1.597641 0.067333 0.414298 0.816326 1.102560 1.598308 1.967040 0.408810 0.807870 1.203393 1.615743 -0.009794 0.503746 0.867536 1.394018 1.734793 0.227682 0.637378 1.098457 1.513066 0.034699 0.428578 0.966393 1.392946 1.835963 0.311138 0.752852 1.343495 1.759139 0.291068 0.707742 1.229595 1.735963 0.261306 0.778703 1.303883 1.735276 0.280041 0.795856 1.333016 1.936538 0.417269 0.936515 1.448515 0.004373 0.516428 1.159655 1.651354 0.281398 0.744776 1.367366 1.927287 0.519626 1.057693 1.722183 0.228865 0.785231 1.469569 -0.002261 0.579001 1.226141 1.800374 0.349003 1.033714 1.681695 0.239051 0.931328 1.608886 0.136582 0.827808 1.418158 0.085038 0.714651 1.362660 0.035103 0.631981 1.340087 -0.021836 0.659099 1.403271 -0.002223 0.690255 1.388969 0.001632 0.783519 1.473564 0.146927 0.902500 1.589959 0.255995 0.958820 1.675689 0.375390 1.118308 1.829625 0.640680 1.322185 0.119265 0.810628 1.570605 0.341497 1.032021 1.799620 0.559228 1.411875 0.074065 0.885980 1.693337 0.363857 1.241817 1.947602 0.760921 1.608961 0.358254 1.212334 -0.013187 0.834523 1.590648 0.465219 1.246031 0.096362 0.819580 1.756981 0.541852 1.437705 0.202773 1.109082 1.858865 0.793540 1.562561 0.477951 1.360453 0.197959 1.036333 0.003553 0.872153 1.742134 0.610186 1.501834 0.439507 1.239541 0.157013 1.082544 0.029898 0.845902 1.791753 0.728903 1.728913 0.554818 1.544114 0.463809 1.405131 0.283626 1.269115 0.267509 1.116843 0.125911 1.035295 0.029642 0.982331 1.919179 0.996232 1.956912 0.983673 1.887322 0.866714 1.904336 0.911944 1.911099 0.908041 1.879675 0.916273 1.889993 0.887142 1.920637 0.918702 -0.015264 0.994817 0.049252 1.057727 0.152574 1.196678 0.274841 1.351210 0.407968 1.391435 0.473762 1.551676 0.615347 1.723780 0.795184 1.894602 0.910491 0.004152 1.130224 0.261920 1.332865 0.387187 1.533097 0.597041 1.746862 0.889343 0.050238 1.151181 0.268710 1.432614 0.525759 1.655525 0.809209 0.024399 1.141124 0.321634 1.460200 0.651039 1.760717 1.029893 0.205776 1.318412 0.547821 1.774730 0.968625 0.247292 1.475634 0.745086)
)
;;; 1024 odd --------------------------------------------------------------------------------
(vector 1024 52.508 #r(0 1 0 1 0 0 1 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 0 0 1 0 1 1 0 0 1 0 1 1 0 1 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 0 0 0 1 1 1 1 1 1 0 1 1 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 1 0 1 0 0 1 1 0 0 0 0 0 0 1 1 1 1 1 1 0 1 1 1 0 1 0 0 1 0 0 1 1 0 1 1 0 0 1 1 0 1 0 1 0 1 1 0 1 0 0 0 0 1 1 1 1 0 1 1 1 0 0 0 0 0 0 1 1 1 0 1 0 0 1 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 1 1 0 1 1 0 1 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 1 0 0 1 1 1 0 1 0 0 1 1 0 0 1 1 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 1 1 1 1 0 0 0 1 1 0 1 1 0 1 0 1 0 1 0 1 0 0 1 1 1 0 1 1 1 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 0 0 1 1 1 0 0 1 0 1 1 1 1 0 0 0 1 0 1 1 0 1 1 1 1 0 1 1 0 1 0 1 1 1 0 0 1 1 0 1 0 1 0 0 1 1 0 0 1 1 1 0 1 0 0 0 1 1 1 1 0 0 1 0 0 0 1 1 1 0 0 0 1 1 1 1 0 0 1 0 1 0 1 0 0 1 1 0 1 1 0 1 1 1 0 0 1 0 1 0 0 1 1 0 1 0 1 1 0 0 0 1 0 0 1 0 0 1 1 0 1 0 1 1 0 1 1 0 0 1 1 0 0 1 1 0 1 1 0 1 0 0 1 1 0 1 1 1 1 0 1 1 0 0 1 1 0 1 0 1 0 0 1 0 1 0 1 1 1 1 0 1 0 1 1 0 0 1 0 0 0 1 0 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 1 1 0 0 0 1 1 1 0 1 1 1 1 0 1 1 1 1 0 0 0 1 1 0 0 1 0 1 1 0 0 1 0 1 1 0 1 1 0 0 0 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 1 0 1 0 0 0 1 1 1 0 1 1 0 0 1 0 0 1 0 0 0 1 0 1 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 0 1 1 0 1 0 0 1 1 0 0 1 0 0 0 0 0 1 0 1 0 1 1 1 0 0 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 0 1 0 1 0 1 1 1 0 1 0 0 1 1 1 1 0 1 1 1 0 1 1 1 1 1 0 1 0 0 1 1 1 0 0 0 0 1 0 0 1 1 1 1 1 1 1 0 1 0 0 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 1 1 1 1 1 0 0 1 0 0 1 1 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 1 1 1 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 1 0 0 1 0 0 0 1 0 1 0 1 1 0 1 1 1 0 0 1 1 1 1 1 1 1 0 1 0 1 1 0 1 1 0 0 0 1 1 0 0 1 1 0 1 1 1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 0 0 1 0 1 1 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0 1 1 1 0 1 1 0 1 1 0 1 0 1 1 0 0 1 0 0 1 0 0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 1 0 0 1 1 1 1 0 1 0 0 1 1 0 0 0 0 0 1 0 1 0 1 0 1 1 0 0)
;; pp:
- 34.271047 #(0.000000 1.320286 0.676396 1.982067 1.243285 0.530540 1.836077 1.181314 0.495360 1.805455 1.182203 0.446884 1.820708 1.148827 0.479624 1.764699 1.092567 0.473891 1.792057 1.086949 0.425390 1.812367 1.136015 0.479118 1.850496 1.163776 0.592084 1.910319 1.261672 0.626769 1.926417 1.354493 0.721851 0.062240 1.452208 0.798194 0.138340 1.500821 0.933689 0.273625 1.670453 1.073444 0.435300 1.826218 1.213403 0.575384 1.942307 1.350286 0.778789 0.162530 1.549572 1.002443 0.381038 1.742959 1.178236 0.609543 1.960795 1.419761 0.799043 0.200374 1.631548 1.032043 0.443914 1.867990 1.277010 0.709283 0.121743 1.587466 1.011315 0.437186 1.871059 1.307388 0.743378 0.185134 1.612769 1.069970 0.519362 1.950754 1.344436 0.861015 0.286803 1.756503 1.216824 0.659531 0.109237 1.595803 1.070459 0.514447 1.993047 1.482657 0.905650 0.381008 1.807679 1.288054 0.789652 0.257641 1.782170 1.232725 0.760718 0.269447 1.711444 1.205969 0.718355 0.195599 1.670325 1.176261 0.636401 0.177764 1.713954 1.181018 0.684072 0.191111 1.684531 1.198787 0.719941 0.266117 1.788749 1.300425 0.797428 0.278584 1.829348 1.392428 0.904169 0.448408 1.975741 1.505644 1.036008 0.578937 0.144777 1.702647 1.236923 0.737498 0.302638 1.858061 1.433334 0.992978 0.513885 0.061198 1.646116 1.169739 0.764058 0.338942 1.885100 1.480157 1.037592 0.568741 0.143027 1.714739 1.299200 0.880284 0.450933 0.032583 1.626589 1.201663 0.792338 0.366811 1.986725 1.572061 1.171330 0.778476 0.388309 1.956758 1.563539 1.170336 0.774974 0.375951 -0.000870 1.591651 1.251388 0.847953 0.445214 0.077517 1.704802 1.324047 0.921917 0.564564 0.238857 1.855130 1.464984 1.051943 0.721308 0.361542 0.014850 1.653520 1.278928 0.883589 0.573559 0.218623 1.864847 1.462232 1.147502 0.903078 0.514453 0.161133 1.820542 1.455362 1.128657 0.798180 0.481873 0.160263 1.809901 1.474548 1.155182 0.813753 0.511114 0.219909 1.884898 1.594997 1.263319 0.970639 0.642492 0.344426 0.019243 1.707391 1.433353 1.116000 0.828260 0.529503 0.258191 1.946200 1.637545 1.330753 1.094840 0.807647 0.498356 0.213661 1.917452 1.635824 1.347813 1.125503 0.822216 0.561762 0.302279 0.030027 1.744579 1.519178 1.255130 0.969203 0.705607 0.446003 0.192855 1.923225 1.675224 1.471309 1.242826 0.964470 0.701302 0.463872 0.216858 1.945894 1.727774 1.522281 1.315299 1.053989 0.802406 0.601333 0.384963 0.154977 1.925846 1.691317 1.496317 1.284308 1.065509 0.861886 0.635625 0.448817 0.222164 0.026618 1.834850 1.612010 1.455866 1.244781 1.017828 0.858349 0.642883 0.451590 0.304144 0.113656 1.938931 1.703429 1.535716 1.372923 1.166776 0.998544 0.846307 0.662120 0.497727 0.324538 0.141290 1.978592 1.831180 1.681930 1.550011 1.319178 1.194020 1.061617 0.884394 0.702566 0.553099 0.456051 0.318288 0.131236 -0.008006 1.906701 1.766192 1.588478 1.502348 1.343888 1.170516 1.084103 0.969319 0.854676 0.703360 0.580386 0.476301 0.359305 0.196760 0.117628 0.016071 1.884653 1.787595 1.701695 1.598971 1.507174 1.428959 1.272835 1.236664 1.106689 1.019903 0.923250 0.782972 0.760812 0.687952 0.597168 0.504599 0.409334 0.347007 0.275528 0.182185 0.093535 0.034980 1.961654 1.921602 1.879333 1.803714 1.738036 1.639907 1.601491 1.554722 1.480998 1.438904 1.392097 1.342542 1.305402 1.257821 1.190050 1.154675 1.123828 1.062711 1.033572 1.014626 1.004467 0.942332 0.906123 0.911169 0.883482 0.856198 0.835593 0.821589 0.797753 0.758807 0.787956 0.784870 0.750275 0.730164 0.762687 0.771782 0.732226 0.727821 0.741936 0.722177 0.747771 0.750276 0.685645 0.733547 0.784996 0.781915 0.769885 0.832250 0.842163 0.844782 0.874569 0.886737 0.968715 0.942868 0.950734 1.000233 1.077428 1.134512 1.109538 1.184945 1.241133 1.261793 1.304147 1.353627 1.420237 1.460613 1.493267 1.555977 1.613428 1.709635 1.679231 1.772497 1.838875 1.955684 0.009576 0.062211 0.123309 0.177382 0.236147 0.368109 0.494920 0.513417 0.544486 0.670501 0.776768 0.838474 0.918021 1.017400 1.154399 1.225090 1.318464 1.419002 1.500500 1.611018 1.681808 1.835520 1.934569 0.046167 0.190146 0.259277 0.403317 0.476059 0.614265 0.742039 0.841147 1.033016 1.100608 1.192938 1.386237 1.517777 1.642112 1.759198 1.912498 0.074043 0.203712 0.338690 0.456250 0.613343 0.750996 0.904317 1.080341 1.196795 1.377374 1.532505 1.723156 1.879303 0.039271 0.188840 0.350308 0.556920 0.704255 0.848541 1.056223 1.213896 1.405928 1.568302 1.776279 1.955280 0.092637 0.280256 0.471838 0.682648 0.885232 1.094005 1.298697 1.470775 1.682635 1.843739 0.082071 0.304418 0.501593 0.659460 0.950325 1.130545 1.329534 1.567897 1.767920 -0.008184 0.198647 0.398357 0.673290 0.874703 1.100281 1.347100 1.620063 1.844991 0.079358 0.313053 0.533006 0.756430 1.055956 1.305919 1.507946 1.752557 -0.010216 0.275989 0.517842 0.786009 1.009391 1.270424 1.564553 1.845657 0.107373 0.350936 0.601741 0.893631 1.160570 1.456505 1.730638 0.021814 0.272744 0.560788 0.838833 1.118321 1.398694 1.741803 0.005633 0.340402 0.570853 0.860526 1.191313 1.498541 1.791770 0.098528 0.433197 0.715757 1.017240 1.297789 1.635947 1.969598 0.288362 0.602945 0.942271 1.265649 1.592001 1.925800 0.216574 0.545007 0.863973 1.216046 1.548811 1.931012 0.206589 0.560209 0.870849 1.248169 1.575639 1.968174 0.298656 0.668812 1.032889 1.367303 1.747227 0.131205 0.443388 0.763197 1.197845 1.560824 1.922638 0.270063 0.663340 1.015306 1.444191 1.797425 0.161887 0.525022 0.888065 1.303746 1.714275 0.081811 0.484861 0.841496 1.307494 1.668170 0.079368 0.429335 0.880923 1.256027 1.695841 0.080221 0.509503 0.891158 1.313571 1.768378 0.151036 0.562459 0.973975 1.445432 1.864233 0.252400 0.718591 1.072456 1.537629 1.978561 0.472725 0.839575 1.309493 1.718903 0.179856 0.637196 1.066704 1.544338 -0.011794 0.420049 0.867921 1.380862 1.809680 0.241806 0.712891 1.168969 1.651955 0.114226 0.569213 1.084201 1.491013 0.017302 0.488713 0.923072 1.477559 1.895148 0.404595 0.866696 1.319535 1.826643 0.360112 0.812646 1.338345 1.819999 0.331649 0.806186 1.380027 1.810674 0.361888 0.854117 1.380972 1.857605 0.339551 0.871263 1.399643 1.896037 0.444376 0.945656 1.487929 1.977678 0.530764 1.066264 1.589039 0.137788 0.662869 1.181856 1.752064 0.319450 0.819525 1.373739 1.887127 0.443724 0.989453 1.529563 0.095851 0.634300 1.201103 1.749086 0.294556 0.932432 1.439119 0.047505 0.593487 1.156096 1.696467 0.336138 0.854778 1.389146 0.076604 0.589223 1.200124 1.793692 0.395450 0.936585 1.523407 0.143491 0.711929 1.296012 1.936224 0.497823 1.106691 1.703029 0.310751 0.869305 1.501394 0.128383 0.709213 1.320836 1.976274 0.582673 1.222646 1.869876 0.436487 1.084391 1.701717 0.354862 0.973861 1.619102 0.232912 0.840772 1.520085 0.127672 0.786594 1.420573 0.067146 0.724881 1.352446 0.042038 0.695191 1.332329 1.912892 0.662284 1.232065 1.950128 0.627201 1.265750 1.969315 0.642511 1.285861 -0.020500 0.661694 1.295349 1.984356 0.673906 1.338806 0.039098 0.704885 1.446968 0.110456 0.788719 1.505525 0.207953 0.823809 1.597883 0.230890 0.980349 1.663658 0.356840 1.128139 1.768903 0.522971 1.217506 1.924282 0.640035 1.393796 0.123616 0.815284 1.548587 0.266072 0.975870 1.703876 0.432900 1.214445 1.884314 0.688760 1.396370 0.144995 0.917953 1.607453 0.354042 1.103062 1.863796 0.623277 1.360185 0.144290 0.862865 1.644453 0.370636 1.158082 1.937878 0.710063 1.444589 0.251644 0.979938 1.762308 0.589861 1.336851 0.047923 0.870163 1.658442 0.402337 1.227823 -0.007241 0.834381 1.593721 0.446431 1.226041 1.946224 0.806841 1.560940 0.394291 1.188209 0.003903 0.840052 1.603862 0.438844 1.256941 0.037853 0.860854 1.712333 0.506346 1.360070 0.152783 1.010568 1.818584 0.689531 1.484168 0.297179 1.145462 -1.816230 0.794502 1.642687 0.508945 1.390944 0.289730 1.055832 1.931797 0.765099 1.641017 0.486231 1.314874 0.219552 1.036509 1.920377 0.779356 1.629134 0.566449 1.409719 0.273234 1.137342 0.041264 0.874688 1.776517 0.668906 1.543925 0.362163 1.288055 0.171358 1.092734 1.973875 0.883525 1.792310 0.694638 1.612304 0.474091 1.404780 0.262469 1.229483 0.150645 1.031657 1.945078 0.833516 1.730904 0.706660 1.598946 0.529648 1.446683 0.372159 1.309763 0.232389 1.185386 0.108553 1.035581 1.967785 0.900118 1.817232 0.784603 1.712791 0.650860 1.628638 0.575261 1.560527 0.530897 1.474276 0.432087 1.361782 0.341886 1.293642 0.225670 1.218017 0.158296 1.145380 0.131011 1.092986 0.066169 1.016833 -0.008260 1.047977 0.006141 0.962919 0.003412 0.935865 1.942137 0.952761 1.900045 0.940044 1.921467 0.878720 1.898715 0.870485 1.897081 0.901692 1.917397 0.937583 1.954879 0.973668 -0.025007 1.020496 0.029704 1.070736 0.072039 1.112798 0.134806 1.144491 0.217013 1.272078 0.289904 1.345119 0.363564 1.408583 0.476459 1.532536 0.456571 1.527931 0.602080 1.631818 0.714381 1.783772 0.804988 1.878848 0.905289 -0.042325 1.057476 0.083283 1.173706 0.242988 1.362175 0.445551 1.486807 0.585886 1.670762 0.759426 1.820535 0.914177 -1.577562 1.051449 0.144083 1.263371 0.398651 1.486124 0.516462 1.678988 0.793688 1.866926 0.903199 0.059715 1.174595 0.260992 1.334032 0.503175 1.546750 0.702193 1.804483 0.953330 0.071288 1.232057 0.362157 1.386255 0.594031 1.674396 0.828409 -0.013684 1.132416 0.234535 1.370848 0.521680 1.745916 0.847364 -0.021190 1.127302 0.239002 1.486553 0.571531 1.741247 0.877442 0.077726 1.250225 0.420439 1.516461 0.774176 1.934408 1.106595 0.292402 1.490231 0.668929 1.818698 0.979060 0.246834 1.459329)
+ 34.003317 #(0.000000 1.337640 0.672865 1.978011 1.256285 0.541403 1.839040 1.188272 0.487429 1.798543 1.171806 0.457993 1.827158 1.136313 0.478848 1.760772 1.101326 0.472342 1.779394 1.096152 0.424834 1.798757 1.133531 0.477311 1.852989 1.173778 0.585669 1.905462 1.267881 0.631454 1.927648 1.345065 0.717916 0.074066 1.455910 0.795990 0.147824 1.502209 0.928797 0.275345 1.664985 1.074436 0.422276 1.832735 1.224289 0.571538 1.938113 1.353786 0.774638 0.165189 1.549736 0.990948 0.377030 1.756920 1.186948 0.613197 1.965932 1.416271 0.806049 0.203711 1.640542 1.025459 0.452150 1.869124 1.283395 0.710305 0.115365 1.587554 1.018954 0.434368 1.862605 1.293069 0.727324 0.183705 1.605176 1.063502 0.517123 1.935564 1.348985 0.851321 0.286213 1.757948 1.212764 0.656279 0.112073 1.597089 1.067207 0.523168 1.989591 1.474677 0.898460 0.375532 1.807836 1.284590 0.787953 0.259495 1.774813 1.228380 0.747578 0.268465 1.711589 1.223081 0.714490 0.201892 1.670670 1.161424 0.643499 0.170776 1.714590 1.181161 0.681596 0.198502 1.680686 1.203939 0.721556 0.259940 1.783527 1.312196 0.798975 0.279522 1.831967 1.383848 0.896342 0.442854 1.964257 1.500917 1.045380 0.582567 0.144443 1.693797 1.236592 0.725090 0.311261 1.853193 1.438524 0.992367 0.505636 0.060171 1.634809 1.174058 0.768627 0.340870 1.889051 1.479222 1.036713 0.560437 0.141779 1.710853 1.302296 0.884379 0.462586 0.039301 1.627322 1.199188 0.778419 0.376403 1.991062 1.579887 1.170681 0.784416 0.391971 1.964791 1.567917 1.179710 0.775932 0.377536 0.003417 1.590308 1.242354 0.848031 0.445148 0.078813 1.704450 1.311975 0.926512 0.561559 0.242876 1.856780 1.466515 1.060359 0.707878 0.364490 0.016840 1.659336 1.267285 0.893337 0.575579 0.219641 1.854857 1.457383 1.145631 0.894921 0.514004 0.161701 1.826959 1.450316 1.125840 0.800523 0.486390 0.158577 1.812154 1.465206 1.159323 0.817545 0.518140 0.225108 1.886973 1.581870 1.269549 0.971310 0.648189 0.334555 0.023206 1.714135 1.437951 1.119597 0.830114 0.530506 0.255436 1.954197 1.640755 1.329600 1.081518 0.809538 0.495524 0.212621 1.909444 1.628961 1.359230 1.118857 0.817906 0.569793 0.300738 0.033563 1.758900 1.517938 1.253471 0.970535 0.712554 0.448731 0.208560 1.927099 1.680791 1.462894 1.245212 0.968763 0.696484 0.469285 0.213226 1.936826 1.727443 1.532159 1.310958 1.037341 0.804013 0.599499 0.389305 0.155646 1.930630 1.689075 1.497047 1.292656 1.075370 0.857982 0.630896 0.440893 0.228505 0.027629 1.807013 1.605595 1.445014 1.240984 1.013396 0.852675 0.644721 0.450264 0.281381 0.114623 1.937713 1.711067 1.532570 1.360817 1.165492 1.006967 0.834758 0.663398 0.484367 0.324696 0.145908 1.973248 1.824908 1.684514 1.534546 1.324707 1.202018 1.061743 0.891202 0.707295 0.561019 0.451440 0.311510 0.121356 0.008723 1.915727 1.758905 1.580780 1.509184 1.338758 1.175957 1.083654 0.979953 0.847231 0.707752 0.581170 0.473214 0.367201 0.201161 0.114373 0.010613 1.888917 1.790271 1.699962 1.602532 1.509087 1.419657 1.275691 1.225329 1.109658 1.025854 0.922169 0.784885 0.754017 0.678692 0.585604 0.508938 0.420267 0.344874 0.272454 0.172180 0.093133 0.037285 1.957996 1.918844 1.878781 1.808825 1.723707 1.630934 1.605535 1.558971 1.494217 1.448576 1.392096 1.349699 1.303718 1.256939 1.194487 1.150626 1.118047 1.072291 1.026179 1.023676 1.009052 0.946375 0.910783 0.902635 0.883675 0.863984 0.831184 0.812972 0.795578 0.750183 0.782461 0.798123 0.751572 0.722663 0.765579 0.772719 0.723138 0.718487 0.740130 0.733824 0.750015 0.751557 0.697350 0.741056 0.790944 0.798676 0.772269 0.819207 0.831444 0.844169 0.867861 0.892410 0.973615 0.956857 0.965052 1.015218 1.072805 1.125576 1.102231 1.178302 1.239455 1.265061 1.292017 1.352995 1.417050 1.459558 1.497990 1.553413 1.624630 1.705182 1.677483 1.763978 1.845458 1.940973 0.007092 0.065503 0.135781 0.172970 0.223643 0.365681 0.487038 0.509654 0.541775 0.678013 0.780134 0.841251 0.909466 1.013063 1.155833 1.224293 1.305712 1.408256 1.504200 1.596204 1.678949 1.830034 1.930276 0.047478 0.186421 0.258223 0.399694 0.482045 0.611722 0.733397 0.847987 1.026174 1.102459 1.182920 1.387635 1.512699 1.631310 1.762320 1.909573 0.081930 0.201142 0.333213 0.459186 0.618002 0.746154 0.895982 1.077491 1.204348 1.371163 1.530757 1.720677 1.885254 0.035296 0.182420 0.354150 0.556190 0.705692 0.853340 1.051530 1.225081 1.404965 1.572725 1.773469 1.946006 0.095219 0.286388 0.461017 0.682351 0.883558 1.098099 1.293958 1.462153 1.681139 1.845808 0.084506 0.301749 0.492196 0.669388 0.947779 1.126699 1.328779 1.558346 1.766441 0.000654 0.203740 0.393976 0.670020 0.879037 1.102484 1.351194 1.605597 1.833606 0.082077 0.302593 0.533528 0.755307 1.052569 1.303573 1.509917 1.744905 -0.017137 0.289627 0.522324 0.788534 1.016663 1.267860 1.555028 1.842817 0.109530 0.335224 0.605461 0.886918 1.169555 1.447611 1.722492 0.024113 0.281425 0.556573 0.839362 1.116921 1.407753 1.737584 0.009629 0.342111 0.565521 0.865965 1.194084 1.493467 1.801310 0.088884 0.423666 0.702940 1.023118 1.291397 1.635684 1.962487 0.294294 0.608175 0.934071 1.271559 1.588537 1.924063 0.213488 0.554747 0.862833 1.227232 1.543432 1.946921 0.206161 0.558873 0.882004 1.246841 1.571221 1.968870 0.303819 0.661044 1.038589 1.368204 1.755866 0.127442 0.430466 0.771081 1.208408 1.564542 1.929762 0.266425 0.665609 1.018726 1.444894 1.789535 0.161743 0.521654 0.898088 1.310667 1.713515 0.075125 0.485085 0.851607 1.305170 1.665219 0.076062 0.424067 0.880588 1.242842 1.697736 0.087906 0.508872 0.893430 1.311021 1.770960 0.156220 0.559316 0.979533 1.459699 1.856991 0.242717 0.714109 1.079638 1.537892 1.980288 0.467413 0.833223 1.306832 1.721839 0.176486 0.639620 1.083674 1.540228 -0.005796 0.422922 0.870772 1.378139 1.798871 0.245784 0.715144 1.164155 1.663083 0.121485 0.566027 1.087491 1.485378 0.024140 0.488732 0.924648 1.485416 1.882058 0.409825 0.886058 1.321486 1.824111 0.369917 0.819004 1.343711 1.826532 0.340643 0.794891 1.384870 1.818228 0.366235 0.854522 1.369655 1.863728 0.342405 0.872442 1.413887 1.891471 0.444769 0.934776 1.478476 1.983819 0.523997 1.068352 1.589686 0.135206 0.668387 1.189789 1.757290 0.311700 0.818891 1.364411 1.879559 0.451300 0.993269 1.533192 0.107523 0.645911 1.197552 1.754108 0.290483 0.918012 1.434798 0.042235 0.590707 1.159049 1.704456 0.341769 0.855301 1.392872 0.075331 0.594905 1.214237 1.782613 0.388787 0.931563 1.528886 0.133491 0.716564 1.291951 1.940399 0.505648 1.113380 1.707685 0.305589 0.866226 1.516884 0.128584 0.717436 1.320935 1.966376 0.581008 1.226367 1.856122 0.441170 1.089436 1.698084 0.345632 0.970049 1.606438 0.224662 0.841780 1.521084 0.119800 0.782726 1.410908 0.060830 0.706191 1.349226 0.036982 0.683271 1.336248 1.912712 0.662818 1.248106 1.964246 0.637778 1.259957 1.962665 0.626955 1.282565 -0.031769 0.648732 1.291917 1.985375 0.676207 1.343413 0.046580 0.710080 1.436455 0.098264 0.792935 1.502390 0.211709 0.830472 1.608312 0.223948 0.977078 1.670923 0.363556 1.122592 1.764558 0.526822 1.214963 1.920343 0.651507 1.395290 0.125610 0.827878 1.568786 0.266859 0.979626 1.692158 0.433914 1.216169 1.874399 0.687518 1.408619 0.141738 0.911341 1.607744 0.359079 1.108779 1.864356 0.624022 1.351324 0.147431 0.864272 1.639392 0.384668 1.148718 1.925020 0.708160 1.450575 0.226819 0.971231 1.775714 0.601687 1.340094 0.059513 0.872295 1.675376 0.405075 1.225697 -0.002572 0.838002 1.590203 0.447054 1.225135 1.946034 0.802679 1.572955 0.396337 1.183028 -0.000131 0.835925 1.603991 0.445748 1.246671 0.045137 0.866777 1.706052 0.505047 1.352774 0.140220 1.017634 1.801634 0.690279 1.477960 0.301515 1.159690 -1.841433 0.785910 1.653902 0.513416 1.383783 0.286644 1.055588 1.920989 0.768826 1.655341 0.487270 1.322370 0.221483 1.044633 1.917537 0.773998 1.624241 0.573066 1.411529 0.268665 1.129381 0.039313 0.876868 1.789770 0.667987 1.545235 0.364200 1.286902 0.180396 1.081030 1.970956 0.884421 1.793249 0.710431 1.630135 0.481654 1.414323 0.279758 1.229932 0.156639 1.030259 1.941794 0.833043 1.734299 0.693069 1.613883 0.527968 1.444493 0.374249 1.314105 0.238818 1.175102 0.103279 1.035829 1.956464 0.897173 1.809389 0.775424 1.713240 0.661795 1.622164 0.565203 1.556899 0.529951 1.472300 0.422653 1.384070 0.341417 1.299808 0.224571 1.229199 0.156291 1.146479 0.134017 1.086649 0.072451 1.026584 -0.011686 1.043335 0.001660 0.972966 0.003154 0.928917 1.942334 0.954926 1.889797 0.941779 1.931179 0.876179 1.903412 0.862127 1.900400 0.895346 1.920273 0.935454 1.965987 0.971040 -0.031774 1.011924 0.037944 1.080296 0.073425 1.119581 0.146667 1.153271 0.216171 1.271202 0.290338 1.349933 0.366241 1.415605 0.477025 1.538022 0.468425 1.523801 0.611162 1.630286 0.720693 1.779498 0.812700 1.867867 0.911636 -0.041736 1.052395 0.102128 1.174510 0.266703 1.357489 0.438760 1.482089 0.583511 1.673662 0.757556 1.828015 0.921418 -1.599544 1.049012 0.135847 1.253218 0.399795 1.490009 0.511357 1.675789 0.800515 1.869803 0.909230 0.051195 1.169536 0.265147 1.334108 0.506534 1.542638 0.710556 1.803464 0.944694 0.064007 1.230502 0.359332 1.385076 0.573925 1.668872 0.835636 -0.014435 1.134123 0.233452 1.357587 0.523061 1.752595 0.844891 -0.024043 1.138564 0.240932 1.491351 0.581336 1.747024 0.883685 0.070591 1.238720 0.413858 1.511017 0.768143 1.924664 1.103556 0.279264 1.487272 0.675968 1.832638 0.996583 0.270127 1.485590)
)
;;; 2048 odd --------------------------------------------------------------------------------
(vector 2048 83.108 #r(0 1 1 0 1 0 1 0 1 1 1 0 0 0 0 0 1 0 1 1 0 1 1 0 0 1 1 0 1 1 0 1 1 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 1 0 0 0 1 0 1 1 1 1 0 1 1 0 0 1 0 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 0 1 1 0 1 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 1 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 1 1 0 1 0 1 0 1 0 0 1 0 1 0 0 0 1 1 0 1 1 1 0 1 1 0 0 1 0 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 1 1 1 0 1 0 0 0 1 1 0 1 0 1 1 0 0 1 1 0 1 0 1 1 1 0 1 1 0 1 1 1 0 1 1 0 1 0 1 1 1 0 0 0 1 0 1 0 0 1 1 0 1 0 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 1 0 1 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0 1 0 1 1 0 1 1 1 1 1 0 1 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 1 0 0 1 1 1 0 1 0 0 0 0 1 1 1 1 0 0 1 0 0 1 1 0 1 0 0 0 0 1 0 1 1 0 0 0 1 1 1 0 1 1 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 1 1 1 1 0 0 1 1 0 0 0 1 0 1 0 0 1 0 1 0 0 0 1 1 1 0 1 0 0 1 0 0 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 0 0 1 0 0 1 1 0 1 0 0 0 0 1 1 0 1 1 0 1 1 1 0 0 1 0 0 0 0 1 0 1 1 1 0 1 0 1 0 0 1 1 1 0 1 1 0 1 1 0 1 1 1 0 0 1 1 0 0 1 1 0 0 0 1 0 1 1 0 0 1 1 1 1 1 1 0 0 0 1 0 1 0 0 0 1 0 1 1 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 1 0 1 0 1 1 1 0 1 0 1 0 0 0 0 1 0 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 1 0 0 1 1 1 1 1 0 0 1 0 0 0 1 0 1 0 0 1 0 1 1 0 1 0 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 1 1 0 1 0 0 0 0 1 0 0 0 0 1 0 1 1 0 0 0 1 0 1 1 1 0 0 0 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 0 1 1 1 1 0 0 1 0 0 1 1 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 1 0 0 1 1 0 0 1 1 1 0 0 1 1 1 0 0 0 1 0 0 1 1 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 1 0 1 1 1 1 0 0 0 0 1 1 0 1 0 1 1 0 0 0 1 1 1 1 1 0 0 0 1 0 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 1 1 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 1 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 0 1 1 1 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 0 1 1 0 1 1 0 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 1 0 0 1 1 1 0 1 1 0 0 1 1 1 1 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 1 1 0 0 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 0 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 0 0 1 1 1 0 1 1 0 1 1 0 1 0 1 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 1 0 1 0 0 1 1 0 1 0 1 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 0 0 0 1 0 1 0 0 0 1 1 0 1 1 1 0 0 1 1 1 0 0 0 1 0 1 0 1 1 1 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 0 1 1 1 0 1 0 0 0 1 1 1 0 1 1 1 1 1 1 0 1 1 0 0 1 1 0 1 1 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 1 1 0 0 0 1 1 1 1 0 1 0 1 1 0 0 0 0 0 1 0 1 1 0 0 0 1 1 0 0 1 0 0 1 0 1 0 0 1 1 1 1 0 0 1 1 1 1 1 1 0 1 1 1 0 1 0 1 0 0 1 1 0 0 0 1 0 1 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 1 0 1 1 1 0 0 0 1 0 0 1 1 0 1 0 0 0 1 0 0 1 0 1 1 1 0 1 1 1 1 0 1 1 0 1 0 1 1 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 1 1 1 0 0 0 0 1 1 0 1 0 0 1 1 1 1 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 1 1 0 1 1 0 0 0 0 1 1 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 1 1 0 1 1 1 0 1 1 0 0 1 0 0 0 1 0 1 0 0 1 1 0 1 0 0 0 0 1 0 1 1 1 0 1 0 1 1 1 1 1 1 0 1 1 0 0 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 0 1 0 1 0 0 0 1 0 1 1 1 0 0 0 1 1 1 0 0 1 1 1 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 1 1 1 0 0 1 0 1 0 1 0 1 0 1 1 1 1 0 0 0 0 1 0 1 0 0 1 1 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 1 0 1 0 0 1 0 0 1 0 0 0 1 0 1 1 0 1 1 1 1 1 1 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 0 1 1 0 1 0 0 1 1 1 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 1 1 0 0 1 0 1 0 0 0 1 1 0 1 0 1 1 1 1 1 0 0 1 1 1 1 1 0 1 0 0 1 1 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 0 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 1 1 0 1 0 1 1 1 0 1 0 0 0 0 1 1 1 0 0 0 1 1 0 0 1 1 1 0 1 0 1 0 1 1 0 0 1 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 1 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 0 1 1 1 0 1 1 0 1 0 0 0 1 0 1 1 1 1 0 0 1 1 0 1 0 1 1 1 0 1 0 0 0 1 0 0 1 1 1 0 0 0 1 1 1 0 1 1 0 1 0 0 1 1 1 1 1 0 0 1 1 0 0 0 1 1 1 0 0 1 1 1 1 0 0 1 0 1 1 1 0 0 0 0 1 1 1 1 0 0 1 0 1 0 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 0 0 0 1 0 0 0 1 1 1 1 0 0 1 1 1 1 0 1 1 1 0 0 0 0)
-
-
;; pp:
- 48.938317 #(0.000000 1.167623 0.282225 1.376653 0.534514 1.660914 0.823370 1.930658 1.070085 0.214625 1.354025 0.484578 1.623954 0.740719 1.908933 1.074867 0.168238 1.320193 0.479927 1.615001 0.773055 1.914067 1.071083 0.213385 1.332812 0.510800 1.651702 0.813446 1.965854 1.141096 0.307117 1.475035 0.625028 1.771862 0.912651 0.086444 1.282411 0.390695 1.560441 0.750832 1.917327 1.118233 0.287542 1.425738 0.578911 1.736440 0.952043 0.084501 1.279879 0.441668 1.623933 0.806211 1.933432 1.157213 0.320181 1.527410 0.698033 1.881574 1.079658 0.244634 1.424867 0.602355 1.780375 0.962173 0.182065 1.368337 0.548745 1.734105 0.951438 0.146458 1.305815 0.508320 1.722615 0.945078 0.140412 1.321110 0.529516 1.717275 0.959303 0.120549 1.322802 0.515478 1.744705 0.944865 0.143706 1.374903 0.546142 1.797945 0.983189 0.180160 1.427362 0.644156 1.851906 1.061747 0.288472 1.462756 0.716178 1.906213 1.158696 0.374832 1.568725 0.827160 0.037611 1.267047 0.502288 1.711331 0.936855 0.156378 1.444240 0.631552 1.865843 1.086534 0.315308 1.535315 0.811499 0.017383 1.269380 0.496907 1.762897 0.964919 0.240278 1.452545 0.716923 1.972925 1.199211 0.441548 1.691781 0.935087 0.201054 1.453632 0.668128 1.935787 1.194845 0.447342 1.705599 0.937891 0.212609 1.452424 0.727408 1.974678 1.215973 0.516063 1.765606 1.017849 0.296296 1.538306 0.833245 0.085288 1.371617 0.616223 1.896734 1.154892 0.404688 1.662495 0.942344 0.262430 1.502037 0.786497 0.044602 1.342306 0.642533 1.888323 1.178587 0.443662 1.733278 1.015176 0.334662 1.571936 0.910767 0.183051 1.474511 0.745803 0.060238 1.350418 0.635046 1.920092 1.189534 0.499792 1.753110 1.035493 0.378396 1.682413 0.992174 0.270253 1.591558 0.889613 0.198678 1.477059 0.813940 0.071877 1.409494 0.709255 0.052773 1.306019 0.644886 1.927568 1.246923 0.583469 1.880367 1.223587 0.503415 1.831220 1.170859 0.460883 1.758714 1.111217 0.439105 1.737433 1.089008 0.382728 1.725135 1.059849 0.371606 1.674013 1.061339 0.389549 1.684839 1.001814 0.345519 1.667016 1.034958 0.352234 1.709324 1.032943 0.387985 1.699924 1.047648 0.383156 1.742441 1.085359 0.435289 1.748636 1.049142 0.438617 1.779398 1.147519 0.504498 1.863372 1.183919 0.541649 1.879488 1.226400 0.585925 -0.002341 1.297877 0.653704 0.036723 1.384237 0.760937 0.109741 1.479508 0.827606 0.209062 1.570729 0.935399 0.309542 1.662907 1.056347 0.423451 1.752453 1.153722 0.542171 1.913747 1.265658 0.651890 0.014128 1.405051 0.800727 0.153722 1.557204 0.925355 0.320210 1.703454 1.059741 0.453405 1.846781 1.214019 0.616997 1.979336 1.373413 0.796228 0.173191 1.590046 0.942072 0.354468 1.752409 1.148401 0.562688 1.963192 1.336209 0.726036 0.125851 1.526454 0.940065 0.329273 1.754630 1.116898 0.557398 1.954010 1.359099 0.797818 0.188823 1.612597 1.007437 0.442434 1.837576 1.257874 0.651980 0.094580 1.509460 0.943247 0.312161 1.746667 1.129515 0.573848 0.028415 1.452578 0.856570 0.285853 1.727867 1.134745 0.582983 -0.002878 1.433995 0.873528 0.297786 1.719335 1.185550 0.610743 0.039818 1.476173 0.944896 0.350844 1.806899 1.222763 0.694622 0.116127 1.565651 0.996106 0.448360 1.901658 1.322457 0.782944 0.262548 1.683986 1.151424 0.600666 0.022174 1.493951 0.958455 0.377457 1.849933 1.307090 0.784160 0.254453 1.691107 1.123965 0.612527 0.081748 1.561305 0.977198 0.464963 1.925710 1.391234 0.861063 0.344579 1.797148 1.300206 0.740379 0.250849 1.743807 1.209677 0.681988 0.144283 1.606981 1.083582 0.578120 0.086244 1.539491 1.003053 0.519618 0.001729 1.438716 0.932987 0.424940 1.973315 1.413069 0.936268 0.425359 1.905181 1.406004 0.876827 0.377573 1.872372 1.386358 0.871448 0.364168 1.890777 1.374215 0.871078 0.364342 1.843180 1.377816 0.878190 0.386930 1.890768 1.393332 0.954097 0.447136 1.969403 1.463510 0.955467 0.491952 -0.004058 1.524437 1.033931 0.542484 0.046054 1.605007 1.108774 0.596223 0.142256 1.656697 1.195275 0.729522 0.241250 1.752421 1.289611 0.831660 0.343814 1.879262 1.393827 0.937184 0.486404 0.041735 1.558985 1.103891 0.606105 0.145024 1.664568 1.221279 0.766126 0.339495 1.850694 1.402930 0.928499 0.479037 0.028538 1.590890 1.147969 0.657376 0.219279 1.773094 1.310932 0.885540 0.420311 1.979382 1.556686 1.089023 0.650216 0.223710 1.784581 1.347944 0.903039 0.453728 0.029501 1.574077 1.130407 0.710038 0.279504 1.852736 1.424979 1.008706 0.551046 0.127293 1.682427 1.266223 0.845129 0.412469 1.992550 1.526570 1.138074 0.747185 0.336825 1.866466 1.457134 1.054015 0.666940 0.218423 1.817619 1.408012 0.984947 0.573493 0.136780 1.764033 1.329735 0.903286 0.509631 0.107272 1.714355 1.292605 0.935879 0.517706 0.105151 1.705931 1.288681 0.891823 0.507883 0.110817 1.717029 1.307361 0.904579 0.496974 0.139902 1.761911 1.350929 0.950950 0.557034 0.198762 1.804025 1.393649 1.026133 0.620012 0.239038 1.876464 1.486449 1.114141 0.732191 0.374203 1.962259 1.603528 1.228975 0.868028 0.508538 0.103928 1.729825 1.324975 0.987483 0.621810 0.251583 1.883172 1.509410 1.148295 0.771729 0.404091 0.069839 1.702352 1.383234 0.997793 0.615769 0.268818 1.899984 1.566440 1.202921 0.867621 0.513258 0.128821 1.824657 1.438112 1.066258 0.722202 0.390635 0.058767 1.695791 1.374438 0.999297 0.642595 0.332568 1.977415 1.631814 1.297492 0.945148 0.637140 0.311549 1.965770 1.636985 1.287744 0.972721 0.631523 0.295406 1.966037 1.641873 1.351870 1.017314 0.676276 0.314147 0.021143 1.689586 1.360720 1.027179 0.737342 0.407695 0.054624 1.752288 1.432264 1.119029 0.832726 0.502472 0.195940 1.873462 1.563227 1.261455 0.974464 0.615136 0.341537 0.026287 1.736090 1.430730 1.110562 0.789300 0.536362 0.209096 1.932086 1.606344 1.323516 1.013787 0.721162 0.439597 0.131979 1.799092 1.525417 1.253260 0.957483 0.671751 0.382251 0.074846 1.802859 1.530230 1.256037 0.982272 0.648065 0.351070 0.085445 1.832790 1.553531 1.297659 0.993303 0.713003 0.454087 0.148617 1.889745 1.592397 1.364633 1.080885 0.818640 0.548036 0.272772 0.006871 1.745355 1.482322 1.202059 0.953328 0.684027 0.406687 0.185160 1.888652 1.616222 1.397199 1.149929 0.888703 0.606901 0.344603 0.086202 1.856052 1.635016 1.316703 1.123003 0.890076 0.610977 0.347871 0.094414 1.867293 1.625224 1.413640 1.132950 0.910376 0.663960 0.452258 0.190891 1.936498 1.718671 1.455517 1.214384 1.012824 0.790236 0.555158 0.275886 0.058174 1.869275 1.605596 1.398303 1.174781 0.950928 0.728650 0.505977 0.266181 0.067894 1.828757 1.566238 1.364389 1.169789 0.947453 0.745519 0.528723 0.331921 0.121393 1.878086 1.704273 1.467279 1.240981 1.043375 0.830667 0.631469 0.454114 0.222905 0.014720 1.816471 1.613927 1.445713 1.189306 0.975978 0.811345 0.602053 0.448606 0.215481 0.021259 1.827124 1.651851 1.445676 1.279705 1.090959 0.884552 0.724977 0.500360 0.328434 0.156290 1.958056 1.796294 1.580393 1.416534 1.260974 1.019490 0.878567 0.705207 0.503616 0.327719 0.159927 1.996425 1.832160 1.638336 1.479521 1.311900 1.145735 0.980475 0.826806 0.610003 0.478791 0.312526 0.165023 1.984468 1.815612 1.656258 1.498320 1.349677 1.167934 1.030468 0.890901 0.725442 0.582932 0.420274 0.269701 0.118831 1.955007 1.798624 1.655853 1.483782 1.346361 1.210747 1.082290 0.925459 0.775544 0.640536 0.472447 0.376695 0.254186 0.079449 1.917818 1.774777 1.664878 1.536332 1.397556 1.290519 1.129067 1.005837 0.894161 0.746188 0.630943 0.508914 0.385674 0.204280 0.086107 0.002473 1.847697 1.732598 1.617395 1.491848 1.372600 1.303780 1.164852 1.024005 0.934055 0.830835 0.706993 0.609704 0.468381 0.386299 0.275606 0.141501 0.038979 1.929917 1.809789 1.715874 1.613514 1.498658 1.383214 1.320391 1.190878 1.117115 1.003206 0.888877 0.823091 0.734960 0.603626 0.525682 0.421969 0.322800 0.281984 0.161925 0.071698 1.981031 1.896931 1.831077 1.746001 1.668142 1.580757 1.476346 1.409429 1.335213 1.287612 1.169626 1.050243 1.022504 0.947889 0.868700 0.788735 0.721532 0.628758 0.574378 0.496899 0.417938 0.365706 0.291260 0.222974 0.147521 0.105182 0.050073 1.971542 1.912537 1.842501 1.811968 1.751631 1.651987 1.606277 1.549138 1.482209 1.419531 1.406537 1.323625 1.279718 1.235676 1.177530 1.125044 1.063358 1.047038 1.016187 0.947495 0.919568 0.858526 0.836537 0.810871 0.772817 0.701352 0.681799 0.613373 0.593594 0.539761 0.507429 0.464819 0.441648 0.411344 0.392107 0.348205 0.301369 0.308706 0.247053 0.208241 0.216046 0.206810 0.167490 0.124675 0.124039 0.121146 0.072040 0.075269 0.040405 -0.002353 0.004670 0.036079 1.964376 1.932923 1.944708 1.940814 1.952244 1.949226 1.929245 1.904671 1.913271 1.908479 1.911726 1.882223 1.893258 1.882787 1.892935 1.873025 1.875107 1.887426 1.935042 1.916857 1.941491 1.887800 1.897065 1.912466 1.909295 1.937992 1.966419 1.951366 1.950669 1.993395 0.012517 0.036712 0.036965 0.042470 0.083491 0.082907 0.108158 0.139463 0.119555 0.184657 0.184922 0.203318 0.267665 0.279628 0.285520 0.309145 0.322645 0.367831 0.371353 0.465521 0.470013 0.494174 0.530794 0.568241 0.616563 0.631549 0.678124 0.716441 0.769066 0.825612 0.869296 0.876676 0.914402 0.967433 1.005183 1.072376 1.120849 1.180362 1.209450 1.267538 1.299781 1.365468 1.454232 1.483217 1.519755 1.581123 1.644706 1.738657 1.776548 1.793230 1.875424 1.935983 0.012946 0.059774 0.127031 0.172376 0.212347 0.333625 0.366687 0.420625 0.546582 0.614331 0.685424 0.747709 0.794251 0.864955 0.962854 1.032653 1.104403 1.197927 1.277471 1.338392 1.443199 1.531379 1.604788 1.703851 1.762495 1.831178 1.920740 0.039507 0.123314 0.208825 0.315311 0.411979 0.508148 0.563574 0.656825 0.763286 0.863562 0.947763 1.052165 1.155863 1.263029 1.337045 1.430892 1.540954 1.671180 1.773746 1.867849 1.986007 0.103863 0.202277 0.304660 0.423647 0.523758 0.650840 0.761975 0.823189 0.974608 1.092718 1.191480 1.309541 1.433617 1.552700 1.668978 1.797089 1.891002 0.049514 0.161227 0.299906 0.396662 0.527285 0.643574 0.811342 0.934969 1.050156 1.187185 1.347338 1.462897 1.571305 1.740041 1.902380 0.003401 0.133208 0.269746 0.430182 0.588759 0.701058 0.863524 0.994706 1.136737 1.282942 1.430377 1.561454 1.742625 1.840309 0.038452 0.155061 0.324821 0.481975 0.646501 0.800620 0.943515 1.096121 1.247372 1.424286 1.584778 1.738499 1.889598 0.065703 0.197229 0.397534 0.566731 0.698938 0.883393 1.070795 1.234091 1.400289 1.565708 1.722501 1.919697 0.053412 0.241535 0.441143 0.590215 0.791618 0.966021 1.128031 1.276025 1.493498 1.656119 1.858910 0.065064 0.224170 0.391259 0.606178 0.803453 0.981656 1.158314 1.358685 1.544905 1.753753 1.932471 0.135869 0.328397 0.512767 0.719508 0.934490 1.093810 1.309285 1.532285 1.717750 1.927518 0.136321 0.313720 0.493762 0.718014 0.935538 1.150810 1.361689 1.556333 1.805243 1.974613 0.212285 0.411200 0.608244 0.842629 1.080653 1.273837 1.513842 1.716967 1.919951 0.164727 0.369694 0.579059 0.834151 1.067429 1.290591 1.495590 1.752409 1.961446 0.199000 0.429249 0.641148 0.896549 1.076714 1.353344 1.600990 1.809338 0.053661 0.299737 0.526322 0.794150 1.006087 1.266438 1.491558 1.728697 1.958490 0.219390 0.475781 0.691916 0.957520 1.225096 1.434106 1.726570 1.984341 0.220911 0.508654 0.726991 1.015072 1.259741 1.479979 1.734937 0.012313 0.297991 0.538731 0.794441 1.056267 1.345863 1.599562 1.889794 0.126193 0.416233 0.651655 0.933378 1.203962 1.466564 1.714436 0.030806 0.296108 0.580970 0.845591 1.124438 1.373843 1.690180 1.962652 0.225080 0.525949 0.795485 1.095396 1.360062 1.659714 1.961515 0.221441 0.528774 0.799887 1.100605 1.410002 1.689804 1.975411 0.267050 0.564358 0.875434 1.150454 1.480310 1.738755 0.043111 0.355160 0.678632 0.992821 1.240765 1.568415 1.839416 0.148815 0.513192 0.781574 1.085726 1.426402 1.717157 0.032674 0.344382 0.688214 0.913564 1.287903 1.583865 1.937260 0.232622 0.557820 0.879525 1.197226 1.534402 1.820283 0.171769 0.516153 0.808571 1.156522 1.451167 1.811697 0.111240 0.471117 0.805734 1.119618 1.440829 1.799243 0.093303 0.445335 0.780582 1.149832 1.493098 1.825364 0.164126 0.507025 0.816842 1.179593 1.539966 1.884561 0.198164 0.546892 0.904927 1.254393 1.624814 1.991933 0.293976 0.683340 1.032795 1.372436 1.715921 0.077794 0.455233 0.768797 1.134394 1.524496 1.898628 0.235584 0.611051 0.953063 1.340580 1.709830 0.080046 0.445846 0.782676 1.160591 1.533251 1.928534 0.236430 0.645942 1.033695 1.399244 1.761751 0.154964 0.534627 0.919594 1.282679 1.679311 0.030459 0.432716 0.826532 1.223539 1.585872 1.974777 0.373302 0.759619 1.160928 1.535107 1.926064 0.339964 0.713931 1.071966 1.504966 1.869793 0.274817 0.674052 1.080235 1.489185 1.892780 0.272788 0.670783 1.122425 1.483792 1.859541 0.311146 0.703607 1.125549 1.525228 1.928047 0.347093 0.729971 1.182002 1.578967 -0.005714 0.386648 0.822291 1.222735 1.665478 0.071062 0.521136 0.930234 1.332735 1.762099 0.197489 0.625607 1.052479 1.471447 1.906706 0.348659 0.766031 1.176693 1.640088 0.043971 0.478062 0.912755 1.336121 1.751350 0.228876 0.653057 1.129680 1.536266 1.957139 0.418211 0.862125 1.290430 1.768200 0.196690 0.613992 1.087517 1.499720 1.982797 0.444314 0.888437 1.331645 1.807370 0.225781 0.674815 1.136944 1.606790 0.051270 0.541044 1.001759 1.450483 1.925298 0.356160 0.843723 1.269319 1.773942 0.233322 0.683060 1.157308 1.614654 0.094612 0.560761 1.070873 1.508945 1.986529 0.416500 0.942592 1.406503 1.892666 0.362935 0.845478 1.312623 1.770496 0.247787 0.765832 1.246989 1.755885 0.245939 0.701066 1.167684 1.664935 0.167415 0.657756 1.140314 1.626875 0.129867 0.617545 1.131190 1.624736 0.126106 0.628066 1.095762 1.617755 0.089423 0.608911 1.087088 1.588845 0.106158 0.624975 1.138828 1.613364 0.160774 0.632289 1.147065 1.679120 0.152653 0.680295 1.205463 1.710279 0.226179 0.774654 1.261738 1.807640 0.313714 0.816201 1.333630 1.871147 0.387214 0.905133 1.401829 1.955808 0.473646 0.992109 1.548253 0.059400 0.608078 1.124267 1.624811 0.201108 0.743302 1.259208 1.790376 0.357269 0.851455 1.422882 1.936483 0.477692 1.034341 1.565645 0.106084 0.647034 1.238785 1.764056 0.297256 0.838013 1.394120 1.982813 0.504733 1.042839 1.615830 0.100689 0.684665 1.279630 1.822002 0.392042 0.940388 1.506908 0.036261 0.610190 1.171883 1.742713 0.301631 0.876367 1.446412 0.001751 0.551964 1.138759 1.686983 0.272057 0.850943 1.413876 0.001724 0.566403 1.113663 1.695126 0.295704 0.866462 1.450351 0.016525 0.596350 1.184768 1.774866 0.348423 0.942641 1.536421 0.069367 0.718987 1.260917 1.879985 0.457612 1.049059 1.630272 0.190579 0.824169 1.421383 0.003499 0.628240 1.229247 1.814920 0.405304 1.002074 1.617514 0.207136 0.804322 1.412356 0.046450 0.600317 1.227922 1.838320 0.431906 1.067997 1.665193 0.289811 0.889565 1.525340 0.119730 0.728561 1.343542 1.964071 0.587637 1.221819 1.814110 0.431015 1.064317 1.692284 0.335827 0.935555 1.580359 0.172941 0.805197 1.436494 0.076694 0.683166 1.332642 1.966559 0.600574 1.243217 1.855223 0.534880 1.157772 1.747645 0.425946 1.025573 1.697032 0.333162 0.976777 1.614413 0.259746 0.909452 1.528093 0.226885 0.833132 1.466837 0.151792 0.785636 1.473224 0.117004 0.728339 1.406741 0.057575 0.720062 1.339187 0.029895 0.719736 1.350651 0.000253 0.687920 1.347471 1.965061 0.664230 1.349830 0.003758 0.699164 1.345594 0.011716 0.666846 1.355702 0.019946 0.693519 1.342984 0.043467 0.725688 1.389619 0.066726 0.745910 1.427250 0.128665 0.788280 1.462009 0.122214 0.829137 1.518784 0.184664 0.903670 1.590666 0.253248 0.980436 1.654381 0.317580 0.998899 1.687423 0.433376 1.114830 1.827306 0.508627 1.196682 1.910609 0.625810 1.308433 -0.019202 0.692262 1.413671 0.118496 0.833227 1.519419 0.245662 0.954860 1.647614 0.361453 1.091746 1.784704 0.505859 1.256540 1.903369 0.635907 1.378219 0.083231 0.819168 1.496839 0.255361 0.955468 1.669837 0.433478 1.171485 1.853782 0.570212 1.278434 0.011381 0.792468 1.535764 0.210622 0.946243 1.703647 0.444833 1.189701 1.849416 0.625735 1.339071 0.100417 0.849313 1.564343 0.339974 1.044679 1.808439 0.568480 1.314109 0.032832 0.800539 1.542426 0.274036 1.032943 1.777407 0.542714 1.270582 0.030395 0.794798 1.517805 0.283975 1.092332 1.834470 0.571772 1.363389 0.085108 0.860419 1.625081 0.397675 1.157494 1.908790 0.687876 1.400992 0.199987 1.002089 1.773990 0.551532 1.317323 0.068364 0.831380 1.647517 0.396358 1.158074 1.994809 0.718624 1.493473 0.272828 1.060055 1.881160 0.656937 1.411179 0.214621 1.033909 1.752887 0.569748 1.376250 0.149777 0.908833 1.738552 0.526411 1.294993 0.103500 0.893371 1.686581 0.493803 1.298138 0.082702 0.870780 1.680849 0.520032 1.314491 0.059141 0.902752 1.722231 0.534013 1.314963 0.092557 0.929374 1.771071 0.545350 1.359764 0.162904 0.994633 1.800444 0.654822 1.440097 0.271629 1.100326 1.900313 0.733479 1.560958 0.358043 1.159060 0.035027 0.805574 1.648436 0.492575 1.332457 0.151432 0.981695 1.808889 0.660295 1.470496 0.311692 1.137584 1.976828 0.803543 1.642196 0.497751 1.335734 0.164465 0.990616 1.865258 0.699088 1.544703 0.384326 1.218235 0.028013 0.922653 1.732336 0.620637 1.473614 0.309235 1.146814 0.026921 0.851754 1.712224 0.584906 1.446369 0.290275 1.154728 0.016628 0.885706 1.739430 0.596112 1.444972 0.300698 1.161129 0.071959 0.887545 1.789668 0.646427 1.518850 0.388134 1.290903 0.149371 1.017139 1.906413 0.782821 1.679601 0.538908 1.427302 0.261530 1.163063 0.056126 0.930666 1.775628 0.696685 1.598897 0.448632 1.326737 0.252723 1.140212 0.029296 0.929445 1.772432 0.681129 1.584046 0.458727 1.356458 0.249291 1.170087 0.058615 0.989205 1.865610 0.767396 1.652885 0.578992 1.495288 0.379016 1.263290 0.201257 1.123549 -0.010276 0.898029 1.798772 0.752575 1.634417 0.557719 1.463667 0.370344 1.295665 0.190776 1.090704 0.050605 0.996022 1.873218 0.809295 1.746146 0.648786 1.571816 0.524141 1.422241 0.366686 1.302138 0.237033 1.184544 0.066062 0.986330 1.968148 0.919197 1.841882 0.727184 1.728271 0.614948 1.562438 0.500483 1.416599 0.381985 1.310430 0.267267 1.216908 0.114405 1.054735 0.044860 0.942126 1.918512 0.865400 1.798123 0.759456 1.746821 0.660050 1.622729 0.596491 1.556705 0.501053 1.485367 0.453849 1.393727 0.358857 1.320313 0.304365 1.241385 0.195558 1.183347 0.151935 1.107703 0.075803 1.064363 0.015231 0.975010 1.938288 0.927423 1.901169 0.841899 1.876920 0.849275 1.796356 0.781909 1.743480 0.692751 1.723710 0.708437 1.657489 0.639233 1.647097 0.614293 1.595806 0.597694 1.589533 0.585735 1.542929 0.537155 1.540039 0.504353 1.527350 0.483057 1.485483 0.511909 1.493148 0.490249 1.500196 0.492979 1.527303 0.484580 1.486738 0.490916 1.538110 0.519640 1.510746 0.563503 1.559086 0.606402 1.602406 0.604386 1.623997 0.576318 1.632332 0.604648 1.642318 0.693077 1.670034 0.703995 1.727037 0.761005 1.758022 0.812133 1.821689 0.854472 1.869189 0.949319 1.946824 0.987419 -0.782152 1.027696 0.050772 1.113195 0.099118 1.193533 0.187247 1.271506 0.279815 1.331821 0.389579 1.458743)
+ 48.664566 #(0.000000 1.170942 0.289146 1.381825 0.535760 1.665742 0.822387 1.928716 1.070063 0.210717 1.358490 0.489445 1.622992 0.738147 1.913665 1.075703 0.162895 1.326152 0.480524 1.611743 0.774597 1.917071 1.073065 0.212136 1.337040 0.515876 1.652646 0.817137 1.968695 1.135367 0.308671 1.473236 0.622396 1.766168 0.909191 0.087843 1.287146 0.391830 1.561841 0.747625 1.916228 1.117634 0.287203 1.423027 0.574724 1.738028 0.953255 0.081800 1.279074 0.435013 1.621015 0.802586 1.933979 1.156354 0.321070 1.526883 0.700685 1.880851 1.079422 0.246053 1.431792 0.600063 1.778431 0.959802 0.184268 1.366036 0.552072 1.735025 0.955324 0.151515 1.304048 0.505183 1.720369 0.944913 0.142624 1.317460 0.527231 1.724670 0.961196 0.117920 1.321014 0.516711 1.743018 0.944267 0.146092 1.368253 0.548654 1.796190 0.985961 0.174996 1.428515 0.644246 1.855532 1.060223 0.292605 1.464575 0.717381 1.905530 1.159273 0.371158 1.573604 0.825040 0.032969 1.261397 0.500107 1.706772 0.934074 0.154097 1.442830 0.630563 1.866131 1.087708 0.314733 1.537332 0.810893 0.017714 1.271203 0.497452 1.760967 0.970213 0.235985 1.456735 0.713878 1.974087 1.193844 0.440569 1.697473 0.941825 0.204579 1.452190 0.671425 1.932153 1.194540 0.447992 1.710429 0.942060 0.205350 1.452906 0.729373 1.971579 1.215860 0.517871 1.766247 1.015528 0.295737 1.539378 0.834294 0.080083 1.371887 0.615566 1.900368 1.151454 0.407611 1.660314 0.944111 0.261186 1.507226 0.787174 0.046498 1.343266 0.641339 1.884298 1.178219 0.444396 1.731297 1.015114 0.335309 1.570769 0.908166 0.185740 1.473363 0.748225 0.053372 1.350319 0.637113 1.919018 1.193286 0.498552 1.753884 1.036498 0.377925 1.681682 0.993952 0.271459 1.591034 0.887824 0.196091 1.476610 0.816017 0.069236 1.408056 0.707785 0.050161 1.304233 0.644152 1.923425 1.245214 0.581460 1.879765 1.220440 0.503606 1.831931 1.169129 0.465733 1.757077 1.114596 0.436475 1.731736 1.091457 0.379695 1.721161 1.058307 0.372080 1.677965 1.064555 0.391573 1.687286 0.999564 0.347645 1.668130 1.034919 0.354092 1.704432 1.034944 0.387042 1.700436 1.049256 0.381768 1.745319 1.085773 0.432309 1.747943 1.050598 0.433693 1.781327 1.149885 0.506180 1.861227 1.185635 0.546358 1.881595 1.221629 0.586231 -0.004479 1.294975 0.652548 0.038341 1.386887 0.762728 0.115792 1.478098 0.832681 0.205488 1.567252 0.938256 0.309741 1.663154 1.056607 0.428784 1.759844 1.152684 0.540090 1.909291 1.266980 0.649679 0.010986 1.403219 0.798522 0.156678 1.555573 0.926919 0.316812 1.700652 1.059069 0.458437 1.850106 1.213717 0.608916 1.980359 1.370993 0.795596 0.177163 1.587512 0.944743 0.351968 1.755301 1.146825 0.563003 1.967607 1.338190 0.725902 0.121863 1.523657 0.938059 0.325430 1.751570 1.117412 0.562238 1.954960 1.357322 0.796029 0.191080 1.607796 1.006986 0.447254 1.841928 1.257910 0.656080 0.098076 1.506267 0.938321 0.313049 1.747203 1.131089 0.575242 0.026424 1.451393 0.856533 0.286249 1.729807 1.140348 0.578594 0.000963 1.432596 0.874383 0.296208 1.720188 1.180710 0.605109 0.040106 1.478086 0.943884 0.352865 1.806542 1.224467 0.690357 0.116966 1.566982 0.998518 0.444890 1.905064 1.319468 0.780940 0.258801 1.687595 1.155117 0.603815 0.022964 1.496777 0.960691 0.378749 1.845400 1.312318 0.787088 0.257133 1.695461 1.125876 0.610298 0.081266 1.559688 0.979299 0.462303 1.928943 1.392115 0.862286 0.342255 1.793315 1.300197 0.739893 0.254326 1.746066 1.210778 0.677616 0.144741 1.610077 1.086013 0.579094 0.086583 1.543520 1.007712 0.522912 0.001773 1.439884 0.936490 0.425038 1.977684 1.414800 0.934895 0.426478 1.906668 1.412513 0.877392 0.377928 1.875457 1.385016 0.873427 0.366132 1.891025 1.378796 0.872665 0.364981 1.843046 1.380648 0.877620 0.383291 1.889804 1.392023 0.953450 0.449027 1.973464 1.465248 0.952768 0.495925 -0.006351 1.530606 1.033158 0.539526 0.049385 1.605441 1.106822 0.596080 0.143248 1.658343 1.197205 0.724182 0.241495 1.748926 1.291479 0.831315 0.342925 1.880681 1.392731 0.934128 0.478214 0.035949 1.562796 1.099296 0.607049 0.145418 1.665821 1.220174 0.771046 0.336740 1.849135 1.406079 0.926138 0.480969 0.027256 1.590717 1.145979 0.658940 0.217830 1.770176 1.307930 0.887843 0.422435 1.979861 1.559182 1.085919 0.648859 0.226281 1.788819 1.346002 0.902383 0.452767 0.032332 1.576500 1.131595 0.708644 0.281053 1.851882 1.421403 1.000853 0.549241 0.127440 1.678978 1.264916 0.849333 0.414447 1.989088 1.526198 1.134219 0.749206 0.336494 1.867345 1.453800 1.051657 0.661095 0.220836 1.814188 1.406692 0.986062 0.572790 0.144021 1.761833 1.329570 0.901599 0.511980 0.106063 1.715079 1.295938 0.936630 0.518829 0.104439 1.707780 1.291876 0.890827 0.510053 0.117074 1.716725 1.309212 0.906467 0.497716 0.141871 1.759910 1.347981 0.948930 0.553686 0.198216 1.802984 1.390560 1.020249 0.621624 0.236737 1.872008 1.489289 1.115049 0.730532 0.372379 1.965965 1.599716 1.226228 0.872133 0.508718 0.102249 1.730328 1.327387 0.987490 0.618955 0.248795 1.881086 1.513991 1.145293 0.772662 0.406212 0.067441 1.702473 1.381069 0.995707 0.614309 0.263756 1.897390 1.564109 1.197061 0.866532 0.514455 0.133576 1.822654 1.435412 1.064917 0.721152 0.390208 0.055079 1.699414 1.379318 1.002676 0.644140 0.331096 1.975453 1.627751 1.298319 0.944477 0.635958 0.308309 1.967635 1.633912 1.293128 0.971996 0.632153 0.299438 1.966796 1.642781 1.351113 1.015753 0.678738 0.318312 0.022531 1.685885 1.359976 1.024265 0.734179 0.406159 0.057845 1.754778 1.435368 1.117779 0.831482 0.502426 0.196676 1.874762 1.567280 1.257023 0.970888 0.619985 0.342264 0.024600 1.731660 1.430813 1.115678 0.791369 0.531046 0.208145 1.932091 1.604657 1.326353 1.014276 0.722950 0.443222 0.131867 1.803896 1.524716 1.257895 0.955894 0.669940 0.380602 0.072539 1.802190 1.531992 1.255153 0.977338 0.646956 0.346500 0.088890 1.835028 1.556969 1.301181 0.993739 0.708240 0.450063 0.147506 1.889358 1.595646 1.370895 1.082548 0.815726 0.545303 0.275078 0.003815 1.745282 1.482299 1.199181 0.951224 0.685841 0.404472 0.186535 1.896302 1.618108 1.393579 1.150941 0.882866 0.604918 0.342944 0.078977 1.859668 1.635360 1.318515 1.124200 0.894914 0.605914 0.348725 0.094231 1.867863 1.622860 1.414170 1.132825 0.909799 0.667418 0.452914 0.187438 1.936297 1.717488 1.457825 1.217006 1.016883 0.788878 0.551620 0.282891 0.061254 1.867413 1.603966 1.397908 1.172271 0.954611 0.734109 0.507085 0.266051 0.064295 1.830068 1.567758 1.365711 1.166594 0.948316 0.748759 0.533615 0.331582 0.119959 1.876873 1.703496 1.465861 1.239081 1.045654 0.834164 0.629709 0.459157 0.224744 0.012533 1.814459 1.614896 1.446695 1.189947 0.976562 0.816331 0.603906 0.448089 0.220903 0.016327 1.830733 1.654747 1.447002 1.275385 1.084467 0.884097 0.723056 0.502332 0.325527 0.158149 1.955439 1.793604 1.580079 1.412106 1.257682 1.021815 0.877770 0.705724 0.501941 0.330364 0.159765 1.996461 1.830256 1.636056 1.482687 1.310968 1.142578 0.981115 0.825597 0.608843 0.476959 0.314174 0.165809 1.986115 1.816329 1.657370 1.497044 1.346982 1.165633 1.033406 0.888719 0.722001 0.588160 0.419152 0.266971 0.120061 1.953497 1.797961 1.656658 1.483277 1.337095 1.209694 1.081296 0.921214 0.777264 0.641152 0.474068 0.381267 0.253453 0.080824 1.915624 1.778606 1.666379 1.532745 1.398130 1.292808 1.127360 1.003022 0.896822 0.738370 0.630607 0.512319 0.385038 0.206257 0.088602 0.000364 1.847859 1.730664 1.621176 1.494193 1.370267 1.304920 1.165030 1.028368 0.938954 0.828859 0.706775 0.609869 0.470483 0.381850 0.272866 0.140642 0.039306 1.928962 1.810620 1.713612 1.611249 1.501338 1.383225 1.318920 1.190741 1.122392 1.001736 0.885719 0.825760 0.736895 0.603681 0.524073 0.421896 0.324883 0.276217 0.166543 0.074815 1.980691 1.895426 1.828634 1.743848 1.672718 1.581457 1.474366 1.406566 1.333611 1.282809 1.163163 1.052311 1.021096 0.949103 0.872332 0.789433 0.722950 0.633848 0.575116 0.497364 0.421793 0.366018 0.291656 0.227131 0.145903 0.107344 0.051340 1.971254 1.913383 1.844769 1.808980 1.754470 1.650410 1.601815 1.557856 1.476374 1.420505 1.408317 1.327555 1.279080 1.234271 1.177974 1.126082 1.063805 1.046133 1.017442 0.946946 0.919888 0.857957 0.833485 0.808274 0.768502 0.704802 0.675646 0.613929 0.592312 0.540816 0.508667 0.463797 0.443602 0.408331 0.388858 0.352264 0.297121 0.312380 0.252547 0.208107 0.221370 0.206925 0.170618 0.121985 0.121729 0.126777 0.066673 0.077974 0.043093 -0.005467 0.004748 0.035363 1.971570 1.930738 1.944584 1.940077 1.952257 1.951287 1.932760 1.907683 1.910026 1.909177 1.914531 1.888006 1.891298 1.882573 1.889851 1.871909 1.873943 1.890660 1.937080 1.916001 1.942653 1.886219 1.895640 1.912765 1.908575 1.939857 1.965765 1.946569 1.953547 1.994460 0.014408 0.038456 0.037577 0.043537 0.084870 0.082815 0.102125 0.139999 0.119959 0.184898 0.183525 0.203962 0.268253 0.276679 0.285787 0.310021 0.325008 0.365543 0.375530 0.460309 0.473616 0.495745 0.530196 0.565795 0.617714 0.632718 0.678885 0.711882 0.768655 0.825211 0.868356 0.876585 0.914366 0.964787 1.004866 1.078361 1.114506 1.178886 1.206630 1.268161 1.304127 1.367222 1.454285 1.478275 1.516749 1.583342 1.643679 1.736306 1.776869 1.790593 1.877831 1.935205 0.013050 0.061063 0.126394 0.171441 0.211406 0.332729 0.370019 0.421205 0.542682 0.613587 0.679718 0.748879 0.790304 0.866737 0.967695 1.038283 1.104687 1.193073 1.279257 1.339099 1.438412 1.533251 1.604737 1.700413 1.758401 1.834984 1.921990 0.037669 0.122768 0.208767 0.309193 0.415308 0.508782 0.562276 0.655958 0.762920 0.864584 0.954579 1.049862 1.158789 1.264916 1.336025 1.433010 1.541226 1.670226 1.768503 1.865404 1.985709 0.106071 0.200950 0.305381 0.422455 0.521678 0.646912 0.764293 0.823332 0.976435 1.095738 1.187911 1.306735 1.436131 1.559147 1.668910 1.797620 1.893676 0.045625 0.160481 0.301195 0.399002 0.527682 0.645244 0.809191 0.934847 1.051871 1.195107 1.347319 1.457646 1.571697 1.743489 1.901297 0.004606 0.131671 0.274943 0.436039 0.585547 0.696000 0.858858 0.993986 1.138270 1.282065 1.428053 1.562631 1.739413 1.842527 0.035898 0.152745 0.328545 0.479761 0.646670 0.799371 0.939795 1.088726 1.251848 1.430478 1.583208 1.735709 1.889024 0.062340 0.194414 0.393289 0.570562 0.697449 0.880317 1.065327 1.236378 1.400671 1.574691 1.725291 1.918098 0.056748 0.240960 0.437796 0.591395 0.790723 0.966512 1.132125 1.276356 1.492381 1.650871 1.862664 0.063347 0.222796 0.395476 0.608482 0.796657 0.981998 1.153183 1.357211 1.545528 1.752916 1.939246 0.132130 0.326479 0.514223 0.721651 0.932908 1.088471 1.309907 1.532019 1.719716 1.926644 0.127190 0.310616 0.493810 0.717203 0.933231 1.154599 1.366119 1.553462 1.800184 1.973896 0.213030 0.410869 0.616199 0.838690 1.080180 1.270424 1.516947 1.718225 1.922105 0.157229 0.368675 0.578662 0.840887 1.066555 1.290485 1.494676 1.757500 1.962792 0.202257 0.427914 0.640006 0.899112 1.077049 1.352238 1.596521 1.810891 0.053037 0.304161 0.522621 0.797996 0.995593 1.268547 1.491781 1.730135 1.953435 0.218794 0.474232 0.691191 0.963346 1.224322 1.436090 1.726846 1.983795 0.219968 0.504101 0.730147 1.013903 1.263531 1.481958 1.738021 0.011250 0.301003 0.538979 0.792691 1.055281 1.347593 1.601278 1.887494 0.123866 0.415184 0.655667 0.929937 1.202283 1.471221 1.723378 0.026075 0.300451 0.586261 0.847263 1.126091 1.375944 1.690805 1.961639 0.227946 0.530300 0.797330 1.097494 1.359569 1.663108 1.963251 0.225321 0.528039 0.801690 1.099214 1.413110 1.693435 1.976920 0.272712 0.562502 0.873540 1.151057 1.481876 1.739744 0.040367 0.356198 0.676589 0.997738 1.245600 1.570199 1.834360 0.146423 0.507820 0.781143 1.086077 1.420157 1.717523 0.031559 0.342689 0.684784 0.916154 1.290765 1.586252 1.939341 0.231592 0.561292 0.881192 1.193228 1.534484 1.818961 0.173257 0.517307 0.801766 1.161487 1.451811 1.813567 0.110105 0.468425 0.809783 1.118037 1.437944 1.801764 0.091356 0.447642 0.782685 1.151792 1.493771 1.819989 0.163363 0.503169 0.816613 1.181239 1.539007 1.885586 0.201038 0.546333 0.908022 1.253798 1.623934 1.991341 0.295282 0.678678 1.033950 1.368982 1.723607 0.076261 0.456128 0.767232 1.138226 1.523999 1.898163 0.234280 0.613129 0.956638 1.339818 1.711130 0.081223 0.446441 0.781900 1.160601 1.527769 1.927405 0.236069 0.646639 1.027285 1.396320 1.755546 0.155535 0.539000 0.914974 1.285389 1.678319 0.035785 0.431416 0.826446 1.217425 1.589377 1.976998 0.367587 0.764815 1.159230 1.530515 1.929822 0.334783 0.712441 1.070357 1.507185 1.871995 0.272601 0.675963 1.082213 1.491353 1.894438 0.276302 0.667800 1.121857 1.482021 1.859474 0.310335 0.702711 1.129257 1.522919 1.923292 0.351323 0.732542 1.179426 1.579295 -0.013267 0.382806 0.821447 1.217655 1.663335 0.069200 0.522521 0.922954 1.327813 1.761208 0.192999 0.626658 1.055066 1.468038 1.906194 0.345378 0.757746 1.178149 1.643670 0.043824 0.483642 0.911358 1.339135 1.754268 0.231399 0.649769 1.130170 1.533817 1.957218 0.417037 0.859013 1.294954 1.769999 0.198893 0.613867 1.082807 1.503634 1.985104 0.443841 0.890173 1.331823 1.802939 0.225791 0.675789 1.138679 1.608775 0.055691 0.540919 1.002721 1.451388 1.926550 0.357268 0.840375 1.275542 1.778853 0.239380 0.686146 1.156309 1.609782 0.093745 0.557776 1.068021 1.509829 1.988476 0.414245 0.950531 1.400122 1.892774 0.360778 0.843218 1.310153 1.768714 0.252844 0.768639 1.242199 1.759662 0.243793 0.698974 1.170742 1.665640 0.169221 0.656096 1.145377 1.626377 0.130474 0.618919 1.126314 1.624108 0.120607 0.628370 1.098644 1.614313 0.091822 0.610616 1.087974 1.588022 0.105464 0.626581 1.131322 1.613761 0.154087 0.630811 1.153442 1.677150 0.158819 0.676664 1.203217 1.709358 0.226793 0.778691 1.260413 1.808024 0.313750 0.816040 1.334596 1.871972 0.383187 0.900607 1.402916 1.955235 0.475406 0.991631 1.547912 0.058841 0.608450 1.123277 1.628459 0.206603 0.739593 1.258607 1.785950 0.353912 0.851435 1.421541 1.938177 0.478781 1.030632 1.568715 0.107753 0.649124 1.238671 1.763873 0.298301 0.834409 1.395402 1.982061 0.505974 1.039661 1.614804 0.099294 0.685428 1.278115 1.820362 0.397377 0.936598 1.507624 0.031897 0.613562 1.173556 1.745794 0.305637 0.875470 1.443044 0.002384 0.551926 1.139995 1.690017 0.272987 0.855994 1.411848 -0.001132 0.563033 1.111124 1.698054 0.298589 0.870274 1.452449 0.014158 0.598411 1.183848 1.777682 0.351041 0.950540 1.536029 0.066056 0.717623 1.263277 1.878167 0.457007 1.053040 1.630980 0.186341 0.822087 1.417543 0.006144 0.633463 1.226780 1.812650 0.407965 1.004010 1.617566 0.207087 0.800487 1.412232 0.046453 0.598596 1.228585 1.841210 0.430113 1.068678 1.667247 0.293169 0.886888 1.517530 0.120437 0.726736 1.343613 1.965665 0.585554 1.220338 1.812267 0.427937 1.067351 1.689026 0.334378 0.939407 1.583343 0.175735 0.803292 1.435084 0.079146 0.679143 1.332969 1.964209 0.595175 1.240800 1.857744 0.534709 1.160190 1.750954 0.424242 1.024700 1.695806 0.331680 0.974582 1.619752 0.255370 0.910264 1.531258 0.223740 0.834712 1.467933 0.148175 0.787198 1.474234 0.118230 0.733258 1.406185 0.059309 0.721305 1.339979 0.026375 0.713118 1.349735 0.001382 0.690546 1.341063 1.965221 0.669275 1.342107 0.002079 0.696873 1.346782 0.012439 0.666075 1.357690 0.021799 0.692374 1.345310 0.041241 0.732725 1.386094 0.057622 0.745351 1.426135 0.127624 0.780657 1.461048 0.123489 0.829149 1.518694 0.180614 0.905756 1.594579 0.254719 0.981938 1.647920 0.315154 0.999132 1.684407 0.429577 1.113097 1.827221 0.512014 1.204055 1.911124 0.620120 1.313210 -0.025034 0.692078 1.413575 0.123988 0.836951 1.518729 0.242779 0.956702 1.650774 0.361039 1.096777 1.785448 0.505965 1.258287 1.901000 0.632408 1.377139 0.075771 0.817561 1.499799 0.253960 0.961975 1.672583 0.433550 1.168325 1.853350 0.572522 1.279082 0.010419 0.790350 1.535557 0.210559 0.946885 1.701092 0.441544 1.190477 1.852897 0.624507 1.344458 0.094095 0.849380 1.563030 0.332010 1.042970 1.805913 0.569782 1.316665 0.031830 0.804644 1.544875 0.277482 1.033483 1.776050 0.544492 1.269069 0.031746 0.795250 1.516780 0.280162 1.087863 1.838350 0.575586 1.365901 0.088731 0.858181 1.625227 0.400641 1.154722 1.906920 0.688045 1.401845 0.195806 1.001473 1.773683 0.553692 1.315574 0.073339 0.832016 1.650397 0.394868 1.155948 1.992914 0.716176 1.499904 0.268195 1.057271 1.882036 0.654230 1.407402 0.214262 1.032407 1.753024 0.573118 1.381955 0.148966 0.912019 1.734004 0.519189 1.293482 0.107721 0.892709 1.687088 0.491727 1.297763 0.085710 0.872181 1.682699 0.519042 1.319242 0.063520 0.909819 1.723716 0.536601 1.318890 0.096274 0.933181 1.775733 0.542158 1.357017 0.170507 0.991743 1.799543 0.655847 1.438530 0.269903 1.099988 1.897219 0.734222 1.557389 0.356198 1.157186 0.031445 0.804671 1.644989 0.493089 1.328572 0.149278 0.975676 1.808710 0.659220 1.473013 0.311863 1.133059 1.975081 0.801512 1.651645 0.501402 1.339011 0.164491 0.996690 1.863022 0.699528 1.541098 0.380738 1.219822 0.027686 0.915684 1.727057 0.620487 1.472618 0.312807 1.150287 0.024073 0.850040 1.713001 0.586943 1.449969 0.290377 1.155646 0.021116 0.883166 1.740012 0.594699 1.440489 0.296675 1.162148 0.067063 0.883746 1.787073 0.643691 1.523135 0.388194 1.287108 0.145576 1.020088 1.907268 0.783099 1.680859 0.540176 1.428154 0.258210 1.161481 0.055368 0.932666 1.773803 0.696005 1.601808 0.446947 1.329656 0.253412 1.140553 0.023829 0.926964 1.768710 0.682414 1.581632 0.456995 1.356370 0.253726 1.171773 0.061494 0.990033 1.870745 0.771249 1.655962 0.580546 1.494091 0.377567 1.262139 0.201618 1.115706 -0.007470 0.895680 1.800417 0.750893 1.640969 0.555575 1.457172 0.369712 1.290619 0.193387 1.091909 0.047304 0.994129 1.871192 0.812495 1.745826 0.645905 1.566685 0.523376 1.424972 0.369552 1.304889 0.239870 1.186886 0.067581 0.991723 1.965866 0.920971 1.846846 0.734938 1.732727 0.618277 1.562490 0.502086 1.418517 0.382048 1.308426 0.266008 1.217584 0.112248 1.056131 0.044152 0.943916 1.919302 0.867254 1.797779 0.759555 1.743188 0.655978 1.619005 0.598601 1.548904 0.501222 1.488043 0.451960 1.397021 0.361472 1.325837 0.305336 1.236603 0.194154 1.186006 0.152384 1.108364 0.076707 1.059107 0.018121 0.979326 1.941593 0.925093 1.898173 0.846141 1.875440 0.848475 1.797871 0.783562 1.748287 0.696687 1.723841 0.709685 1.654597 0.641068 1.645066 0.620402 1.604424 0.595741 1.591399 0.588155 1.540692 0.533492 1.540333 0.499988 1.520937 0.480152 1.485830 0.505177 1.492611 0.488520 1.498730 0.493267 1.526258 0.482977 1.486770 0.490933 1.530951 0.517025 1.509064 0.564037 1.560328 0.598107 1.600425 0.599900 1.622033 0.580664 1.629895 0.602762 1.637931 0.688160 1.670819 0.700708 1.725578 0.762421 1.757053 0.812509 1.820531 0.853350 1.869303 0.949391 1.951566 0.991963 -0.778112 1.021413 0.049757 1.107905 0.099131 1.194312 0.190683 1.275497 0.282002 1.332763 0.394919 1.472082)
)
))
@@ -4873,9 +4871,11 @@
;; 1-Sep 4150.229
;; 1-Oct 4150.134
;; 1-Nov 4150.065
+;; (17)
+;; 1-Oct 4150.037
; all 0.4860 (20) to 0.4986 (125), dist: 0.0000, 15.0910
-; odd 0.4820 (11) to 0.5000 (112), dist: 0.0000, 9.0287
+; odd 0.4820 (11) to 0.5000 (112), dist: 0.0000, 9.0575
; even 0.5085 (115) to 0.5242 (22), dist: 57.6719, 0.0000
; prime 0.5444 (24) to 0.5540 (67), dist: 232.5920, 0.0000
@@ -4891,7 +4891,7 @@
;;; 9-Nov-16: 22
;;; 20-Jul-17: 6 (370)
-<1> (load "test-phases.scm") ; same 27-Aug-17
+<1> (load "test-phases.scm") ; same 27-Aug-17 and 11-Oct-17
<1> (test-all-phases #f)
;all peaks... Thu 20-Jul-2017 14:49
(0.00149573739942177 101)
diff --git a/play.scm b/play.scm
index 0c80877..77d3386 100644
--- a/play.scm
+++ b/play.scm
@@ -42,7 +42,7 @@
(define play-sound
- (let ((documentation "(play-sound func) plays the currently selected sound, calling func on each data buffer, if func exists (mono only)"))
+ (let ((+documentation+ "(play-sound func) plays the currently selected sound, calling func on each data buffer, if func exists (mono only)"))
(lambda* (func)
(if (pair? (sounds))
(let* ((filechans (chans))
@@ -69,7 +69,7 @@
;;; -------- play sound n times -- (play-often 3) for example.
(define play-often
- (let ((documentation "(play-often n) plays the selected sound 'n' times (interruptible via C-g)"))
+ (let ((+documentation+ "(play-often n) plays the selected sound 'n' times (interruptible via C-g)"))
(lambda (n)
(letrec ((play-once (let ((plays (- n 1)))
(lambda (reason)
@@ -86,7 +86,7 @@
;;; -------- play sound until c-g
(define play-until-c-g
- (let ((documentation "(play-until-c-g) plays the selected sound until you interrupt it via C-g")
+ (let ((+documentation+ "(play-until-c-g) plays the selected sound until you interrupt it via C-g")
(play-once (lambda (reason)
(if (= reason 0)
(play (selected-sound) :start 0 :stop play-once)))))
@@ -97,7 +97,7 @@
;;; -------- play region over and over until C-g typed
(define play-region-forever
- (let ((documentation "(play-region-forever reg) plays region 'reg' until you interrupt it via C-g"))
+ (let ((+documentation+ "(play-region-forever reg) plays region 'reg' until you interrupt it via C-g"))
(lambda (reg1)
(let ((reg (if (integer? reg1) (integer->region reg1) reg1)))
(define (play-region-again reason)
@@ -112,7 +112,7 @@
;;; -------- play while looping continuously between two movable marks
(define loop-between-marks
- (let ((documentation "(loop-between-marks mark1 mark2 buffersize) plays while looping between two marks. \
+ (let ((+documentation+ "(loop-between-marks mark1 mark2 buffersize) plays while looping between two marks. \
x typed in the graph, or C-g in the listener exits the loop."))
(lambda (m1 m2 bufsize)
(let* ((pos1 (mark-sample m1))
@@ -146,7 +146,7 @@ x typed in the graph, or C-g in the listener exits the loop."))
;;; -------- hold DAC open and play sounds via keyboard
(define start-dac
- (let ((documentation "(start-dac (srate 44100) (chans 1)) starts the DAC running continuously in the background"))
+ (let ((+documentation+ "(start-dac (srate 44100) (chans 1)) starts the DAC running continuously in the background"))
(lambda* ((sr 44100) (chans 1))
(play #f :srate sr :channels chans))))
@@ -157,7 +157,7 @@ x typed in the graph, or C-g in the listener exits the loop."))
;; play-with-amps -- play channels with individually settable amps
(define play-with-amps
- (let ((documentation "(play-with-amps snd :rest amps) plays snd with each channel scaled by the corresponding
+ (let ((+documentation+ "(play-with-amps snd :rest amps) plays snd with each channel scaled by the corresponding
amp: (play-with-amps 0 1.0 0.5) plays channel 2 of stereo sound at half amplitude"))
(lambda (sound . amps)
(do ((chans (channels sound))
@@ -172,7 +172,7 @@ amp: (play-with-amps 0 1.0 0.5) plays channel 2 of stereo sound at half amplitud
;;; play-sine and play-sines
(define play-sine
- (let ((documentation "(play-sine freq amp) plays a 1 second sinewave at freq and amp"))
+ (let ((+documentation+ "(play-sine freq amp) plays a 1 second sinewave at freq and amp"))
(lambda (freq amp)
(let ((len 44100)
(osc (make-oscil freq)))
@@ -182,7 +182,7 @@ amp: (play-with-amps 0 1.0 0.5) plays channel 2 of stereo sound at half amplitud
(define play-sines
- (let ((documentation "(play-sines freqs-and-amps) produces a tone given its spectrum: (play-sines '((440 .4) (660 .3)))"))
+ (let ((+documentation+ "(play-sines freqs-and-amps) produces a tone given its spectrum: (play-sines '((440 .4) (660 .3)))"))
(lambda (freqs-and-amps)
(let ((num-oscs (length freqs-and-amps)))
(let ((len 44100)
diff --git a/poly.scm b/poly.scm
index 05e912e..1bccfb0 100644
--- a/poly.scm
+++ b/poly.scm
@@ -17,7 +17,7 @@
;;; using lists and vectors internally for complex intermediates
(define vector-add!
- (let ((documentation "(vector-add! p1 p2) adds (elementwise) the vectors p1 and p2"))
+ (let ((+documentation+ "(vector-add! p1 p2) adds (elementwise) the vectors p1 and p2"))
(lambda (p1 p2)
(do ((len (min (length p1) (length p2)))
(i 0 (+ i 1)))
@@ -26,7 +26,7 @@
p1)))
(define vector-scale!
- (let ((documentation "(vector-scale! p1 scl) scales each element of the vector p1 by scl"))
+ (let ((+documentation+ "(vector-scale! p1 scl) scales each element of the vector p1 by scl"))
(lambda (p1 scl)
(do ((len (length p1))
(i 0 (+ i 1)))
@@ -35,7 +35,7 @@
p1)))
(define poly-as-vector-eval
- (let ((documentation "(poly-as-vector-eval v x) treats 'v' as a vector of polynomial coefficients, returning the value of the polynomial at x"))
+ (let ((+documentation+ "(poly-as-vector-eval v x) treats 'v' as a vector of polynomial coefficients, returning the value of the polynomial at x"))
(lambda (v x)
(let* ((top (- (length v) 1))
(sum (v top)))
@@ -45,7 +45,7 @@
(define poly-as-vector-reduce
- (let ((documentation "(poly-as-vector-reduce p1) removes trailing (high-degree) zeros from the vector p1"))
+ (let ((+documentation+ "(poly-as-vector-reduce p1) removes trailing (high-degree) zeros from the vector p1"))
(lambda (p1)
;; always return at least a 0 coeff (rather than return #f=0 polynomial)
(let ((new-len (do ((i (- (length p1) 1) (- i 1)))
@@ -57,7 +57,7 @@
(copy p1 (make-vector new-len)))))))
(define poly-reduce
- (let ((documentation "(poly-reduce p1) removes trailing (high-degree) zeros from the float-vector p1"))
+ (let ((+documentation+ "(poly-reduce p1) removes trailing (high-degree) zeros from the float-vector p1"))
(lambda (p1)
(if (= (p1 (- (length p1) 1)) 0.0)
(vector->float-vector (poly-as-vector-reduce (float-vector->vector p1)))
@@ -69,7 +69,7 @@
(define poly-as-vector+
- (let ((documentation "(poly-as-vector+ p1 p2) adds vectors p1 and p2"))
+ (let ((+documentation+ "(poly-as-vector+ p1 p2) adds vectors p1 and p2"))
(lambda (p1 p2)
(if (vector? p1)
(if (vector? p2)
@@ -84,7 +84,7 @@
v)))))
(define poly+
- (let ((documentation "(poly+ p1 p2) adds vectors or float-vectors p1 and p2"))
+ (let ((+documentation+ "(poly+ p1 p2) adds vectors or float-vectors p1 and p2"))
(lambda (p1 p2)
(vector->float-vector
(poly-as-vector+
@@ -97,7 +97,7 @@
(define poly-as-vector*
- (let ((documentation "(poly-as-vector* p1 p2) multiplies (as polynomials) the vectors p1 and p2"))
+ (let ((+documentation+ "(poly-as-vector* p1 p2) multiplies (as polynomials) the vectors p1 and p2"))
(lambda (p1 p2)
(if (not (vector? p1))
(vector-scale! (copy p2) p1)
@@ -113,7 +113,7 @@
(set! (m (+ i j)) (+ (m (+ i j)) (* (p1 i) (p2 j))))))))))))
(define poly*
- (let ((documentation "(poly* p1 p2) multiplies the polynomials (float-vectors or vectors) p1 and p2"))
+ (let ((+documentation+ "(poly* p1 p2) multiplies the polynomials (float-vectors or vectors) p1 and p2"))
(lambda (p1 p2)
(vector->float-vector
(poly-as-vector*
@@ -128,7 +128,7 @@
(define poly-as-vector/
- (let ((documentation "(poly-as-vector/ p1 p2) divides the polynomial p1 by p2 (both vectors)"))
+ (let ((+documentation+ "(poly-as-vector/ p1 p2) divides the polynomial p1 by p2 (both vectors)"))
(lambda (p1 p2)
(if (not (vector? p1))
(list (vector 0) p2)
@@ -159,7 +159,7 @@
(list q r)))))))))))
(define poly/
- (let ((documentation "(poly/ p1 p2) divides p1 by p2, both polynomials either float-vectors or vectors"))
+ (let ((+documentation+ "(poly/ p1 p2) divides p1 by p2, both polynomials either float-vectors or vectors"))
(lambda (p1 p2)
(map vector->float-vector (poly-as-vector/ (if (float-vector? p1) (float-vector->vector p1) p1)
(if (float-vector? p2) (float-vector->vector p2) p2))))))
@@ -173,7 +173,7 @@
(define poly-as-vector-derivative
- (let ((documentation "(poly-as-vector-derivative p1) returns the derivative or polynomial p1 (as a vector)"))
+ (let ((+documentation+ "(poly-as-vector-derivative p1) returns the derivative or polynomial p1 (as a vector)"))
(lambda (p1)
(let ((len (- (length p1) 1)))
(do ((v (make-vector len))
@@ -183,7 +183,7 @@
(set! (v i) (* j (p1 j))))))))
(define poly-derivative
- (let ((documentation "(poly-derivative p1) returns the derivative of p1, either a float-vector or vector"))
+ (let ((+documentation+ "(poly-derivative p1) returns the derivative of p1, either a float-vector or vector"))
(lambda (p1)
(vector->float-vector
(poly-as-vector-derivative
@@ -257,7 +257,7 @@
(determinant mat))))
(define poly-resultant
- (let ((documentation "(poly-resultant p1 p2) returns the resultant of polynomials p1 and p2 (float-vectors or vectors)"))
+ (let ((+documentation+ "(poly-resultant p1 p2) returns the resultant of polynomials p1 and p2 (float-vectors or vectors)"))
(lambda (p1 p2)
(poly-as-vector-resultant
(if (float-vector? p1) (float-vector->vector p1) p1)
@@ -265,12 +265,12 @@
(define poly-as-vector-discriminant
- (let ((documentation "(poly-as-vector-discriminant p1) returns the discriminant of polynomial p1 (a vector)"))
+ (let ((+documentation+ "(poly-as-vector-discriminant p1) returns the discriminant of polynomial p1 (a vector)"))
(lambda (p1)
(poly-as-vector-resultant p1 (poly-as-vector-derivative p1)))))
(define poly-discriminant
- (let ((documentation "(poly-discriminant p1) returns the discriminant of polynomial p1 (either a float-vector or a vector)"))
+ (let ((+documentation+ "(poly-discriminant p1) returns the discriminant of polynomial p1 (either a float-vector or a vector)"))
(lambda (p1)
(poly-as-vector-discriminant
(if (float-vector? p1) (float-vector->vector p1) p1)))))
@@ -294,7 +294,7 @@
(define poly-roots-epsilon 1.0e-7)
(define simplify-complex
- (let ((documentation "(simplify-complex a) sets to 0.0 real or imaginary parts of 'a' that are less than poly-roots-epsilon"))
+ (let ((+documentation+ "(simplify-complex a) sets to 0.0 real or imaginary parts of 'a' that are less than poly-roots-epsilon"))
(lambda (a)
(if (< (abs (imag-part a)) poly-roots-epsilon)
(if (< (abs (real-part a)) poly-roots-epsilon)
@@ -306,7 +306,7 @@
(define poly-gcd
- (let ((documentation "(poly-gcd p1 p2) returns the GCD of polynomials p1 and p2 (both float-vectors)"))
+ (let ((+documentation+ "(poly-gcd p1 p2) returns the GCD of polynomials p1 and p2 (both float-vectors)"))
(lambda (p1 p2)
(if (< (length p1) (length p2))
(float-vector 0.0)
@@ -318,7 +318,7 @@
(apply poly-gcd qr)))))))
(define poly-as-vector-gcd
- (let ((documentation "(poly-as-vector-gcd p1 p2) returns the GCD of polynomials p1 and p2 (both vectors)"))
+ (let ((+documentation+ "(poly-as-vector-gcd p1 p2) returns the GCD of polynomials p1 and p2 (both vectors)"))
(lambda (p1 p2)
(if (< (length p1) (length p2))
(vector 0)
@@ -550,7 +550,7 @@
(define poly-roots
- (let ((documentation "(poly-roots p1) returns the roots of polynomial p1"))
+ (let ((+documentation+ "(poly-roots p1) returns the roots of polynomial p1"))
(lambda (p1)
(let* ((v1 (float-vector->vector (poly-reduce p1)))
(roots (poly-as-vector-roots v1)))
diff --git a/pvoc.scm b/pvoc.scm
index 77cdd06..269fd4d 100644
--- a/pvoc.scm
+++ b/pvoc.scm
@@ -3,7 +3,7 @@
(provide 'snd-pvoc.scm)
(define make-pvocoder
- (let ((documentation "(make-pvocoder fftsize overlap interp analyze edit synthesize) makes a new (Scheme-based, not CLM) phase-vocoder generator"))
+ (let ((+documentation+ "(make-pvocoder fftsize overlap interp analyze edit synthesize) makes a new (Scheme-based, not CLM) phase-vocoder generator"))
(lambda* (fftsize overlap interp analyze edit synthesize)
(let ((N (or fftsize 512)))
@@ -48,7 +48,7 @@
;; resynthesis func with fallback
(define pvocoder
- (let ((documentation "(pvocoder pv input) is the phase-vocoder generator associated with make-pvocoder")
+ (let ((+documentation+ "(pvocoder pv input) is the phase-vocoder generator associated with make-pvocoder")
;; pvocoder list accessors
(pvoc-output (lambda (pv) (pv 0)))
(set-pvoc-output (lambda (pv val) (set! (pv 0) val)))
@@ -226,7 +226,7 @@
;;; -------- another version of the phase vocoder --------
(define pvoc
- (let ((documentation "(pvoc fftsize overlap time pitch gate hoffset snd chn) applies the phase vocoder
+ (let ((+documentation+ "(pvoc fftsize overlap time pitch gate hoffset snd chn) applies the phase vocoder
algorithm to the current sound (i.e. fft analysis, oscil bank resynthesis). 'pitch'
specifies the pitch transposition ratio, 'time' - specifies the time dilation ratio,
'gate' specifies a resynthesis gate in dB (partials with amplitudes lower than
diff --git a/r7rs.scm b/r7rs.scm
index 9c2edab..918b7d9 100644
--- a/r7rs.scm
+++ b/r7rs.scm
@@ -131,7 +131,7 @@
(define write-simple write)
(define (eof-object) #<eof>)
-(define (features) *features*)
+(define-macro (features) '*features*) ; needs to be the local *features*
(define (with-exception-handler handler thunk) (catch #t thunk handler))
@@ -421,7 +421,6 @@
;; other minor differences:
;; in s7, single-quote can occur in a name
-;; s7 doesn't currently implement #\xxxx characters
;; records
diff --git a/repl.scm b/repl.scm
index 913e190..dec3a93 100644
--- a/repl.scm
+++ b/repl.scm
@@ -34,7 +34,15 @@
(when (and (>= sym-len text-len)
(string=? text (substring sym 0 text-len)))
(if match
- (return text)
+ ;; more than one match, save the longest text that all syms match
+ (let* ((match-len (string-length match))
+ (min-len (min match-len sym-len)))
+ (do ((i text-len (+ i 1)))
+ ((or (= i min-len)
+ (not (char=? (match i) (sym i))))
+ (if (= min-len text-len)
+ (return text)
+ (set! match (substring match 0 i))))))
(set! match sym)))))
st)
(or match text)))))
@@ -238,20 +246,20 @@
(set! (hook-functions *unbound-variable-hook*) old-unbound-var-hook))))
(let ((new-load
- (let ((documentation "this is the repl's load replacement; its default is to use the repl's top-level-let.")
- (signature '(values string? let?)))
+ (let ((+documentation+ "this is the repl's load replacement; its default is to use the repl's top-level-let.")
+ (+signature+ '(values string? let?)))
(lambda* (file (e (*repl* 'top-level-let)))
(dynamic-wind repl-hooks (lambda () (load file e)) original-hooks))))
(new-eval
- (let ((documentation "this is the repl's eval replacement; its default is to use the repl's top-level-let.")
- (signature '(values list? let?)))
+ (let ((+documentation+ "this is the repl's eval replacement; its default is to use the repl's top-level-let.")
+ (+signature+ '(values list? let?)))
(lambda* (form (e (*repl* 'top-level-let)))
(dynamic-wind repl-hooks (lambda () (eval form e)) original-hooks))))
(new-eval-string
- (let ((documentation "this is the repl's eval-string replacement; its default is to use the repl's top-level-let.")
- (signature '(values string? let?)))
+ (let ((+documentation+ "this is the repl's eval-string replacement; its default is to use the repl's top-level-let.")
+ (+signature+ '(values string? let?)))
(lambda* (str (e (*repl* 'top-level-let)))
(dynamic-wind repl-hooks (lambda () (eval-string str e)) original-hooks)))))
@@ -1089,7 +1097,7 @@
(#_exit))
(varlet (*repl* 'top-level-let)
- :exit (let ((documentation "(exit) resets the repl tty and exits the repl"))
+ :exit (let ((+documentation+ "(exit) resets the repl tty and exits the repl"))
(lambda ()
(newline *stderr*)
(tty-reset))))
@@ -1429,7 +1437,7 @@
"~C[38;5;208m~A~C[0m: ~S~%")) ; orange for less likely choices
#\escape (caar b) #\escape
(if (procedure? (cdar b))
- (let ((doc (procedure-documentation (cdar b)))) ; returns "" if no doc
+ (let ((doc (documentation (cdar b)))) ; returns "" if no doc
(if (positive? (length doc))
doc
'procedure))
@@ -1496,7 +1504,7 @@
;;; to display a variable's value as s7 runs using the repl help window:
;;; (define xyz 1) ; some variable...
-;;; (set! (symbol-access 'xyz) (lambda (sym val) (set! (*repl* 'helpers) (list (lambda (c) (format #f "xyz: ~S" val)))) val))
+;;; (set! (symbol-setter 'xyz) (lambda (sym val) (set! (*repl* 'helpers) (list (lambda (c) (format #f "xyz: ~S" val)))) val))
;;; --------------------------------------------------------------------------------
diff --git a/s7.c b/s7.c
index fa2c6f6..fe9198c 100644
--- a/s7.c
+++ b/s7.c
@@ -520,7 +520,6 @@ typedef struct vdims_t {
typedef struct {
int32_t type;
uint32_t outer_type;
- const char *name;
s7_pointer scheme_name;
char *(*print)(s7_scheme *sc, void *value);
void (*free)(void *value);
@@ -544,7 +543,7 @@ typedef struct hash_entry_t {
uint32_t raw_hash;
} hash_entry_t;
-typedef uint32_t (*hash_map_t)(s7_scheme *sc, s7_pointer table, s7_pointer key); /* hash-table object->location mapper */
+typedef uint32_t (*hash_map_t)(s7_scheme *sc, s7_pointer table, s7_pointer key); /* hash-table object->location mapper */
typedef hash_entry_t *(*hash_check_t)(s7_scheme *sc, s7_pointer table, s7_pointer key); /* hash-table object equality function */
static hash_map_t *default_hash_map;
@@ -625,15 +624,21 @@ typedef struct {
#endif
} opt_info;
+typedef struct {
+ s7_pointer initial_slot; /* for built-in symbols (unlet) */
+ uint32_t type; /* for is_type opts */
+} symbol_info_t;
+
+#define symbol_tag_t uint32_t
/* cell structure */
typedef struct s7_cell {
union {
- uint64_t flag;
+ uint64_t flag; /* type info */
uint8_t type_field;
uint16_t sflag;
} tf;
- int64_t hloc;
+ int64_t hloc; /* heap location */
union {
union { /* integers, floats */
@@ -777,24 +782,23 @@ typedef struct s7_cell {
uint32_t length;
union {
bool needs_free; /* string GC */
- uint32_t accessor; /* symbol-access */
+ uint32_t setter; /* symbol-setter address (for a global symbol = symbol_global_setter_index) */
int32_t temp_len; /* temp string length (sc->tmp_strs) */
} str_ext;
char *svalue;
uint64_t hash; /* string hash-index */
- s7_pointer initial_slot; /* for built-in symbols (unlet) */
union {
char *documentation; /* symbol help */
s7_pointer ksym; /* keyword->symbol */
} doc;
+ symbol_info_t *info;
} string;
struct { /* symbols */
s7_pointer name, global_slot, local_slot;
int64_t id;
- uint32_t ctr; /* closure_is_ok (check func only defined once) */
- uint16_t tag; /* symbol lists (quick memq) */
- uint8_t type;
+ uint32_t ctr;
+ symbol_tag_t tag;
} sym;
struct { /* syntax */
@@ -848,7 +852,7 @@ typedef struct s7_cell {
struct { /* additional object types (C) */
int32_t type;
- void *value; /* the value the caller associates with the object */
+ void *value; /* the value the caller associates with the c_object */
s7_pointer e; /* the method list, if any (openlet) */
void (*mark)(void *val);
} c_obj;
@@ -880,7 +884,7 @@ typedef struct s7_cell {
int32_t file_and_line;
#endif
#if DEBUGGING
- int32_t current_alloc_line, previous_alloc_line, gc_line, alloc_line, uses;
+ int32_t current_alloc_line, previous_alloc_line, gc_line, alloc_line, uses, explicit_free_line;
int64_t current_alloc_type, previous_alloc_type, debugger_bits;
const char *current_alloc_func, *previous_alloc_func, *gc_func, *alloc_func;
#endif
@@ -949,9 +953,9 @@ struct s7_scheme {
gc_obj *permanent_objects;
- s7_pointer protected_objects, protected_accessors; /* a vector of gc-protected objects */
+ s7_pointer protected_objects, protected_setters; /* a vector of gc-protected objects */
uint32_t *gpofl;
- uint32_t protected_objects_size, protected_accessors_size, protected_accessors_loc;
+ uint32_t protected_objects_size, protected_setters_size, protected_setters_loc;
int32_t gpofl_loc;
s7_pointer nil; /* empty list */
@@ -1050,7 +1054,7 @@ struct s7_scheme {
int32_t c_object_types_size;
int32_t num_c_object_types;
- uint16_t syms_tag;
+ symbol_tag_t syms_tag;
int32_t ht_iter_tag, baffle_ctr, bignum_precision;
s7_pointer default_rng;
@@ -1069,18 +1073,18 @@ struct s7_scheme {
char_position_symbol, char_to_integer_symbol, char_upcase_symbol, cload_directory_symbol, close_input_port_symbol,
close_output_port_symbol, complex_symbol, cons_symbol, copy_symbol, cos_symbol, cosh_symbol, coverlet_symbol,
curlet_symbol, current_error_port_symbol, current_input_port_symbol, current_output_port_symbol, cutlet_symbol, cyclic_sequences_symbol,
- denominator_symbol, dilambda_symbol, display_symbol, divide_symbol, dynamic_wind_symbol,
+ denominator_symbol, dilambda_symbol, display_symbol, divide_symbol, documentation_symbol, dynamic_wind_symbol,
eq_symbol, error_symbol, eval_string_symbol, eval_symbol, exact_to_inexact_symbol, exit_symbol, exp_symbol, expt_symbol,
features_symbol, fill_symbol, float_vector_ref_symbol, float_vector_set_symbol, float_vector_symbol, floor_symbol,
flush_output_port_symbol, for_each_symbol, format_symbol, funclet_symbol,
gc_symbol, gcd_symbol, gensym_symbol, geq_symbol, get_output_string_symbol, gt_symbol,
hash_table_entries_symbol, hash_table_ref_symbol, hash_table_set_symbol, hash_table_star_symbol, hash_table_symbol, help_symbol,
- imag_part_symbol, inexact_to_exact_symbol, inlet_symbol, int_vector_ref_symbol, int_vector_set_symbol, int_vector_symbol,
+ imag_part_symbol, immutable_symbol, inexact_to_exact_symbol, inlet_symbol, int_vector_ref_symbol, int_vector_set_symbol, int_vector_symbol,
integer_decode_float_symbol, integer_to_char_symbol, is_aritable_symbol, is_boolean_symbol, is_byte_vector_symbol,
is_c_object_symbol, is_c_pointer_symbol, is_char_alphabetic_symbol, is_char_lower_case_symbol, is_char_numeric_symbol,
is_char_symbol, is_char_upper_case_symbol, is_char_whitespace_symbol, is_complex_symbol, is_constant_symbol,
is_continuation_symbol, is_defined_symbol, is_dilambda_symbol, is_eof_object_symbol, is_eq_symbol, is_equal_symbol,
- is_eqv_symbol, is_even_symbol, is_exact_symbol, is_float_vector_symbol, is_gensym_symbol, is_hash_table_symbol,
+ is_eqv_symbol, is_even_symbol, is_exact_symbol, is_float_vector_symbol, is_gensym_symbol, is_hash_table_symbol, is_immutable_symbol,
is_inexact_symbol, is_infinite_symbol, is_input_port_symbol, is_int_vector_symbol, is_integer_symbol, is_iterator_symbol,
is_keyword_symbol, is_let_symbol, is_list_symbol, is_macro_symbol, is_morally_equal_symbol, is_nan_symbol, is_negative_symbol,
is_null_symbol, is_number_symbol, is_odd_symbol, is_openlet_symbol, is_output_port_symbol, is_pair_symbol,
@@ -1099,24 +1103,27 @@ struct s7_scheme {
object_to_string_symbol, object_to_let_symbol, open_input_file_symbol, open_input_string_symbol, open_output_file_symbol,
open_output_string_symbol, openlet_symbol, outlet_symbol, owlet_symbol,
pair_filename_symbol, pair_line_number_symbol, peek_char_symbol, pi_symbol, port_filename_symbol, port_line_number_symbol,
- procedure_documentation_symbol, procedure_signature_symbol, procedure_source_symbol, provide_symbol,
+ procedure_source_symbol, provide_symbol,
quotient_symbol,
random_state_symbol, random_state_to_list_symbol, random_symbol, rationalize_symbol, read_byte_symbol,
read_char_symbol, read_line_symbol, read_string_symbol, read_symbol, real_part_symbol, remainder_symbol,
require_symbol, reverse_symbol, reverseb_symbol, rootlet_symbol, round_symbol,
- set_car_symbol, set_cdr_symbol, sin_symbol, sinh_symbol, sort_symbol, sqrt_symbol,
+ setter_symbol, set_car_symbol, set_cdr_symbol, signature_symbol, sin_symbol, sinh_symbol, sort_symbol, sqrt_symbol,
stacktrace_symbol, string_append_symbol, string_downcase_symbol, string_eq_symbol, string_fill_symbol,
string_geq_symbol, string_gt_symbol, string_leq_symbol, string_lt_symbol, string_position_symbol, string_ref_symbol,
string_set_symbol, string_symbol, string_to_number_symbol, string_to_symbol_symbol, string_upcase_symbol,
- sublet_symbol, substring_symbol, subtract_symbol, symbol_access_symbol, symbol_symbol, symbol_to_dynamic_value_symbol,
+ sublet_symbol, substring_symbol, subtract_symbol, symbol_setter_symbol, symbol_symbol, symbol_to_dynamic_value_symbol,
symbol_to_keyword_symbol, symbol_to_string_symbol, symbol_to_value_symbol, s7_version_symbol,
tan_symbol, tanh_symbol, throw_symbol, string_to_byte_vector_symbol,
- tree_count_symbol, truncate_symbol, type_of_symbol,
+ tree_count_symbol, tree_leaves_symbol, tree_memq_symbol, tree_set_memq_symbol, truncate_symbol, type_of_symbol,
unlet_symbol,
values_symbol, varlet_symbol, vector_append_symbol, vector_dimensions_symbol, vector_fill_symbol, vector_ref_symbol,
vector_set_symbol, vector_symbol,
with_input_from_file_symbol, with_input_from_string_symbol, with_output_to_file_symbol, with_output_to_string_symbol,
- write_byte_symbol, write_char_symbol, write_string_symbol, write_symbol;
+ write_byte_symbol, write_char_symbol, write_string_symbol, write_symbol,
+ local_documentation_symbol, local_signature_symbol, local_setter_symbol;
+
+ s7_pointer procedure_documentation_symbol, procedure_signature_symbol, procedure_setter_symbol; /* obsolete */
#if (!WITH_PURE_S7)
s7_pointer is_char_ready_symbol, char_ci_leq_symbol, char_ci_lt_symbol, char_ci_eq_symbol, char_ci_geq_symbol, char_ci_gt_symbol,
@@ -1138,7 +1145,7 @@ struct s7_scheme {
/* syntax symbols et al */
s7_pointer else_symbol, lambda_symbol, lambda_star_symbol, let_symbol, quote_symbol, unquote_symbol, macroexpand_symbol,
- define_expansion_symbol, baffle_symbol, with_let_symbol, documentation_symbol, signature_symbol, if_symbol,
+ define_expansion_symbol, baffle_symbol, with_let_symbol, if_symbol,
when_symbol, unless_symbol, begin_symbol, cond_symbol, case_symbol, and_symbol, or_symbol, do_symbol,
define_symbol, define_star_symbol, define_constant_symbol, with_baffle_symbol, define_macro_symbol,
define_macro_star_symbol, define_bacro_symbol, define_bacro_star_symbol, letrec_symbol, letrec_star_symbol,
@@ -1198,7 +1205,10 @@ struct s7_scheme {
when_s_symbol, when_a_symbol, when_p_symbol, when_unchecked_symbol,
with_baffle_unchecked_symbol, with_let_s_symbol, with_let_unchecked_symbol,
dox_slot_symbol,
- do_no_vars_symbol, do_no_vars_no_opt_symbol, dotimes_one_step_symbol;
+ do_no_vars_symbol, do_no_vars_no_opt_symbol;
+
+ s7_pointer string_signature, vector_signature, float_vector_signature, int_vector_signature, byte_vector_signature,
+ c_object_signature, let_signature, hash_table_signature, pair_signature, iterator_signature;
#if WITH_GMP
s7_pointer bignum_symbol, is_bignum_symbol;
@@ -1210,7 +1220,7 @@ struct s7_scheme {
#endif
/* setter and quasiquote functions */
- s7_pointer vector_set_function, string_set_function, list_set_function, hash_table_set_function, let_set_function, object_set_function,
+ s7_pointer vector_set_function, string_set_function, list_set_function, hash_table_set_function, let_set_function, c_object_set_function,
apply_values_function, multivector_function, apply_function, vector_function, last_function;
s7_pointer wrong_type_arg_info, out_of_range_info, simple_wrong_type_arg_info, simple_out_of_range_info;
@@ -1238,8 +1248,8 @@ struct s7_scheme {
opt_info *free_opts;
jmp_buf opt_exit;
int32_t pc, funcalls, unwraps;
- #define OPTS_SIZE 128 /* 128 overflows twice in s7test, 64 overflows 4 times in s7test, once in tall! */
- opt_info *opts[OPTS_SIZE]; /* this form is a lot faster than opt_info**! */
+ #define OPTS_SIZE 256 /* 128 overflows twice in s7test, 64 overflows 4 times in s7test, once in tall, pqw-vox needs 173 */
+ opt_info *opts[OPTS_SIZE+1]; /* this form is a lot faster than opt_info**! */
};
/* (*s7* 'safety) settings */
@@ -1478,6 +1488,7 @@ static s7_scheme *cur_sc = NULL;
p->current_alloc_line = __LINE__; \
p->current_alloc_func = __func__; \
p->current_alloc_type = f; \
+ p->explicit_free_line = 0; \
p->uses++; \
if ((((f) & 0xff) == T_FREE) || (((f) & 0xff) >= NUM_TYPES)) \
fprintf(stderr, "%d: set free %p type to %" PRIx64 "\n", __LINE__, p, (int64_t)(f)); \
@@ -1627,11 +1638,12 @@ static s7_scheme *cur_sc = NULL;
#define is_simple_sequence(P) (t_sequence_p[type(P)])
#define is_sequence(P) ((t_sequence_p[type(P)]) || (has_methods(P)))
+#define is_mutable_sequence(P) (((t_sequence_p[type(P)]) || (has_methods(P))) && (!is_immutable(P)))
#define is_mappable(P) (t_mappable_p[type(P)])
#define is_applicable(P) (t_applicable_p[type(P)])
/* this misses #() which actually is not applicable to anything, probably "" also, and inapplicable c-objects like random-state */
#define is_procedure(p) ((t_procedure_p[type(p)]) || ((is_c_object(p)) && (is_safe_procedure(p))))
-
+#define is_t_procedure(p) (t_procedure_p[type(p)])
/* the layout of these bits does matter in several cases -- don't shadow SYNTACTIC_PAIR and OPTIMIZED_PAIR */
#define TYPE_BITS 8
@@ -1727,7 +1739,7 @@ static s7_scheme *cur_sc = NULL;
static void set_local_1(s7_scheme *sc, s7_pointer symbol, const char *func, int32_t line)
{
- if (is_global(symbol)) /* || (is_syntactic(symbol))) */
+ if (is_global(symbol))
fprintf(stderr, "%s[%d]: %s%s%s in %s\n", func, line, BOLD_TEXT, DISPLAY(symbol), UNBOLD_TEXT, DISPLAY_80(sc->cur_code));
typeflag(symbol) = (typeflag(symbol) & ~(T_DONT_EVAL_ARGS | T_GLOBAL | T_SYNTACTIC));
}
@@ -1763,12 +1775,12 @@ static s7_scheme *cur_sc = NULL;
#define clear_loader_port(p) typeflag(_TPrt(p)) &= (~T_LOADER_PORT)
/* to block random load-time reads from screwing up the load process, this bit marks a port used by the loader */
-#define T_HAS_ACCESSOR T_LINE_NUMBER
-#define symbol_has_accessor(p) ((typeflag(_TSym(p)) & T_HAS_ACCESSOR) != 0)
-#define symbol_set_has_accessor(p) typeflag(_TSym(p)) |= T_HAS_ACCESSOR
-#define slot_has_accessor(p) ((typeflag(_TSlt(p)) & T_HAS_ACCESSOR) != 0)
-#define slot_set_has_accessor(p) typeflag(_TSlt(p)) |= T_HAS_ACCESSOR
-/* marks a slot or symbol that has a setter */
+#define T_HAS_SETTER T_LINE_NUMBER
+#define symbol_has_setter(p) ((typeflag(_TSym(p)) & T_HAS_SETTER) != 0)
+#define symbol_set_has_setter(p) typeflag(_TSym(p)) |= T_HAS_SETTER
+#define slot_has_setter(p) ((typeflag(_TSlt(p)) & T_HAS_SETTER) != 0)
+#define slot_set_has_setter(p) typeflag(_TSlt(p)) |= T_HAS_SETTER
+/* marks a slot that has a setter or symbol that might have a setter */
#define T_WITH_LET_LET T_LINE_NUMBER
#define is_with_let_let(p) ((typeflag(_TLet(p)) & T_WITH_LET_LET) != 0)
@@ -1781,6 +1793,9 @@ static s7_scheme *cur_sc = NULL;
#define clear_simple_defaults(p) typeflag(_TFnc(p)) &= (~T_SIMPLE_DEFAULTS)
/* flag c_func_star arg defaults that need GC protection */
+#define T_NO_SETTER T_LINE_NUMBER
+#define closure_no_setter(p) ((typeflag(_TClo(p)) & T_NO_SETTER) != 0)
+#define closure_set_no_setter(p) typeflag(_TClo(p)) |= T_NO_SETTER
#define T_SHARED (1 << (TYPE_BITS + 11))
#define is_shared(p) ((typeflag(_TSeq(p)) & T_SHARED) != 0)
@@ -1835,13 +1850,10 @@ static s7_scheme *cur_sc = NULL;
#define set_immutable(p) typeflag(_NFre(p)) |= T_IMMUTABLE
#define is_immutable_port(p) ((typeflag(_TPrt(p)) & T_IMMUTABLE) != 0)
#define is_immutable_symbol(p) ((typeflag(_TSym(p)) & T_IMMUTABLE) != 0)
+#define is_immutable_slot(p) ((typeflag(_TSlt(p)) & T_IMMUTABLE) != 0)
#define is_immutable_pair(p) ((typeflag(_TPair(p)) & T_IMMUTABLE) != 0)
#define is_immutable_vector(p) ((typeflag(_TVec(p)) & T_IMMUTABLE) != 0)
#define is_immutable_string(p) ((typeflag(_TStr(p)) & T_IMMUTABLE) != 0)
-/* immutable means the value can't be changed via set! or bind -- this is separate from the symbol access stuff
- * this bit can't be in the second byte -- with-let, for example, is immutable, but we use SYNTACTIC_TYPE to
- * recognize syntax in do loop optimizations.
- */
#define T_SETTER (1 << (TYPE_BITS + 17))
#define set_setter(p) typeflag(_TSym(p)) |= T_SETTER
@@ -1893,6 +1905,8 @@ static s7_scheme *cur_sc = NULL;
#define T_BYTE_VECTOR T_MUTABLE
#define is_byte_vector(p) ((is_string(p)) && ((typeflag(p) & T_BYTE_VECTOR) != 0))
+#define is_byte_vector_not_string(p) ((typeflag(p) & T_BYTE_VECTOR) != 0)
+#define is_mutable_byte_vector(p) ((typeflag(p) & (0xff | T_IMMUTABLE | T_BYTE_VECTOR)) == (T_STRING | T_BYTE_VECTOR))
#define set_byte_vector(p) typeflag(_TStr(p)) |= T_BYTE_VECTOR
/* marks a string that the caller considers a byte_vector */
@@ -1942,13 +1956,13 @@ static s7_scheme *cur_sc = NULL;
#define is_maybe_safe(p) ((typeflag(_TFnc(p)) & T_MAYBE_SAFE) != 0)
#define set_maybe_safe(p) typeflag(_TFnc(p)) |= T_MAYBE_SAFE
-#define T_HAS_SET_FALLBACK T_SAFE_STEPPER
-#define T_HAS_REF_FALLBACK T_MUTABLE
-#define has_ref_fallback(p) ((typeflag(_TLid(p)) & (T_HAS_REF_FALLBACK | T_HAS_METHODS)) == (T_HAS_REF_FALLBACK | T_HAS_METHODS))
-#define has_set_fallback(p) ((typeflag(_TLid(p)) & (T_HAS_SET_FALLBACK | T_HAS_METHODS)) == (T_HAS_SET_FALLBACK | T_HAS_METHODS))
-#define set_has_ref_fallback(p) typeflag(_TLet(p)) |= T_HAS_REF_FALLBACK
-#define set_has_set_fallback(p) typeflag(_TLet(p)) |= T_HAS_SET_FALLBACK
-#define set_all_methods(p, e) typeflag(_TLet(p)) |= (typeflag(e) & (T_HAS_METHODS | T_HAS_REF_FALLBACK | T_HAS_SET_FALLBACK))
+#define T_HAS_LET_SET_FALLBACK T_SAFE_STEPPER
+#define T_HAS_LET_REF_FALLBACK T_MUTABLE
+#define has_let_ref_fallback(p) ((typeflag(_TLid(p)) & (T_HAS_LET_REF_FALLBACK | T_HAS_METHODS)) == (T_HAS_LET_REF_FALLBACK | T_HAS_METHODS))
+#define has_let_set_fallback(p) ((typeflag(_TLid(p)) & (T_HAS_LET_SET_FALLBACK | T_HAS_METHODS)) == (T_HAS_LET_SET_FALLBACK | T_HAS_METHODS))
+#define set_has_let_ref_fallback(p) typeflag(_TLet(p)) |= T_HAS_LET_REF_FALLBACK
+#define set_has_let_set_fallback(p) typeflag(_TLet(p)) |= T_HAS_LET_SET_FALLBACK
+#define set_all_methods(p, e) typeflag(_TLet(p)) |= (typeflag(e) & (T_HAS_METHODS | T_HAS_LET_REF_FALLBACK | T_HAS_LET_SET_FALLBACK))
#define T_COPY_ARGS (1 << (TYPE_BITS + 20))
@@ -1996,6 +2010,15 @@ static s7_scheme *cur_sc = NULL;
#define iter_ok(p) ((typeflag(_NFre(p)) & T_ITER_OK) != 0) /* not TItr(p) here because this bit is globally unique */
#define clear_iter_ok(p) typeflag(_TItr(p)) &= (~T_ITER_OK)
+#define T_SYMCONS (1LL << (TYPE_BITS + 24))
+#define is_possibly_constant(p) ((typeflag(_TSym(p)) & T_SYMCONS) != 0)
+#define set_possibly_constant(p) typeflag(_TSym(p)) |= T_SYMCONS
+
+#define T_HAS_LET_ARG T_SYMCONS
+#define has_let_arg(p) ((typeflag(_NFre(p)) & T_HAS_LET_ARG) != 0)
+#define set_has_let_arg(p) typeflag(_NFre(p)) |= T_HAS_LET_ARG
+/* p is_procedure, but no checker for it, so use _NFre */
+
#define T_GC_MARK 0x8000000000000000
#define is_marked(p) ((typeflag(p) & T_GC_MARK) != 0)
@@ -2022,6 +2045,7 @@ static int64_t not_heap = -1;
#endif
#define is_pair(p) (type(p) == T_PAIR)
+#define is_mutable_pair(p) ((typeflag(p) & (0xff | T_IMMUTABLE)) == T_PAIR)
#define is_null(p) ((_NFre(p)) == sc->nil)
#define is_not_null(p) ((_NFre(p)) != sc->nil)
@@ -2252,8 +2276,10 @@ static int64_t not_heap = -1;
#define list_4(Sc, A, B, C, D) cons_unchecked(Sc, A, cons_unchecked(Sc, B, cons_unchecked(Sc, C, cons(Sc, D, Sc->nil))))
#define is_string(p) (type(p) == T_STRING)
+#define is_mutable_string(p) ((typeflag(p) & (0xff | T_IMMUTABLE)) == T_STRING)
#define string_value(p) (_TStr(p))->object.string.svalue
#define string_length(p) (_TStr(p))->object.string.length
+#define byte_vector_length(p) (_TStr(p))->object.string.length
#define string_hash(p) (_TStr(p))->object.string.hash
#define string_needs_free(p) (_TStr(p))->object.string.str_ext.needs_free
#define string_temp_true_length(p) (_TStr(p))->object.string.str_ext.temp_len
@@ -2294,19 +2320,19 @@ static int64_t not_heap = -1;
#define symbol_name(p) string_value(symbol_name_cell(p))
#define symbol_name_length(p) string_length(symbol_name_cell(p))
#define symbol_hmap(p) s7_int_abs(heap_location(p))
-#define symbol_global_accessor_index(p) (symbol_name_cell(p))->object.string.str_ext.accessor
+#define symbol_global_setter_index(p) (symbol_name_cell(p))->object.string.str_ext.setter
#define symbol_id(p) (_TSym(p))->object.sym.id
#define symbol_set_id(p, X) (_TSym(p))->object.sym.id = X
/* we need 64-bits here, since we don't want this thing to wrap around, and frames are created at a great rate
* callgrind says this is faster than an uint32_t!
*/
#define symbol_syntax_op(p) syntax_opcode(slot_value(global_slot(p)))
-#define symbol_type(p) (_TSym(p))->object.sym.type
+#define symbol_type(p) (symbol_name_cell(p))->object.string.info->type
#define global_slot(p) (_TSym(p))->object.sym.global_slot
#define set_global_slot(p, Val) (_TSym(p))->object.sym.global_slot = _TSld(Val)
-#define initial_slot(p) (symbol_name_cell(p))->object.string.initial_slot
-#define set_initial_slot(p, Val) (symbol_name_cell(p))->object.string.initial_slot = _TSld(Val)
+#define initial_slot(p) (symbol_name_cell(p))->object.string.info->initial_slot
+#define set_initial_slot(p, Val) (symbol_name_cell(p))->object.string.info->initial_slot = _TSld(Val)
#define local_slot(p) (_TSym(p))->object.sym.local_slot
#define set_local_slot(p, Val) (_TSym(p))->object.sym.local_slot = _TSln(Val)
#define keyword_symbol(p) (symbol_name_cell(p))->object.string.doc.ksym
@@ -2320,6 +2346,7 @@ static int64_t not_heap = -1;
#define symbol_increment_ctr(p) (_TSym(p))->object.sym.ctr++
#define symbol_has_help(p) (is_documented(symbol_name_cell(p)))
#define symbol_set_has_help(p) set_documented(symbol_name_cell(p))
+#define symbol_info(p) (symbol_name_cell(p))->object.string.info
#define symbol_set_local(Symbol, Id, Slot) do {set_local_slot(Symbol, Slot); symbol_set_id(Symbol, Id); symbol_increment_ctr(Symbol);} while (0)
/* set slot before id in case Slot is an expression that tries to find the current Symbol slot (using its old Id obviously) */
@@ -2337,8 +2364,8 @@ static int64_t not_heap = -1;
#define slot_set_pending_value(p, Val) (_TSlt(p))->object.slt.pending_value = _NFre(Val)
#define slot_expression(p) (_TSlt(p))->object.slt.expr
#define slot_set_expression(p, Val) (_TSlt(p))->object.slt.expr = _NFre(Val)
-#define slot_accessor(p) slot_expression(p)
-#define slot_set_accessor(p, Val) slot_expression(p) = _TApp(Val)
+#define slot_setter(p) slot_expression(p)
+#define slot_set_setter(p, Val) slot_expression(p) = _TApp(Val)
#if DEBUGGING
#define local_symbol_value(Sym) check_sym(sc, _TSym(Sym))
@@ -2416,6 +2443,7 @@ static int64_t not_heap = -1;
#define vector_dimensions_allocated(p) ((_TVec(p))->object.vector.dim_info->dimensions_allocated)
#define is_hash_table(p) (type(p) == T_HASH_TABLE)
+#define is_mutable_hash_table(p) ((typeflag(p) & (0xff | T_IMMUTABLE)) == T_HASH_TABLE)
#define hash_table_mask(p) (_THsh(p))->object.hasher.mask
#define hash_table_element(p, i) ((_THsh(p))->object.hasher.elements[i])
#define hash_table_elements(p) (_THsh(p))->object.hasher.elements
@@ -2859,7 +2887,6 @@ static void memclr(void *s, size_t n)
/* ---------------- forward decls ---------------- */
static char *number_to_string_base_10(s7_pointer obj, int32_t width, int32_t precision, char float_choice, int32_t *nlen, use_write_t choice);
-static s7_pointer iterator_finished(s7_scheme *sc, s7_pointer iterator);
static s7_pointer eval(s7_scheme *sc, opcode_t first_op);
static s7_pointer division_by_zero_error(s7_scheme *sc, s7_pointer caller, s7_pointer arg);
static s7_pointer file_error(s7_scheme *sc, const char *caller, const char *descr, const char *name);
@@ -2868,7 +2895,6 @@ static void s7_warn(s7_scheme *sc, int32_t len, const char *ctrl, ...);
static s7_pointer safe_reverse_in_place(s7_scheme *sc, s7_pointer list);
static s7_pointer cons_unchecked(s7_scheme *sc, s7_pointer a, s7_pointer b);
static s7_pointer permanent_cons(s7_pointer a, s7_pointer b, uint64_t type);
-static s7_pointer permanent_list(s7_scheme *sc, int32_t len);
static s7_pointer make_atom(s7_scheme *sc, char *q, int32_t radix, bool want_symbol, bool with_error);
static s7_pointer apply_error(s7_scheme *sc, s7_pointer obj, s7_pointer args);
static int32_t remember_file_name(s7_scheme *sc, const char *file);
@@ -2888,8 +2914,6 @@ static s7_pointer unbound_variable(s7_scheme *sc, s7_pointer sym);
static void free_hash_table(s7_pointer table);
void s7_show_let(s7_scheme *sc);
static s7_pointer g_cdr(s7_scheme *sc, s7_pointer args);
-
-static bool is_all_x_safe(s7_scheme *sc, s7_pointer p);
static void annotate_args(s7_scheme *sc, s7_pointer args, s7_pointer e);
static void annotate_arg(s7_scheme *sc, s7_pointer arg, s7_pointer e);
static bool float_optimize(s7_scheme *sc, s7_pointer expr);
@@ -2965,7 +2989,7 @@ static s7_pointer car_a_list_string, cdr_a_list_string, caar_a_list_string, cadr
cddr_a_list_string, caaar_a_list_string, caadr_a_list_string, cadar_a_list_string, caddr_a_list_string,
cdaar_a_list_string, cdadr_a_list_string, cddar_a_list_string, cdddr_a_list_string, a_list_string,
an_association_list_string, an_output_port_string, an_input_port_string, an_open_port_string,
- a_normal_real_string, a_rational_string, a_boolean_string, a_number_string, a_let_string,
+ a_normal_real_string, a_rational_string, a_boolean_string, a_number_string, a_let_string, immutable_error_string,
a_procedure_string, a_proper_list_string, a_thunk_string, something_applicable_string, a_symbol_string,
a_non_negative_integer_string, a_format_port_string, an_unsigned_byte_string, value_is_missing_string,
a_non_constant_symbol_string, an_eq_func_string, a_sequence_string, its_too_small_string, parameter_set_twice_string,
@@ -3019,14 +3043,14 @@ enum {OP_NO_OP, OP_GC_PROTECT,
OP_SET_SYMBOL_opSq, OP_SET_SYMBOL_opCq, OP_SET_SYMBOL_opSSq, OP_SET_SYMBOL_opSSSq,
OP_SET_SYMBOL_opLq, OP_SET_SYMBOL_opLLq,
OP_SET_NORMAL, OP_SET_PAIR, OP_SET_DILAMBDA, OP_SET_DILAMBDA_Z, OP_SET_DILAMBDA_Z_1, OP_SET_PAIR_Z, OP_SET_PAIR_A, OP_SET_PAIR_P, OP_SET_PAIR_ZA,
- OP_SET_PAIR_P_1, OP_SET_WITH_ACCESSOR, OP_SET_PWS, OP_SET_LET_S, OP_SET_LET_ALL_X,
+ OP_SET_PAIR_P_1, OP_SET_WITH_SETTER, OP_SET_PWS, OP_SET_LET_S, OP_SET_LET_ALL_X,
OP_SET_SAFE,
OP_INCREMENT_1, OP_DECREMENT_1, OP_SET_CONS,
OP_INCREMENT_SS, OP_INCREMENT_SSS, OP_INCREMENT_SZ, OP_INCREMENT_SA, OP_INCREMENT_SAA,
OP_LET_STAR_UNCHECKED, OP_LETREC_UNCHECKED, OP_LETREC_STAR_UNCHECKED, OP_COND_UNCHECKED,
OP_LAMBDA_STAR_UNCHECKED, OP_DO_UNCHECKED, OP_DEFINE_UNCHECKED, OP_DEFINE_STAR_UNCHECKED, OP_DEFINE_FUNCHECKED, OP_DEFINE_CONSTANT_UNCHECKED,
- OP_DEFINE_WITH_ACCESSOR, OP_DEFINE_MACRO_WITH_ACCESSOR,
+ OP_DEFINE_WITH_SETTER, OP_DEFINE_MACRO_WITH_SETTER,
OP_LET_NO_VARS, OP_NAMED_LET, OP_NAMED_LET_NO_VARS, OP_NAMED_LET_STAR,
OP_LET_C, OP_LET_S, OP_LET_S_Z, OP_LET_ALL_C, OP_LET_ALL_S, OP_LET_ALL_X,
@@ -3069,7 +3093,6 @@ enum {OP_NO_OP, OP_GC_PROTECT,
OP_SAFE_DO, OP_SAFE_DO_STEP, OP_DOX, OP_DOX_STEP, OP_DOX_STEP_P,
OP_DOTIMES_P, OP_DOTIMES_STEP_P,
OP_DO_NO_VARS, OP_DO_NO_VARS_NO_OPT, OP_DO_NO_VARS_NO_OPT_1,
- OP_DOTIMES_ONE_STEP,
OP_SAFE_C_P_1, OP_SAFE_C_PP_1, OP_SAFE_C_PP_3, OP_SAFE_C_PP_5, OP_SAFE_C_PP_6,
OP_EVAL_ARGS_P_2, OP_EVAL_ARGS_P_2_MV, OP_EVAL_ARGS_P_3, OP_EVAL_ARGS_P_4, OP_EVAL_ARGS_P_3_MV,
@@ -3100,12 +3123,13 @@ enum {OP_SAFE_C_C, HOP_SAFE_C_C,
OP_SAFE_C_SQ, HOP_SAFE_C_SQ, OP_SAFE_C_QS, HOP_SAFE_C_QS, OP_SAFE_C_QQ, HOP_SAFE_C_QQ,
OP_SAFE_C_CQ, HOP_SAFE_C_CQ, OP_SAFE_C_QC, HOP_SAFE_C_QC,
OP_SAFE_C_SSS, HOP_SAFE_C_SSS, OP_SAFE_C_SCS, HOP_SAFE_C_SCS, OP_SAFE_C_SSC, HOP_SAFE_C_SSC, OP_SAFE_C_CSS, HOP_SAFE_C_CSS,
- OP_SAFE_C_SCC, HOP_SAFE_C_SCC, OP_SAFE_C_CSC, HOP_SAFE_C_CSC,
+ OP_SAFE_C_SCC, HOP_SAFE_C_SCC, OP_SAFE_C_CSC, HOP_SAFE_C_CSC, OP_SAFE_C_CCS, HOP_SAFE_C_CCS,
OP_SAFE_C_ALL_S, HOP_SAFE_C_ALL_S, OP_SAFE_C_ALL_X, HOP_SAFE_C_ALL_X, OP_SAFE_C_SSA, HOP_SAFE_C_SSA, OP_SAFE_C_SAS, HOP_SAFE_C_SAS,
OP_SAFE_C_CSA, HOP_SAFE_C_CSA, OP_SAFE_C_SCA, HOP_SAFE_C_SCA,
OP_SAFE_C_A, HOP_SAFE_C_A, OP_SAFE_C_AA, HOP_SAFE_C_AA, OP_SAFE_C_AAA, HOP_SAFE_C_AAA, OP_SAFE_C_AAAA, HOP_SAFE_C_AAAA,
OP_SAFE_C_SQS, HOP_SAFE_C_SQS, OP_SAFE_C_opAq, HOP_SAFE_C_opAq, OP_SAFE_C_opAAq, HOP_SAFE_C_opAAq, OP_SAFE_C_opAAAq, HOP_SAFE_C_opAAAq,
- OP_SAFE_C_S_opAq, HOP_SAFE_C_S_opAq, OP_SAFE_C_S_opAAq, HOP_SAFE_C_S_opAAq, OP_SAFE_C_S_opAAAq, HOP_SAFE_C_S_opAAAq,
+ OP_SAFE_C_S_opAq, HOP_SAFE_C_S_opAq, OP_SAFE_C_opAq_S, HOP_SAFE_C_opAq_S,
+ OP_SAFE_C_S_opAAq, HOP_SAFE_C_S_opAAq, OP_SAFE_C_S_opAAAq, HOP_SAFE_C_S_opAAAq,
OP_SAFE_C_opCq, HOP_SAFE_C_opCq, OP_SAFE_C_opSq, HOP_SAFE_C_opSq,
OP_SAFE_C_opCq_opSq, HOP_SAFE_C_opCq_opSq, OP_SAFE_C_opSq_opCq, HOP_SAFE_C_opSq_opCq,
@@ -3155,7 +3179,7 @@ enum {OP_SAFE_C_C, HOP_SAFE_C_C,
OP_CLOSURE_AP, HOP_CLOSURE_AP, OP_CLOSURE_PA, HOP_CLOSURE_PA,
OP_CLOSURE_ANY_ALL_X, HOP_CLOSURE_ANY_ALL_X,
- OP_CLOSURE_STAR_A, HOP_CLOSURE_STAR_A, OP_CLOSURE_STAR_AA, HOP_CLOSURE_STAR_AA, OP_CLOSURE_STAR_ALL_X, HOP_CLOSURE_STAR_ALL_X,
+ OP_CLOSURE_STAR_A, HOP_CLOSURE_STAR_A, OP_CLOSURE_STAR_ALL_X, HOP_CLOSURE_STAR_ALL_X,
OP_SAFE_THUNK, HOP_SAFE_THUNK,
OP_SAFE_THUNK_E, HOP_SAFE_THUNK_E,
@@ -3248,14 +3272,14 @@ static const char *op_names[OP_MAX_DEFINED_1] = {
"set_symbol_oplq", "set_symbol_opllq",
"set_normal", "set_pair", "set_dilambda", "set_dilambda_z", "set_dilambda_z_1",
"set_pair_z", "set_pair_a", "set_pair_p", "set_pair_za",
- "set_pair_p_1", "set_with_accessor", "set_pws", "set_let_s", "set_let_all_x",
+ "set_pair_p_1", "set_with_setter", "set_pws", "set_let_s", "set_let_all_x",
"set_safe",
"increment_1", "decrement_1", "set_cons",
"increment_ss", "increment_sss", "increment_sz", "increment_sa", "increment_saa",
"let*_unchecked", "letrec_unchecked", "letrec*_unchecked", "cond_unchecked",
"lambda*_unchecked", "do_unchecked", "define_unchecked", "define*_unchecked", "define_funchecked", "define_constant_unchecked",
- "define_with_accessor", "define_macro_with_accessor",
+ "define_with_setter", "define_macro_with_setter",
"let_no_vars", "named_let", "named_let_no_vars", "named_let*",
"let_c", "let_s", "let_s_z", "let_all_c", "let_all_s", "let_all_x",
@@ -3298,7 +3322,6 @@ static const char *op_names[OP_MAX_DEFINED_1] = {
"safe_do", "safe_do_step", "dox", "dox_step", "dox_step_p",
"dotimes_p", "dotimes_step_p",
"do_no_vars", "do_no_vars_no_opt", "do_no_vars_no_opt_1",
- "dotimes_one_step",
"safe_c_p_1", "safe_c_pp_1", "safe_c_pp_3", "safe_c_pp_5", "safe_c_pp_6",
"eval_args_p_2", "eval_args_p_2_mv", "eval_args_p_3", "eval_args_p_4", "eval_args_p_3_mv",
@@ -3326,12 +3349,13 @@ static const char* opt_names[OPT_MAX_DEFINED] =
"safe_c_sq", "h_safe_c_sq", "safe_c_qs", "h_safe_c_qs", "safe_c_qq", "h_safe_c_qq",
"safe_c_cq", "h_safe_c_cq", "safe_c_qc", "h_safe_c_qc",
"safe_c_sss", "h_safe_c_sss", "safe_c_scs", "h_safe_c_scs", "safe_c_ssc", "h_safe_c_ssc", "safe_c_css", "h_safe_c_css",
- "safe_c_scc", "h_safe_c_scc", "safe_c_csc", "h_safe_c_csc",
+ "safe_c_scc", "h_safe_c_scc", "safe_c_csc", "h_safe_c_csc", "safe_c_ccs", "h_safe_c_ccs",
"safe_c_all_s", "h_safe_c_all_s", "safe_c_all_x", "h_safe_c_all_x", "safe_c_ssa", "h_safe_c_ssa", "safe_c_sas", "h_safe_c_sas",
"safe_c_csa", "h_safe_c_csa", "safe_c_sca", "h_safe_c_sca",
"safe_c_a", "h_safe_c_a", "safe_c_aa", "h_safe_c_aa", "safe_c_aaa", "h_safe_c_aaa", "safe_c_aaaa", "h_safe_c_aaaa",
"safe_c_sqs", "h_safe_c_sqs", "safe_c_opaq", "h_safe_c_opaq", "safe_c_opaaq", "h_safe_c_opaaq", "safe_c_opaaaq", "h_safe_c_opaaaq",
- "safe_c_s_opaq", "h_safe_c_s_opaq", "safe_c_s_opaaq", "h_safe_c_s_opaaq", "safe_c_s_opaaaq", "h_safe_c_s_opaaaq",
+ "safe_c_s_opaq", "h_safe_c_s_opaq", "safe_c_opaq_s", "h_safe_c_opaq_s",
+ "safe_c_s_opaaq", "h_safe_c_s_opaaq", "safe_c_s_opaaaq", "h_safe_c_s_opaaaq",
"safe_c_opcq", "h_safe_c_opcq", "safe_c_opsq", "h_safe_c_opsq",
"safe_c_opcq_opsq", "h_safe_c_opcq_opsq", "safe_c_opsq_opcq", "h_safe_c_opsq_opcq",
@@ -3381,7 +3405,7 @@ static const char* opt_names[OPT_MAX_DEFINED] =
"closure_ap", "h_closure_ap", "closure_pa", "h_closure_pa",
"closure_any_all_x", "h_closure_any_all_x",
- "closure*_a", "h_closure*_a", "closure*_aa", "h_closure*_aa", "closure*_all_x", "h_closure*_all_x",
+ "closure*_a", "h_closure*_a", "closure*_all_x", "h_closure*_all_x",
"safe_thunk", "h_safe_thunk",
"safe_thunk_e", "h_safe_thunk_e",
@@ -3545,6 +3569,17 @@ static s7_pointer find_and_apply_method(s7_scheme *sc, s7_pointer lt, s7_pointer
return(wrong_type_argument(Sc, Method, Num, Obj, Type)); \
} while (0)
+static s7_pointer immutable_object_error(s7_scheme *sc, s7_pointer info) {return(s7_error(sc, sc->error_symbol, info));}
+
+#define mutable_method_or_bust(Sc, Obj, Method, Args, Type, Num) \
+ do { \
+ if (has_methods(Obj)) \
+ return(find_and_apply_method(Sc, find_let(Sc, Obj), Method, Args)); \
+ if (is_immutable(Obj)) \
+ return(immutable_object_error(sc, set_elist_3(sc, immutable_error_string, Method, Obj))); \
+ return(wrong_type_argument(Sc, Method, Num, Obj, Type)); \
+ } while (0)
+
#define method_or_bust_one_arg(Sc, Obj, Method, Args, Type) \
do { \
if (has_methods(Obj)) \
@@ -3746,25 +3781,21 @@ static s7_pointer g_not(s7_scheme *sc, s7_pointer args)
static bool not_b(s7_pointer p) {return(p == cur_sc->F);}
-
bool s7_boolean(s7_scheme *sc, s7_pointer x)
{
return(x != sc->F);
}
-
bool s7_is_boolean(s7_pointer x)
{
return(type(x) == T_BOOLEAN);
}
-
s7_pointer s7_make_boolean(s7_scheme *sc, bool x)
{
return(make_boolean(sc, x));
}
-
static s7_pointer g_is_boolean(s7_scheme *sc, s7_pointer args)
{
#define H_is_boolean "(boolean? obj) returns #t if obj is #f or #t: (boolean? ()) -> #f"
@@ -3772,25 +3803,52 @@ static s7_pointer g_is_boolean(s7_scheme *sc, s7_pointer args)
check_boolean_method(sc, s7_is_boolean, sc->is_boolean_symbol, args);
}
-
-bool s7_is_constant(s7_pointer p)
+static s7_pointer find_symbol(s7_scheme *sc, s7_pointer symbol);
+static bool is_constant_symbol(s7_scheme *sc, s7_pointer sym)
{
- /* this means "always evaluates to the same thing", sort of, not "evaluates to itself":
- * (let ((x 'x)) (and (not (constant? x)) (equal? x (eval x))))
- * (and (constant? (list + 1)) (not (equal? (list + 1) (eval (list + 1)))))
- * but since (constant? (vector 1 2 3)) and (constant? #(1 2 3)) are both #t,
- * how to tell in scheme that (vector-set! x 0 y) is safe?
- * see end of this file
- */
- return((type(p) != T_SYMBOL) || (is_immutable_symbol(p)));
+ if (is_immutable_symbol(sym)) /* for keywords */
+ return(true);
+ if (is_possibly_constant(sym))
+ {
+ s7_pointer slot;
+ slot = find_symbol(sc, sym);
+ return((is_slot(slot)) && (is_immutable_slot(slot)));
+ }
+ return(false);
}
+#define is_constant(sc, p) ((type(p) != T_SYMBOL) || (is_constant_symbol(sc, p)))
-static s7_pointer g_is_constant(s7_scheme *sc, s7_pointer args)
+static s7_pointer g_is_constant(s7_scheme *sc, s7_pointer args)
{
- #define H_is_constant "(constant? obj) returns #t if obj is a constant (unsettable): (constant? pi) -> #t"
+ #define H_is_constant "(constant? obj) returns #t if obj either evaluates to itself, or is a symbol whose binding is constant"
#define Q_is_constant pl_bt
- check_boolean_method(sc, s7_is_constant, sc->is_constant_symbol, args);
+ return(make_boolean(sc, is_constant(sc, car(args))));
+}
+
+bool s7_is_immutable(s7_pointer p)
+{
+ return(is_immutable(p));
+}
+
+s7_pointer s7_immutable(s7_pointer p)
+{
+ set_immutable(p);
+ return(p);
+}
+
+static s7_pointer g_immutable(s7_scheme *sc, s7_pointer args)
+{
+ #define H_immutable "(immutable sequence) declares that the sequence's entries can't be changed. The sequence is returned. (This function is work-in-progress)"
+ #define Q_immutable s7_make_signature(sc, 2, sc->T, sc->T)
+ return(s7_immutable(car(args)));
+}
+
+static s7_pointer g_is_immutable(s7_scheme *sc, s7_pointer args)
+{
+ #define H_is_immutable "(immutable? sequence) returns #t if the sequence is immutable. (This function is work-in-progress)"
+ #define Q_is_immutable pl_bt
+ return((is_immutable(car(args))) ? sc->T : sc->F);
}
@@ -3884,21 +3942,17 @@ static void mark_slot(s7_pointer p)
{
set_mark(p);
S7_MARK(slot_value(p));
- if (slot_has_accessor(p))
- S7_MARK(slot_accessor(p));
+ if (slot_has_setter(p))
+ S7_MARK(slot_setter(p));
- if (is_gensym(slot_symbol(p))) /* (let () (apply define (gensym) (list 32)) (gc) (gc) (curlet)) */
+ /* if (is_gensym(slot_symbol(p))) */ /* (let () (apply define (gensym) (list 32)) (gc) (gc) (curlet)) */
set_mark(slot_symbol(p));
}
static void mark_symbol(s7_pointer p)
{
- if (is_gensym(p))
+ /* if (is_gensym(p)) */
set_mark(p);
- /* don't set the mark bit of a normal symbol! It wrecks the check against SYNTACTIC_TYPE,
- * slowing everything down by a large amount.
- * (this comment is obsolete I think)
- */
}
static void mark_noop(s7_pointer p) {}
@@ -4041,6 +4095,7 @@ static void sweep(s7_scheme *sc)
s1 = gp->list[i];
if (is_free_and_clear(s1))
{
+ /* free(symbol_info(s1)); */
remove_gensym_from_symbol_table(sc, s1); /* this uses symbol_name_cell data */
free(symbol_name(s1));
free(symbol_name_cell(s1));
@@ -4326,7 +4381,7 @@ static void init_gc_caches(s7_scheme *sc)
static void add_setter(s7_scheme *sc, s7_pointer p, s7_pointer setter)
{
- /* procedure-setters GC-protected. The c_function_setter field can't be used because the built-in functions
+ /* setters GC-protected. The c_function_setter field can't be used because the built-in functions
* are often removed from the heap and never thereafter marked.
*/
uint32_t i;
@@ -4670,6 +4725,7 @@ static void mark_rootlet(s7_scheme *sc)
set_mark(ge);
while (tmp < top)
S7_MARK(slot_value(*tmp++));
+ /* slot_setter is handled below with an explicit list -- more code than its worth probably */
}
void s7_mark_c_object(s7_pointer p)
@@ -4847,7 +4903,7 @@ static int32_t gc(s7_scheme *sc)
S7_MARK(sc->fdats[i]->curly_arg);
}
mark_vector(sc->protected_objects);
- mark_vector(sc->protected_accessors);
+ mark_vector(sc->protected_setters);
/* now protect recent allocations using the free_heap cells above the current free_heap_top (if any).
*
@@ -5194,10 +5250,16 @@ static void add_permanent_object(s7_scheme *sc, s7_pointer obj)
sc->permanent_objects = g;
}
+#if DEBUGGING
+#define free_cell(Sc, P) free_cell_1(Sc, P, __LINE__)
+static void free_cell_1(s7_scheme *sc, s7_pointer p, int32_t line)
+#else
static void free_cell(s7_scheme *sc, s7_pointer p)
+#endif
{
#if DEBUGGING
p->debugger_bits = 0;
+ p->explicit_free_line = line;
#endif
clear_type(p);
(*(sc->free_heap_top++)) = p;
@@ -5205,6 +5267,7 @@ static void free_cell(s7_scheme *sc, s7_pointer p)
static void free_vlist(s7_scheme *sc, s7_pointer lst)
{
+ /* this is perhaps unsafe (testing...) */
if (is_pair(lst))
{
s7_pointer p, np;
@@ -5627,11 +5690,13 @@ static s7_pointer new_symbol(s7_scheme *sc, const char *name, uint32_t len, uint
/* name might not be null-terminated */
s7_pointer x, str, p;
unsigned char *base, *val;
+ size_t size;
+ size = sizeof(s7_cell) * 3 + sizeof(symbol_info_t) + len + 1;
- base = (unsigned char *)malloc(sizeof(s7_cell) * 3 + len + 1);
+ base = (unsigned char *)malloc(size);
#if DEBUGGING
/* clear at least debugger_bits here and below */
- memset((void *)base, 0, sizeof(s7_cell) * 3 + len + 1);
+ memset((void *)base, 0, size);
#endif
x = (s7_pointer)base;
str = (s7_pointer)(base + sizeof(s7_cell));
@@ -5651,6 +5716,7 @@ static s7_pointer new_symbol(s7_scheme *sc, const char *name, uint32_t len, uint
typeflag(x) = T_SYMBOL;
symbol_set_name_cell(x, str);
set_global_slot(x, sc->undefined); /* was sc->nil */
+ symbol_info(x) = (symbol_info_t *)(base + 3 * sizeof(s7_cell) + len + 1);
set_initial_slot(x, sc->undefined);
symbol_set_local(x, 0LL, sc->nil);
symbol_set_tag(x, 0);
@@ -5674,8 +5740,7 @@ static s7_pointer new_symbol(s7_scheme *sc, const char *name, uint32_t len, uint
{
char *kstr;
uint32_t klen;
- klen = symbol_name_length(x) - 1;
- /* can't use tmpbuf_* here (or not safely I think) because name is already using tmpbuf */
+ klen = symbol_name_length(x) - 1; /* can't use tmpbuf_* here (or not safely I think) because name is already using tmpbuf */
kstr = (char *)malloc((klen + 1) * sizeof(char));
memcpy((void *)kstr, (void *)name, klen);
kstr[klen] = 0;
@@ -5973,8 +6038,9 @@ static s7_pointer g_gensym(s7_scheme *sc, s7_pointer args)
/* allocate the symbol in the heap so GC'd when inaccessible */
new_cell(sc, x, T_SYMBOL | T_GENSYM);
symbol_set_name_cell(x, str);
+ symbol_info(x) = NULL; /* (symbol_info_t *)calloc(1, sizeof(symbol_info_t)); */
set_global_slot(x, sc->undefined);
- set_initial_slot(x, sc->undefined);
+ /* set_initial_slot(x, sc->undefined); */
symbol_set_local(x, 0LL, sc->nil);
symbol_set_ctr(x, 0);
@@ -6130,7 +6196,12 @@ static s7_pointer add_symbol_to_list(s7_scheme *sc, s7_pointer sym)
return(sym);
}
+#if DEBUGGING
+#define clear_symbol_list(Sc) {Sc->syms_tag++; if (Sc->syms_tag == 0) fprintf(stderr, "syms tag wrapped around\n");}
+#else
#define clear_symbol_list(Sc) Sc->syms_tag++
+#endif
+
#define symbol_is_in_list(Sc, Sym) (symbol_tag(Sym) == Sc->syms_tag)
@@ -6374,6 +6445,8 @@ static s7_pointer let_fill(s7_scheme *sc, s7_pointer args)
return(out_of_range(sc, sc->fill_symbol, small_int(1), e, s7_make_string_wrapper(sc, "can't fill! owlet")));
if (is_funclet(e))
return(out_of_range(sc, sc->fill_symbol, small_int(1), e, s7_make_string_wrapper(sc, "can't fill! a funclet")));
+ if (is_immutable(e))
+ return(immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->fill_symbol, e)));
val = cadr(args);
if (val == sc->undefined)
@@ -6695,18 +6768,21 @@ static s7_pointer g_unlet(s7_scheme *sc, s7_pointer args)
s7_pointer sym;
x = slot_value(inits[i]);
sym = slot_symbol(inits[i]);
- if (is_procedure(x))
+ if (!is_immutable(sym))
{
- if (((!is_global(sym)) && /* it might be shadowed locally */
- (s7_symbol_local_value(sc, sym, sc->envir) != slot_value(global_slot(sym)))) ||
- (x != slot_value(global_slot(sym)))) /* it's not shadowed, but has been changed globally */
- make_slot_1(sc, sc->w, sym, x);
- }
- else
- {
- if ((is_syntax(x)) &&
- (local_slot(sym) != sc->nil)) /* this can be a freed cell, will be nil if unchanged */
- make_slot_1(sc, sc->w, sym, x);
+ if (is_t_procedure(x))
+ {
+ if (((!is_global(sym)) && /* it might be shadowed locally */
+ (s7_symbol_local_value(sc, sym, sc->envir) != slot_value(global_slot(sym)))) ||
+ (x != slot_value(global_slot(sym)))) /* it's not shadowed, but has been changed globally */
+ make_slot_1(sc, sc->w, sym, x);
+ }
+ else
+ {
+ if ((is_syntax(x)) &&
+ (local_slot(sym) != sc->nil)) /* this can be a freed cell, will be nil if unchanged */
+ make_slot_1(sc, sc->w, sym, x);
+ }
}
}
/* if (set! + -) then + needs to be overridden, but the local bit isn't set,
@@ -6730,10 +6806,12 @@ static s7_pointer g_is_openlet(s7_scheme *sc, s7_pointer args)
{
#define H_is_openlet "(openlet? obj) returns #t is 'obj' has methods."
#define Q_is_openlet pl_bt
+ s7_pointer e;
- /* if car(args) is not a let, should this raise an error? -- no, easier to use this way in cond */
- check_method(sc, car(args), sc->is_openlet_symbol, args);
- return(make_boolean(sc, has_methods(car(args))));
+ e = car(args);
+ /* if e is not a let, should this raise an error? -- no, easier to use this way in cond */
+ check_method(sc, e, sc->is_openlet_symbol, args);
+ return(make_boolean(sc, has_methods(e)));
}
@@ -6746,7 +6824,7 @@ s7_pointer s7_openlet(s7_scheme *sc, s7_pointer e)
static s7_pointer g_openlet(s7_scheme *sc, s7_pointer args)
{
- #define H_openlet "(openlet e) tells the built-in generic functions that the environment 'e might have an over-riding method."
+ #define H_openlet "(openlet e) tells the built-in generic functions that the let 'e might have an over-riding method."
#define Q_openlet pcl_e
s7_pointer e;
@@ -6860,8 +6938,8 @@ s7_pointer s7_varlet(s7_scheme *sc, s7_pointer env, s7_pointer symbol, s7_pointe
static s7_pointer g_varlet(s7_scheme *sc, s7_pointer args)
{
- #define H_varlet "(varlet env ...) adds its arguments (an environment, a cons: symbol . value, or a pair of arguments, the symbol and its value) \
-to the environment env, and returns the environment."
+ #define H_varlet "(varlet env ...) adds its arguments (a let, a cons: symbol . value, or a pair of arguments, the symbol and its value) \
+to the let env, and returns env."
#define Q_varlet s7_make_circular_signature(sc, 2, 4, sc->is_let_symbol, \
s7_make_signature(sc, 2, sc->is_let_symbol, sc->is_null_symbol), \
s7_make_signature(sc, 3, sc->is_pair_symbol, sc->is_symbol_symbol, sc->is_let_symbol), \
@@ -6879,6 +6957,9 @@ to the environment env, and returns the environment."
return(wrong_type_argument_with_type(sc, sc->varlet_symbol, 1, e, a_let_string));
}
+ if (is_immutable(e))
+ return(s7_wrong_type_arg_error(sc, "varlet", 1, e, "a mutable let"));
+
for (x = cdr(args); is_pair(x); x = cdr(x))
{
p = car(x);
@@ -6909,7 +6990,7 @@ to the environment env, and returns the environment."
return(wrong_type_argument_with_type(sc, sc->varlet_symbol, position_of(x, args), p, a_symbol_string));
}
- if (is_immutable_symbol(sym))
+ if (is_constant_symbol(sc, sym))
return(wrong_type_argument_with_type(sc, sc->varlet_symbol, position_of(x, args), sym, a_non_constant_symbol_string));
if (e == sc->rootlet)
@@ -6943,7 +7024,7 @@ to the environment env, and returns the environment."
/* -------------------------------- cutlet -------------------------------- */
static s7_pointer g_cutlet(s7_scheme *sc, s7_pointer args)
{
- #define H_cutlet "(cutlet e symbol ...) removes symbols from the environment e."
+ #define H_cutlet "(cutlet e symbol ...) removes symbols from the let e."
#define Q_cutlet s7_make_circular_signature(sc, 2, 3, sc->is_let_symbol, sc->is_let_symbol, sc->is_symbol_symbol)
s7_pointer e, syms;
@@ -6962,6 +7043,10 @@ static s7_pointer g_cutlet(s7_scheme *sc, s7_pointer args)
* let-ref and others will use the old slot! What's the un-id? Perhaps the next one?
* (let ((b 1)) (let ((b 2)) (cutlet (curlet) 'b)) b)
*/
+
+ if (is_immutable(e))
+ return(s7_wrong_type_arg_error(sc, "cutlet", 1, e, "a mutable let"));
+
for (syms = cdr(args); is_pair(syms); syms = cdr(syms))
{
s7_pointer sym, slot;
@@ -7049,6 +7134,8 @@ static s7_pointer sublet_1(s7_scheme *sc, s7_pointer e, s7_pointer bindings, s7_
sym = car(p);
if (!is_symbol(sym))
return(wrong_type_argument_with_type(sc, caller, position_of(x, bindings), p, a_symbol_string));
+ if (is_keyword(sym))
+ sym = keyword_symbol(sym);
val = cdr(p);
break;
@@ -7060,7 +7147,7 @@ static s7_pointer sublet_1(s7_scheme *sc, s7_pointer e, s7_pointer bindings, s7_
return(wrong_type_argument_with_type(sc, caller, position_of(x, bindings), p, a_symbol_string));
}
- if (is_immutable_symbol(sym))
+ if (is_constant_symbol(sc, sym))
return(wrong_type_argument_with_type(sc, caller, position_of(x, bindings), sym, a_non_constant_symbol_string));
if ((is_slot(global_slot(sym))) &&
(is_syntax(slot_value(global_slot(sym)))))
@@ -7069,11 +7156,11 @@ static s7_pointer sublet_1(s7_scheme *sc, s7_pointer e, s7_pointer bindings, s7_
/* here we know new_e is a let and is not rootlet */
make_slot_1(sc, new_e, sym, val);
if (sym == sc->let_ref_fallback_symbol)
- set_has_ref_fallback(new_e);
+ set_has_let_ref_fallback(new_e);
else
{
if (sym == sc->let_set_fallback_symbol)
- set_has_set_fallback(new_e);
+ set_has_let_set_fallback(new_e);
}
}
sc->temp3 = sc->nil;
@@ -7088,9 +7175,7 @@ s7_pointer s7_sublet(s7_scheme *sc, s7_pointer e, s7_pointer bindings)
static s7_pointer g_sublet(s7_scheme *sc, s7_pointer args)
{
- #define H_sublet "(sublet env ...) adds its \
-arguments (each an environment or a cons: symbol . value) to the environment env, and returns the \
-new environment."
+ #define H_sublet "(sublet env ...) adds its arguments (each a let or a cons: '(symbol . value)) to env, and returns the new environment."
#define Q_sublet Q_varlet
s7_pointer e;
@@ -7111,7 +7196,7 @@ new environment."
s7_pointer s7_inlet(s7_scheme *sc, s7_pointer args)
{
#define H_inlet "(inlet ...) adds its \
-arguments, each an environment, a cons: '(symbol . value), or a keyword/value pair, to a new environment, and returns the \
+arguments, each a let, a cons: '(symbol . value), or a keyword/value pair, to a new environment, and returns the \
new environment. (inlet :a 1 :b 2) or (inlet '(a . 1) '(b . 2))"
#define Q_inlet s7_make_circular_signature(sc, 1, 2, sc->is_let_symbol, sc->T)
@@ -7167,7 +7252,7 @@ static s7_pointer inlet_chooser(s7_scheme *sc, s7_pointer f, int32_t args, s7_po
return(f);
sym = cadar(p);
if ((!is_symbol(sym)) ||
- (is_immutable_symbol(sym)) ||
+ (is_possibly_constant(sym)) ||
(sym == sc->let_ref_fallback_symbol) ||
(sym == sc->let_set_fallback_symbol))
return(f);
@@ -7275,21 +7360,29 @@ static s7_pointer g_let_ref(s7_scheme *sc, s7_pointer args)
*/
env = car(args);
+ symbol = cadr(args);
+
if (!is_let(env))
return(wrong_type_argument_with_type(sc, sc->let_ref_symbol, 1, env, a_let_string));
- symbol = cadr(args);
- if (is_keyword(symbol))
- symbol = keyword_symbol(symbol);
-
if (!is_symbol(symbol))
{
- check_method(sc, env, sc->let_ref_symbol, args);
- if (has_ref_fallback(env))
+ if (has_let_ref_fallback(env))
check_method(sc, env, sc->let_ref_fallback_symbol, args);
return(wrong_type_argument_with_type(sc, sc->let_ref_symbol, 2, symbol, a_symbol_string));
}
+ if (has_methods(env))
+ check_method(sc, env, sc->let_ref_symbol, args);
+ /* a let-ref method is almost impossible to write without creating an infinite loop:
+ * any reference to the let will probably call let-ref somewhere, calling us again, and looping.
+ * This is not a problem in c-objects and funclets because c-object-ref and funclet-ref don't
+ * exist -- perhaps let-ref should not also.
+ */
+
+ if (is_keyword(symbol))
+ symbol = keyword_symbol(symbol);
+
if (env == sc->rootlet)
{
y = global_slot(symbol);
@@ -7306,30 +7399,24 @@ static s7_pointer g_let_ref(s7_scheme *sc, s7_pointer args)
if (slot_symbol(y) == symbol)
return(slot_value(y));
- /* now for a horrible kludge. If a let is a mock-hash-table (for example), implicit
- * indexing of the hash-table collides with the same thing for the let (field names
- * versus keys), and we can't just try again here because that makes it too easy to
- * get into infinite recursion. So, 'let-ref-fallback...
- */
-
if (has_methods(env))
{
- if (has_ref_fallback(env))
- apply_known_method(sc, env, sc->let_ref_fallback_symbol, args);
+ /* this is not a redundant check -- if has_methods, don't check global slot */
- /* why did this ignore a global value? Changed 24-May-16 to check rootlet if no methods --
- * apparently I was using #<undefined> here (pre-rootlet-check) to indicate that an
- * open let did not have a particular method (locally). This seems inconsistent now,
- * but it was far worse before. At least (let () ((curlet) 'pi)) is pi!
+ /* If a let is a mock-hash-table (for example), implicit
+ * indexing of the hash-table collides with the same thing for the let (field names
+ * versus keys), and we can't just try again here because that makes it too easy to
+ * get into infinite recursion. So, 'let-ref-fallback...
*/
+ if (has_let_ref_fallback(env))
+ apply_known_method(sc, env, sc->let_ref_fallback_symbol, set_plist_2(sc, env, symbol));
}
else
{
- y = global_slot(symbol);
+ y = global_slot(symbol); /* (let () ((curlet) 'pi)) */
if (is_slot(y))
return(slot_value(y));
}
-
return(sc->undefined);
}
@@ -7344,7 +7431,7 @@ static s7_pointer lint_let_ref_1(s7_scheme *sc, s7_pointer lt, s7_pointer sym)
if (has_methods(lt))
{
- if (has_ref_fallback(lt))
+ if (has_let_ref_fallback(lt))
apply_known_method(sc, lt, sc->let_ref_fallback_symbol, set_plist_2(sc, lt, sym));
}
else
@@ -7406,7 +7493,7 @@ static s7_pointer g_local_lint_let_ref(s7_scheme *sc, s7_pointer args)
static s7_pointer let_ref_chooser(s7_scheme *sc, s7_pointer f, int32_t args, s7_pointer expr, bool ops)
{
- if (!ops) return(f);
+ if ((!ops) || (!is_global(sc->let_ref_symbol))) return(f);
if ((is_h_safe_c_c(expr)) &&
((raw_opt1(expr) == lint_let_ref) || /* perhaps check is_safe_c_op(expr) then opt_cfunc(expr) rather than using raw_opt here and in the set case below */
(raw_opt1(expr) == local_lint_let_ref)))
@@ -7419,7 +7506,7 @@ static s7_pointer let_ref_chooser(s7_scheme *sc, s7_pointer f, int32_t args, s7_
arg2 = caddr(expr);
if ((car(arg1) == sc->cdr_symbol) &&
(is_symbol(cadr(arg2))) &&
- (!is_immutable_symbol(cadr(arg2))))
+ (!is_possibly_constant(cadr(arg2))))
{
set_optimize_op(expr, HOP_SAFE_C_C);
set_opt_sym2(cdr(expr), cadr(arg1));
@@ -7434,34 +7521,52 @@ static s7_pointer let_ref_chooser(s7_scheme *sc, s7_pointer f, int32_t args, s7_
/* -------------------------------- let-set! -------------------------------- */
-static s7_pointer call_accessor(s7_scheme *sc, s7_pointer slot, s7_pointer old_value)
+static s7_pointer call_setter(s7_scheme *sc, s7_pointer slot, s7_pointer old_value)
{
s7_pointer func, new_value;
/* new_value = sc->error_symbol; */
- func = slot_accessor(slot);
+ func = slot_setter(slot);
if (is_procedure_or_macro(func))
{
- if (is_c_function(func))
+ if (has_let_arg(func))
{
- set_car(sc->t2_1, slot_symbol(slot));
- set_car(sc->t2_2, old_value);
- new_value = c_function_call(func)(sc, sc->t2_1);
+ if (is_c_function(func))
+ {
+ set_car(sc->t3_1, slot_symbol(slot));
+ set_car(sc->t3_2, old_value);
+ set_car(sc->t3_3, sc->envir);
+ new_value = c_function_call(func)(sc, sc->t3_1);
+ }
+ else
+ {
+ bool old_off;
+ old_off = sc->gc_off;
+ sc->gc_off = true;
+ new_value = s7_apply_function(sc, func, list_3(sc, slot_symbol(slot), old_value, sc->envir));
+ sc->gc_off = old_off;
+ }
}
else
{
- bool old_off;
- old_off = sc->gc_off;
- sc->gc_off = true;
- new_value = s7_apply_function(sc, func, list_2(sc, slot_symbol(slot), old_value));
- sc->gc_off = old_off;
+ if (is_c_function(func))
+ {
+ set_car(sc->t2_1, slot_symbol(slot));
+ set_car(sc->t2_2, old_value);
+ new_value = c_function_call(func)(sc, sc->t2_1);
+ }
+ else
+ {
+ bool old_off;
+ old_off = sc->gc_off;
+ sc->gc_off = true;
+ new_value = s7_apply_function(sc, func, list_2(sc, slot_symbol(slot), old_value));
+ sc->gc_off = old_off;
+ }
}
}
else return(old_value);
-
- if (new_value == sc->error_symbol)
- return(s7_error(sc, sc->error_symbol, set_elist_3(sc, s7_make_string_wrapper(sc, "can't set! ~S to ~S"), slot_symbol(slot), old_value)));
return(new_value);
}
@@ -7475,35 +7580,34 @@ static s7_pointer let_set_1(s7_scheme *sc, s7_pointer env, s7_pointer symbol, s7
if (env == sc->rootlet)
{
- if (is_immutable_symbol(symbol)) /* (let-set! (rootlet) :rest #f) */
+ if (is_constant_symbol(sc, symbol)) /* (let-set! (rootlet) :rest #f) */
return(wrong_type_argument_with_type(sc, sc->let_set_symbol, 2, symbol, a_non_constant_symbol_string));
y = global_slot(symbol);
if (is_slot(y))
{
- if (slot_has_accessor(y))
- slot_set_value(y, call_accessor(sc, y, value));
+ if (slot_has_setter(y))
+ slot_set_value(y, call_setter(sc, y, value));
else slot_set_value(y, value);
return(slot_value(y));
}
if (!err) err = s7_make_permanent_string("let-set! ~A is not defined in ~A");
return(s7_error(sc, sc->wrong_type_arg_symbol, set_elist_3(sc, err, symbol, env)));
- /* return(sc->undefined); */
}
for (x = env; is_let(x); x = outlet(x))
for (y = let_slots(x); is_slot(y); y = next_slot(y))
if (slot_symbol(y) == symbol)
{
- if (slot_has_accessor(y))
- slot_set_value(y, call_accessor(sc, y, value));
+ if (slot_has_setter(y))
+ slot_set_value(y, call_setter(sc, y, value));
else slot_set_value(y, value);
return(slot_value(y));
}
if (has_methods(env))
{
- if (has_set_fallback(env))
+ if (has_let_set_fallback(env))
apply_known_method(sc, env, sc->let_set_fallback_symbol, sc->w = list_3(sc, env, symbol, value));
}
else
@@ -7511,8 +7615,8 @@ static s7_pointer let_set_1(s7_scheme *sc, s7_pointer env, s7_pointer symbol, s7
y = global_slot(symbol);
if (is_slot(y))
{
- if (slot_has_accessor(y))
- slot_set_value(y, call_accessor(sc, y, value));
+ if (slot_has_setter(y))
+ slot_set_value(y, call_setter(sc, y, value));
else slot_set_value(y, value);
return(slot_value(y));
}
@@ -7520,7 +7624,6 @@ static s7_pointer let_set_1(s7_scheme *sc, s7_pointer env, s7_pointer symbol, s7
if (!err) err = s7_make_permanent_string("let-set! ~A is not defined in ~A");
return(s7_error(sc, sc->wrong_type_arg_symbol, set_elist_3(sc, err, symbol, env)));
- /* return(sc->undefined); */
/* not sure about this -- what's the most useful choice? */
}
@@ -7529,14 +7632,19 @@ s7_pointer s7_let_set(s7_scheme *sc, s7_pointer env, s7_pointer symbol, s7_point
if (!is_let(env))
return(wrong_type_argument_with_type(sc, sc->let_set_symbol, 1, env, a_let_string));
+ if (is_immutable(env)) /* opt_p_ppp_fff can't check at opt time for immutable let, and it calls us */
+ return(immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->let_set_symbol, env)));
+
if (!is_symbol(symbol))
{
- check_method(sc, env, sc->let_set_symbol, sc->w = list_3(sc, env, symbol, value));
- if (has_set_fallback(env))
+ if (has_let_set_fallback(env))
apply_known_method(sc, env, sc->let_set_fallback_symbol, sc->w = list_3(sc, env, symbol, value));
return(wrong_type_argument_with_type(sc, sc->let_set_symbol, 2, symbol, a_symbol_string));
}
+ if (has_methods(env))
+ check_method(sc, env, sc->let_set_symbol, sc->w = list_3(sc, env, symbol, value));
+
return(let_set_1(sc, env, symbol, value));
}
@@ -7545,11 +7653,25 @@ static s7_pointer g_let_set(s7_scheme *sc, s7_pointer args)
/* (let ((a 1)) (set! ((curlet) 'a) 32) a) */
#define H_let_set "(let-set! env sym val) sets the symbol sym's value in the environment env to val"
#define Q_let_set s7_make_signature(sc, 4, sc->T, sc->is_let_symbol, sc->is_symbol_symbol, sc->T)
-
return(s7_let_set(sc, car(args), cadr(args), caddr(args)));
}
-static s7_pointer let_set_p_ppp(s7_pointer p1, s7_pointer p2, s7_pointer p3) {return(s7_let_set(cur_sc, p1, p2, p3));}
+static s7_pointer let_set_p_ppp(s7_pointer p1, s7_pointer p2, s7_pointer p3)
+{
+ return(s7_let_set(cur_sc, p1, p2, p3));
+}
+
+static s7_pointer let_set_p_ppp_1(s7_pointer p1, s7_pointer p2, s7_pointer p3)
+{
+ return(let_set_1(cur_sc, p1, p2, p3));
+}
+
+static s7_pointer let_set_p_ppp_2(s7_pointer p1, s7_pointer p2, s7_pointer p3)
+{
+ if (!is_symbol(p2))
+ return(wrong_type_argument_with_type(cur_sc, cur_sc->let_set_symbol, 2, p2, a_symbol_string));
+ return(let_set_1(cur_sc, p1, p2, p3));
+}
static s7_pointer lint_let_set, local_lint_let_set;
static s7_pointer g_lint_let_set_1(s7_scheme *sc, s7_pointer lt1, s7_pointer sym, s7_pointer val)
@@ -7560,14 +7682,20 @@ static s7_pointer g_lint_let_set_1(s7_scheme *sc, s7_pointer lt1, s7_pointer sym
lt = (is_pair(lt1)) ? cdr(lt1) : g_cdr(sc, set_plist_1(sc, lt1));
if (!is_let(lt))
return(wrong_type_argument_with_type(sc, sc->let_set_symbol, 1, lt, a_let_string));
+#if DEBUGGING
+ if (has_methods(lt))
+ fprintf(stderr, "has methods %s\n", __func__);
+#endif
+ if (is_immutable(lt))
+ return(immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->let_set_symbol, lt)));
if (lt == sc->rootlet)
{
y = global_slot(sym);
if (is_slot(y))
{
- if (slot_has_accessor(y))
- slot_set_value(y, call_accessor(sc, y, val));
+ if (slot_has_setter(y))
+ slot_set_value(y, call_setter(sc, y, val));
else slot_set_value(y, val);
return(slot_value(y));
}
@@ -7579,15 +7707,15 @@ static s7_pointer g_lint_let_set_1(s7_scheme *sc, s7_pointer lt1, s7_pointer sym
for (y = let_slots(x); is_slot(y); y = next_slot(y))
if (slot_symbol(y) == sym)
{
- if (slot_has_accessor(y))
- slot_set_value(y, call_accessor(sc, y, val));
+ if (slot_has_setter(y))
+ slot_set_value(y, call_setter(sc, y, val));
else slot_set_value(y, val);
return(slot_value(y));
}
if (has_methods(lt))
{
- if (has_set_fallback(lt))
+ if (has_let_set_fallback(lt))
apply_known_method(sc, lt, sc->let_set_fallback_symbol, sc->w = list_3(sc, lt, sym, val));
}
else
@@ -7595,8 +7723,8 @@ static s7_pointer g_lint_let_set_1(s7_scheme *sc, s7_pointer lt1, s7_pointer sym
y = global_slot(sym);
if (is_slot(y))
{
- if (slot_has_accessor(y))
- slot_set_value(y, call_accessor(sc, y, val));
+ if (slot_has_setter(y))
+ slot_set_value(y, call_setter(sc, y, val));
else slot_set_value(y, val);
return(slot_value(y));
}
@@ -7618,7 +7746,7 @@ static s7_pointer g_local_lint_let_set(s7_scheme *sc, s7_pointer args)
static s7_pointer let_set_chooser(s7_scheme *sc, s7_pointer f, int32_t args, s7_pointer expr, bool ops)
{
- if (!ops) return(f);
+ if ((!ops) || (!is_global(sc->let_set_symbol))) return(f);
if ((is_h_safe_c_c(expr)) &&
((raw_opt1(expr) == lint_let_set) ||
(raw_opt1(expr) == local_lint_let_set)))
@@ -7632,9 +7760,9 @@ static s7_pointer let_set_chooser(s7_scheme *sc, s7_pointer f, int32_t args, s7_
arg3 = cadddr(expr);
if ((car(arg1) == sc->cdr_symbol) &&
(is_symbol(cadr(arg2))) &&
- (!is_immutable_symbol(cadr(arg2))) &&
+ (!is_possibly_constant(cadr(arg2))) &&
(is_symbol(arg3)) &&
- (!is_immutable_symbol(arg3)))
+ (!is_possibly_constant(arg3)))
{
set_optimize_op(expr, HOP_SAFE_C_C);
set_opt_sym2(cdr(expr), cadr(arg1));
@@ -7813,6 +7941,8 @@ static s7_pointer g_set_outlet(s7_scheme *sc, s7_pointer args)
env = car(args);
if (!is_let(env))
return(s7_wrong_type_arg_error(sc, "set! outlet", 1, env, "a let"));
+ if (is_immutable(env))
+ return(s7_wrong_type_arg_error(sc, "set! outlet", 1, env, "a mutable let"));
new_outer = cadr(args);
if (!is_let(new_outer))
@@ -7943,6 +8073,7 @@ s7_pointer s7_symbol_value(s7_scheme *sc, s7_pointer sym)
s7_pointer s7_symbol_local_value(s7_scheme *sc, s7_pointer sym, s7_pointer local_env)
{
+ /* use find_local_symbol above to restrict the search to local_env */
if ((local_env == sc->rootlet) || (is_global(sym)))
{
if (is_slot(global_slot(sym)))
@@ -8110,8 +8241,12 @@ static bool do_symbol_is_safe(s7_scheme *sc, s7_pointer sym, s7_pointer e)
static bool let_symbol_is_safe(s7_scheme *sc, s7_pointer sym, s7_pointer e)
{
- return((is_slot(global_slot(sym))) ||
- ((!is_with_let_let(e)) && (is_slot(find_symbol(sc, sym)))));
+ if (is_slot(global_slot(sym)))
+ return(true);
+ if (is_null(e))
+ e = sc->rootlet;
+ return((!is_with_let_let(e)) &&
+ (is_slot(find_symbol(sc, sym))));
}
static bool let_star_symbol_is_safe(s7_scheme *sc, s7_pointer sym, s7_pointer e)
@@ -8498,6 +8633,9 @@ s7_pointer s7_define_constant(s7_scheme *sc, const char *name, s7_pointer value)
sym = make_symbol(sc, name);
s7_define(sc, sc->nil, sym, value);
set_immutable(sym);
+ set_possibly_constant(sym);
+ set_immutable(global_slot(sym));
+ set_immutable(local_slot(sym));
return(sym);
}
@@ -8677,22 +8815,16 @@ static s7_pointer g_c_pointer(s7_scheme *sc, s7_pointer args)
#define H_c_pointer "(c-pointer int type info) returns a c-pointer object. The type and info args are optional, defaulting to #f."
#define Q_c_pointer s7_make_signature(sc, 4, sc->is_c_pointer_symbol, sc->is_integer_symbol, sc->T, sc->T)
- s7_pointer arg, type, info;
+ s7_pointer arg;
intptr_t p;
arg = car(args);
if (!s7_is_integer(arg))
method_or_bust(sc, arg, sc->c_pointer_symbol, list_1(sc, arg), T_INTEGER, 1);
p = (intptr_t)s7_integer(arg); /* (c-pointer (bignum "1234")) */
- info = sc->F;
if (is_pair(cdr(args)))
- {
- type = cadr(args);
- if (is_pair(cddr(args)))
- info = caddr(args);
- }
- else type = sc->F;
- return(s7_make_c_pointer_with_type(sc, (void *)p, type, info));
+ return(s7_make_c_pointer_with_type(sc, (void *)p, cadr(args), (is_pair(cddr(args))) ? caddr(args) : sc->F));
+ return(s7_make_c_pointer_with_type(sc, (void *)p, sc->F, sc->F));
}
@@ -9221,7 +9353,7 @@ static s7_pointer g_call_cc(s7_scheme *sc, s7_pointer args)
s7_pointer p;
p = car(args); /* this is the procedure passed to call/cc */
- if (!is_procedure(p)) /* this includes continuations */
+ if (!is_t_procedure(p)) /* this includes continuations */
{
check_two_methods(sc, p, sc->call_cc_symbol, sc->call_with_current_continuation_symbol, args);
return(simple_wrong_type_argument_with_type(sc, sc->call_cc_symbol, p, a_procedure_string));
@@ -9251,7 +9383,7 @@ static s7_pointer g_call_with_exit(s7_scheme *sc, s7_pointer args)
/* (call-with-exit (lambda (return) ...)) */
p = car(args);
- if (!is_procedure(p)) /* this includes continuations */
+ if (!is_t_procedure(p)) /* this includes continuations */
method_or_bust_with_type_one_arg(sc, p, sc->call_with_exit_symbol, args, a_procedure_string);
x = make_goto(sc);
@@ -10931,12 +11063,12 @@ static s7_pointer g_sharp_readers_set(s7_scheme *sc, s7_pointer args)
if ((!is_pair(car(x))) ||
(!s7_is_character(caar(x))) ||
(!s7_is_procedure(cdar(x))))
- return(sc->error_symbol);
+ return(s7_error(sc, sc->error_symbol, set_elist_2(sc, s7_make_string_wrapper(sc, "can't set *#readers* to ~S"), cadr(args))));
}
if (is_null(x))
return(cadr(args));
}
- return(sc->error_symbol);
+ return(s7_error(sc, sc->error_symbol, set_elist_2(sc, s7_make_string_wrapper(sc, "can't set *#readers* to ~S"), cadr(args))));
}
@@ -13497,8 +13629,7 @@ static s7_pointer g_expt(s7_scheme *sc, s7_pointer args)
if (denominator(pw) == 3)
return(make_real(sc, cbrt(real_to_double(sc, n, "expt")))); /* (expt 27 1/3) should be 3, not 3.0... */
- /* but: (expt 512/729 1/3) -> 0.88888888888889
- */
+ /* but: (expt 512/729 1/3) -> 0.88888888888889 */
/* and 4 -> sqrt(sqrt...) etc? */
}
@@ -13511,8 +13642,7 @@ static s7_pointer g_expt(s7_scheme *sc, s7_pointer args)
if (x > 0.0)
return(make_real(sc, pow(x, y)));
- /* tricky cases abound here: (expt -1 1/9223372036854775807)
- */
+ /* tricky cases abound here: (expt -1 1/9223372036854775807) */
}
/* (expt 0+i 1e+16) = 0.98156860153485-0.19111012657867i ?
@@ -13525,6 +13655,7 @@ static s7_pointer g_expt(s7_scheme *sc, s7_pointer args)
/* -------------------------------- lcm -------------------------------- */
static s7_pointer g_lcm(s7_scheme *sc, s7_pointer args)
{
+ /* (/ (* m n) (gcd m n)), (lcm a b c) -> (lcm a (lcm b c)) */
#define H_lcm "(lcm ...) returns the least common multiple of its rational arguments"
#define Q_lcm pcl_f
@@ -20216,6 +20347,7 @@ static s7_pointer g_is_char_alphabetic(s7_scheme *sc, s7_pointer args)
}
static bool is_char_alphabetic_b(s7_pointer c) {return((s7_is_character(c)) && (is_char_alphabetic(c)));}
+static bool is_char_alphabetic_c(s7_pointer c) {return(is_char_alphabetic(c));}
static s7_pointer g_is_char_numeric(s7_scheme *sc, s7_pointer args)
@@ -20231,6 +20363,7 @@ static s7_pointer g_is_char_numeric(s7_scheme *sc, s7_pointer args)
}
static bool is_char_numeric_b(s7_pointer c) {return((s7_is_character(c)) && (is_char_numeric(c)));}
+static bool is_char_numeric_c(s7_pointer c) {return(is_char_numeric(c));}
static s7_pointer g_is_char_whitespace(s7_scheme *sc, s7_pointer args)
@@ -20246,6 +20379,7 @@ static s7_pointer g_is_char_whitespace(s7_scheme *sc, s7_pointer args)
}
static bool is_char_whitespace_b(s7_pointer c) {return((s7_is_character(c)) && (is_char_whitespace(c)));}
+static bool is_char_whitespace_c(s7_pointer c) {return(is_char_whitespace(c));}
static s7_pointer g_is_char_upper_case(s7_scheme *sc, s7_pointer args)
@@ -20267,6 +20401,7 @@ static bool is_char_upper_case_b(s7_pointer c)
return(is_char_uppercase(c));
}
+static bool is_char_upper_case_c(s7_pointer c) {return(is_char_uppercase(c));}
static s7_pointer g_is_char_lower_case(s7_scheme *sc, s7_pointer args)
{
@@ -20287,6 +20422,7 @@ static bool is_char_lower_case_b(s7_pointer c)
return(is_char_lowercase(c));
}
+static bool is_char_lower_case_c(s7_pointer c) {return(is_char_lowercase(c));}
static s7_pointer g_is_char(s7_scheme *sc, s7_pointer args)
{
@@ -21169,7 +21305,7 @@ static s7_pointer g_string_ref_2(s7_scheme *sc, s7_pointer strng, s7_pointer arg
return(out_of_range(sc, caller, small_int(2), index, its_too_large_string));
str = string_value(strng);
- if (is_byte_vector(strng))
+ if (is_byte_vector_not_string(strng))
return(small_int((unsigned char)(str[ind])));
return(s7_make_character(sc, ((unsigned char *)str)[ind]));
}
@@ -21186,22 +21322,9 @@ static s7_pointer g_string_ref(s7_scheme *sc, s7_pointer args)
return(g_string_ref_2(sc, strng, args, sc->string_ref_symbol));
}
-static s7_pointer g_byte_vector_ref(s7_scheme *sc, s7_pointer args)
-{
- #define H_byte_vector_ref "(byte-vector-ref vect index) returns the byte at the index-th element of the byte-vector vect"
- #define Q_byte_vector_ref s7_make_signature(sc, 3, sc->is_integer_symbol, sc->is_byte_vector_symbol, sc->is_integer_symbol)
-
- s7_pointer v;
- v = car(args);
- if (!is_byte_vector(v))
- method_or_bust(sc, v, sc->byte_vector_ref_symbol, args, T_STRING, 1);
- return(g_string_ref_2(sc, v, args, sc->byte_vector_ref_symbol));
-}
-
-
/* -------------------------------- string-set! -------------------------------- */
-static s7_pointer g_string_set_2(s7_scheme *sc, s7_pointer x, s7_pointer args, s7_pointer caller)
+static s7_pointer g_string_set_2(s7_scheme *sc, s7_pointer x, s7_pointer args, s7_pointer caller)
{
s7_pointer c, index;
char *str;
@@ -21249,23 +21372,11 @@ static s7_pointer g_string_set(s7_scheme *sc, s7_pointer args)
s7_pointer strng;
strng = car(args);
- if (!is_string(strng))
- method_or_bust(sc, strng, sc->string_set_symbol, args, T_STRING, 1);
+ if (!is_mutable_string(strng))
+ mutable_method_or_bust(sc, strng, sc->string_set_symbol, args, T_STRING, 1);
return(g_string_set_2(sc, strng, args, sc->string_set_symbol));
}
-static s7_pointer g_byte_vector_set(s7_scheme *sc, s7_pointer args)
-{
- #define H_byte_vector_set "(byte-vector-set! vect index byte) sets the index-th element of the byte-vector vect to the integer byte"
- #define Q_byte_vector_set s7_make_signature(sc, 4, sc->is_integer_symbol, sc->is_byte_vector_symbol, sc->is_integer_symbol, sc->is_integer_symbol)
-
- s7_pointer v;
- v = car(args);
- if (!is_byte_vector(v))
- method_or_bust(sc, v, sc->byte_vector_set_symbol, args, T_STRING, 1);
- return(g_string_set_2(sc, v, args, sc->byte_vector_set_symbol));
-}
-
static s7_pointer string_ref_p_pi(s7_pointer p1, s7_int i1)
{
if (!is_string(p1))
@@ -21296,7 +21407,7 @@ static s7_pointer string_set_p_pip(s7_pointer p1, s7_int i1, s7_pointer p2)
return(p2);
}
-static s7_pointer string_set_p_pip_direct(s7_pointer p1, s7_int i1, s7_pointer p2)
+static s7_pointer string_set_p_pip_direct(s7_pointer p1, s7_int i1, s7_pointer p2)
{
if ((i1 < 0) || (i1 >= string_length(p1)))
out_of_range(cur_sc, cur_sc->string_set_symbol, small_int(2),make_integer(cur_sc, i1), (i1 < 0) ? its_negative_string : its_too_large_string);
@@ -21306,13 +21417,60 @@ static s7_pointer string_set_p_pip_direct(s7_pointer p1, s7_int i1, s7_pointer p
static s7_pointer string_set_unchecked(s7_pointer p1, s7_int i1, s7_pointer p2) {string_value(p1)[i1] = s7_character(p2); return(p2);}
+
+
+/* ---------------- byte-vectors ---------------- */
+
+static s7_pointer g_byte_vector_ref(s7_scheme *sc, s7_pointer args)
+{
+ #define H_byte_vector_ref "(byte-vector-ref vect index) returns the byte at the index-th element of the byte-vector vect"
+ #define Q_byte_vector_ref s7_make_signature(sc, 3, sc->is_integer_symbol, sc->is_byte_vector_symbol, sc->is_integer_symbol)
+
+ s7_pointer v;
+ v = car(args);
+ if (!is_byte_vector(v))
+ method_or_bust(sc, v, sc->byte_vector_ref_symbol, args, T_STRING, 1);
+ return(g_string_ref_2(sc, v, args, sc->byte_vector_ref_symbol));
+}
+
static s7_int byte_vector_ref_i(s7_pointer p1, s7_int i1)
{
if (!is_byte_vector(p1))
simple_wrong_type_argument_with_type(cur_sc, cur_sc->byte_vector_ref_symbol, p1, s7_make_string(cur_sc, "a byte-vector"));
- if ((i1 < 0) || (i1 >= string_length(p1)))
+ if ((i1 < 0) || (i1 >= byte_vector_length(p1)))
+ out_of_range(cur_sc, cur_sc->byte_vector_ref_symbol, small_int(2), make_integer(cur_sc, i1), (i1 < 0) ? its_negative_string : its_too_large_string);
+ return((s7_int)((unsigned int)(string_value(p1)[i1])));
+}
+
+static s7_pointer byte_vector_ref_unchecked(s7_pointer p1, s7_int i1) {return(small_int(((unsigned char *)string_value(p1))[i1]));}
+
+static s7_pointer byte_vector_ref_p_pi(s7_pointer p1, s7_int i1)
+{
+ if (!is_byte_vector(p1))
+ simple_wrong_type_argument(cur_sc, cur_sc->byte_vector_ref_symbol, p1, T_STRING);
+ if ((i1 < 0) || (i1 >= byte_vector_length(p1)))
out_of_range(cur_sc, cur_sc->byte_vector_ref_symbol, small_int(2), make_integer(cur_sc, i1), (i1 < 0) ? its_negative_string : its_too_large_string);
- return((s7_int)((unsigned char)(string_value(p1)[i1])));
+ return(small_int(((unsigned int)(string_value(p1))[i1])));
+}
+
+static s7_pointer byte_vector_ref_p_pi_direct(s7_pointer p1, s7_int i1)
+{
+ if ((i1 < 0) || (i1 >= byte_vector_length(p1)))
+ out_of_range(cur_sc, cur_sc->byte_vector_ref_symbol, small_int(2), make_integer(cur_sc, i1), (i1 < 0) ? its_negative_string : its_too_large_string);
+ return(small_int((unsigned int)(string_value(p1)[i1])));
+}
+
+
+static s7_pointer g_byte_vector_set(s7_scheme *sc, s7_pointer args)
+{
+ #define H_byte_vector_set "(byte-vector-set! vect index byte) sets the index-th element of the byte-vector vect to the integer byte"
+ #define Q_byte_vector_set s7_make_signature(sc, 4, sc->is_integer_symbol, sc->is_byte_vector_symbol, sc->is_integer_symbol, sc->is_integer_symbol)
+
+ s7_pointer v;
+ v = car(args);
+ if (!is_mutable_byte_vector(v))
+ mutable_method_or_bust(sc, v, sc->byte_vector_set_symbol, args, T_STRING, 1);
+ return(g_string_set_2(sc, v, args, sc->byte_vector_set_symbol));
}
static s7_int byte_vector_set_i(s7_pointer p1, s7_int i1, s7_int i2)
@@ -21321,12 +21479,42 @@ static s7_int byte_vector_set_i(s7_pointer p1, s7_int i1, s7_int i2)
simple_wrong_type_argument_with_type(cur_sc, cur_sc->byte_vector_set_symbol, p1, s7_make_string(cur_sc, "a byte-vector"));
if ((i2 < 0) || (i2 > 255))
simple_wrong_type_argument_with_type(cur_sc, cur_sc->byte_vector_set_symbol, make_integer(cur_sc, i2), an_unsigned_byte_string);
- if ((i1 < 0) || (i1 >= string_length(p1)))
+ if ((i1 < 0) || (i1 >= byte_vector_length(p1)))
simple_out_of_range(cur_sc, cur_sc->byte_vector_set_symbol, make_integer(cur_sc, i1), (i1 < 0) ? its_negative_string : its_too_large_string);
string_value(p1)[i1] = (char)i2;
return(i2);
}
+static s7_pointer byte_vector_set_unchecked(s7_pointer p1, s7_int i1, s7_pointer p2) {string_value(p1)[i1] = (char)s7_integer(p2); return(p2);}
+
+static s7_pointer byte_vector_set_p_pip(s7_pointer p1, s7_int i1, s7_pointer p2)
+{
+ s7_int ic; /* not int32_t here! */
+ if (!is_byte_vector(p1))
+ simple_wrong_type_argument(cur_sc, cur_sc->byte_vector_set_symbol, p1, T_STRING);
+ if (!s7_is_integer(p2))
+ simple_wrong_type_argument(cur_sc, cur_sc->byte_vector_set_symbol, p2, T_INTEGER);
+ if ((i1 < 0) || (i1 >= byte_vector_length(p1)))
+ out_of_range(cur_sc, cur_sc->byte_vector_set_symbol, small_int(2), make_integer(cur_sc, i1), (i1 < 0) ? its_negative_string : its_too_large_string);
+ ic = s7_integer(p2);
+ if ((ic < 0) || (ic > 255))
+ return(wrong_type_argument_with_type(cur_sc, cur_sc->byte_vector_set_symbol, 3, p2, an_unsigned_byte_string));
+ string_value(p1)[i1] = (char)ic;
+ return(p2);
+}
+
+static s7_pointer byte_vector_set_p_pip_direct(s7_pointer p1, s7_int i1, s7_pointer p2)
+{
+ s7_int ic; /* not int32_t here! */
+ if ((i1 < 0) || (i1 >= byte_vector_length(p1)))
+ out_of_range(cur_sc, cur_sc->byte_vector_set_symbol, small_int(2),make_integer(cur_sc, i1), (i1 < 0) ? its_negative_string : its_too_large_string);
+ ic = s7_integer(p2);
+ if ((ic < 0) || (ic > 255))
+ return(wrong_type_argument_with_type(cur_sc, cur_sc->byte_vector_set_symbol, 3, p2, an_unsigned_byte_string));
+ string_value(p1)[i1] = (char)ic;
+ return(p2);
+}
+
/* -------------------------------- string-append -------------------------------- */
@@ -21387,7 +21575,7 @@ static s7_pointer g_string_append_1(s7_scheme *sc, s7_pointer args, bool use_tem
for (pos = string_value(newstr), x = args; is_not_null(x); pos += string_length(car(x)), x = cdr(x))
memcpy(pos, string_value(car(x)), string_length(car(x)));
- if (is_byte_vector(car(args)))
+ if (is_byte_vector_not_string(car(args)))
set_byte_vector(newstr);
return(newstr);
@@ -22039,13 +22227,11 @@ static s7_pointer g_string_fill(s7_scheme *sc, s7_pointer args)
if (!is_string(x))
method_or_bust(sc, x, sc->string_fill_symbol, args, T_STRING, 1); /* not two methods here */
-
- if ((sc->safety > NO_SAFETY) &&
- (is_immutable_string(x)))
- return(s7_error(sc, sc->error_symbol, set_elist_2(sc, s7_make_string_wrapper(sc, "can't fill! ~S (it is immutable)"), x)));
+ if (is_immutable_string(x))
+ return(immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->fill_symbol, x)));
chr = cadr(args);
- if (!is_byte_vector(x))
+ if (!is_byte_vector_not_string(x))
{
if (!s7_is_character(chr))
{
@@ -22075,7 +22261,7 @@ static s7_pointer g_string_fill(s7_scheme *sc, s7_pointer args)
}
if (end == 0) return(chr);
- if (!is_byte_vector(x))
+ if (!is_byte_vector_not_string(x))
memset((void *)(string_value(x) + start), (int)character(chr), end - start);
else memset((void *)(string_value(x) + start), (int)byte, end - start);
@@ -24491,7 +24677,6 @@ static void leave_lock_scope(lock_scope_t *st)
#define TRACK(Sc)
#endif
-
static FILE *search_load_path(s7_scheme *sc, const char *name)
{
int32_t i, len;
@@ -24514,7 +24699,6 @@ static FILE *search_load_path(s7_scheme *sc, const char *name)
return(NULL);
}
-
s7_pointer s7_load_with_environment(s7_scheme *sc, const char *filename, s7_pointer e)
{
s7_pointer port;
@@ -24569,7 +24753,6 @@ s7_pointer s7_load_with_environment(s7_scheme *sc, const char *filename, s7_poin
return(sc->value);
}
-
s7_pointer s7_load(s7_scheme *sc, const char *filename)
{
return(s7_load_with_environment(sc, filename, sc->nil));
@@ -24761,11 +24944,11 @@ static s7_pointer g_load_path_set(s7_scheme *sc, s7_pointer args)
s7_pointer x;
for (x = cadr(args); is_pair(x); x = cdr(x))
if (!is_string(car(x)))
- return(sc->error_symbol);
+ return(s7_error(sc, sc->error_symbol, set_elist_2(sc, s7_make_string_wrapper(sc, "can't set *load-path* to ~S"), cadr(args))));
if (is_null(x))
return(cadr(args));
}
- return(sc->error_symbol);
+ return(s7_error(sc, sc->error_symbol, set_elist_2(sc, s7_make_string_wrapper(sc, "can't set *load-path* to ~S"), cadr(args))));
}
static s7_pointer g_cload_directory_set(s7_scheme *sc, s7_pointer args)
@@ -24773,7 +24956,7 @@ static s7_pointer g_cload_directory_set(s7_scheme *sc, s7_pointer args)
s7_pointer cl_dir;
cl_dir = cadr(args);
if (!is_string(cl_dir))
- return(sc->error_symbol);
+ return(s7_error(sc, sc->error_symbol, set_elist_2(sc, s7_make_string_wrapper(sc, "can't set *cload-directory* to ~S"), cadr(args))));
s7_symbol_set_value(sc, sc->cload_directory_symbol, cl_dir);
if (safe_strlen(string_value(cl_dir)) > 0)
s7_add_to_load_path(sc, (const char *)(string_value(cl_dir)));
@@ -24782,7 +24965,6 @@ static s7_pointer g_cload_directory_set(s7_scheme *sc, s7_pointer args)
/* ---------------- autoload ---------------- */
-
void s7_autoload_set_names(s7_scheme *sc, const char **names, int32_t size)
{
/* the idea here is that by sticking to string constants we can handle 90% of the work at compile-time,
@@ -24847,7 +25029,6 @@ void s7_autoload_set_names(s7_scheme *sc, const char **names, int32_t size)
sc->autoload_names_loc++;
}
-
static const char *find_autoload_name(s7_scheme *sc, s7_pointer symbol, bool *already_loaded, bool loading)
{
int32_t l = 0, pos = -1, lib, libs;
@@ -24884,7 +25065,6 @@ static const char *find_autoload_name(s7_scheme *sc, s7_pointer symbol, bool *al
return(NULL);
}
-
s7_pointer s7_autoload(s7_scheme *sc, s7_pointer symbol, s7_pointer file_or_function)
{
/* add '(symbol . file) to s7's autoload table */
@@ -24894,7 +25074,6 @@ s7_pointer s7_autoload(s7_scheme *sc, s7_pointer symbol, s7_pointer file_or_func
return(file_or_function);
}
-
static s7_pointer g_autoload(s7_scheme *sc, s7_pointer args)
{
#define H_autoload "(autoload symbol file-or-function) adds the symbol to its table of autoloadable symbols. \
@@ -24958,6 +25137,7 @@ static s7_pointer g_autoloader(s7_scheme *sc, s7_pointer args)
}
+/* ---------------- require ---------------- */
static s7_pointer g_require(s7_scheme *sc, s7_pointer args)
{
#define H_require "(require . symbols) loads each file associated with each symbol if it has not been loaded already.\
@@ -24986,12 +25166,8 @@ The symbols refer to the argument to \"provide\". (require lint.scm)"
f = g_autoloader(sc, list_1(sc, sym));
if (is_string(f))
s7_load_with_environment(sc, string_value(f), sc->envir);
- else
- {
- sc->temp5 = sc->nil;
- return(s7_error(sc, make_symbol(sc, "autoload-error"),
- set_elist_2(sc, s7_make_string_wrapper(sc, "require: no autoload info for ~S"), sym)));
- }
+ else return(s7_error(sc, make_symbol(sc, "autoload-error"),
+ set_elist_2(sc, s7_make_string_wrapper(sc, "require: no autoload info for ~S"), sym)));
}
}
sc->stack_end -= 4;
@@ -24999,6 +25175,131 @@ The symbols refer to the argument to \"provide\". (require lint.scm)"
}
+static bool is_memq(s7_pointer sym, s7_pointer lst)
+{
+ s7_pointer x;
+ for (x = lst; is_pair(x); x = cdr(x))
+ if (sym == car(x))
+ return(true);
+ return(false);
+}
+
+/* ---------------- provided? ---------------- */
+static s7_pointer g_is_provided(s7_scheme *sc, s7_pointer args)
+{
+ #define H_is_provided "(provided? symbol) returns #t if symbol is a member of the *features* list"
+ #define Q_is_provided s7_make_signature(sc, 2, sc->is_boolean_symbol, sc->is_symbol_symbol)
+ s7_pointer sym, topf, x;
+
+ sym = car(args);
+ if (!is_symbol(sym))
+ method_or_bust_one_arg(sc, sym, sc->is_provided_symbol, list_1(sc, sym), T_SYMBOL);
+
+ /* here the *features* list is spread out (or can be anyway) along the curlet chain,
+ * so we need to travel back all the way to the top level checking each *features* list in turn.
+ * Since *features* grows via cons (newest first), we can stop the scan if we hit the shared
+ * top-level at least.
+ */
+ topf = slot_value(global_slot(sc->features_symbol));
+ if (is_memq(sym, topf))
+ return(sc->T);
+
+ if (is_global(sc->features_symbol))
+ return(sc->F);
+ for (x = sc->envir; symbol_id(sc->features_symbol) < let_id(x); x = outlet(x));
+ for (; is_let(x); x = outlet(x))
+ {
+ s7_pointer y;
+ for (y = let_slots(x); is_slot(y); y = next_slot(y))
+ if (slot_symbol(y) == sc->features_symbol)
+ {
+ if ((slot_value(y) != topf) &&
+ (is_memq(sym, slot_value(y))))
+ return(sc->T);
+ }
+ }
+ return(sc->F);
+}
+
+bool s7_is_provided(s7_scheme *sc, const char *feature)
+{
+ return(is_memq(s7_make_symbol(sc, feature), s7_symbol_value(sc, sc->features_symbol))); /* this goes from local outward */
+}
+
+bool is_provided_b(s7_pointer sym)
+{
+ if (!is_symbol(sym))
+ simple_wrong_type_argument(cur_sc, cur_sc->is_provided_symbol, sym, T_SYMBOL);
+ return(is_memq(sym, s7_symbol_value(cur_sc, cur_sc->features_symbol)));
+}
+
+
+/* ---------------- provide ---------------- */
+static s7_pointer c_provide(s7_scheme *sc, s7_pointer sym)
+{
+ /* this has to be relative to the curlet: (load file env)
+ * the things loaded are only present in env, and go away with it, so should not be in the global *features* list
+ */
+ s7_pointer p, lst;
+ if (!is_symbol(sym))
+ method_or_bust_one_arg(sc, sym, sc->provide_symbol, list_1(sc, sym), T_SYMBOL);
+
+ p = find_local_symbol(sc, sc->features_symbol, sc->envir); /* if sc->envir is nil, this returns the global slot, else local slot */
+ lst = slot_value(find_symbol(sc, sc->features_symbol)); /* in either case, we want the current *features* list */
+
+ if (p == sc->undefined)
+ make_slot_1(sc, sc->envir, sc->features_symbol, cons(sc, sym, lst));
+ else
+ {
+ if (!is_memq(sym, lst))
+ slot_set_value(p, cons(sc, sym, lst));
+ else
+ {
+ /* if two different provide statements provide the same symbol, is that an error?
+ * Should we warn about it if safety>0?
+ */
+#if 0
+ fprintf(stderr, "%s provided twice?\n", symbol_name(sym));
+ /* TODO: this should tell where the provides are! could the symbol's value be the file-name/line-number? looks like autoloader is using sym? */
+#endif
+ /* similarly should autoload warn about an overwrite? */
+ }
+ }
+
+ /* require looks up its symbol argument to see if the associated code (dsp.scm etc) has been autoloaded,
+ * so here we're defining the provided symbol for that possibility. Perhaps better would be to forgo
+ * the definition here, and in require check *features* -- it is local to the current env.
+ */
+ if (!is_slot(find_symbol(sc, sym))) /* *features* name might be the same as an existing function */
+ s7_define(sc, sc->envir, sym, sym);
+
+ return(sym);
+}
+
+static s7_pointer g_provide(s7_scheme *sc, s7_pointer args)
+{
+ #define H_provide "(provide symbol) adds symbol to the *features* list"
+ #define Q_provide s7_make_signature(sc, 2, sc->is_symbol_symbol, sc->is_symbol_symbol)
+
+ if ((is_immutable(sc->envir)) &&
+ (sc->envir != sc->nil))
+ s7_error(sc, sc->error_symbol,
+ set_elist_2(sc, make_string_wrapper_with_length(sc, "can't provide '~S (current environment is immutable)", 51), car(args)));
+
+ return(c_provide(sc, car(args)));
+}
+
+void s7_provide(s7_scheme *sc, const char *feature) {c_provide(sc, s7_make_symbol(sc, feature));}
+
+static s7_pointer g_features_set(s7_scheme *sc, s7_pointer args)
+{
+ /* symbol_setter for set/let of *features* which can only be changed via provide */
+ if (s7_is_list(sc, cadr(args)))
+ return(cadr(args));
+ return(s7_error(sc, sc->error_symbol, set_elist_2(sc, s7_make_string_wrapper(sc, "can't set *features* to ~S"), cadr(args))));
+}
+
+
/* -------------------------------- eval-string -------------------------------- */
s7_pointer s7_eval_c_string_with_environment(s7_scheme *sc, const char *str, s7_pointer e)
@@ -25148,14 +25449,14 @@ static s7_pointer g_with_input_from_string(s7_scheme *sc, s7_pointer args)
/* since the arguments are evaluated before we get here, we can get some confusing situations:
* (with-input-from-string "#x2.1" (read))
- * (read) -> whatever it can get from the current input port!
- * ";with-input-from-string argument 2, #<eof>, is untyped but should be a thunk"
+ * (read) -> whatever it can get from the current input port!
+ * ";with-input-from-string argument 2, #<eof>, is untyped but should be a thunk"
+ * (with-input-from-string "" (read-line)) -> hangs awaiting stdin input
*/
return(with_input(sc, open_and_protect_input_string(sc, str), args));
}
-
/* -------------------------------- with-input-from-file -------------------------------- */
static s7_pointer g_with_input_from_file(s7_scheme *sc, s7_pointer args)
@@ -25501,7 +25802,7 @@ s7_pointer s7_make_iterator(s7_scheme *sc, s7_pointer e)
case T_STRING:
iterator_length(iter) = string_length(e);
- if (is_byte_vector(e))
+ if (is_byte_vector_not_string(e))
iterator_next(iter) = byte_vector_iterate;
else iterator_next(iter) = string_iterate;
break;
@@ -26432,6 +26733,10 @@ static void symbol_to_port(s7_scheme *sc, s7_pointer obj, s7_pointer port, use_w
static void string_to_port(s7_scheme *sc, s7_pointer obj, s7_pointer port, use_write_t use_write)
{
+ if ((use_write == USE_READABLE_WRITE) &&
+ (is_immutable(obj)))
+ port_write_string(port)(sc, "(immutable! ", 12, port);
+
if (string_length(obj) > 0)
{
/* since string_length is a scheme length, not C, this write can embed nulls from C's point of view */
@@ -26478,6 +26783,10 @@ static void string_to_port(s7_scheme *sc, s7_pointer obj, s7_pointer port, use_w
if (use_write != USE_DISPLAY)
port_write_string(port)(sc, "\"\"", 2, port);
}
+
+ if ((use_write == USE_READABLE_WRITE) &&
+ (is_immutable(obj)))
+ port_write_character(port)(sc, ')', port);
}
@@ -26663,6 +26972,9 @@ static void vector_to_port(s7_scheme *sc, s7_pointer vect, s7_pointer port, use_
if (use_write == USE_READABLE_WRITE)
{
+ if (is_immutable(vect))
+ port_write_string(port)(sc, "(immutable! ", 12, port);
+
if ((ci) &&
(is_collected(vect)) &&
(peek_shared_ref(ci, vect) != 0))
@@ -26735,6 +27047,9 @@ static void vector_to_port(s7_scheme *sc, s7_pointer vect, s7_pointer port, use_
port_write_string(port)(sc, "))", 2, port);
}
}
+
+ if (is_immutable(vect))
+ port_write_character(port)(sc, ')', port);
}
else
{
@@ -26812,6 +27127,10 @@ static void int_or_float_vector_to_port(s7_scheme *sc, s7_pointer vect, s7_point
len = plen;
}
+ if ((use_write == USE_READABLE_WRITE) &&
+ (is_immutable(vect)))
+ port_write_string(port)(sc, "(immutable! ", 12, port);
+
if (len > 1000)
{
s7_int vlen;
@@ -26922,6 +27241,10 @@ static void int_or_float_vector_to_port(s7_scheme *sc, s7_pointer vect, s7_point
port_write_string(port)(sc, buf, plen, port);
multivector_to_port(sc, vect, port, len, 0, 0, vector_ndims(vect), &last, USE_DISPLAY, NULL);
}
+
+ if ((use_write == USE_READABLE_WRITE) &&
+ (is_immutable(vect)))
+ port_write_character(port)(sc, ')', port);
}
@@ -26933,7 +27256,11 @@ static void byte_vector_to_port(s7_scheme *sc, s7_pointer vect, s7_pointer port,
len = string_length(vect);
if (use_write == USE_READABLE_WRITE)
- plen = len;
+ {
+ plen = len;
+ if (is_immutable(vect))
+ port_write_string(port)(sc, "(immutable! ", 12, port);
+ }
else plen = sc->print_length;
if (len == 0)
@@ -26987,6 +27314,9 @@ static void byte_vector_to_port(s7_scheme *sc, s7_pointer vect, s7_pointer port,
port_write_string(port)(sc, " ...)", 5, port);
}
}
+ if ((use_write == USE_READABLE_WRITE) &&
+ (is_immutable(vect)))
+ port_write_character(port)(sc, ')', port);
}
@@ -27014,6 +27344,10 @@ static void pair_to_port(s7_scheme *sc, s7_pointer lst, s7_pointer port, use_wri
else len = true_len;
}
+ if ((use_write == USE_READABLE_WRITE) &&
+ (is_immutable(lst)))
+ port_write_string(port)(sc, "(immutable! ", 12, port);
+
if (((car(lst) == sc->quote_symbol) ||
(car(lst) == sc->quote_unchecked_symbol)) && /* this can happen (see lint.scm) */
(true_len == 2))
@@ -27024,6 +27358,9 @@ static void pair_to_port(s7_scheme *sc, s7_pointer lst, s7_pointer port, use_wri
*/
port_write_character(port)(sc, '\'', port);
object_to_port_with_circle_check(sc, cadr(lst), port, USE_WRITE, ci);
+ if ((use_write == USE_READABLE_WRITE) &&
+ (is_immutable(lst)))
+ port_write_character(port)(sc, ')', port);
return;
}
else port_write_character(port)(sc, '(', port);
@@ -27094,6 +27431,8 @@ static void pair_to_port(s7_scheme *sc, s7_pointer lst, s7_pointer port, use_wri
port_write_character(port)(sc, ')', port);
}
}
+ if (is_immutable(lst))
+ port_write_character(port)(sc, ')', port);
}
else
{
@@ -27195,6 +27534,10 @@ static void hash_table_to_port(s7_scheme *sc, s7_pointer hash, s7_pointer port,
p = cons(sc, sc->F, sc->F);
iterator_current(iterator) = p;
set_mark_seq(iterator);
+
+ if ((use_write == USE_READABLE_WRITE) &&
+ (is_immutable(hash)))
+ port_write_string(port)(sc, "(immutable! ", 12, port);
if ((use_write == USE_READABLE_WRITE) &&
(ci) &&
@@ -27247,6 +27590,10 @@ static void hash_table_to_port(s7_scheme *sc, s7_pointer hash, s7_pointer port,
else port_write_character(port)(sc, ')', port);
}
+ if ((use_write == USE_READABLE_WRITE) &&
+ (is_immutable(hash)))
+ port_write_character(port)(sc, ')', port);
+
s7_gc_unprotect_at(sc, gc_iter);
iterator_current(iterator) = sc->nil;
free_cell(sc, p);
@@ -27309,6 +27656,10 @@ static void let_to_port(s7_scheme *sc, s7_pointer obj, s7_pointer port, use_writ
* #1=#<let 'b #1#>
*/
if ((use_write == USE_READABLE_WRITE) &&
+ (is_immutable(obj)))
+ port_write_string(port)(sc, "(immutable! ", 12, port);
+
+ if ((use_write == USE_READABLE_WRITE) &&
(ci) &&
(is_collected(obj)) &&
(peek_shared_ref(ci, obj) != 0))
@@ -27341,6 +27692,10 @@ static void let_to_port(s7_scheme *sc, s7_pointer obj, s7_pointer port, use_writ
slot_to_port_1(sc, let_slots(obj), port, use_write, ci, 0);
port_write_character(port)(sc, ')', port);
}
+
+ if ((use_write == USE_READABLE_WRITE) &&
+ (is_immutable(obj)))
+ port_write_character(port)(sc, ')', port);
}
}
}
@@ -27708,7 +28063,7 @@ static char *describe_type_bits(s7_scheme *sc, s7_pointer obj)
full_typ = typeflag(obj);
/* if debugging all of these bits are being watched, so we need to access them directly */
- snprintf(buf, 512, "type: %d (%s), flags: #x%" PRIx64 "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
+ snprintf(buf, 512, "type: %d (%s), flags: #x%" PRIx64 "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
typ,
type_name(sc, obj, NO_ARTICLE),
full_typ,
@@ -27745,7 +28100,7 @@ static char *describe_type_bits(s7_scheme *sc, s7_pointer obj)
((is_input_port(obj)) ? " loader-port" :
((is_let(obj)) ? " with-let" :
((is_c_function(obj)) ? " simple-defaults" :
- (((is_symbol(obj)) || (is_slot(obj))) ? " has-accessor" :
+ (((is_symbol(obj)) || (is_slot(obj))) ? " has-setter" :
" ?10?"))))) : "",
/* bit 11 */
((full_typ & T_SHARED) != 0) ? " shared" : "",
@@ -27801,6 +28156,10 @@ static char *describe_type_bits(s7_scheme *sc, s7_pointer obj)
((full_typ & T_HAS_METHODS) != 0) ? " has-methods" : "",
/* bit 23 */
((full_typ & T_ITER_OK) != 0) ? " iter-ok" : "",
+ /* bit 24 */
+ ((full_typ & T_SYMCONS) != 0) ? ((is_symbol(obj)) ? " possibly-constant" :
+ ((is_procedure(obj)) ? " has-let-arg" :
+ " ?24?")) : "",
/* bit 55 */
(((full_typ & T_GC_MARK) != 0) && (in_heap(obj))) ? " gc-marked" : "");
return(buf);
@@ -27849,7 +28208,7 @@ static const char *check_name(int32_t typ)
static s7_pointer check_seti(s7_scheme *sc, s7_pointer x, const char *func, int32_t line)
{
- if (is_immutable(x)) /* can be vector|pair|string -- incomplete constant arg check I think, TODO: handle immutable vectors */
+ if (is_immutable(x))
{
fprintf(stderr, "%s%s[%d]: set! immutable %s: %s%s\n", BOLD_TEXT, func, line, type_name(sc, x, NO_ARTICLE), DISPLAY(x), UNBOLD_TEXT);
if (stop_at_error) abort();
@@ -28520,7 +28879,7 @@ static void iterator_to_port(s7_scheme *sc, s7_pointer obj, s7_pointer port, use
{
s7_pointer seq;
seq = iterator_sequence(obj);
- if ((is_string(seq)) && (!is_byte_vector(seq)))
+ if ((is_string(seq)) && (!is_byte_vector_not_string(seq)))
{
port_write_string(port)(sc, "(make-iterator \"", 16, port);
port_write_string(port)(sc, (char *)(string_value(seq) + iterator_position(obj)), string_length(seq) - iterator_position(obj), port);
@@ -28707,7 +29066,7 @@ static void syntax_to_port(s7_scheme *sc, s7_pointer obj, s7_pointer port, use_w
static void string_to_port_1(s7_scheme *sc, s7_pointer obj, s7_pointer port, use_write_t use_write, shared_info *ci)
{
- if (is_byte_vector(obj))
+ if (is_byte_vector_not_string(obj))
byte_vector_to_port(sc, obj, port, use_write);
else string_to_port(sc, obj, port, use_write);
}
@@ -29049,26 +29408,44 @@ void s7_newline(s7_scheme *sc, s7_pointer port)
s7_write_char(sc, '\n', port);
}
+#define newline_char chars[(unsigned char)'\n']
+
static s7_pointer g_newline(s7_scheme *sc, s7_pointer args)
{
#define H_newline "(newline (port (current-output-port))) writes a carriage return to the port"
- #define Q_newline s7_make_signature(sc, 2, sc->is_unspecified_symbol, sc->is_output_port_symbol)
+ #define Q_newline s7_make_signature(sc, 2, sc->is_char_symbol, sc->is_output_port_symbol)
s7_pointer port;
if (is_not_null(args))
port = car(args);
else port = sc->output_port;
+
if (!is_output_port(port))
{
- if (port == sc->F) return(sc->unspecified);
+ if (port == sc->F) return(newline_char);
method_or_bust_with_type_one_arg(sc, port, sc->newline_symbol, args, an_output_port_string);
}
s7_newline(sc, port);
- return(sc->unspecified);
+ return(newline_char);
+ /* return(sc->unspecified) until 28-Sep-17, but for example (display c) returns c */
+}
+
+static s7_pointer newline_p(void)
+{
+ s7_newline(cur_sc, cur_sc->output_port);
+ return(newline_char);
}
-static s7_pointer newline_p(void) {s7_write_char(cur_sc, '\n', cur_sc->output_port); return(cur_sc->unspecified);}
-static s7_pointer newline_p_p(s7_pointer port) {s7_write_char(cur_sc, '\n', port); return(cur_sc->unspecified);}
+static s7_pointer newline_p_p(s7_pointer port)
+{
+ if (!is_output_port(port))
+ {
+ if (port == cur_sc->F) return(newline_char);
+ s7_wrong_type_arg_error(cur_sc, "newline", 1, port, "an open output port");
+ }
+ s7_newline(cur_sc, port);
+ return(newline_char);
+}
/* -------------------------------- write -------------------------------- */
@@ -30922,10 +31299,8 @@ static s7_pointer g_tree_leaves(s7_scheme *sc, s7_pointer args)
}
-bool s7_tree_memq(s7_scheme *sc, s7_pointer sym, s7_pointer tree)
+static bool tree_memq_1(s7_scheme *sc, s7_pointer sym, s7_pointer tree)
{
- if (sym == tree) return(true);
- if (!is_pair(tree)) return(false);
if (car(tree) == sc->quote_symbol)
{
if ((is_symbol(sym)) || (is_pair(sym)) || (!is_pair(cdr(tree))))
@@ -30934,13 +31309,23 @@ bool s7_tree_memq(s7_scheme *sc, s7_pointer sym, s7_pointer tree)
}
do {
if ((sym == cdr(tree)) || /* "sym" need not be a symbol */
- (s7_tree_memq(sc, sym, car(tree))))
+ (sym == car(tree)))
+ return(true);
+ if ((is_pair(car(tree))) &&
+ (tree_memq_1(sc, sym, car(tree))))
return(true);
tree = cdr(tree);
} while (is_pair(tree));
return(false);
}
+bool s7_tree_memq(s7_scheme *sc, s7_pointer sym, s7_pointer tree)
+{
+ if (sym == tree) return(true);
+ if (!is_pair(tree)) return(false);
+ return(tree_memq_1(sc, sym, tree));
+}
+
static s7_pointer g_tree_memq(s7_scheme *sc, s7_pointer args)
{
#define H_tree_memq "(tree-memq obj tree) is a tree-oriented version of memq, but returning #t if the object is in the tree."
@@ -30970,19 +31355,44 @@ static s7_pointer g_tree_set_memq(s7_scheme *sc, s7_pointer args)
{
#define H_tree_set_memq "(tree-set-memq symbols tree) returns #t if any of the list of symbols is in the tree"
#define Q_tree_set_memq s7_make_signature(sc, 3, sc->is_boolean_symbol, sc->is_list_symbol, sc->is_list_symbol)
- s7_pointer syms, p, tree;
+ s7_pointer syms, p;
syms = car(args);
if (!is_pair(syms)) return(sc->F);
- tree = cadr(args);
clear_symbol_list(sc);
for (p = syms; is_pair(p); p = cdr(p))
if (is_symbol(car(p)))
add_symbol_to_list(sc, car(p));
- return(make_boolean(sc, tree_set_memq(sc, tree)));
+ return(make_boolean(sc, tree_set_memq(sc, cadr(args))));
}
static bool tree_set_memq_b_pp(s7_pointer syms, s7_pointer tree) {return(g_tree_set_memq(cur_sc, set_plist_2(cur_sc, syms, tree)) != cur_sc->F);}
+static s7_pointer tree_set_memq_syms;
+static s7_pointer g_tree_set_memq_1(s7_scheme *sc, s7_pointer args)
+{
+ s7_pointer p;
+ clear_symbol_list(sc);
+ for (p = car(args); is_pair(p); p = cdr(p))
+ add_symbol_to_list(sc, car(p));
+ return(make_boolean(sc, tree_set_memq(sc, cadr(args))));
+}
+
+static s7_pointer tree_set_memq_chooser(s7_scheme *sc, s7_pointer f, int32_t args, s7_pointer expr, bool ops)
+{
+ if ((is_pair(cadr(expr))) &&
+ (caadr(expr) == sc->quote_symbol) &&
+ (is_pair(cadadr(expr))))
+ {
+ s7_pointer p;
+ for (p = cadadr(expr); is_pair(p); p = cdr(p))
+ if (!is_symbol(car(p)))
+ return(f);
+ return(tree_set_memq_syms);
+ }
+ return(f);
+}
+
+
static s7_int tree_count(s7_scheme *sc, s7_pointer x, s7_pointer p, s7_int count)
{
if (p == x)
@@ -31486,8 +31896,8 @@ static s7_pointer g_list_set_1(s7_scheme *sc, s7_pointer lst, s7_pointer args, i
/* (let ((L '((1 2 3) (4 5 6)))) (list-set! L 1 2 32) L) */
- if (!is_pair(lst))
- method_or_bust(sc, lst, sc->list_set_symbol, cons(sc, lst, args), T_PAIR, 1);
+ if (!is_mutable_pair(lst))
+ mutable_method_or_bust(sc, lst, sc->list_set_symbol, cons(sc, lst, args), T_PAIR, 1);
ind = car(args);
if (!s7_is_integer(ind))
@@ -31500,7 +31910,7 @@ static s7_pointer g_list_set_1(s7_scheme *sc, s7_pointer lst, s7_pointer args, i
if ((index < 0) || (index > sc->max_list_length))
return(out_of_range(sc, sc->list_set_symbol, small_int(arg_num), ind, (index < 0) ? its_negative_string : its_too_large_string));
- for (i = 0, p = _TSet(lst); (i < index) && is_pair(p); i++, p = cdr(p)) {}
+ for (i = 0, p = lst; (i < index) && is_pair(p); i++, p = cdr(p)) {}
if (!is_pair(p))
{
@@ -31573,8 +31983,8 @@ static s7_pointer g_list_set_ic(s7_scheme *sc, s7_pointer args)
s7_pointer p, lst, val;
s7_int i, index;
lst = car(args);
- if (!is_pair(lst))
- method_or_bust(sc, lst, sc->list_set_symbol, args, T_PAIR, 1);
+ if (!is_mutable_pair(lst))
+ mutable_method_or_bust(sc, lst, sc->list_set_symbol, args, T_PAIR, 1);
index = s7_integer(cadr(args));
if ((index < 0) || (index > sc->max_list_length))
@@ -31715,6 +32125,7 @@ static void init_car_a_list(void)
too_many_indices_string = s7_make_permanent_string("too many indices");
value_is_missing_string = s7_make_permanent_string("~A argument '~A's value is missing");
parameter_set_twice_string = s7_make_permanent_string("parameter set twice, ~S in ~S");
+ immutable_error_string = s7_make_permanent_string("can't ~S ~S (it is immutable)");
#if (!HAVE_COMPLEX_NUMBERS)
no_complex_numbers_string = s7_make_permanent_string("this version of s7 does not support complex numbers");
#endif
@@ -31750,17 +32161,17 @@ static s7_pointer g_set_car(s7_scheme *sc, s7_pointer args)
s7_pointer p;
p = car(args);
- if (is_pair(p))
+ if (is_mutable_pair(p)) /* this is currently 2.5x slower than is_pair */
{
set_car(p, cadr(args));
return(car(p));
}
- method_or_bust(sc, p, sc->set_car_symbol, args, T_PAIR, 1);
+ mutable_method_or_bust(sc, p, sc->set_car_symbol, args, T_PAIR, 1);
}
static s7_pointer set_car_p_pp(s7_pointer p1, s7_pointer p2)
{
- if (!is_pair(p1))
+ if (!is_mutable_pair(p1))
simple_wrong_type_argument(cur_sc, cur_sc->set_car_symbol, p1, T_PAIR);
set_car(p1, p2);
return(p2);
@@ -31795,8 +32206,8 @@ static s7_pointer g_set_cdr(s7_scheme *sc, s7_pointer args)
s7_pointer p;
p = car(args);
- if (!is_pair(p))
- method_or_bust(sc, p, sc->set_cdr_symbol, args, T_PAIR, 1);
+ if (!is_mutable_pair(p))
+ mutable_method_or_bust(sc, p, sc->set_cdr_symbol, args, T_PAIR, 1);
set_cdr(p, cadr(args));
return(cdr(p));
@@ -31804,7 +32215,7 @@ static s7_pointer g_set_cdr(s7_scheme *sc, s7_pointer args)
static s7_pointer set_cdr_p_pp(s7_pointer p1, s7_pointer p2)
{
- if (!is_pair(p1))
+ if (!is_mutable_pair(p1))
simple_wrong_type_argument(cur_sc, cur_sc->set_cdr_symbol, p1, T_PAIR);
set_cdr(p1, p2);
return(p2);
@@ -32472,17 +32883,8 @@ If 'func' is a function of 2 arguments, it is used for the comparison instead of
if (o->v7.fb(o))
return(car(x));
}
+ return(sc->F);
}
- else
- {
- for (; is_pair(x); x = cdr(x))
- {
- slot_set_value(b, caar(x));
- if (is_true(sc, func(sc, car(body))))
- return(car(x));
- }
- }
- return(sc->F);
}
}
}
@@ -32980,23 +33382,8 @@ member uses equal? If 'func' is a function of 2 arguments, it is used for the c
sc->pc = 0;
if (o->v7.fb(o)) return(x);
}
+ return(sc->F);
}
- else
- {
- for (slow = x; is_pair(x); x = cdr(x), slow = cdr(slow))
- {
- slot_set_value(b, car(x));
- if (is_true(sc, func(sc, car(body)))) return(x);
-
- if (!is_pair(cdr(x))) return(sc->F);
- x = cdr(x);
- if (x == slow) return(sc->F);
-
- slot_set_value(b, car(x));
- if (is_true(sc, func(sc, sc->t2_1))) return(x);
- }
- }
- return(sc->F);
}
}
}
@@ -33107,114 +33494,6 @@ static s7_pointer member_chooser(s7_scheme *sc, s7_pointer f, int32_t args, s7_p
}
-static bool is_memq(s7_pointer sym, s7_pointer lst)
-{
- s7_pointer x;
- for (x = lst; is_pair(x); x = cdr(x))
- if (sym == car(x))
- return(true);
- return(false);
-}
-
-
-static s7_pointer g_is_provided(s7_scheme *sc, s7_pointer args)
-{
- #define H_is_provided "(provided? symbol) returns #t if symbol is a member of the *features* list"
- #define Q_is_provided s7_make_signature(sc, 2, sc->is_boolean_symbol, sc->is_symbol_symbol)
- s7_pointer sym, topf, x;
-
- sym = car(args);
- if (!is_symbol(sym))
- method_or_bust_one_arg(sc, sym, sc->is_provided_symbol, list_1(sc, sym), T_SYMBOL);
-
- /* here the *features* list is spread out (or can be anyway) along the curlet chain,
- * so we need to travel back all the way to the top level checking each *features* list in turn.
- * Since *features* grows via cons (newest first), we can stop the scan if we hit the shared
- * top-level at least.
- */
- topf = slot_value(global_slot(sc->features_symbol));
- if (is_memq(sym, topf))
- return(sc->T);
-
- if (is_global(sc->features_symbol))
- return(sc->F);
- for (x = sc->envir; symbol_id(sc->features_symbol) < let_id(x); x = outlet(x));
- for (; is_let(x); x = outlet(x))
- {
- s7_pointer y;
- for (y = let_slots(x); is_slot(y); y = next_slot(y))
- if (slot_symbol(y) == sc->features_symbol)
- {
- if ((slot_value(y) != topf) &&
- (is_memq(sym, slot_value(y))))
- return(sc->T);
- }
- }
- return(sc->F);
-}
-
-
-bool s7_is_provided(s7_scheme *sc, const char *feature)
-{
- return(is_memq(s7_make_symbol(sc, feature), s7_symbol_value(sc, sc->features_symbol))); /* this goes from local outward */
-}
-
-bool is_provided_b(s7_pointer sym)
-{
- if (!is_symbol(sym))
- simple_wrong_type_argument(cur_sc, cur_sc->is_provided_symbol, sym, T_SYMBOL);
- return(is_memq(sym, s7_symbol_value(cur_sc, cur_sc->features_symbol)));
-}
-
-
-static s7_pointer c_provide(s7_scheme *sc, s7_pointer sym)
-{
- /* this has to be relative to the curlet: (load file env)
- * the things loaded are only present in env, and go away with it, so should not be in the global *features* list
- */
- s7_pointer p, lst;
- if (!is_symbol(sym))
- method_or_bust_one_arg(sc, sym, sc->provide_symbol, list_1(sc, sym), T_SYMBOL);
-
- p = find_local_symbol(sc, sc->features_symbol, sc->envir); /* if sc->envir is nil, this returns the global slot, else local slot */
- lst = slot_value(find_symbol(sc, sc->features_symbol)); /* in either case, we want the current *features* list */
-
- if (p == sc->undefined)
- make_slot_1(sc, sc->envir, sc->features_symbol, cons(sc, sym, lst));
- else
- {
- if (!is_memq(sym, lst))
- slot_set_value(p, cons(sc, sym, lst));
- }
-
- /* require looks up its symbol argument to see if the associated code (dsp.scm etc) has been autoloaded,
- * so here we're defining the provided symbol for that possibility. Perhaps better would be to forgo
- * the definition here, and in require check *features* -- it is local to the current env.
- */
- if (!is_slot(find_symbol(sc, sym))) /* *features* name might be the same as an existing function */
- s7_define(sc, sc->envir, sym, sym);
-
- return(sym);
-}
-
-static s7_pointer g_provide(s7_scheme *sc, s7_pointer args)
-{
- #define H_provide "(provide symbol) adds symbol to the *features* list"
- #define Q_provide s7_make_signature(sc, 2, sc->is_symbol_symbol, sc->is_symbol_symbol)
- return(c_provide(sc, car(args)));
-}
-
-void s7_provide(s7_scheme *sc, const char *feature) {c_provide(sc, s7_make_symbol(sc, feature));}
-
-
-static s7_pointer g_features_set(s7_scheme *sc, s7_pointer args)
-{
- /* symbol_access for set/let of *features* which can only be changed via provide */
- if (s7_is_list(sc, cadr(args)))
- return(cadr(args));
- return(sc->error_symbol);
-}
-
static s7_pointer g_list(s7_scheme *sc, s7_pointer args)
{
#define H_list "(list ...) returns its arguments in a list"
@@ -33753,10 +34032,8 @@ static s7_pointer g_vector_fill(s7_scheme *sc, s7_pointer args)
*/
return(wrong_type_argument(sc, sc->vector_fill_symbol, 1, x, T_VECTOR));
}
-
- if ((sc->safety > NO_SAFETY) &&
- (is_immutable_vector(x)))
- return(s7_error(sc, sc->error_symbol, set_elist_2(sc, s7_make_string_wrapper(sc, "can't fill! ~S (it is immutable)"), x)));
+ if (is_immutable_vector(x))
+ return(immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->fill_symbol, x)));
fill = cadr(args);
if (is_float_vector(x))
@@ -34621,8 +34898,10 @@ static s7_pointer g_vector_set(s7_scheme *sc, s7_pointer args)
vec = car(args);
if (!s7_is_vector(vec))
method_or_bust(sc, vec, sc->vector_set_symbol, args, T_VECTOR, 1);
+ if (is_immutable(vec))
+ return(immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->vector_set_symbol, vec)));
- if (vector_length(_TSet(vec)) == 0)
+ if (vector_length(vec) == 0)
return(out_of_range(sc, sc->vector_set_symbol, small_int(1), vec, its_too_large_string));
if (vector_rank(vec) > 1)
@@ -34726,6 +35005,8 @@ static s7_pointer g_vector_set_ic(s7_scheme *sc, s7_pointer args)
if (!s7_is_vector(vec))
method_or_bust(sc, vec, sc->vector_set_symbol, list_3(sc, vec, cadr(args), find_symbol_unchecked(sc, caddr(args))), T_VECTOR, 1);
/* the list_3 happens only if we find the method */
+ if (is_immutable(vec))
+ return(immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->vector_set_symbol, vec)));
if (vector_rank(vec) > 1)
return(g_vector_set(sc, set_plist_3(sc, vec, cadr(args), find_symbol_unchecked(sc, caddr(args)))));
@@ -34746,6 +35027,8 @@ static s7_pointer c_vector_set_3(s7_scheme *sc, s7_pointer vec, s7_int index, s7
if (!s7_is_vector(vec))
method_or_bust(sc, vec, sc->vector_set_symbol, list_3(sc, vec, make_integer(sc, index), val), T_VECTOR, 1);
+ if (is_immutable(vec))
+ return(immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->vector_set_symbol, vec)));
if (vector_rank(vec) > 1)
return(g_vector_set(sc, set_plist_3(sc, vec, make_integer(sc, index), val)));
@@ -35285,6 +35568,8 @@ static s7_pointer univect_set(s7_scheme *sc, s7_pointer args, bool flt)
vec = car(args);
if (type(vec) != typ)
method_or_bust(sc, vec, caller, args, typ, 1);
+ if (is_immutable(vec))
+ return(immutable_object_error(sc, set_elist_3(sc, immutable_error_string, caller, vec)));
if (vector_rank(vec) > 1)
{
@@ -35674,9 +35959,8 @@ static s7_pointer g_sort(s7_scheme *sc, s7_pointer args)
return(sc->nil);
}
- if ((sc->safety > NO_SAFETY) &&
- (is_immutable(data)))
- return(s7_error(sc, sc->error_symbol, set_elist_2(sc, s7_make_string_wrapper(sc, "can't sort! ~S (it is immutable)"), data)));
+ if (is_immutable(data))
+ return(immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->sort_symbol, data)));
lessp = cadr(args);
if (type(lessp) < T_GOTO)
@@ -35911,14 +36195,14 @@ static s7_pointer g_sort(s7_scheme *sc, s7_pointer args)
#if (!WITH_GMP)
if (is_c_function(lessp))
{
- if (((!is_byte_vector(data)) && (compare_func == g_char_less_2)) ||
- ((is_byte_vector(data)) && (compare_func == g_less_2)))
+ if (((!is_byte_vector_not_string(data)) && (compare_func == g_char_less_2)) ||
+ ((is_byte_vector_not_string(data)) && (compare_func == g_less_2)))
{
qsort((void *)vector_elements(data), len, sizeof(unsigned char), byte_less);
return(data);
}
- if (((!is_byte_vector(data)) && (compare_func == g_char_greater_2)) ||
- ((is_byte_vector(data)) && (compare_func == g_greater_2)))
+ if (((!is_byte_vector_not_string(data)) && (compare_func == g_char_greater_2)) ||
+ ((is_byte_vector_not_string(data)) && (compare_func == g_greater_2)))
{
qsort((void *)vector_elements(data), len, sizeof(unsigned char), byte_greater);
return(data);
@@ -35931,7 +36215,7 @@ static s7_pointer g_sort(s7_scheme *sc, s7_pointer args)
elements = s7_vector_elements(vec);
chrs = (unsigned char *)string_value(data);
- if (is_byte_vector(data))
+ if (is_byte_vector_not_string(data))
{
for (i = 0; i < len; i++)
elements[i] = small_int(chrs[i]);
@@ -35947,7 +36231,7 @@ static s7_pointer g_sort(s7_scheme *sc, s7_pointer args)
sc->v = vec;
qsort((void *)elements, len, sizeof(s7_pointer), sort_func);
- if (is_byte_vector(data))
+ if (is_byte_vector_not_string(data))
{
for (i = 0; i < len; i++)
chrs[i] = (char)integer(elements[i]);
@@ -36169,7 +36453,7 @@ static s7_pointer vector_into_string(s7_pointer vect, s7_pointer dest)
len = vector_length(vect);
str = (unsigned char *)string_value(dest);
- if (is_byte_vector(dest))
+ if (is_byte_vector_not_string(dest))
{
for (i = 0; i < len; i++)
str[i] = (unsigned char)integer(elements[i]);
@@ -36485,6 +36769,14 @@ static uint32_t hash_map_let(s7_scheme *sc, s7_pointer table, s7_pointer key)
return(slots);
}
+static uint32_t len_upto_8(s7_scheme *sc, s7_pointer p)
+{
+ s7_pointer x;
+ uint32_t i; /* unrolling this loop saves 10-15% */
+ for (i = 0, x = p; (is_pair(x)) && (i < 8); i++, x = cdr(x));
+ return(i);
+}
+
static uint32_t hash_map_pair(s7_scheme *sc, s7_pointer table, s7_pointer key)
{
/* len+loc(car) is not horrible, but it means (for example) every list '(set! ...) is hashed to the same location,
@@ -36514,6 +36806,7 @@ static uint32_t hash_map_pair(s7_scheme *sc, s7_pointer table, s7_pointer key)
loc += hash_loc(sc, table, caar(p1)) + 1;
}
}
+ loc = (loc << 3) | len_upto_8(sc, key);
return(loc);
}
@@ -37436,8 +37729,8 @@ static s7_pointer g_hash_table_set(s7_scheme *sc, s7_pointer args)
s7_pointer table;
table = car(args);
- if (!is_hash_table(table))
- method_or_bust(sc, table, sc->hash_table_set_symbol, args, T_HASH_TABLE, 1);
+ if (!is_mutable_hash_table(table))
+ mutable_method_or_bust(sc, table, sc->hash_table_set_symbol, args, T_HASH_TABLE, 1);
return(s7_hash_table_set(sc, table, cadr(args), caddr(args)));
}
@@ -37599,6 +37892,8 @@ static s7_pointer hash_table_fill(s7_scheme *sc, s7_pointer args)
{
s7_pointer val, table;
table = car(args);
+ if (is_immutable(table))
+ return(immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->fill_symbol, table)));
val = cadr(args);
if (hash_table_entries(table) > 0)
{
@@ -37975,11 +38270,7 @@ s7_pointer s7_define_macro(s7_scheme *sc, const char *name, s7_function fnc,
}
-bool s7_is_macro(s7_scheme *sc, s7_pointer x)
-{
- return(is_any_macro(x));
-}
-
+bool s7_is_macro(s7_scheme *sc, s7_pointer x) {return(is_any_macro(x));}
static bool is_macro_b(s7_pointer x) {return(is_any_macro(x));}
@@ -38091,14 +38382,14 @@ void s7_define_typed_function_star(s7_scheme *sc, const char *name, s7_function
}
-/* -------------------------------- procedure-documentation -------------------------------- */
+/* -------------------------------- documentation -------------------------------- */
static s7_pointer get_doc(s7_scheme *sc, s7_pointer x)
{
- check_closure_for(sc, x, sc->documentation_symbol);
+ check_closure_for(sc, x, sc->local_documentation_symbol);
return(NULL);
}
-const char *s7_procedure_documentation(s7_scheme *sc, s7_pointer x)
+const char *s7_documentation(s7_scheme *sc, s7_pointer x)
{
s7_pointer val;
if (is_symbol(x))
@@ -38120,11 +38411,11 @@ const char *s7_procedure_documentation(s7_scheme *sc, s7_pointer x)
return(NULL);
}
-static s7_pointer g_procedure_documentation(s7_scheme *sc, s7_pointer args)
+static s7_pointer g_documentation(s7_scheme *sc, s7_pointer args)
{
s7_pointer p;
- #define H_procedure_documentation "(procedure-documentation func) returns func's documentation string"
- #define Q_procedure_documentation s7_make_signature(sc, 2, sc->is_string_symbol, sc->is_procedure_symbol)
+ #define H_documentation "(documentation obj) returns obj's documentation string"
+ #define Q_documentation s7_make_signature(sc, 2, sc->is_string_symbol, sc->is_procedure_symbol)
p = car(args);
if (is_symbol(p))
@@ -38135,12 +38426,12 @@ static s7_pointer g_procedure_documentation(s7_scheme *sc, s7_pointer args)
p = s7_symbol_value(sc, p);
}
- check_method(sc, p, sc->procedure_documentation_symbol, list_1(sc, p));
+ check_two_methods(sc, p, sc->documentation_symbol, sc->procedure_documentation_symbol, list_1(sc, p));
if ((!is_procedure(p)) &&
(!is_any_macro(p)))
- return(simple_wrong_type_argument_with_type(sc, sc->procedure_documentation_symbol, p, a_procedure_string));
+ return(simple_wrong_type_argument_with_type(sc, sc->documentation_symbol, p, a_procedure_string));
- return(s7_make_string(sc, s7_procedure_documentation(sc, p)));
+ return(s7_make_string(sc, s7_documentation(sc, p)));
}
@@ -38159,7 +38450,7 @@ const char *s7_help(s7_scheme *sc, s7_pointer obj)
}
if (is_procedure_or_macro(obj))
- return(s7_procedure_documentation(sc, obj));
+ return(s7_documentation(sc, obj));
/* if is string, apropos? (can scan symbol table) */
return(NULL);
@@ -38180,45 +38471,77 @@ static s7_pointer g_help(s7_scheme *sc, s7_pointer args)
}
-/* -------------------------------- procedure-signature -------------------------------- */
-static s7_pointer get_signature(s7_scheme *sc, s7_pointer x)
+/* -------------------------------- signature -------------------------------- */
+static void init_signatures(s7_scheme *sc)
{
- check_closure_for(sc, x, sc->signature_symbol);
- return(sc->F);
+ sc->string_signature = s7_make_signature(sc, 3, sc->is_char_symbol, sc->is_string_symbol, sc->is_integer_symbol);
+ sc->byte_vector_signature = s7_make_signature(sc, 3, sc->is_integer_symbol, sc->is_byte_vector_symbol, sc->is_integer_symbol);
+ sc->vector_signature = s7_make_circular_signature(sc, 2, 3, sc->T, sc->is_vector_symbol, sc->is_integer_symbol);
+ sc->float_vector_signature = s7_make_circular_signature(sc, 2, 3, sc->is_float_symbol, sc->is_float_vector_symbol, sc->is_integer_symbol);
+ sc->int_vector_signature = s7_make_circular_signature(sc, 2, 3, sc->is_integer_symbol, sc->is_int_vector_symbol, sc->is_integer_symbol);
+ sc->c_object_signature = s7_make_circular_signature(sc, 2, 3, sc->T, sc->is_c_object_symbol, sc->T);
+ sc->let_signature = s7_make_signature(sc, 3, sc->T, sc->is_let_symbol, sc->T);
+ sc->hash_table_signature = s7_make_signature(sc, 3, sc->T, sc->is_hash_table_symbol, sc->T); /* should this be circular? */
+ sc->pair_signature = s7_make_circular_signature(sc, 2, 3, sc->T, sc->is_pair_symbol, sc->is_integer_symbol);
+ sc->iterator_signature = s7_make_signature(sc, 1, sc->T);
}
-s7_pointer s7_procedure_signature(s7_scheme *sc, s7_pointer func)
-{
- if ((is_any_c_function(func)) ||
- (is_c_macro(func)))
- return((s7_pointer)c_function_signature(func));
- return(get_signature(sc, func));
-}
-
-static s7_pointer g_procedure_signature(s7_scheme *sc, s7_pointer args)
+static s7_pointer g_signature(s7_scheme *sc, s7_pointer args)
{
s7_pointer p;
- #define H_procedure_signature "(procedure-signature func) returns func's signature"
- #define Q_procedure_signature s7_make_signature(sc, 2, s7_make_signature(sc, 2, sc->is_pair_symbol, sc->is_boolean_symbol), sc->is_procedure_symbol)
+ #define H_signature "(signature obj) returns obj's signature"
+ #define Q_signature s7_make_signature(sc, 2, s7_make_signature(sc, 2, sc->is_pair_symbol, sc->is_boolean_symbol), sc->is_procedure_symbol)
p = car(args);
- if (is_symbol(p))
- {
- p = s7_symbol_value(sc, p);
- if (is_procedure(p))
- return(s7_procedure_signature(sc, p));
- if (p == sc->undefined)
- return(sc->F);
- }
- else
+ if (is_symbol(p))
+ p = s7_symbol_value(sc, p); /* lint depends on this currently */
+
+ switch (type(p))
{
- if (is_procedure(p))
- return(s7_procedure_signature(sc, p));
+ case T_C_FUNCTION:
+ case T_C_FUNCTION_STAR:
+ case T_C_ANY_ARGS_FUNCTION:
+ case T_C_OPT_ARGS_FUNCTION:
+ case T_C_RST_ARGS_FUNCTION:
+ case T_C_MACRO:
+ return((s7_pointer)c_function_signature(p));
+
+ case T_MACRO: case T_MACRO_STAR:
+ case T_BACRO: case T_BACRO_STAR:
+ case T_CLOSURE: case T_CLOSURE_STAR:
+ check_closure_for(sc, p, sc->local_signature_symbol); /* this examines funclet */
+ return(sc->F);
+
+ case T_HASH_TABLE: return(sc->hash_table_signature);
+ case T_VECTOR: return(sc->vector_signature);
+ case T_FLOAT_VECTOR: return(sc->float_vector_signature);
+ case T_INT_VECTOR: return(sc->int_vector_signature);
+ case T_ITERATOR: return(sc->iterator_signature);
+ case T_PAIR: return(sc->pair_signature);
+ case T_STRING: if (is_byte_vector(p)) return(sc->byte_vector_signature); return(sc->string_signature);
+
+ case T_C_OBJECT:
+ check_two_methods(sc, p, sc->signature_symbol, sc->procedure_signature_symbol, args);
+ return(sc->c_object_signature);
+
+ case T_LET:
+ check_two_methods(sc, p, sc->signature_symbol, sc->procedure_signature_symbol, args);
+ return(sc->let_signature);
+
+ default:
+ break;
}
- check_method(sc, p, sc->procedure_signature_symbol, list_1(sc, p));
return(sc->F);
}
+s7_pointer s7_signature(s7_scheme *sc, s7_pointer func)
+{
+ return(g_signature(sc, set_plist_1(sc, func)));
+}
+
+#define signature(Sc, _P_) ((is_any_c_function(_P_)) ? ((s7_pointer)c_function_signature(_P_)) : s7_signature(Sc, _P_))
+
+
/* -------------------------------- new types (c_objects) -------------------------------- */
static void fallback_free(void *value) {}
@@ -38274,9 +38597,13 @@ static s7_pointer g_is_c_object(s7_scheme *sc, s7_pointer args)
}
-static s7_pointer g_internal_c_object_set(s7_scheme *sc, s7_pointer args)
+static s7_pointer g_c_object_set(s7_scheme *sc, s7_pointer args)
{
- return((*(c_object_set(sc, car(args))))(sc, car(args), cdr(args)));
+ s7_pointer p;
+ p = car(args);
+ if (is_c_object(p))
+ return((*(c_object_set(sc, p)))(sc, p, cdr(args)));
+ return(sc->F);
}
int32_t s7_make_c_type(s7_scheme *sc, const char *name)
@@ -38298,7 +38625,6 @@ int32_t s7_make_c_type(s7_scheme *sc, const char *name)
}
sc->c_object_types[tag] = (c_object_t *)calloc(1, sizeof(c_object_t));
sc->c_object_types[tag]->type = tag;
- sc->c_object_types[tag]->name = copy_string(name);
sc->c_object_types[tag]->scheme_name = s7_make_permanent_string(name);
sc->c_object_types[tag]->free = fallback_free;
@@ -38503,7 +38829,8 @@ s7_pointer s7_c_object_let(s7_pointer obj)
s7_pointer s7_c_object_set_let(s7_pointer obj, s7_pointer e)
{
- c_object_set_let(obj, e);
+ if (!is_immutable(obj))
+ c_object_set_let(obj, e);
return(e);
}
@@ -38531,7 +38858,7 @@ static s7_int c_object_length_to_int(s7_scheme *sc, s7_pointer obj)
}
-static s7_pointer object_copy(s7_scheme *sc, s7_pointer args)
+static s7_pointer copy_c_object(s7_scheme *sc, s7_pointer args)
{
s7_pointer obj;
obj = car(args);
@@ -38542,6 +38869,16 @@ static s7_pointer object_copy(s7_scheme *sc, s7_pointer args)
}
+static s7_pointer c_object_type_to_let(s7_scheme *sc, s7_pointer cobj)
+{
+ return(s7_inlet(sc, s7_list(sc, 4,
+ s7_make_symbol(sc, "name"), c_object_scheme_name(sc, cobj),
+ sc->setter_symbol, (c_object_set(sc, cobj) != fallback_set) ? sc->c_object_set_function : sc->F)));
+
+ /* should we make new wrappers every time this is called? or save the let somewhere and reuse it? */
+ /* (load "s7test-block.so" (sublet (curlet) (cons 'init_func 'block_init))) */
+}
+
/* -------- dilambda -------- */
@@ -38636,7 +38973,7 @@ static s7_pointer c_set_setter(s7_scheme *sc, s7_pointer p, s7_pointer setter)
static s7_pointer g_dilambda(s7_scheme *sc, s7_pointer args)
{
- #define H_dilambda "(dilambda getter setter) sets getter's procedure-setter to be setter."
+ #define H_dilambda "(dilambda getter setter) sets getter's setter to be setter."
#define Q_dilambda s7_make_signature(sc, 3, sc->is_procedure_symbol, sc->is_procedure_symbol, sc->is_procedure_symbol)
s7_pointer getter, setter;
@@ -38653,7 +38990,7 @@ static s7_pointer g_dilambda(s7_scheme *sc, s7_pointer args)
}
-s7_pointer s7_procedure_setter(s7_scheme *sc, s7_pointer obj)
+s7_pointer s7_setter(s7_scheme *sc, s7_pointer obj)
{
if (is_c_function(obj))
return(c_function_setter(obj));
@@ -38661,10 +38998,16 @@ s7_pointer s7_procedure_setter(s7_scheme *sc, s7_pointer obj)
return(closure_setter(obj));
}
-static s7_pointer g_procedure_setter(s7_scheme *sc, s7_pointer args)
+static s7_pointer funclet_setter(s7_scheme *sc, s7_pointer fnc)
+{
+ check_closure_for(sc, fnc, sc->local_setter_symbol);
+ return(sc->F);
+}
+
+static s7_pointer g_setter(s7_scheme *sc, s7_pointer args)
{
- #define H_procedure_setter "(procedure-setter obj) returns the setter associated with obj, or #f"
- #define Q_procedure_setter s7_make_signature(sc, 2, sc->T, sc->is_procedure_symbol)
+ #define H_setter "(setter obj) returns the setter associated with obj, or #f"
+ #define Q_setter s7_make_signature(sc, 2, sc->T, sc->is_procedure_symbol)
s7_pointer p;
p = car(args);
@@ -38673,6 +39016,15 @@ static s7_pointer g_procedure_setter(s7_scheme *sc, s7_pointer args)
case T_MACRO: case T_MACRO_STAR:
case T_BACRO: case T_BACRO_STAR:
case T_CLOSURE: case T_CLOSURE_STAR:
+ if ((!is_procedure(closure_setter(p))) &&
+ (!closure_no_setter(p)))
+ {
+ s7_pointer f;
+ f = funclet_setter(sc, p);
+ if (is_procedure(f))
+ closure_set_setter(p, f);
+ else closure_set_no_setter(p);
+ }
return(closure_setter(p));
case T_C_FUNCTION:
@@ -38690,38 +39042,66 @@ static s7_pointer g_procedure_setter(s7_scheme *sc, s7_pointer args)
return(sc->F);
case T_C_OBJECT:
- /* this can satisfy procedure? if T_SAFE_PROCEDURE bit is set -- has apply method, see s7_c_type_set_apply */
- check_method(sc, p, s7_make_symbol(sc, "procedure-setter"), args);
- return(make_boolean(sc, (c_object_set(sc, p) != fallback_set)));
- /* unfortunately ref/set are not s7_functions (they have an extra object arg), so we can't return c_object_set */
+ check_method(sc, p, sc->setter_symbol, args);
+ if (c_object_set(sc, p) != fallback_set)
+ return(sc->c_object_set_function); /* for example ((setter obj) obj 0 1.0) if s7test block */
+ return(sc->F);
case T_LET:
- check_method(sc, p, s7_make_symbol(sc, "procedure-setter"), args);
+ check_two_methods(sc, p, sc->setter_symbol, sc->procedure_setter_symbol, args);
+ return(slot_value(global_slot(sc->let_set_symbol)));
break;
case T_ITERATOR:
if (is_any_closure(iterator_sequence(p)))
return(closure_setter(iterator_sequence(p)));
+ return(sc->F); /* (set! (iter) val) doesn't fit the other setters */
+
+ case T_PAIR:
+ return(slot_value(global_slot(sc->list_set_symbol)));
+
+ case T_HASH_TABLE:
+ return(slot_value(global_slot(sc->hash_table_set_symbol)));
+
+ case T_STRING:
+ if (is_byte_vector(p))
+ return(slot_value(global_slot(sc->byte_vector_set_symbol)));
+ return(slot_value(global_slot(sc->string_set_symbol)));
+
+ case T_VECTOR:
+ return(slot_value(global_slot(sc->vector_set_symbol)));
+
+ case T_INT_VECTOR:
+ return(slot_value(global_slot(sc->int_vector_set_symbol)));
+
+ case T_FLOAT_VECTOR:
+ return(slot_value(global_slot(sc->float_vector_set_symbol)));
+
+ case T_SYMBOL: /* (symbol-setter obj) -- the env arg is not passable here */
+ if (is_keyword(p)) return(sc->F);
+ p = find_symbol(sc, p);
+ if (!is_slot(p)) return(sc->F);
+ if (slot_has_setter(p)) return(slot_setter(p));
return(sc->F);
}
- return(s7_wrong_type_arg_error(sc, "procedure-setter", 0, p, "a procedure or a reasonable facsimile thereof"));
+ return(s7_wrong_type_arg_error(sc, "setter", 0, p, "a procedure or a reasonable facsimile thereof"));
}
-static s7_pointer g_procedure_set_setter(s7_scheme *sc, s7_pointer args)
+static s7_pointer g_set_setter(s7_scheme *sc, s7_pointer args)
{
s7_pointer p, setter;
p = car(args);
if (!is_any_procedure(p))
- return(s7_wrong_type_arg_error(sc, "set! procedure-setter procedure", 1, p, "a procedure"));
+ return(s7_wrong_type_arg_error(sc, "set! setter procedure", 1, p, "a procedure"));
setter = cadr(args);
if ((setter != sc->F) &&
(!is_any_procedure(setter)))
- return(s7_wrong_type_arg_error(sc, "set! procedure-setter setter", 2, setter, "a procedure or #f"));
+ return(s7_wrong_type_arg_error(sc, "set! setter setter", 2, setter, "a procedure or #f"));
/* should we check that p != setter?
- * :(set! (procedure-setter <) <)
+ * :(set! (setter <) <)
* <
* :(set! (< 3 2) 3)
* #f
@@ -38732,11 +39112,20 @@ static s7_pointer g_procedure_set_setter(s7_scheme *sc, s7_pointer args)
return(c_set_setter(sc, p, setter));
}
+/* setter for hash-table could give cow-obj:
+ * (define (cowtable . fields) (let ((ht (apply hash-table* fields))) (set! (setter ht) (let ((old-setter (setter ht)))
+ * (lambda (table key value) (let ((new-table (copy table))) (old-setter new-table key value) new-table)))) ht))
+ * but if the underlyng setter changes due to a new key, the saved setter won't work.
+ * there's room for vector-setter but not string-setter, so perhaps this extension is
+ * not doable. So set symbol-setter -> set setter is also out for the time being.
+ */
+#if (!DISABLE_DEPRECATED)
void s7_define_function_with_setter(s7_scheme *sc, const char *name, s7_function get_fnc, s7_function set_fnc, int32_t req_args, int32_t opt_args, const char *doc)
{
s7_dilambda(sc, name, get_fnc, req_args, opt_args, set_fnc, req_args + 1, opt_args, doc);
}
+#endif
/* -------------------------------- arity -------------------------------- */
@@ -38865,12 +39254,10 @@ s7_pointer s7_arity(s7_scheme *sc, s7_pointer x)
return(sc->F);
case T_LET:
- /* check_method(sc, x, sc->arity_symbol, args); */
return(s7_cons(sc, small_int(1), small_int(1)));
case T_C_OBJECT:
- /* check_method(sc, x, sc->arity_symbol, args); */
- if (is_procedure(x))
+ if (is_safe_procedure(x))
return(s7_cons(sc, small_int(0), max_arity));
return(sc->F);
@@ -38976,7 +39363,7 @@ bool s7_is_aritable(s7_scheme *sc, s7_pointer x, int32_t args)
case T_C_OBJECT:
/* check_method(sc, x, sc->is_aritable_symbol, list_2(sc, x, s7_make_integer(sc, args))); -- see below */
- return(is_procedure(x)); /* i.e. is_applicable */
+ return(is_safe_procedure(x));
case T_INT_VECTOR:
case T_FLOAT_VECTOR:
@@ -39036,74 +39423,78 @@ static bool is_sequence_b(s7_pointer p) {return(is_simple_sequence(p));}
-/* -------------------------------- symbol-access ------------------------------------------------ */
+/* -------------------------------- symbol-setter ------------------------------------------------ */
-static uint32_t protect_accessor(s7_scheme *sc, s7_pointer acc)
+static uint32_t protect_setter(s7_scheme *sc, s7_pointer acc)
{
uint32_t loc;
- if (sc->protected_accessors_size == sc->protected_accessors_loc)
+ if (sc->protected_setters_size == sc->protected_setters_loc)
{
int32_t i, new_size, size;
- size = sc->protected_accessors_size;
+ size = sc->protected_setters_size;
new_size = 2 * size;
- vector_elements(sc->protected_accessors) = (s7_pointer *)realloc(vector_elements(sc->protected_accessors), new_size * sizeof(s7_pointer));
- vector_length(sc->protected_accessors) = new_size;
+ vector_elements(sc->protected_setters) = (s7_pointer *)realloc(vector_elements(sc->protected_setters), new_size * sizeof(s7_pointer));
+ vector_length(sc->protected_setters) = new_size;
for (i = size; i < new_size; i++)
- vector_element(sc->protected_accessors, i) = sc->gc_nil;
- sc->protected_accessors_size = new_size;
+ vector_element(sc->protected_setters, i) = sc->gc_nil;
+ sc->protected_setters_size = new_size;
}
- loc = sc->protected_accessors_loc++;
- vector_element(sc->protected_accessors, loc) = acc;
+ loc = sc->protected_setters_loc++;
+ vector_element(sc->protected_setters, loc) = acc;
return(loc);
}
-s7_pointer s7_symbol_access(s7_scheme *sc, s7_pointer sym)
+s7_pointer s7_symbol_setter(s7_scheme *sc, s7_pointer sym)
{
/* these refer to the rootlet */
if ((is_slot(global_slot(sym))) &&
- (slot_has_accessor(global_slot(sym))))
- return(slot_accessor(global_slot(sym)));
+ (slot_has_setter(global_slot(sym))))
+ return(slot_setter(global_slot(sym)));
return(sc->F);
}
-s7_pointer s7_symbol_set_access(s7_scheme *sc, s7_pointer symbol, s7_pointer func)
+s7_pointer s7_symbol_set_setter(s7_scheme *sc, s7_pointer symbol, s7_pointer func)
{
- if (slot_has_accessor(global_slot(symbol)))
+ if (slot_has_setter(global_slot(symbol)))
{
uint32_t index;
- index = symbol_global_accessor_index(symbol);
- if (index < sc->protected_accessors_size)
+ index = symbol_global_setter_index(symbol);
+ if (index < sc->protected_setters_size)
{
- if (is_immutable(vector_element(sc->protected_accessors, index))) /* a function */
+ if (is_immutable(vector_element(sc->protected_setters, index))) /* a function */
return(func);
- vector_element(sc->protected_accessors, index) = func;
- slot_set_accessor(global_slot(symbol), func);
+ vector_element(sc->protected_setters, index) = func;
+ slot_set_setter(global_slot(symbol), func);
+ if ((func != sc->F) && (s7_is_aritable(sc, func, 3)))
+ set_has_let_arg(func);
return(func);
}
}
if (func != sc->F)
{
- slot_set_has_accessor(global_slot(symbol));
- symbol_set_has_accessor(symbol);
- symbol_global_accessor_index(symbol) = protect_accessor(sc, func);
+ slot_set_has_setter(global_slot(symbol));
+ symbol_set_has_setter(symbol);
+ symbol_global_setter_index(symbol) = protect_setter(sc, func);
}
- slot_set_accessor(global_slot(symbol), func);
+ slot_set_setter(global_slot(symbol), func);
+ if ((func != sc->F) && (s7_is_aritable(sc, func, 3)))
+ set_has_let_arg(func);
return(func);
}
-/* (let () (define xxx 23) (define (hix) (set! xxx 24)) (hix) (set! (symbol-access 'xxx) (lambda (sym val) (format *stderr* "val: ~A~%" val) val)) (hix))
- * so set symbol-access before use!
+/* (let () (define xxx 23) (define (hix) (set! xxx 24)) (hix) (set! (symbol-setter 'xxx) (lambda (sym val) (format *stderr* "val: ~A~%" val) val)) (hix))
+ * so set symbol-setter before use!
*/
-static s7_pointer g_symbol_access(s7_scheme *sc, s7_pointer args)
+static s7_pointer g_symbol_setter(s7_scheme *sc, s7_pointer args)
{
- #define H_symbol_access "(symbol-access sym (env (curlet))) is the function called when the symbol is set!."
- #define Q_symbol_access s7_make_signature(sc, 3, s7_make_signature(sc, 2, sc->is_boolean_symbol, sc->is_procedure_symbol), sc->is_symbol_symbol, sc->is_let_symbol)
+ #define H_symbol_setter "(symbol-setter sym (env (curlet))) is the function called when the symbol is set!."
+ #define Q_symbol_setter s7_make_signature(sc, 3, s7_make_signature(sc, 2, sc->is_boolean_symbol, sc->is_procedure_symbol), sc->is_symbol_symbol, sc->is_let_symbol)
s7_pointer sym, p;
sym = car(args);
if (!is_symbol(sym))
- method_or_bust_one_arg(sc, sym, sc->symbol_access_symbol, args, T_SYMBOL);
+ method_or_bust_one_arg(sc, sym, sc->symbol_setter_symbol, args, T_SYMBOL);
if (is_keyword(sym))
return(sc->F);
@@ -39116,7 +39507,7 @@ static s7_pointer g_symbol_access(s7_scheme *sc, s7_pointer args)
else
{
if (!is_let(e))
- return(wrong_type_argument(sc, sc->symbol_access_symbol, 2, e, T_LET));
+ return(wrong_type_argument(sc, sc->symbol_setter_symbol, 2, e, T_LET));
old_e = sc->envir;
sc->envir = e;
p = find_symbol(sc, sym);
@@ -39128,24 +39519,23 @@ static s7_pointer g_symbol_access(s7_scheme *sc, s7_pointer args)
if (!is_slot(p))
return(sc->F);
- if (slot_has_accessor(p))
- return(slot_accessor(p));
+ if (slot_has_setter(p))
+ return(slot_setter(p));
return(sc->F);
}
-
-static s7_pointer g_symbol_set_access(s7_scheme *sc, s7_pointer args)
+static s7_pointer g_symbol_set_setter(s7_scheme *sc, s7_pointer args)
{
s7_pointer sym, func, p;
sym = car(args);
if (!is_symbol(sym)) /* no check method because no method name? */
- return(s7_wrong_type_arg_error(sc, "set! symbol-access", 1, sym, "a symbol"));
+ return(s7_wrong_type_arg_error(sc, "set! symbol-setter", 1, sym, "a symbol"));
if (is_keyword(sym))
- return(s7_wrong_type_arg_error(sc, "set! symbol-access", 1, sym, "a normal symbol (a keyword can't be set)"));
+ return(s7_wrong_type_arg_error(sc, "set! symbol-setter", 1, sym, "a normal symbol (a keyword can't be set)"));
- /* (set! (symbol-access sym) f) or (set! (symbol-access sym env) f) */
+ /* (set! (symbol-setter sym) f) or (set! (symbol-setter sym env) f) */
if (is_pair(cddr(args)))
{
s7_pointer e, old_e;
@@ -39156,7 +39546,7 @@ static s7_pointer g_symbol_set_access(s7_scheme *sc, s7_pointer args)
else
{
if (!is_let(e))
- return(s7_wrong_type_arg_error(sc, "set! symbol-access", 2, e, "a let"));
+ return(s7_wrong_type_arg_error(sc, "set! symbol-setter", 2, e, "a let"));
old_e = sc->envir;
sc->envir = e;
p = find_symbol(sc, sym);
@@ -39171,53 +39561,51 @@ static s7_pointer g_symbol_set_access(s7_scheme *sc, s7_pointer args)
if ((!is_procedure_or_macro(func)) &&
(func != sc->F))
- return(s7_wrong_type_arg_error(sc, "set! symbol-access", 3, func, "a function or #f"));
+ return(s7_wrong_type_arg_error(sc, "set! symbol-setter", 3, func, "a function or #f"));
if (!is_slot(p))
return(sc->F);
if (p == global_slot(sym))
{
- s7_symbol_set_access(sc, sym, func); /* special GC protection for global vars */
+ s7_symbol_set_setter(sc, sym, func); /* special GC protection for global vars */
return(func);
}
- slot_set_accessor(p, func);
+ slot_set_setter(p, func);
if (func != sc->F)
{
- slot_set_has_accessor(p);
- symbol_set_has_accessor(sym);
+ slot_set_has_setter(p);
+ if (s7_is_aritable(sc, func, 3))
+ set_has_let_arg(func);
+ symbol_set_has_setter(sym);
}
return(func);
}
-static s7_pointer bind_accessed_symbol(s7_scheme *sc, opcode_t op, s7_pointer symbol, s7_pointer new_value)
+static s7_pointer bind_symbol_with_setter(s7_scheme *sc, opcode_t op, s7_pointer symbol, s7_pointer new_value)
{
/* this refers to (define (sym ...)) and friends -- define cases
- * see call_accessor for the set! cases
+ * see call_setter for the set! cases
*/
s7_pointer func;
- func = g_symbol_access(sc, set_plist_2(sc, symbol, sc->envir));
+ func = g_symbol_setter(sc, set_plist_2(sc, symbol, sc->envir));
if (is_procedure_or_macro(func))
{
if (is_c_function(func))
{
- s7_pointer old_value;
- old_value = new_value;
set_car(sc->t2_1, symbol);
set_car(sc->t2_2, new_value);
new_value = c_function_call(func)(sc, sc->t2_1);
- if (new_value == sc->error_symbol)
- return(s7_error(sc, sc->error_symbol, set_elist_3(sc, s7_make_string_wrapper(sc, "can't bind ~S to ~S"), symbol, old_value)));
}
else
{
sc->args = list_2(sc, symbol, new_value);
push_stack(sc, op, sc->args, sc->code);
sc->code = func;
- return(sc->no_value); /* this means the accessor in set! needs to goto APPLY to get the new value */
+ return(sc->no_value); /* this means the setter in set! needs to goto APPLY to get the new value */
}
}
return(new_value);
@@ -40470,13 +40858,13 @@ s7_pointer s7_copy(s7_scheme *sc, s7_pointer args)
{
s7_pointer ns;
ns = s7_make_string_with_length(sc, string_value(source), string_length(source));
- if (is_byte_vector(source))
+ if (is_byte_vector_not_string(source))
set_byte_vector(ns);
return(ns);
}
case T_C_OBJECT:
- return(object_copy(sc, args));
+ return(copy_c_object(sc, args));
case T_RANDOM_STATE:
return(rng_copy(sc, args));
@@ -40552,8 +40940,8 @@ s7_pointer s7_copy(s7_scheme *sc, s7_pointer args)
return(source);
}
- have_indices = (is_pair(cddr(args)));
dest = cadr(args);
+ have_indices = (is_pair(cddr(args)));
if ((source == dest) && (!have_indices))
return(dest);
@@ -40580,13 +40968,14 @@ s7_pointer s7_copy(s7_scheme *sc, s7_pointer args)
break;
case T_STRING:
- if (is_byte_vector(source))
+ if (is_byte_vector_not_string(source))
get = byte_vector_getter;
else get = string_getter;
end = string_length(source);
break;
case T_HASH_TABLE:
+ if (source == dest) return(dest);
end = hash_table_entries(source);
break;
@@ -40594,10 +40983,10 @@ s7_pointer s7_copy(s7_scheme *sc, s7_pointer args)
check_method(sc, source, sc->copy_symbol, args);
{
s7_pointer x;
- x = object_copy(sc, args);
+ x = copy_c_object(sc, args);
if (x == dest)
return(dest);
- /* if object_copy can't handle args for some reason, it should return #f (not dest), and we'll soldier on... */
+ /* if copy_c_object can't handle args for some reason, it should return #f (not dest), and we'll soldier on... */
}
get = c_object_direct_ref(sc, source);
if (!get) get = c_object_getter;
@@ -40605,6 +40994,7 @@ s7_pointer s7_copy(s7_scheme *sc, s7_pointer args)
break;
case T_LET:
+ if (source == dest) return(dest);
check_method(sc, source, sc->copy_symbol, args);
if (source == sc->rootlet)
return(wrong_type_argument_with_type(sc, sc->copy_symbol, 1, source, s7_make_string_wrapper(sc, "a sequence other than the rootlet")));
@@ -40638,6 +41028,9 @@ s7_pointer s7_copy(s7_scheme *sc, s7_pointer args)
return(dest);
}
+ if ((is_immutable(dest)) && (dest != sc->nil))
+ return(s7_wrong_type_arg_error(sc, "copy", 2, dest, "a mutable object"));
+
switch (type(dest))
{
case T_PAIR:
@@ -40652,7 +41045,7 @@ s7_pointer s7_copy(s7_scheme *sc, s7_pointer args)
break;
case T_STRING:
- if (is_byte_vector(dest))
+ if (is_byte_vector_not_string(dest))
set = byte_vector_setter;
else set = string_setter;
dest_len = string_length(dest);
@@ -40792,10 +41185,19 @@ s7_pointer s7_copy(s7_scheme *sc, s7_pointer args)
if (start > 0)
for (i = 0; i < start; i++)
p = cdr(p);
- /* dest won't be a pair here -- the pair->pair case was caught above */
+ /* dest won't be a pair here if source != dest -- the pair->pair case was caught above */
if (is_string(dest)) set_string_error_source(sc, source);
- for (i = start, j = 0; i < end; i++, j++, p = cdr(p))
- set(sc, dest, j, car(p));
+ if (source == dest) /* here start != 0 (see above) */
+ {
+ s7_pointer dp;
+ for (dp = source, i = start; i < end; i++, p = cdr(p), dp = cdr(dp))
+ set_car(dp, car(p));
+ }
+ else
+ {
+ for (i = start, j = 0; i < end; i++, j++, p = cdr(p))
+ set(sc, dest, j, car(p));
+ }
return(dest);
}
@@ -40950,7 +41352,7 @@ s7_pointer s7_copy(s7_scheme *sc, s7_pointer args)
case T_STRING:
if (is_normal_vector(dest))
{
- if (is_byte_vector(source))
+ if (is_byte_vector_not_string(source))
{
for (i = start, j = 0; i < end; i++, j++)
vector_element(dest, j) = make_integer(sc, (s7_int)((unsigned char)string_value(source)[i]));
@@ -41032,7 +41434,7 @@ also accepts a string or vector argument."
np = make_string_uncopied_with_length(sc, dest, len);
dest += len;
while (source < end) *(--dest) = *source++;
- if (is_byte_vector(p))
+ if (is_byte_vector_not_string(p))
set_byte_vector(np);
}
break;
@@ -41132,11 +41534,6 @@ static s7_pointer g_reverse_in_place(s7_scheme *sc, s7_pointer args)
#define Q_reverse_in_place s7_make_signature(sc, 2, sc->is_sequence_symbol, sc->is_sequence_symbol)
p = car(args);
-
- if ((sc->safety > NO_SAFETY) &&
- (is_immutable(p)))
- return(s7_error(sc, sc->error_symbol, set_elist_2(sc, s7_make_string_wrapper(sc, "can't reverse! ~S (it is immutable)"), p)));
-
switch (type(p))
{
case T_NIL:
@@ -41145,6 +41542,8 @@ static s7_pointer g_reverse_in_place(s7_scheme *sc, s7_pointer args)
case T_PAIR:
{
s7_pointer np;
+ if (is_immutable(p))
+ return(immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->reverseb_symbol, p)));
np = reverse_in_place(sc, sc->nil, p);
if (is_null(np))
return(simple_wrong_type_argument_with_type(sc, sc->reverseb_symbol, p, a_proper_list_string));
@@ -41163,6 +41562,8 @@ static s7_pointer g_reverse_in_place(s7_scheme *sc, s7_pointer args)
{
int32_t len;
char *s1, *s2;
+ if (is_immutable(p))
+ return(immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->reverseb_symbol, p)));
len = string_length(p);
if (len < 2) return(p);
s1 = string_value(p);
@@ -41175,6 +41576,8 @@ static s7_pointer g_reverse_in_place(s7_scheme *sc, s7_pointer args)
{
s7_int len;
s7_int *s1, *s2;
+ if (is_immutable(p))
+ return(immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->reverseb_symbol, p)));
len = vector_length(p);
if (len < 2) return(p);
s1 = int_vector_elements(p);
@@ -41187,6 +41590,8 @@ static s7_pointer g_reverse_in_place(s7_scheme *sc, s7_pointer args)
{
s7_int len;
s7_double *s1, *s2;
+ if (is_immutable(p))
+ return(immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->reverseb_symbol, p)));
len = vector_length(p);
if (len < 2) return(p);
s1 = float_vector_elements(p);
@@ -41199,6 +41604,8 @@ static s7_pointer g_reverse_in_place(s7_scheme *sc, s7_pointer args)
{
s7_int len;
s7_pointer *s1, *s2;
+ if (is_immutable(p))
+ return(immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->reverseb_symbol, p)));
len = vector_length(p);
if (len < 2) return(p);
s1 = vector_elements(p);
@@ -41208,6 +41615,8 @@ static s7_pointer g_reverse_in_place(s7_scheme *sc, s7_pointer args)
break;
default:
+ if (is_immutable(p))
+ return(immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->reverseb_symbol, p)));
if ((is_simple_sequence(p)) &&
(!has_methods(p)))
return(simple_wrong_type_argument_with_type(sc, sc->reverseb_symbol, p, s7_make_string_wrapper(sc, "a vector, string, or list")));
@@ -41226,9 +41635,8 @@ static s7_pointer pair_fill(s7_scheme *sc, s7_pointer args)
s7_int i, start = 0, end, len;
obj = car(args);
- if ((sc->safety > NO_SAFETY) &&
- (is_immutable_pair(obj)))
- return(s7_error(sc, sc->error_symbol, set_elist_2(sc, s7_make_string_wrapper(sc, "can't fill! ~S (it is immutable)"), obj)));
+ if (is_immutable_pair(obj))
+ return(immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->fill_symbol, obj)));
val = cadr(args);
len = s7_list_length(sc, obj);
@@ -41434,7 +41842,7 @@ static s7_pointer string_append(s7_scheme *sc, s7_pointer args)
len = total_sequence_length(sc, args, sc->string_append_symbol, (is_byte_vector(car(args))) ? T_INTEGER : T_CHARACTER);
new_str = make_empty_string(sc, len, 0);
- if (is_byte_vector(car(args)))
+ if (is_byte_vector_not_string(car(args)))
set_byte_vector(new_str);
if (len > 0)
@@ -41444,7 +41852,8 @@ static s7_pointer string_append(s7_scheme *sc, s7_pointer args)
sc->temp9 = new_str;
sv = make_string_wrapper_with_length(sc, (const char *)string_value(new_str), len);
- if (is_byte_vector(new_str))
+ typeflag(sv) &= (~T_IMMUTABLE); /* we are mutating the string below */
+ if (is_byte_vector_not_string(new_str))
set_byte_vector(sv);
sc->temp10 = sv;
@@ -41465,6 +41874,7 @@ static s7_pointer string_append(s7_scheme *sc, s7_pointer args)
set_plist_2(sc, sc->nil, sc->nil);
sc->temp9 = sc->nil;
sc->temp10 = sc->nil;
+ typeflag(sv) |= T_IMMUTABLE; /* just in case GC cares? */
string_length(sv) = 0;
}
@@ -41566,7 +41976,7 @@ static s7_pointer object_to_list(s7_scheme *sc, s7_pointer obj)
return(s7_vector_to_list(sc, obj));
case T_STRING:
- if (is_byte_vector(obj))
+ if (is_byte_vector_not_string(obj))
return(byte_vector_to_list(sc, string_value(obj), string_length(obj)));
return(s7_string_to_list(sc, string_value(obj), string_length(obj)));
@@ -41751,7 +42161,7 @@ static s7_pointer g_object_to_let(s7_scheme *sc, s7_pointer args)
case T_STRING:
return(s7_inlet(sc, s7_list(sc, 6, sc->value_symbol, obj,
- sc->type_symbol, (is_byte_vector(obj)) ? sc->is_byte_vector_symbol : sc->is_string_symbol,
+ sc->type_symbol, (is_byte_vector_not_string(obj)) ? sc->is_byte_vector_symbol : sc->is_string_symbol,
sc->length_symbol, s7_length(sc, obj))));
case T_PAIR:
@@ -41949,10 +42359,7 @@ static s7_pointer g_object_to_let(s7_scheme *sc, s7_pointer args)
sc->type_symbol, sc->is_c_object_symbol,
s7_make_symbol(sc, "c-object-type"), s7_make_integer(sc, c_object_type(obj)),
s7_make_symbol(sc, "c-object-let"), clet,
- s7_make_symbol(sc, "class"), c_object_scheme_name(sc, obj)));
- /* TODO: local 'let entry causes trouble -- it's an error now in s7_varlet
- * also how to examine the c_object_type table?
- */
+ s7_make_symbol(sc, "class"), c_object_type_to_let(sc, obj)));
if ((is_let(clet)) &&
((has_methods(clet)) || (has_methods(obj))))
{
@@ -42011,17 +42418,17 @@ static s7_pointer g_object_to_let(s7_scheme *sc, s7_pointer args)
const char* doc;
uint32_t gc_loc;
let = s7_inlet(sc, s7_list(sc, 6, sc->value_symbol, obj,
- sc->type_symbol, (is_procedure(obj)) ? sc->is_procedure_symbol : sc->is_macro_symbol,
+ sc->type_symbol, (is_t_procedure(obj)) ? sc->is_procedure_symbol : sc->is_macro_symbol,
s7_make_symbol(sc, "arity"), s7_arity(sc, obj)));
gc_loc = s7_gc_protect(sc, let);
- sig = s7_procedure_signature(sc, obj);
+ sig = signature(sc, obj);
if (is_pair(sig))
- s7_varlet(sc, let, sc->signature_symbol, sig);
+ s7_varlet(sc, let, sc->local_signature_symbol, sig);
- doc = s7_procedure_documentation(sc, obj);
+ doc = s7_documentation(sc, obj);
if (doc)
- s7_varlet(sc, let, sc->documentation_symbol, s7_make_string(sc, doc));
+ s7_varlet(sc, let, sc->local_documentation_symbol, s7_make_string(sc, doc));
if (is_let(closure_let(obj)))
{
@@ -42037,7 +42444,7 @@ static s7_pointer g_object_to_let(s7_scheme *sc, s7_pointer args)
}
if (closure_setter(obj) != sc->F)
- s7_varlet(sc, let, s7_make_symbol(sc, "setter"), closure_setter(obj));
+ s7_varlet(sc, let, sc->local_setter_symbol, closure_setter(obj));
s7_varlet(sc, let, s7_make_symbol(sc, "source"),
append_in_place(sc, list_2(sc, (is_closure_star(obj)) ? sc->lambda_star_symbol : sc->lambda_symbol,
@@ -42057,19 +42464,19 @@ static s7_pointer g_object_to_let(s7_scheme *sc, s7_pointer args)
s7_pointer let, sig;
const char* doc;
let = s7_inlet(sc, s7_list(sc, 6, sc->value_symbol, obj,
- sc->type_symbol, (is_procedure(obj)) ? sc->is_procedure_symbol : sc->is_macro_symbol,
+ sc->type_symbol, (is_t_procedure(obj)) ? sc->is_procedure_symbol : sc->is_macro_symbol,
s7_make_symbol(sc, "arity"), s7_arity(sc, obj)));
- sig = s7_procedure_signature(sc, obj);
+ sig = signature(sc, obj);
if (is_pair(sig))
- s7_varlet(sc, let, sc->signature_symbol, sig);
+ s7_varlet(sc, let, sc->local_signature_symbol, sig);
- doc = s7_procedure_documentation(sc, obj);
+ doc = s7_documentation(sc, obj);
if (doc)
- s7_varlet(sc, let, sc->documentation_symbol, s7_make_string(sc, doc));
+ s7_varlet(sc, let, sc->local_documentation_symbol, s7_make_string(sc, doc));
if (c_function_setter(obj) != sc->F)
- s7_varlet(sc, let, s7_make_symbol(sc, "setter"), c_function_setter(obj));
+ s7_varlet(sc, let, sc->local_setter_symbol, c_function_setter(obj));
return(let);
}
@@ -42636,7 +43043,7 @@ static const char *type_name(s7_scheme *sc, s7_pointer arg, int32_t article)
switch (unchecked_type(arg))
{
case T_C_OBJECT:
- return(make_type_name(sc, sc->c_object_types[c_object_type(arg)]->name, article));
+ return(make_type_name(sc, string_value(c_object_scheme_name(sc, arg)), article));
case T_INPUT_PORT:
return(make_type_name(sc, (is_file_port(arg)) ? "input file port" : ((is_string_port(arg)) ? "input string port" : "input port"), article));
@@ -42768,7 +43175,7 @@ s7_pointer s7_out_of_range_error(s7_scheme *sc, const char *caller, int32_t arg_
s7_pointer s7_wrong_number_of_args_error(s7_scheme *sc, const char *caller, s7_pointer args)
{
- return(s7_error(sc, sc->wrong_number_of_args_symbol, set_elist_2(sc, s7_make_string_wrapper(sc, caller), args))); /* "caller" includes the format directives */
+ return(s7_error(sc, sc->wrong_number_of_args_symbol, set_elist_2(sc, s7_make_string_wrapper(sc, caller), args))); /* "caller" includes the format directives */
}
@@ -44615,7 +45022,7 @@ static s7_pointer implicit_index(s7_scheme *sc, s7_pointer obj, s7_pointer indic
case T_STRING: /* (#("12" "34") 0 1) -> #\2 */
if (is_null(cdr(indices)))
{
- if (is_byte_vector(obj)) /* ((vector (byte-vector 1)) 0 0) */
+ if (is_byte_vector_not_string(obj)) /* ((vector (byte-vector 1)) 0 0) */
return(small_int((uint32_t)(character(string_ref_1(sc, obj, car(indices))))));
return(string_ref_1(sc, obj, car(indices)));
}
@@ -44789,9 +45196,17 @@ static s7_function all_x_function[OPT_MAX_DEFINED];
static bool is_all_x_safe(s7_scheme *sc, s7_pointer p)
{
- return((!is_pair(p)) ||
- ((is_optimized(p)) && (is_all_x_op(optimize_op(p)))) ||
- ((car(p) == sc->quote_symbol) && (is_pair(cdr(p))) && (is_null(cddr(p))))) ; /* (if #t (quote . -1)) */
+ if (!is_pair(p)) return(true);
+ if (is_optimized(p))
+ {
+ if (is_all_x_op(optimize_op(p)))
+ return(true);
+ if (optimize_op(p) == HOP_SAFE_C_AA)
+ return((!is_pair(cadr(p))) || (!is_pair(caddr(p))));
+ }
+ return((car(p) == sc->quote_symbol) &&
+ (is_pair(cdr(p))) &&
+ (is_null(cddr(p)))) ; /* (if #t (quote . -1)) */
}
static int32_t all_x_count(s7_scheme *sc, s7_pointer x)
@@ -44813,23 +45228,6 @@ static s7_pointer apply_boolean_method(s7_scheme *sc, s7_pointer obj, s7_pointer
return(s7_apply_function(sc, func, list_1(sc, obj)));
}
-#define all_x_bool(Sc, Checker, Method, Arg1) \
- { \
- s7_pointer Arg = Arg1; \
- if (Checker(Arg)) return(Sc->T); \
- if (!has_methods(Arg)) return(sc->F); \
- return(apply_boolean_method(sc, Arg, Method)); \
- }
-
-#define all_x_not_bool(Sc, Checker, Method, Arg1) \
- { \
- s7_pointer Arg = Arg1; \
- if (Checker(Arg)) return(Sc->F); \
- if (!has_methods(Arg)) return(sc->T); \
- return((apply_boolean_method(sc, Arg, Method) == sc->F) ? sc->T : sc->F); \
- }
-
-
/* arg here is the full expression */
static s7_pointer all_x_c(s7_scheme *sc, s7_pointer arg) {return(arg);}
static s7_pointer all_x_q(s7_scheme *sc, s7_pointer arg) {return(cadr(arg));}
@@ -44990,66 +45388,62 @@ static s7_pointer local_x_cadr_s(s7_scheme *sc, s7_pointer arg)
static s7_pointer all_x_is_null_s(s7_scheme *sc, s7_pointer arg)
{
- all_x_bool(sc, is_null, sc->is_null_symbol, find_symbol_unchecked(sc, cadr(arg)));
+ return((is_null(find_symbol_unchecked(sc, cadr(arg)))) ? sc->T : sc->F);
}
static s7_pointer local_x_is_null_s(s7_scheme *sc, s7_pointer arg)
{
- all_x_bool(sc, is_null, sc->is_null_symbol, local_symbol_value(cadr(arg)));
+ return((is_null(local_symbol_value(cadr(arg)))) ? sc->T : sc->F);
}
static s7_pointer all_x_is_symbol_s(s7_scheme *sc, s7_pointer arg)
{
- all_x_bool(sc, is_symbol, sc->is_symbol_symbol, find_symbol_unchecked(sc, cadr(arg)));
+ return((is_symbol(find_symbol_unchecked(sc, cadr(arg)))) ? sc->T : sc->F);
}
static s7_pointer local_x_is_symbol_s(s7_scheme *sc, s7_pointer arg)
{
- all_x_bool(sc, is_symbol, sc->is_symbol_symbol, local_symbol_value(cadr(arg)));
+ return((is_symbol(local_symbol_value(cadr(arg)))) ? sc->T : sc->F);
}
static s7_pointer all_x_is_pair_s(s7_scheme *sc, s7_pointer arg)
{
- all_x_bool(sc, is_pair, sc->is_pair_symbol, find_symbol_unchecked(sc, cadr(arg)));
+ return((is_pair(find_symbol_unchecked(sc, cadr(arg)))) ? sc->T : sc->F);
}
static s7_pointer local_x_is_pair_s(s7_scheme *sc, s7_pointer arg)
{
- all_x_bool(sc, is_pair, sc->is_pair_symbol, local_symbol_value(cadr(arg)));
+ return((is_pair(local_symbol_value(cadr(arg)))) ? sc->T : sc->F);
}
static s7_pointer all_x_is_keyword_s(s7_scheme *sc, s7_pointer arg)
{
- all_x_bool(sc, is_keyword, sc->is_keyword_symbol, find_symbol_unchecked(sc, cadr(arg)));
+ return((is_keyword(find_symbol_unchecked(sc, cadr(arg)))) ? sc->T : sc->F);
}
static s7_pointer all_x_is_integer_s(s7_scheme *sc, s7_pointer arg)
{
- all_x_bool(sc, is_integer, sc->is_integer_symbol, find_symbol_unchecked(sc, cadr(arg)));
+ return((is_integer(find_symbol_unchecked(sc, cadr(arg)))) ? sc->T : sc->F);
}
static s7_pointer all_x_is_procedure_s(s7_scheme *sc, s7_pointer arg)
{
- all_x_bool(sc, is_procedure, sc->is_procedure_symbol, find_symbol_unchecked(sc, cadr(arg)));
+ return((is_procedure(find_symbol_unchecked(sc, cadr(arg)))) ? sc->T : sc->F);
}
static s7_pointer all_x_is_string_s(s7_scheme *sc, s7_pointer arg)
{
- all_x_bool(sc, is_string, sc->is_string_symbol, find_symbol_unchecked(sc, cadr(arg)));
+ return((is_string(find_symbol_unchecked(sc, cadr(arg)))) ? sc->T : sc->F);
}
static s7_pointer all_x_is_vector_s(s7_scheme *sc, s7_pointer arg)
{
- all_x_bool(sc, s7_is_vector, sc->is_vector_symbol, find_symbol_unchecked(sc, cadr(arg)));
+ return((s7_is_vector(find_symbol_unchecked(sc, cadr(arg)))) ? sc->T : sc->F);
}
static s7_pointer all_x_is_proper_list_s(s7_scheme *sc, s7_pointer arg)
{
- s7_pointer lst;
- lst = find_symbol_unchecked(sc, cadr(arg));
- if (s7_is_proper_list(sc, lst)) return(sc->T);
- if (!has_methods(lst)) return(sc->F);
- return(apply_boolean_method(sc, lst, sc->is_proper_list_symbol));
+ return((s7_is_proper_list(sc, find_symbol_unchecked(sc, cadr(arg)))) ? sc->T : sc->F);
}
static s7_pointer all_x_not_s(s7_scheme *sc, s7_pointer arg)
@@ -45059,12 +45453,12 @@ static s7_pointer all_x_not_s(s7_scheme *sc, s7_pointer arg)
static s7_pointer all_x_not_is_pair_s(s7_scheme *sc, s7_pointer arg)
{
- all_x_not_bool(sc, is_pair, sc->is_pair_symbol, find_symbol_unchecked(sc, opt_sym3(arg)));
+ return((is_pair(find_symbol_unchecked(sc, opt_sym3(arg)))) ? sc->F : sc->T);
}
static s7_pointer local_x_not_is_pair_s(s7_scheme *sc, s7_pointer arg)
{
- all_x_not_bool(sc, is_pair, sc->is_pair_symbol, local_symbol_value(opt_sym3(arg)));
+ return((is_pair(local_symbol_value(opt_sym3(arg)))) ? sc->F : sc->T);
}
static s7_pointer all_x_c_sc(s7_scheme *sc, s7_pointer arg)
@@ -45178,48 +45572,64 @@ static s7_pointer all_x_c_cq(s7_scheme *sc, s7_pointer arg)
static s7_pointer all_x_c_sss(s7_scheme *sc, s7_pointer arg)
{
set_car(sc->t3_1, find_symbol_unchecked(sc, cadr(arg)));
- set_car(sc->t3_2, find_symbol_unchecked(sc, caddr(arg)));
- set_car(sc->t3_3, find_symbol_unchecked(sc, cadddr(arg)));
+ set_car(sc->t3_2, find_symbol_unchecked(sc, opt_sym1(cdr(arg)))); /* caddr(arg) */
+ set_car(sc->t3_3, find_symbol_unchecked(sc, opt_sym2(cdr(arg)))); /* cadddr(arg) */
return(c_call(arg)(sc, sc->t3_1));
}
static s7_pointer local_x_c_sss(s7_scheme *sc, s7_pointer arg)
{
set_car(sc->t3_1, local_symbol_value(cadr(arg)));
- set_car(sc->t3_2, local_symbol_value(caddr(arg)));
- set_car(sc->t3_3, local_symbol_value(cadddr(arg)));
+ set_car(sc->t3_2, local_symbol_value(opt_sym1(cdr(arg)))); /* caddr(arg) */
+ set_car(sc->t3_3, local_symbol_value(opt_sym2(cdr(arg)))); /* cadddr(arg) */
return(c_call(arg)(sc, sc->t3_1));
}
static s7_pointer all_x_c_scs(s7_scheme *sc, s7_pointer arg)
{
set_car(sc->t3_1, find_symbol_unchecked(sc, cadr(arg)));
- set_car(sc->t3_3, find_symbol_unchecked(sc, cadddr(arg)));
- set_car(sc->t3_2, caddr(arg));
+ set_car(sc->t3_3, find_symbol_unchecked(sc, opt_sym2(cdr(arg)))); /* cadddr(arg) */
+ set_car(sc->t3_2, opt_con1(cdr(arg))); /* caddr(arg) */
+ return(c_call(arg)(sc, sc->t3_1));
+}
+
+static s7_pointer all_x_c_scc(s7_scheme *sc, s7_pointer arg)
+{
+ set_car(sc->t3_1, find_symbol_unchecked(sc, cadr(arg)));
+ set_car(sc->t3_2, opt_con1(cdr(arg))); /* caddr(arg) */
+ set_car(sc->t3_3, opt_con2(cdr(arg))); /* cadddr(arg) */
return(c_call(arg)(sc, sc->t3_1));
}
static s7_pointer all_x_c_css(s7_scheme *sc, s7_pointer arg)
{
- set_car(sc->t3_2, find_symbol_unchecked(sc, caddr(arg)));
- set_car(sc->t3_3, find_symbol_unchecked(sc, cadddr(arg)));
+ set_car(sc->t3_2, find_symbol_unchecked(sc, opt_sym1(cdr(arg)))); /* caddr(arg) */
+ set_car(sc->t3_3, find_symbol_unchecked(sc, opt_sym2(cdr(arg)))); /* cadddr(arg) */
set_car(sc->t3_1, cadr(arg));
return(c_call(arg)(sc, sc->t3_1));
}
static s7_pointer all_x_c_csc(s7_scheme *sc, s7_pointer arg)
{
- set_car(sc->t3_2, find_symbol_unchecked(sc, caddr(arg)));
+ set_car(sc->t3_2, find_symbol_unchecked(sc, opt_sym1(cdr(arg)))); /* caddr(arg) */
set_car(sc->t3_1, cadr(arg));
- set_car(sc->t3_3, cadddr(arg));
+ set_car(sc->t3_3, opt_con2(cdr(arg))); /* cadddr(arg) */
+ return(c_call(arg)(sc, sc->t3_1));
+}
+
+static s7_pointer all_x_c_ccs(s7_scheme *sc, s7_pointer arg)
+{
+ set_car(sc->t3_3, find_symbol_unchecked(sc, opt_sym1(cdr(arg)))); /* cadddr */
+ set_car(sc->t3_1, cadr(arg));
+ set_car(sc->t3_2, opt_con2(cdr(arg))); /* caddr(arg) */
return(c_call(arg)(sc, sc->t3_1));
}
static s7_pointer all_x_c_ssc(s7_scheme *sc, s7_pointer arg)
{
set_car(sc->t3_1, find_symbol_unchecked(sc, cadr(arg)));
- set_car(sc->t3_2, find_symbol_unchecked(sc, caddr(arg)));
- set_car(sc->t3_3, cadddr(arg));
+ set_car(sc->t3_2, find_symbol_unchecked(sc, opt_sym1(cdr(arg)))); /* caddr(arg) */
+ set_car(sc->t3_3, opt_con2(cdr(arg))); /* cadddr(arg) */
return(c_call(arg)(sc, sc->t3_1));
}
@@ -45871,85 +46281,69 @@ static s7_pointer all_x_c_a(s7_scheme *sc, s7_pointer arg)
static s7_pointer all_x_c_ssa(s7_scheme *sc, s7_pointer arg)
{
- int32_t tx;
- tx = next_tx(sc);
- sc->t_temps[tx] = c_call(cdddr(arg))(sc, cadddr(arg));
+ set_car(sc->t3_3, c_call(cdddr(arg))(sc, cadddr(arg)));
set_car(sc->t3_1, find_symbol_unchecked(sc, cadr(arg)));
set_car(sc->t3_2, find_symbol_unchecked(sc, caddr(arg)));
- set_car(sc->t3_3, sc->t_temps[tx]);
return(c_call(arg)(sc, sc->t3_1));
}
static s7_pointer all_x_c_sas(s7_scheme *sc, s7_pointer arg)
{
- int32_t tx;
- tx = next_tx(sc);
- sc->t_temps[tx] = c_call(cddr(arg))(sc, caddr(arg));
+ set_car(sc->t3_2, c_call(cddr(arg))(sc, caddr(arg)));
set_car(sc->t3_1, find_symbol_unchecked(sc, cadr(arg)));
set_car(sc->t3_3, find_symbol_unchecked(sc, cadddr(arg)));
- set_car(sc->t3_2, sc->t_temps[tx]);
return(c_call(arg)(sc, sc->t3_1));
}
static s7_pointer all_x_c_sca(s7_scheme *sc, s7_pointer arg)
{
- int32_t tx;
- tx = next_tx(sc);
- sc->t_temps[tx] = c_call(cdddr(arg))(sc, cadddr(arg));
+ set_car(sc->t3_3, c_call(cdddr(arg))(sc, cadddr(arg)));
set_car(sc->t3_1, find_symbol_unchecked(sc, cadr(arg)));
set_car(sc->t3_2, caddr(arg));
- set_car(sc->t3_3, sc->t_temps[tx]);
return(c_call(arg)(sc, sc->t3_1));
}
static s7_pointer all_x_c_csa(s7_scheme *sc, s7_pointer arg)
{
- int32_t tx;
- tx = next_tx(sc);
- sc->t_temps[tx] = c_call(cdddr(arg))(sc, cadddr(arg));
+ set_car(sc->t3_3, c_call(cdddr(arg))(sc, cadddr(arg)));
set_car(sc->t3_1, cadr(arg));
set_car(sc->t3_2, find_symbol_unchecked(sc, caddr(arg)));
- set_car(sc->t3_3, sc->t_temps[tx]);
return(c_call(arg)(sc, sc->t3_1));
}
static s7_pointer all_x_c_ca(s7_scheme *sc, s7_pointer arg)
{
- int32_t tx;
- tx = next_tx(sc);
- sc->t_temps[tx] = c_call(cddr(arg))(sc, caddr(arg));
+ set_car(sc->t2_2, c_call(cddr(arg))(sc, caddr(arg)));
set_car(sc->t2_1, cadr(arg));
- set_car(sc->t2_2, sc->t_temps[tx]);
return(c_call(arg)(sc, sc->t2_1));
}
static s7_pointer all_x_c_ac(s7_scheme *sc, s7_pointer arg)
{
- int32_t tx;
- tx = next_tx(sc);
- sc->t_temps[tx] = c_call(cdr(arg))(sc, cadr(arg));
+ set_car(sc->t2_1, c_call(cdr(arg))(sc, cadr(arg)));
set_car(sc->t2_2, caddr(arg));
- set_car(sc->t2_1, sc->t_temps[tx]);
return(c_call(arg)(sc, sc->t2_1));
}
static s7_pointer all_x_c_sa(s7_scheme *sc, s7_pointer arg)
{
- int32_t tx;
- tx = next_tx(sc);
- sc->t_temps[tx] = c_call(cddr(arg))(sc, caddr(arg));
+ set_car(sc->t2_2, c_call(cddr(arg))(sc, caddr(arg)));
set_car(sc->t2_1, find_symbol_checked(sc, cadr(arg)));
- set_car(sc->t2_2, sc->t_temps[tx]);
return(c_call(arg)(sc, sc->t2_1));
}
static s7_pointer all_x_c_as(s7_scheme *sc, s7_pointer arg)
{
- int32_t tx;
- tx = next_tx(sc);
- sc->t_temps[tx] = c_call(cdr(arg))(sc, cadr(arg));
+ set_car(sc->t2_1, c_call(cdr(arg))(sc, cadr(arg)));
+ set_car(sc->t2_2, find_symbol_checked(sc, caddr(arg)));
+ return(c_call(arg)(sc, sc->t2_1));
+}
+
+static s7_pointer all_x_c_opaq_s(s7_scheme *sc, s7_pointer arg)
+{
+ set_car(sc->t1_1, c_call(cdadr(arg))(sc, cadadr(arg)));
+ set_car(sc->t2_1, c_call(cadr(arg))(sc, sc->t1_1));
set_car(sc->t2_2, find_symbol_checked(sc, caddr(arg)));
- set_car(sc->t2_1, sc->t_temps[tx]);
return(c_call(arg)(sc, sc->t2_1));
}
@@ -46111,11 +46505,14 @@ static void all_x_function_init(void)
all_x_function[HOP_SAFE_C_SSC] = all_x_c_ssc;
all_x_function[HOP_SAFE_C_SSS] = all_x_c_sss;
all_x_function[HOP_SAFE_C_SCS] = all_x_c_scs;
+ all_x_function[HOP_SAFE_C_SCC] = all_x_c_scc;
all_x_function[HOP_SAFE_C_CSS] = all_x_c_css;
all_x_function[HOP_SAFE_C_CSC] = all_x_c_csc;
+ all_x_function[HOP_SAFE_C_CCS] = all_x_c_ccs;
all_x_function[HOP_SAFE_CLOSURE_S_C] = all_x_closure_s;
all_x_function[HOP_SAFE_CLOSURE_A_C] = all_x_closure_a;
all_x_function[HOP_SAFE_C_ALL_S] = all_x_c_all_s;
+ all_x_function[HOP_SAFE_C_opAq_S] = all_x_c_opaq_s;
all_x_function[HOP_SAFE_QUOTE] = all_x_q;
}
@@ -46134,6 +46531,7 @@ static s7_function all_x_eval(s7_scheme *sc, s7_pointer holder, s7_pointer e, sa
{
s7_pointer arg;
arg = car(holder);
+ /* fprintf(stderr, "all_x_eval %s\n", DISPLAY_80(arg)); */
if (is_pair(arg))
{
if (is_optimized(arg))
@@ -46141,12 +46539,14 @@ static s7_function all_x_eval(s7_scheme *sc, s7_pointer holder, s7_pointer e, sa
switch (optimize_op(arg))
{
case HOP_SAFE_C_C:
- if (c_call(arg) == g_not_is_pair_s)
+ if ((c_call(arg) == g_not_is_pair_s) &&
+ (is_global(sc->is_pair_symbol)))
{
set_opt_sym3(arg, cadadr(arg));
return((is_local_symbol(cdadr(arg))) ? local_x_not_is_pair_s : all_x_not_is_pair_s);
}
- if (c_call(arg) == g_is_pair_cdr_s)
+ if ((c_call(arg) == g_is_pair_cdr_s) &&
+ (is_global(sc->is_pair_symbol)))
{
set_opt_sym2(cdr(arg), cadadr(arg));
return((is_local_symbol(cdadr(arg))) ? local_x_is_pair_cdr_s : all_x_is_pair_cdr_s);
@@ -46186,16 +46586,19 @@ static s7_function all_x_eval(s7_scheme *sc, s7_pointer holder, s7_pointer e, sa
if (car(arg) == sc->cdr_symbol) return((is_local) ? local_x_cdr_s : all_x_cdr_s);
if (car(arg) == sc->car_symbol) return((is_local) ? local_x_car_s : all_x_car_s);
if (car(arg) == sc->cadr_symbol) return((is_local) ? local_x_cadr_s : all_x_cadr_s);
- if (car(arg) == sc->is_null_symbol) return((is_local) ? local_x_is_null_s : all_x_is_null_s);
- if (car(arg) == sc->is_pair_symbol) return((is_local) ? local_x_is_pair_s : all_x_is_pair_s);
- if (car(arg) == sc->is_symbol_symbol) return((is_local) ? local_x_is_symbol_s : all_x_is_symbol_s);
- if (car(arg) == sc->is_keyword_symbol) return(all_x_is_keyword_s);
- if (car(arg) == sc->is_integer_symbol) return(all_x_is_integer_s);
- if (car(arg) == sc->is_procedure_symbol) return(all_x_is_procedure_s);
- if (car(arg) == sc->is_string_symbol) return(all_x_is_string_s);
- if (car(arg) == sc->is_vector_symbol) return(all_x_is_vector_s);
- if (car(arg) == sc->is_proper_list_symbol) return(all_x_is_proper_list_s);
- if (car(arg) == sc->not_symbol) return(all_x_not_s);
+ if (is_global(car(arg)))
+ {
+ if (car(arg) == sc->is_null_symbol) return((is_local) ? local_x_is_null_s : all_x_is_null_s);
+ if (car(arg) == sc->is_pair_symbol) return((is_local) ? local_x_is_pair_s : all_x_is_pair_s);
+ if (car(arg) == sc->is_symbol_symbol) return((is_local) ? local_x_is_symbol_s : all_x_is_symbol_s);
+ if (car(arg) == sc->is_keyword_symbol) return(all_x_is_keyword_s);
+ if (car(arg) == sc->is_integer_symbol) return(all_x_is_integer_s);
+ if (car(arg) == sc->is_procedure_symbol) return(all_x_is_procedure_s);
+ if (car(arg) == sc->is_string_symbol) return(all_x_is_string_s);
+ if (car(arg) == sc->is_vector_symbol) return(all_x_is_vector_s);
+ if (car(arg) == sc->is_proper_list_symbol) return(all_x_is_proper_list_s);
+ if (car(arg) == sc->not_symbol) return(all_x_not_s);
+ }
return((is_local) ? local_x_c_s : all_x_c_s);
}
@@ -46203,9 +46606,12 @@ static s7_function all_x_eval(s7_scheme *sc, s7_pointer holder, s7_pointer e, sa
if (car(arg) == sc->cdr_symbol) return(local_x_cdr_s);
if (car(arg) == sc->car_symbol) return(local_x_car_s);
if (car(arg) == sc->cadr_symbol) return(local_x_cadr_s);
- if (car(arg) == sc->is_null_symbol) return(local_x_is_null_s);
- if (car(arg) == sc->is_pair_symbol) return(local_x_is_pair_s);
- if (car(arg) == sc->is_symbol_symbol) return(local_x_is_symbol_s);
+ if (is_global(car(arg)))
+ {
+ if (car(arg) == sc->is_null_symbol) return(local_x_is_null_s);
+ if (car(arg) == sc->is_pair_symbol) return(local_x_is_pair_s);
+ if (car(arg) == sc->is_symbol_symbol) return(local_x_is_symbol_s);
+ }
return(local_x_c_s);
case HOP_SAFE_C_opSq:
@@ -46288,14 +46694,19 @@ static s7_function all_x_eval(s7_scheme *sc, s7_pointer holder, s7_pointer e, sa
return(all_x_c_opsq_opsq);
case HOP_SAFE_C_AA:
- if (is_symbol(cadr(arg)))
- return(all_x_c_sa);
- if (is_symbol(caddr(arg)))
- return(all_x_c_as);
+ /* fprintf(stderr, "aa: %s\n", DISPLAY(arg)); */
if (!is_pair(cadr(arg)))
- return(all_x_c_ca);
+ {
+ if (is_symbol(cadr(arg)))
+ return(all_x_c_sa);
+ return(all_x_c_ca);
+ }
if (!is_pair(caddr(arg)))
- return(all_x_c_ac);
+ {
+ if (is_symbol(caddr(arg)))
+ return(all_x_c_as);
+ return(all_x_c_ac);
+ }
return(NULL);
case HOP_SAFE_CLOSURE_S_C:
@@ -46335,7 +46746,8 @@ static s7_function all_x_eval(s7_scheme *sc, s7_pointer holder, s7_pointer e, sa
/* -------------------------------------------------------------------------------- */
enum {o_d_v, o_d_vd, o_d_vdd, o_d_vid, o_d_id, o_d_pi, o_d_ip, o_d_pd, o_d_pid, o_d, o_d_d, o_d_dd, o_d_ddd, o_d_dddd,
- o_i_d, o_i_i, o_i_ii, o_i_iii, o_i_p, o_i_pi, o_i_pii, o_d_p, o_b_p, o_b_pp, o_b_pp_direct, o_b_pi, o_b_ii, o_b_dd,
+ o_i_d, o_i_i, o_i_ii, o_i_iii, o_i_p, o_i_pi, o_i_pii, o_d_p,
+ o_b_p, o_b_p_direct, o_b_pp, o_b_pp_direct, o_b_pi, o_b_ii, o_b_dd,
o_p, o_p_p, o_p_ii, o_p_dd,
o_p_pp, o_p_pp_direct, o_p_ppp, o_p_ppp_direct, o_p_pi, o_p_pi_direct, o_p_ppi, o_p_pip, o_p_pip_direct, o_b_i, o_b_d};
@@ -46447,6 +46859,9 @@ static s7_b_d_t s7_b_d_function(s7_pointer f) {return((s7_b_d_t)opt_func(f, o_b_
static void s7_set_b_i_function(s7_pointer f, s7_b_i_t df) {add_opt_func(f, o_b_i, (void *)df);}
static s7_b_i_t s7_b_i_function(s7_pointer f) {return((s7_b_i_t)opt_func(f, o_b_i));}
+static void s7_set_b_p_direct_function(s7_pointer f, s7_b_p_t df) {add_opt_func(f, o_b_p_direct, (void *)df);}
+static s7_b_p_t s7_b_p_direct_function(s7_pointer f) {return((s7_b_p_t)opt_func(f, o_b_p_direct));}
+
static void s7_set_b_pp_function(s7_pointer f, s7_b_pp_t df) {add_opt_func(f, o_b_pp, (void *)df);}
static s7_b_pp_t s7_b_pp_function(s7_pointer f) {return((s7_b_pp_t)opt_func(f, o_b_pp));}
@@ -46819,7 +47234,7 @@ static bool i_pi_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
if (pfunc)
{
s7_pointer sig;
- sig = s7_procedure_signature(sc, s_func);
+ sig = signature(sc, s_func);
if (is_pair(sig))
{
s7_pointer arg1, arg2;
@@ -46970,7 +47385,7 @@ static bool i_ii_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
if (ifunc)
{
s7_pointer sig;
- sig = s7_procedure_signature(sc, s_func);
+ sig = signature(sc, s_func);
if (is_pair(sig))
{
s7_pointer arg1, arg2;
@@ -47190,7 +47605,8 @@ static bool opt_int_vector_set(s7_scheme *sc, opt_info *opc, s7_pointer v, s7_po
s7_pointer settee;
/* fprintf(stderr, "opt intv: %s %s %s\n", DISPLAY(v), DISPLAY(indexp), DISPLAY(valp)); */
settee = find_symbol(sc, v);
- if (is_slot(settee))
+ if ((is_slot(settee)) &&
+ (!is_immutable(slot_value(settee))))
{
opc->v1.p = settee;
if ((is_int_vector(slot_value(settee))) &&
@@ -47234,7 +47650,7 @@ static bool i_pii_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
if (pfunc)
{
s7_pointer sig;
- sig = s7_procedure_signature(sc, s_func);
+ sig = signature(sc, s_func);
if ((is_pair(sig)) &&
(is_symbol(cadr(car_x))))
{
@@ -47245,6 +47661,10 @@ static bool i_pii_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
checker = s7_symbol_value(sc, cadr(sig));
obj = s7_symbol_value(sc, cadr(car_x));
+ if ((is_immutable(obj)) &&
+ (car(car_x) == sc->byte_vector_set_symbol))
+ return(false);
+
if (s7_apply_function(sc, checker, set_plist_1(sc, obj)) == sc->T)
{
int32_t start;
@@ -47343,7 +47763,6 @@ static bool i_add_any_ok(s7_scheme *sc, opt_info *opc, s7_pointer car_x)
{
if (is_pair(cdr(p)))
{
- /* TODO: 3-way case if it were able to handle symbols and constants */
if (!int_optimize(sc, set_plist_1(sc, set_elist_3(sc, head, car(p), cadr(p)))))
break;
cur_len++;
@@ -47373,7 +47792,7 @@ static bool int_all_x_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_poi
{
s7_pointer sig;
s7_function opt;
- sig = s7_procedure_signature(sc, s_func);
+ sig = signature(sc, s_func);
if ((is_pair(sig)) &&
(car(sig) == sc->is_integer_symbol))
{
@@ -47446,7 +47865,7 @@ static bool i_syntax_ok(s7_scheme *sc, s7_pointer car_x, int32_t len)
{
s7_pointer settee;
if ((is_immutable(cadr(car_x))) ||
- (symbol_has_accessor(cadr(car_x))))
+ (symbol_has_setter(cadr(car_x))))
return(return_false(sc, car_x, __func__, __LINE__));
settee = find_symbol(sc, cadr(car_x));
if (is_slot(settee))
@@ -47651,7 +48070,7 @@ static bool d_v_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer c
if (flt_func)
{
s7_pointer sig;
- sig = s7_procedure_signature(sc, s_func);
+ sig = signature(sc, s_func);
if ((is_pair(sig)) &&
(is_symbol(cadr(car_x)))) /* look for (oscil g) */
{
@@ -48002,7 +48421,7 @@ static bool d_vd_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
if (vfunc)
{
s7_pointer sig;
- sig = s7_procedure_signature(sc, s_func);
+ sig = signature(sc, s_func);
if ((is_pair(sig)) &&
(is_symbol(cadr(sig))))
{
@@ -48525,8 +48944,7 @@ static bool d_dd_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
pc_fallback(sc, start);
}
}
- else return(return_false(sc, car_x, __func__, __LINE__)); /* arg1 trouble */
- /* TODO: d_ddd has a similar bug and check arg2 */
+ else return(return_false(sc, car_x, __func__, __LINE__)); /* arg1 trouble -- usually no slot found */
}
else
{
@@ -48821,7 +49239,8 @@ static bool opt_float_vector_set(s7_scheme *sc, opt_info *opc, s7_pointer v, s7_
{
s7_pointer settee;
settee = find_symbol(sc, v);
- if (is_slot(settee))
+ if ((is_slot(settee)) &&
+ (!is_immutable(slot_value(settee))))
{
opc->v1.p = settee;
if ((is_float_vector(slot_value(settee))) &&
@@ -48979,7 +49398,7 @@ static bool d_vid_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
{
s7_pointer sig;
opc->v4.d_vid_f = flt;
- sig = s7_procedure_signature(sc, s_func);
+ sig = signature(sc, s_func);
if (is_pair(sig))
{
int32_t start;
@@ -49040,7 +49459,7 @@ static bool d_vdd_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
{
s7_pointer sig;
opc->v4.d_vdd_f = flt;
- sig = s7_procedure_signature(sc, s_func);
+ sig = signature(sc, s_func);
if (is_pair(sig))
{
s7_pointer slot, obj, checker;
@@ -49234,7 +49653,7 @@ static bool float_all_x_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_p
{
s7_pointer sig;
s7_function opt;
- sig = s7_procedure_signature(sc, s_func);
+ sig = signature(sc, s_func);
if ((is_pair(sig)) &&
((car(sig) == sc->is_float_symbol) ||
(car(sig) == sc->is_real_symbol)))
@@ -49286,7 +49705,7 @@ static bool d_syntax_ok(s7_scheme *sc, s7_pointer car_x, int32_t len)
{
s7_pointer settee;
if ((is_immutable(cadr(car_x))) ||
- (symbol_has_accessor(cadr(car_x))))
+ (symbol_has_setter(cadr(car_x))))
return(return_false(sc, car_x, __func__, __LINE__));
settee = find_symbol(sc, cadr(car_x));
if (is_slot(settee))
@@ -49534,11 +49953,21 @@ static bool b_idp_ok(s7_scheme *sc, s7_pointer s_func, s7_pointer car_x, s7_poin
return(return_false(sc, car_x, __func__, __LINE__));
opc->v1.p = p;
opc->v7.fb = opt_b_p_s;
+ if (s7_is_character(slot_value(p)))
+ {
+ bpf = s7_b_p_direct_function(s_func);
+ if (bpf) opc->v2.b_p_f = bpf;
+ }
return(true);
}
if (cell_optimize(sc, cdr(car_x)))
{
opc->v7.fb = opt_b_p_f;
+ if (arg_type == sc->is_char_symbol)
+ {
+ bpf = s7_b_p_direct_function(s_func);
+ if (bpf) opc->v2.b_p_f = bpf;
+ }
return(true);
}
}
@@ -49547,6 +49976,71 @@ static bool b_idp_ok(s7_scheme *sc, s7_pointer s_func, s7_pointer car_x, s7_poin
/* -------- b_pp -------- */
+static s7_pointer opt_arg_type(s7_scheme *sc, s7_pointer argp)
+{
+ s7_pointer arg, slot;
+ arg = car(argp);
+ if (is_pair(arg))
+ {
+ if (is_symbol(car(arg)))
+ {
+ if ((is_global(car(arg))) ||
+ ((is_slot(global_slot(car(arg)))) &&
+ (find_symbol(sc, car(arg)) == global_slot(car(arg)))))
+ {
+ s7_pointer a_func;
+ a_func = slot_value(global_slot(car(arg)));
+ if (is_c_function(a_func))
+ {
+ s7_pointer sig;
+ sig = signature(sc, a_func);
+ if (is_pair(sig))
+ {
+ if ((car(sig) == sc->is_integer_symbol) ||
+ ((is_pair(car(sig))) && (direct_memq(sc->is_integer_symbol, car(sig)))))
+ return(sc->is_integer_symbol);
+ if ((car(sig) == sc->is_float_symbol) ||
+ ((is_pair(car(sig))) && (direct_memq(sc->is_float_symbol, car(sig)))))
+ return(sc->is_float_symbol);
+ if ((car(sig) == sc->is_real_symbol) ||
+ (car(sig) == sc->is_number_symbol))
+ {
+ int32_t start;
+ start = sc->pc;
+ if (int_optimize(sc, argp))
+ {
+ pc_fallback(sc, start);
+ return(sc->is_integer_symbol);
+ }
+ if (float_optimize(sc, argp))
+ {
+ pc_fallback(sc, start);
+ return(sc->is_float_symbol);
+ }
+ pc_fallback(sc, start);
+ }
+ return(car(sig)); /* we want the function's return type in this context */
+ }
+ }
+ }
+ slot = find_symbol(sc, car(arg));
+ if ((is_slot(slot)) &&
+ (is_sequence(slot_value(slot))))
+ return(s7_signature(sc, slot_value(slot)));
+ }
+ return(sc->T);
+ }
+ if (is_symbol(arg))
+ {
+ slot = find_symbol(sc, arg);
+ if ((!is_slot(slot)) ||
+ (has_methods(slot_value(slot))))
+ return(sc->T);
+ return(s7_type_of(slot_value(slot)));
+ }
+ return(s7_type_of(arg));
+}
+
static bool opt_b_pp_ff(void *p)
{
opt_info *o = (opt_info *)p;
@@ -49592,7 +50086,7 @@ static bool opt_b_pp_sfo(void *p)
return(o->v3.b_pp_f(slot_value(o->v1.p), o->v4.p_p_f(slot_value(o->v2.p))));
}
-static s7_pointer opt_p_p_s(void *p); /* TODO: remove this when p* precedes b* */
+static s7_pointer opt_p_p_s(void *p);
static bool b_pp_sf_combinable(s7_scheme *sc, opt_info *opc)
{
@@ -49700,22 +50194,17 @@ static bool b_pp_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
{
if (!b_pp_ff_combinable(sc, opc))
opc->v7.fb = opt_b_pp_ff;
- if ((s7_b_pp_direct_function(s_func)) &&
- (is_pair(cadr(car_x))) &&
- (is_pair(caddr(car_x))) &&
- (caadr(car_x) == caaddr(car_x)))
+ if (s7_b_pp_direct_function(s_func))
{
- s7_pointer arg_slot, call_sig;
- call_sig = s7_procedure_signature(sc, s_func);
- arg_slot = find_symbol(sc, caadr(car_x));
- if ((is_c_function(slot_value(arg_slot))) &&
- (cadr(call_sig) == caddr(call_sig)))
+ s7_pointer call_sig, arg1_type, arg2_type;
+ call_sig = signature(sc, s_func);
+ arg1_type = opt_arg_type(sc, cdr(car_x));
+ arg2_type = opt_arg_type(sc, cddr(car_x));
+ if ((cadr(call_sig) == arg1_type) && /* not car(arg1_type) here: (string>? (string) (read-line)) */
+ (caddr(call_sig) == arg2_type))
{
- s7_pointer arg_sig;
- arg_sig = s7_procedure_signature(sc, slot_value(arg_slot));
- if ((is_pair(arg_sig)) &&
- (car(arg_sig) == cadr(call_sig)))
- opc->v3.b_pp_f = s7_b_pp_direct_function(s_func);
+ opc->v3.b_pp_f = s7_b_pp_direct_function(s_func);
+ return(true);
}
}
return(true);
@@ -50433,7 +50922,7 @@ static bool p_pi_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
{
s7_pointer obj = NULL, slot, sig, checker = NULL;
- sig = s7_procedure_signature(sc, s_func);
+ sig = signature(sc, s_func);
if ((is_pair(sig)) &&
(is_pair(cdr(sig))) &&
(is_symbol(cadr(sig))))
@@ -50461,7 +50950,8 @@ static bool p_pi_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
{
if (((is_string(obj)) && (checker == sc->is_string_symbol)) ||
((s7_is_vector(obj)) && (checker == sc->is_vector_symbol)) ||
- ((is_pair(obj)) && (checker == sc->is_pair_symbol)))
+ ((is_pair(obj)) && (checker == sc->is_pair_symbol)) ||
+ ((is_byte_vector(obj)) && (checker == sc->is_byte_vector_symbol)))
opc->v3.p_pi_f = s7_p_pi_direct_function(s_func);
}
}
@@ -50492,7 +50982,7 @@ static bool p_pi_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
break;
case T_STRING:
if (denominator(slot_value(slot)) <= string_length(obj))
- opc->v3.p_pi_f = string_ref_unchecked;
+ opc->v3.p_pi_f = (is_byte_vector_not_string(obj)) ? byte_vector_ref_unchecked : string_ref_unchecked;
break;
}
return(true);
@@ -50609,7 +51099,7 @@ static bool p_pp_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
{
s7_pointer slot, sig, checker = NULL;
- sig = s7_procedure_signature(sc, s_func);
+ sig = signature(sc, s_func);
if ((is_pair(sig)) &&
(is_pair(cdr(sig))) &&
(is_symbol(cadr(sig))))
@@ -50988,7 +51478,7 @@ static bool p_pip_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
{
s7_pointer obj = NULL, slot, sig, checker = NULL;
- sig = s7_procedure_signature(sc, s_func);
+ sig = signature(sc, s_func);
if ((is_pair(sig)) &&
(is_pair(cdr(sig))) &&
(is_symbol(cadr(sig))))
@@ -50997,7 +51487,8 @@ static bool p_pip_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
/* here we know cadr is a symbol */
slot = find_symbol(sc, cadr(car_x));
if ((!is_slot(slot)) ||
- (has_methods(slot_value(slot))))
+ (has_methods(slot_value(slot))) ||
+ (is_immutable(slot_value(slot))))
return(return_false(sc, car_x, __func__, __LINE__));
if ((s7_is_vector(slot_value(slot))) &&
(vector_rank(slot_value(slot)) > 1))
@@ -51010,8 +51501,11 @@ static bool p_pip_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
{
obj = slot_value(opc->v1.p);
if (((is_string(obj)) && (checker == sc->is_string_symbol)) ||
- ((s7_is_vector(obj)) && (checker == sc->is_vector_symbol)) ||
- ((is_pair(obj)) && (checker == sc->is_pair_symbol)))
+ ((is_normal_vector(obj)) && (checker == sc->is_vector_symbol)) || /* watch out for (vector-set! float-vect i x) etc */
+ ((is_pair(obj)) && (checker == sc->is_pair_symbol)) ||
+ ((is_float_vector(obj)) && (checker == sc->is_float_vector_symbol)) ||
+ ((is_int_vector(obj)) && (checker == sc->is_int_vector_symbol)) ||
+ ((is_byte_vector(obj)) && (checker == sc->is_byte_vector_symbol)))
opc->v3.p_pip_f = s7_p_pip_direct_function(s_func);
}
@@ -51045,7 +51539,7 @@ static bool p_pip_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
break;
case T_STRING:
if (denominator(slot_value(slot)) <= string_length(obj))
- opc->v3.p_pip_f = string_set_unchecked;
+ opc->v3.p_pip_f = (is_byte_vector_not_string(obj)) ? byte_vector_set_unchecked : string_set_unchecked;
break;
}
@@ -51201,12 +51695,13 @@ static bool p_ppp_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
s7_pointer arg1, arg2, arg3;
int32_t start;
s7_pointer sig, checker = NULL;
- sig = s7_procedure_signature(sc, s_func);
- if ((is_pair(sig)) &&
- (is_pair(cdr(sig))) &&
- (is_symbol(cadr(sig))))
- checker = cadr(sig);
- start = sc->pc;
+
+ sig = signature(sc, s_func);
+ if ((is_pair(sig)) &&
+ (is_pair(cdr(sig))) &&
+ (is_symbol(cadr(sig))))
+ checker = cadr(sig);
+ start = sc->pc;
opc->v3.p_ppp_f = func;
arg1 = cadr(car_x);
@@ -51222,6 +51717,18 @@ static bool p_ppp_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
if ((s7_is_vector(slot_value(slot))) &&
(vector_rank(slot_value(slot)) > 1))
return(return_false(sc, car_x, __func__, __LINE__));
+
+ if ((is_immutable(slot_value(slot))) &&
+ ((car(car_x) == sc->hash_table_set_symbol) ||
+ (car(car_x) == sc->string_set_symbol) ||
+ (car(car_x) == sc->vector_set_symbol) ||
+ (car(car_x) == sc->float_vector_set_symbol) ||
+ (car(car_x) == sc->int_vector_set_symbol) ||
+ (car(car_x) == sc->byte_vector_set_symbol) ||
+ (car(car_x) == sc->list_set_symbol) ||
+ (car(car_x) == sc->let_set_symbol)))
+ return(return_false(sc, car_x, __func__, __LINE__));
+
opc->v1.p = slot;
if ((s7_p_ppp_direct_function(s_func)) &&
@@ -51282,6 +51789,10 @@ static bool p_ppp_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
opc->v4.p = cadr(arg2);
opc->v2.p = val_slot;
opc->v7.fp = opt_p_ppp_scs;
+ if ((opc->v3.p_ppp_f == let_set_p_ppp) &&
+ (is_let(slot_value(slot))) && /* checked has_methods and is_immutable above */
+ (is_symbol(cadr(arg2))))
+ opc->v3.p_ppp_f = let_set_p_ppp_1;
return(true);
}
}
@@ -51415,7 +51926,7 @@ static bool cell_all_x_ok(s7_scheme *sc, s7_pointer expr, int32_t start)
if (opt)
{
opt_info *opc;
- pc_fallback(sc, start + 1); /* ?? TODO: are int|float_all_x_ok because all previous checks clean up via pc_fallback? */
+ pc_fallback(sc, start + 1);
opc = sc->opts[start];
opc->v2.all_f = opt;
opc->v7.fp = opt_unwrap_cell;
@@ -51452,14 +51963,16 @@ static bool p_implicit(s7_scheme *sc, s7_pointer car_x, int32_t len)
opc->v1.p = s_slot;
if (len == 2)
{
- /* TODO: c-object implicit ref if direct exists (pi case) */
switch (type(obj))
{
- case T_STRING: opc->v3.p_pi_f = string_ref_p_pi_direct; break;
case T_PAIR: opc->v3.p_pi_f = list_ref_p_pi_direct; break;
case T_HASH_TABLE: opc->v3.p_pp_f = hash_table_ref_p_pp_direct; break;
case T_LET: opc->v3.p_pp_f = let_ref_p_pp; break;
+ case T_STRING:
+ opc->v3.p_pi_f = (is_byte_vector_not_string(obj)) ? byte_vector_ref_p_pi_direct : string_ref_p_pi_direct;
+ break;
+
case T_VECTOR:
case T_INT_VECTOR:
case T_FLOAT_VECTOR:
@@ -51470,10 +51983,8 @@ static bool p_implicit(s7_scheme *sc, s7_pointer car_x, int32_t len)
case T_C_OBJECT:
if (c_object_direct_ref(sc, obj))
- opc->v3.p_pi_f = c_object_pi_direct;
- /* this doesn't currently work because in opt_dotimes, safe_stepper is false;
- * do_is_safe or whoever can't tell that (obj i) does not affect i!
- */
+ opc->v3.p_pi_f = c_object_pi_direct; /* we insist on int index below */
+ break;
default:
return(return_false(sc, car_x, __func__, __LINE__));
@@ -51494,7 +52005,7 @@ static bool p_implicit(s7_scheme *sc, s7_pointer car_x, int32_t len)
if ((is_string(obj)) &&
(is_step_end(opc->v2.p)) &&
(denominator(slot_value(opc->v2.p)) <= string_length(obj)))
- opc->v3.p_pi_f = string_ref_unchecked;
+ opc->v3.p_pi_f = (is_byte_vector_not_string(obj)) ? byte_vector_ref_unchecked : string_ref_unchecked;
else
{
if ((s7_is_vector(obj)) &&
@@ -51580,66 +52091,6 @@ static bool opt_cell_quote(s7_scheme *sc, s7_pointer car_x)
}
/* -------- cell_set -------- */
-static s7_pointer opt_arg_type(s7_scheme *sc, s7_pointer argp)
-{
- s7_pointer arg;
- arg = car(argp);
- if (is_pair(arg))
- {
- if ((is_symbol(car(arg))) &&
- ((is_global(car(arg))) ||
- ((is_slot(global_slot(car(arg)))) &&
- (find_symbol(sc, car(arg)) == global_slot(car(arg))))))
- {
- s7_pointer a_func;
- a_func = slot_value(global_slot(car(arg)));
- if (is_c_function(a_func))
- {
- s7_pointer sig;
- sig = s7_procedure_signature(sc, a_func);
- if (is_pair(sig))
- {
- if ((car(sig) == sc->is_integer_symbol) ||
- ((is_pair(car(sig))) && (direct_memq(sc->is_integer_symbol, car(sig)))))
- return(sc->is_integer_symbol);
- if ((car(sig) == sc->is_float_symbol) ||
- ((is_pair(car(sig))) && (direct_memq(sc->is_float_symbol, car(sig)))))
- return(sc->is_float_symbol);
- if ((car(sig) == sc->is_real_symbol) ||
- (car(sig) == sc->is_number_symbol))
- {
- int32_t start;
- start = sc->pc;
- if (int_optimize(sc, argp))
- {
- pc_fallback(sc, start);
- return(sc->is_integer_symbol);
- }
- if (float_optimize(sc, argp))
- {
- pc_fallback(sc, start);
- return(sc->is_float_symbol);
- }
- pc_fallback(sc, start);
- }
- return(car(sig)); /* we want the function's return type in this context */
- }
- }
- }
- return(sc->T);
- }
- if (is_symbol(arg))
- {
- s7_pointer slot;
- slot = find_symbol(sc, arg);
- if ((!is_slot(slot)) ||
- (has_methods(slot_value(slot))))
- return(sc->T);
- return(s7_type_of(slot_value(slot)));
- }
- return(s7_type_of(arg));
-}
-
static s7_pointer opt_set_p_p_f(void *p)
{
opt_info *o = (opt_info *)p;
@@ -51757,8 +52208,8 @@ static bool opt_cell_set(s7_scheme *sc, s7_pointer car_x)
if (is_symbol(cadr(car_x)))
{
s7_pointer settee;
- if ((is_immutable_symbol(cadr(car_x))) ||
- (symbol_has_accessor(cadr(car_x))))
+ if ((is_constant_symbol(sc, cadr(car_x))) ||
+ (symbol_has_setter(cadr(car_x))))
return(return_false(sc, car_x, __func__, __LINE__));
settee = find_symbol(sc, cadr(car_x));
if ((is_slot(settee)) &&
@@ -51837,17 +52288,17 @@ static bool opt_cell_set(s7_scheme *sc, s7_pointer car_x)
opc->v1.p = s_slot;
obj = slot_value(s_slot);
if ((!has_methods(obj)) &&
- (is_sequence(obj)))
+ (is_mutable_sequence(obj)))
{
s7_pointer index;
switch (type(obj))
{
case T_STRING:
- opc->v3.p_pip_f = string_set_p_pip_direct;
+ opc->v3.p_pip_f = (is_byte_vector_not_string(obj)) ? byte_vector_set_p_pip_direct : string_set_p_pip_direct;
break;
- case T_VECTOR:
- opc->v3.p_pip_f = vector_set_p_pip_direct;
+ case T_VECTOR:
+ opc->v3.p_pip_f = vector_set_p_pip_direct;
break;
case T_FLOAT_VECTOR:
@@ -51871,15 +52322,21 @@ static bool opt_cell_set(s7_scheme *sc, s7_pointer car_x)
break;
case T_PAIR:
- opc->v3.p_pip_f = list_set_p_pip_direct;
+ opc->v3.p_pip_f = list_set_p_pip_direct; /* mut if list_set_p_pip has check */
break;
case T_HASH_TABLE:
- opc->v3.p_ppp_f = hash_table_set_p_ppp_direct;
+ opc->v3.p_ppp_f = hash_table_set_p_ppp_direct;
break;
case T_LET:
- opc->v3.p_ppp_f = let_set_p_ppp;
+ /* here we know the let is a covered mutable let */
+ if ((is_keyword(cadr(cadr(car_x)))) ||
+ ((is_pair(cadr(cadr(car_x)))) &&
+ (caadr(cadr(car_x)) == sc->quote_symbol) &&
+ (is_symbol(cadadr(cadr(car_x))))))
+ opc->v3.p_ppp_f = let_set_p_ppp_1;
+ else opc->v3.p_ppp_f = let_set_p_ppp_2;
break;
default:
@@ -51902,10 +52359,10 @@ static bool opt_cell_set(s7_scheme *sc, s7_pointer car_x)
{
if ((is_string(obj)) &&
(denominator(slot_value(opc->v2.p)) <= string_length(obj)))
- opc->v3.p_pip_f = string_set_unchecked;
+ opc->v3.p_pip_f = (is_byte_vector_not_string(obj)) ? byte_vector_set_unchecked : string_set_unchecked;
else
{
- if (s7_is_vector(obj))
+ if (s7_is_vector(obj)) /* true for all 3 vectors */
{
if ((s7_is_vector(obj)) &&
(denominator(slot_value(opc->v2.p)) <= vector_length(obj)))
@@ -53193,8 +53650,8 @@ static bool opt_cell_do(s7_scheme *sc, s7_pointer car_x, int32_t len)
{
s7_pointer sym;
sym = car(var);
- if ((is_immutable_symbol(sym)) ||
- (symbol_has_accessor(sym)))
+ if ((is_constant_symbol(sc, sym)) ||
+ (symbol_has_setter(sym)))
return(return_false(sc, car_x, __func__, __LINE__));
if (symbol_is_in_list(sc, sym))
@@ -53235,7 +53692,7 @@ static bool opt_cell_do(s7_scheme *sc, s7_pointer car_x, int32_t len)
if (is_c_function(sf))
{
s7_pointer sig;
- sig = s7_procedure_signature(sc, sf);
+ sig = signature(sc, sf);
if ((is_pair(sig)) &&
((car(sig) == sc->is_integer_symbol) ||
((is_pair(car(sig))) &&
@@ -53314,7 +53771,7 @@ static bool opt_cell_do(s7_scheme *sc, s7_pointer car_x, int32_t len)
for (p = cadr(car_x), slot = let_slots(frame); is_pair(p); p = cdr(p), slot = next_slot(slot))
{
- /* TODO: put off this decision until it is needed (ref/set)
+ /* this could be put off until it is needed (ref/set), but this code is not called much
* another choice: go from init downto 0: init is lim
*/
if (slot_symbol(slot) == cadr(stop))
@@ -53870,7 +54327,7 @@ static s7_pointer func_returns(s7_scheme *sc, s7_pointer func)
if (!is_symbol(rtnf)) return(sc->F);
rtnf = find_symbol_checked(sc, rtnf);
if (!is_c_function(rtnf)) return(sc->F);
- rtnf = s7_procedure_signature(sc, rtnf);
+ rtnf = signature(sc, rtnf);
if (!is_pair(rtnf)) return(sc->F);
return(car(rtnf));
}
@@ -54141,7 +54598,7 @@ static bool cell_optimize(s7_scheme *sc, s7_pointer expr)
int32_t start;
start = sc->pc;
- sig = s7_procedure_signature(sc, s_func);
+ sig = signature(sc, s_func);
opc = alloc_opo(sc, car_x);
switch (len)
{
@@ -54481,6 +54938,7 @@ static s7_function s7_optimize_1(s7_scheme *sc, s7_pointer expr, bool nr)
#if WITH_GMP
return(NULL);
#endif
+ if (!is_pair(expr)) return(NULL);
if ((sc->safety > CLM_OPTIMIZATION_SAFETY) || (pair_no_opt(expr)))
return(NULL);
#if OPT_PRINT
@@ -54926,7 +55384,7 @@ Each object can be a list, string, vector, hash-table, or any other sequence."
if ((len == 1) &&
(is_closure(f)) && /* not lambda* that might get confused about arg names */
(closure_arity_to_int(sc, f) == 1) && /* not a rest arg: not is_pair: (lambda (x . args) arg) */
- (!is_immutable_symbol(car(closure_args(f)))))
+ (!is_constant_symbol(sc, car(closure_args(f)))))
return(g_for_each_closure(sc, args));
if (for_each_arg_is_null(sc, cdr(args))) return(sc->unspecified);
@@ -55148,7 +55606,7 @@ a list of the results. Its arguments can be lists, vectors, strings, hash-table
/* if closure call is straightforward, use OP_MAP_1 */
if ((len == 1) &&
(fargs == 1) &&
- (!is_immutable_symbol(car(closure_args(f)))))
+ (!is_constant_symbol(sc, car(closure_args(f)))))
{
/* g_map_closure here if not s7_tree_memq 'map takes more time than it saves */
if (got_nil) return(sc->nil);
@@ -55481,29 +55939,12 @@ static s7_pointer g_apply_values(s7_scheme *sc, s7_pointer args)
static bool is_simple_code(s7_scheme *sc, s7_pointer form)
{
- /* TODO: perhaps tree_memq here? the cycle check below is inadequate, and the last check looks dumb */
- s7_pointer tmp, sp;
- for (tmp = form, sp = form; is_pair(tmp); tmp = cdr(tmp), sp = cdr(sp))
+ s7_pointer tmp;
+ for (tmp = form; is_pair(tmp); tmp = cdr(tmp))
{
if (is_pair(car(tmp)))
{
- if ((tmp == car(tmp)) || /* try to protect against #1=(#1) -- do we actually need cyclic_sequences here? */
- (!is_simple_code(sc, car(tmp))))
- return(false);
- }
- else
- {
- if ((car(tmp) == sc->unquote_symbol) ||
- ((is_null(car(tmp))) && (is_null(cdr(tmp)))))
- return(false);
- }
- tmp = cdr(tmp);
- if (!is_pair(tmp)) break;
- if (tmp == sp) return(false);
- if (is_pair(car(tmp)))
- {
- if ((tmp == car(tmp)) || /* try to protect against #1=(#1) -- do we actually need cyclic_sequences here? */
- (!is_simple_code(sc, car(tmp))))
+ if (!is_simple_code(sc, car(tmp)))
return(false);
}
else
@@ -55546,7 +55987,9 @@ and splices the resultant list into the outer list. `(1 ,(+ 1 1) ,@(list 3 4)) -
*/
/* if no element of the list is a list or unquote, just return the original quoted */
- if (is_simple_code(sc, form))
+
+ if ((cyclic_sequences(sc, form, false) == sc->T) ||
+ (is_simple_code(sc, form)))
return(list_2(sc, sc->quote_symbol, form));
{
@@ -55556,17 +55999,16 @@ and splices the resultant list into the outer list. `(1 ,(+ 1 1) ,@(list 3 4)) -
bool dotted = false;
len = s7_list_length(sc, form);
+#if DEBUGGING
if (len == 0)
- {
- /* a circular form, apparently */
- return(list_2(sc, sc->quote_symbol, form));
- }
+ fprintf(stderr, "quasiquote_1: cyclic?? %s\n", DISPLAY(form));
+#endif
+
if (len < 0)
{
len = -len;
dotted = true;
}
-
old_scw = sc->w;
loc = s7_gc_protect(sc, old_scw);
@@ -56312,7 +56754,7 @@ static s7_pointer unbound_variable(s7_scheme *sc, s7_pointer sym)
{
/* this always occurs in a context where we're trying to find anything, so I'll move a couple of those checks here
*/
- if (has_ref_fallback(sc->envir)) /* an experiment -- see s7test (with-let *db* (+ int32_t (length str))) */
+ if (has_let_ref_fallback(sc->envir)) /* an experiment -- see s7test (with-let *db* (+ int32_t (length str))) */
apply_known_method(sc, sc->envir, sc->let_ref_fallback_symbol, sc->w = list_2(sc, sc->envir, sym));
/* but if the thing we want to hit this fallback happens to exist at a higher level, oops... */
@@ -56482,7 +56924,7 @@ static s7_pointer assign_syntax(s7_scheme *sc, const char *name, opcode_t op, s7
set_global_slot(x, permanent_slot(x, syn));
set_initial_slot(x, permanent_slot(x, syn));
- set_local_slot(x, global_slot(x));
+ /* set_local_slot(x, global_slot(x)); */
typeflag(x) = SYNTACTIC_TYPE; /* symbol syntactic etc */
symbol_set_local(x, 0LL, sc->nil);
symbol_set_ctr(x, 0;)
@@ -56502,6 +56944,7 @@ static s7_pointer assign_internal_syntax(s7_scheme *sc, const char *name, opcode
unheap(x);
set_type(x, T_SYMBOL);
symbol_set_name_cell(x, str);
+ symbol_info(x) = (symbol_info_t *)calloc(1, sizeof(symbol_info_t));
symbol_set_local(x, 0LL, sc->nil);
symbol_set_ctr(x, 0);
@@ -56645,7 +57088,7 @@ static s7_pointer is_null_chooser(s7_scheme *sc, s7_pointer f, int32_t args, s7_
return(f);
}
-static s7_pointer format_allg, format_allg_no_column, format_just_newline;
+static s7_pointer format_allg, format_allg_no_column, format_just_newline, format_as_objstr;
static s7_pointer g_format_allg(s7_scheme *sc, s7_pointer args)
{
return(g_format_1(sc, args));
@@ -56677,6 +57120,10 @@ static s7_pointer g_format_just_newline(s7_scheme *sc, s7_pointer args)
return(sc->F);
}
+static s7_pointer g_format_as_objstr(s7_scheme *sc, s7_pointer args)
+{
+ return(s7_object_to_string(sc, caddr(args), false));
+}
static s7_pointer g_format_allg_no_column(s7_scheme *sc, s7_pointer args)
{
@@ -56710,7 +57157,7 @@ static s7_pointer format_chooser(s7_scheme *sc, s7_pointer f, int32_t args, s7_p
if ((!is_string(port)) &&
(is_string(str_arg)))
{
- if ((ops) && (args == 2))
+ if ((ops) && ((args == 2) || (args == 3)))
{
int32_t len;
char *orig;
@@ -56720,13 +57167,18 @@ static s7_pointer format_chooser(s7_scheme *sc, s7_pointer f, int32_t args, s7_p
p = strchr((const char *)orig, (int)'~');
if (!p)
{
- if (s7_is_boolean(port))
- set_optimize_op(expr, HOP_SAFE_C_C);
- return(format_just_newline); /* "just_newline" actually just outputs the control string -- see fixup below */
+ if (args == 2)
+ {
+ if (s7_is_boolean(port))
+ set_optimize_op(expr, HOP_SAFE_C_C);
+ return(format_just_newline); /* "just_newline" actually just outputs the control string -- see fixup below */
+ }
+ return(f);
}
len = string_length(str_arg);
- if ((len > 1) &&
+ if ((args == 2) &&
+ (len > 1) &&
(orig[len - 1] == '%') &&
((p - orig) == len - 2))
{
@@ -56737,7 +57189,15 @@ static s7_pointer format_chooser(s7_scheme *sc, s7_pointer f, int32_t args, s7_p
set_optimize_op(expr, HOP_SAFE_C_C);
return(format_just_newline);
}
+
+ if ((args == 3) &&
+ (len == 2) &&
+ (port == sc->F) &&
+ (orig[0] == '~') &&
+ ((orig[1] == 'A') || (orig[1] == 'a')))
+ return(format_as_objstr);
}
+
/* this used to worry about optimized expr and particular cases -- why? I can't find a broken case */
if (!is_columnizing(string_value(str_arg)))
return(format_allg_no_column);
@@ -56945,7 +57405,7 @@ static s7_pointer vector_ref_chooser(s7_scheme *sc, s7_pointer f, int32_t args,
default: return(vector_ref_ic);
}
}
- if ((is_immutable_symbol(arg1)) &&
+ if ((is_possibly_constant(arg1)) &&
(is_slot(local_slot(arg1))))
{
s7_pointer v;
@@ -58005,6 +58465,7 @@ static void init_choosers(s7_scheme *sc)
format_allg = make_function_with_class(sc, f, "format", g_format_allg, 1, 0, true, "format opt");
format_allg_no_column = make_function_with_class(sc, f, "format", g_format_allg_no_column, 1, 0, true, "format opt");
format_just_newline = make_function_with_class(sc, f, "format", g_format_just_newline, 2, 0, false, "format opt");
+ format_as_objstr = make_function_with_class(sc, f, "format", g_format_as_objstr, 3, 0, true, "format opt");
/* not */
f = set_function_chooser(sc, sc->not_symbol, not_chooser);
@@ -58040,8 +58501,7 @@ static void init_choosers(s7_scheme *sc)
member_sq = make_function_with_class(sc, f, "member", g_member_sq, 2, 0, false, "member opt");
/* memq */
- f = set_function_chooser(sc, sc->memq_symbol, memq_chooser);
- /* is pure-s7, use member here */
+ f = set_function_chooser(sc, sc->memq_symbol, memq_chooser); /* is pure-s7, use member here */
memq_2 = make_function_with_class(sc, f, "memq", g_memq_2, 2, 0, false, "memq opt");
memq_3 = make_function_with_class(sc, f, "memq", g_memq_3, 2, 0, false, "memq opt");
memq_4 = make_function_with_class(sc, f, "memq", g_memq_4, 2, 0, false, "memq opt");
@@ -58049,6 +58509,10 @@ static void init_choosers(s7_scheme *sc)
memq_car = make_function_with_class(sc, f, "memq", g_memq_car, 2, 0, false, "memq opt");
memq_car_2 = make_function_with_class(sc, f, "memq", g_memq_car_2, 2, 0, false, "memq opt");
+ /* tree-set-memq */
+ f = set_function_chooser(sc, sc->tree_set_memq_symbol, tree_set_memq_chooser);
+ tree_set_memq_syms = make_function_with_class(sc, f, "tree-set-memq", g_tree_set_memq_1, 2, 0, false, "tree-set-memq opt");
+
/* read-line */
read_line_uncopied = s7_make_function(sc, "read-line", g_read_line_uncopied, 1, 1, false, "read-line opt");
s7_function_set_class(read_line_uncopied, slot_value(global_slot(sc->read_line_symbol)));
@@ -58096,7 +58560,7 @@ static void init_choosers(s7_scheme *sc)
static opt_t optimize_thunk(s7_scheme *sc, s7_pointer expr, s7_pointer func, int32_t hop)
{
- if (is_immutable_symbol(car(expr)))
+ if (is_possibly_constant(car(expr)))
hop = 1;
if (is_closure(func))
@@ -58258,6 +58722,7 @@ static int32_t combine_ops(s7_scheme *sc, s7_pointer func, s7_pointer expr, comb
case OP_SAFE_C_SC: return(OP_SAFE_C_opSCq_S);
case OP_SAFE_C_opSq: return(OP_SAFE_C_op_opSq_q_S);
case OP_SAFE_C_opSSq: return(OP_SAFE_C_op_opSSq_q_S);
+ case OP_SAFE_C_A: return(OP_SAFE_C_opAq_S);
}
return(OP_SAFE_C_ZS);
@@ -58466,7 +58931,7 @@ static opt_t optimize_func_one_arg(s7_scheme *sc, s7_pointer expr, s7_pointer fu
arg1 = cadr(expr);
if ((bad_pairs == quotes) &&
- (is_immutable_symbol(car(expr))))
+ (is_possibly_constant(car(expr))))
hop = 1;
if ((symbols == 1) &&
@@ -58525,7 +58990,8 @@ static opt_t optimize_func_one_arg(s7_scheme *sc, s7_pointer expr, s7_pointer fu
choose_c_function(sc, expr, func, 1);
/* these are border-line useless -- lint uses cxr_s */
- if (symbols == 1)
+ if ((symbols == 1) &&
+ (is_global(car(expr))))
{
if (c_call(expr) == g_car)
add_optimizer_fixup(sc, expr, (uint32_t)(hop + OP_SAFE_CAR_S));
@@ -58848,7 +59314,7 @@ static opt_t optimize_func_one_arg(s7_scheme *sc, s7_pointer expr, s7_pointer fu
if ((s7_is_vector(func)) &&
(is_all_x_safe(sc, arg1)))
{
- if ((is_immutable_symbol(car(expr))) &&
+ if ((is_possibly_constant(car(expr))) &&
(vector_rank(func) == 1) &&
(is_normal_vector(func)))
set_unsafe_optimize_op(expr, hop + OP_CVECTOR_A);
@@ -58933,10 +59399,12 @@ static opt_t optimize_func_two_args(s7_scheme *sc, s7_pointer expr, s7_pointer f
{
s7_pointer arg1, arg2;
+ /* fprintf(stderr, "opt 2: %s, hop: %d, pairs: %d, symbols: %d, quotes: %d, bad: %d\n", DISPLAY_80(expr), hop, pairs, symbols, quotes, bad_pairs); */
+
arg1 = cadr(expr);
arg2 = caddr(expr);
if ((bad_pairs == quotes) &&
- (is_immutable_symbol(car(expr))))
+ (is_possibly_constant(car(expr))))
hop = 1;
if (((is_symbol(arg1)) &&
@@ -58973,7 +59441,7 @@ static opt_t optimize_func_two_args(s7_scheme *sc, s7_pointer expr, s7_pointer f
{
set_unsafely_optimized(expr);
if (closure_star_arity_to_int(sc, func) == 2)
- set_optimize_op(expr, ((is_safe_closure(func)) ? OP_SAFE_CLOSURE_STAR_AA : OP_CLOSURE_STAR_AA));
+ set_optimize_op(expr, ((is_safe_closure(func)) ? OP_SAFE_CLOSURE_STAR_AA : OP_CLOSURE_STAR_ALL_X));
else set_optimize_op(expr, ((is_safe_closure(func)) ? OP_SAFE_CLOSURE_STAR_ALL_X : OP_CLOSURE_STAR_ALL_X));
set_opt_lambda(expr, func);
}
@@ -59142,12 +59610,12 @@ static opt_t optimize_func_two_args(s7_scheme *sc, s7_pointer expr, s7_pointer f
op = combine_ops(sc, func, expr, orig_op, arg1, arg2);
if (!hop) clear_hop(arg2);
}
-
if ((((op == OP_SAFE_C_SZ) || (op == OP_SAFE_C_CZ)) &&
- (is_all_x_op(optimize_op(arg2)))) ||
+ (is_all_x_op(optimize_op(arg2)))) ||
(((op == OP_SAFE_C_ZS) || (op == OP_SAFE_C_ZC)) &&
(is_all_x_op(optimize_op(arg1)))))
{
+ /* fprintf(stderr, "%d, op: %s, arg: %s\n", __LINE__, opt_names[op], DISPLAY(expr)); */
set_safe_optimize_op(expr, hop + OP_SAFE_C_AA);
annotate_arg(sc, cdr(expr), e);
annotate_arg(sc, cddr(expr), e);
@@ -59419,7 +59887,7 @@ static opt_t optimize_func_two_args(s7_scheme *sc, s7_pointer expr, s7_pointer f
(is_null(cdadr(arg1))) &&
(is_pair(cddr(arg1))) &&
(is_null(cdddr(arg1))) &&
- (!is_immutable_symbol(caadr(arg1))))
+ (!is_possibly_constant(caadr(arg1))))
{
set_c_call(expr, (c_call(expr) == g_for_each) ? g_for_each_closure : g_map_closure);
set_unsafe_optimize_op(expr, HOP_C_FA_1);
@@ -59567,7 +60035,7 @@ static opt_t optimize_func_two_args(s7_scheme *sc, s7_pointer expr, s7_pointer f
{
set_unsafely_optimized(expr);
if (closure_star_arity_to_int(sc, func) == 2)
- set_optimize_op(expr, hop + ((is_safe_closure(func)) ? OP_SAFE_CLOSURE_STAR_AA : OP_CLOSURE_STAR_AA));
+ set_optimize_op(expr, hop + ((is_safe_closure(func)) ? OP_SAFE_CLOSURE_STAR_AA : OP_CLOSURE_STAR_ALL_X));
else set_optimize_op(expr, hop + ((is_safe_closure(func)) ? OP_SAFE_CLOSURE_STAR_ALL_X : OP_CLOSURE_STAR_ALL_X));
annotate_args(sc, cdr(expr), e);
set_opt_lambda(expr, func);
@@ -59647,7 +60115,7 @@ static opt_t optimize_func_three_args(s7_scheme *sc, s7_pointer expr, s7_pointer
/* end of bad symbol wrappers */
if ((bad_pairs == quotes) &&
- (is_immutable_symbol(car(expr))))
+ (is_possibly_constant(car(expr))))
hop = 1;
if ((is_c_function(func) &&
@@ -59727,9 +60195,10 @@ static opt_t optimize_func_three_args(s7_scheme *sc, s7_pointer expr, s7_pointer
}
else
{
- set_optimize_op(expr, hop + OP_SAFE_C_AAA); /* fallback on all_x_c and s here -- a kludge */
- annotate_args(sc, cdr(expr), e);
- set_arglist_length(expr, small_int(3));
+ /* fprintf(stderr, "%s is ccs\n", DISPLAY(expr)); */
+ set_opt_sym1(cdr(expr), arg3);
+ set_opt_con2(cdr(expr), arg2);
+ set_optimize_op(expr, hop + OP_SAFE_C_CCS);
}
}
}
@@ -59917,7 +60386,7 @@ static opt_t optimize_func_three_args(s7_scheme *sc, s7_pointer expr, s7_pointer
(is_null(cadr(body_lambda))) &&
(is_not_null(cddr(body_lambda))) &&
(((is_symbol(cadr(error_lambda))) && /* (lambda args ... */
- (!is_immutable_symbol(cadr(error_lambda)))) ||
+ (!is_possibly_constant(cadr(error_lambda)))) ||
((is_pair(cadr(error_lambda))) && /* (lambda (type info) ... */
(is_pair(cdadr(error_lambda))) &&
(is_null(cddadr(error_lambda))))) &&
@@ -60054,7 +60523,7 @@ static opt_t optimize_func_many_args(s7_scheme *sc, s7_pointer expr, s7_pointer
if (bad_pairs > quotes) return(OPT_F);
if ((bad_pairs == quotes) &&
- (is_immutable_symbol(car(expr))))
+ (is_possibly_constant(car(expr))))
hop = 1;
if ((is_c_function(func)) &&
@@ -60196,7 +60665,6 @@ static opt_t optimize_syntax(s7_scheme *sc, s7_pointer expr, s7_pointer func, in
{
opcode_t op;
s7_pointer p, body;
- /* TODO: those not allowed need to be passed back and treated as unsafe symbols (find_uncomplicated_symbol etc) */
op = (opcode_t)syntax_opcode(func);
sc->w = e;
@@ -60661,7 +61129,7 @@ static opt_t optimize_expression(s7_scheme *sc, s7_pointer expr, int32_t hop, s7
return(optimize_syntax(sc, expr, _TSyn(slot_value(global_slot(car_expr))), hop, e));
}
- func = find_uncomplicated_symbol(sc, car_expr, e);
+ func = find_uncomplicated_symbol(sc, car_expr, e); /* local vars (recursive calls too??) are considered "complicated" */
if (is_slot(func))
{
func = slot_value(func);
@@ -60672,7 +61140,7 @@ static opt_t optimize_expression(s7_scheme *sc, s7_pointer expr, int32_t hop, s7
return(optimize_syntax(sc, expr, func, hop, e)); /* e can be extended via set-cdr! here */
}
/* we miss implicit indexing here because at this time, the data are not set */
- if ((is_procedure(func)) ||
+ if ((is_t_procedure(func)) ||
/* (is_c_function(func)) || */
(is_safe_procedure(func))) /* built-in applicable objects like vectors */
{
@@ -60776,6 +61244,9 @@ static opt_t optimize_expression(s7_scheme *sc, s7_pointer expr, int32_t hop, s7
}
else
{
+ /* car_expr is "complicated" */
+ /* fprintf(stderr, " %s is complicated\n", DISPLAY_80(expr)); */
+
if ((sc->undefined_identifier_warnings) &&
(func == sc->undefined) && /* car_expr is not in e or global */
(symbol_tag(car_expr) == 0)) /* and we haven't looked it up earlier */
@@ -60794,7 +61265,7 @@ static opt_t optimize_expression(s7_scheme *sc, s7_pointer expr, int32_t hop, s7
*/
}
- /* car_expr is a symbol but it's not a known procedure or a "safe" case = vector etc */
+ /* car_expr is a symbol but it's not a built-in procedure or a "safe" case = vector etc */
{
/* else maybe it's something like a let variable binding: (sqrtfreq (sqrt frequency)) */
s7_pointer p;
@@ -60822,6 +61293,8 @@ static opt_t optimize_expression(s7_scheme *sc, s7_pointer expr, int32_t hop, s7
}
}
+ /* fprintf(stderr, " %s, p: %s, expr opt: %d\n", DISPLAY_80(expr), DISPLAY(p), is_optimized(expr)); */
+
if ((is_null(p)) && /* (+ 1 . 2) */
(!is_optimized(expr)))
{
@@ -61036,7 +61509,7 @@ static s7_pointer check_lambda_args(s7_scheme *sc, s7_pointer args, int32_t *ari
if ((!is_pair(args)) && (!is_null(args)))
{
- if (s7_is_constant(args)) /* (lambda :a ...) */
+ if (is_constant(sc, args)) /* (lambda :a ...) */
eval_error(sc, "lambda parameter '~S is a constant", args); /* not ~A here, (lambda #\null do) for example */
/* we currently accept (lambda i i . i) (lambda quote i) (lambda : : . #()) (lambda : 1 . "")
@@ -61053,7 +61526,7 @@ static s7_pointer check_lambda_args(s7_scheme *sc, s7_pointer args, int32_t *ari
{
s7_pointer car_x;
car_x = car(x);
- if (s7_is_constant(car_x)) /* (lambda (pi) pi), constant here means not a symbol */
+ if (is_constant(sc, car_x)) /* (lambda (pi) pi), constant here means not a symbol */
{
if (is_pair(car_x)) /* (lambda ((:hi . "hi") . "hi") 1) */
eval_error(sc, "lambda parameter '~S is a pair (perhaps you want define* or lambda*?)", car_x);
@@ -61065,7 +61538,7 @@ static s7_pointer check_lambda_args(s7_scheme *sc, s7_pointer args, int32_t *ari
}
if (is_not_null(x))
{
- if (s7_is_constant(x)) /* (lambda (a . 0.0) a) or (lambda (a . :b) a) */
+ if (is_constant(sc, x)) /* (lambda (a . 0.0) a) or (lambda (a . :b) a) */
eval_error(sc, "lambda :rest parameter '~S is a constant", x);
i = -i - 1;
}
@@ -61082,7 +61555,7 @@ static s7_pointer check_lambda_star_args(s7_scheme *sc, s7_pointer args, int32_t
if (!s7_is_list(sc, args))
{
- if (s7_is_constant(args)) /* (lambda* :a ...) */
+ if (is_constant(sc, args)) /* (lambda* :a ...) */
eval_error(sc, "lambda* parameter '~S is a constant", args);
if (is_symbol(args))
set_local(args);
@@ -61098,7 +61571,7 @@ static s7_pointer check_lambda_star_args(s7_scheme *sc, s7_pointer args, int32_t
car_w = car(w);
if (is_pair(car_w))
{
- if (s7_is_constant(car(car_w))) /* (lambda* ((:a 1)) ...) */
+ if (is_constant(sc, car(car_w))) /* (lambda* ((:a 1)) ...) */
eval_error(sc, "lambda* parameter '~A is a constant", car(car_w));
if (symbol_is_in_arg_list(caar(w), cdr(w))) /* (lambda* ((a 1) a) ...) */
eval_error(sc, "lambda* parameter '~A is used twice in the argument list", car(car_w));
@@ -61125,7 +61598,7 @@ static s7_pointer check_lambda_star_args(s7_scheme *sc, s7_pointer args, int32_t
{
if (car_w != sc->key_rest_symbol)
{
- if (s7_is_constant(car_w))
+ if (is_constant(sc, car_w))
{
if (car_w == sc->key_allow_other_keys_symbol)
{
@@ -61156,7 +61629,7 @@ static s7_pointer check_lambda_star_args(s7_scheme *sc, s7_pointer args, int32_t
}
else
{
- if (is_immutable_symbol(cadr(w)))
+ if (is_constant(sc, cadr(w))) /* (lambda* (a :rest x)...) where x is locally a constant */
return(s7_error(sc, sc->wrong_type_arg_symbol, set_elist_2(sc, s7_make_string_wrapper(sc, "can't bind an immutable object: ~S"), w)));
}
set_local(cadr(w));
@@ -61165,7 +61638,7 @@ static s7_pointer check_lambda_star_args(s7_scheme *sc, s7_pointer args, int32_t
}
if (is_not_null(w))
{
- if (s7_is_constant(w)) /* (lambda* (a . 0.0) a) or (lambda* (a . :b) a) */
+ if (is_constant(sc, w)) /* (lambda* (a . 0.0) a) or (lambda* (a . :b) a) */
eval_error(sc, "lambda* :rest parameter '~A is a constant", w);
if (is_symbol(w))
set_local(w);
@@ -61293,6 +61766,7 @@ static inline void set_all_locals(s7_scheme *sc, s7_pointer tree, slist *args)
static body_t body_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer body, slist *main_args, bool at_end);
#define SAFE_FORM_PRINT 0
+#define display_min_body(result) ((result == UNSAFE_BODY) ? "unsafe" : ((result == SAFE_BODY) ? "safe" : "very-safe"))
static body_t form_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer x, slist *main_args, bool at_end)
{
@@ -61610,9 +62084,6 @@ static body_t form_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer x, slist *
/* define and friends are not safe: (define (a) (define b 3)...) tries to put b in the current env,
* but in a safe func, that's a constant. See s7test L 1865 for an example.
*/
- /* TODO: how to tell that the temp env can be freed? -- check results for func/macro/let?
- * not captured? but how to catch that?
- */
default:
/* try to catch weird cases like:
* (let () (define (hi1 a) (define (hi1 b) (+ b 1)) (hi1 a)) (hi1 1))
@@ -61668,7 +62139,7 @@ static body_t form_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer x, slist *
result = ((is_sequence(f)) ||
((c_safe) && (is_global(expr)))) ? VERY_SAFE_BODY : SAFE_BODY;
#if SAFE_FORM_PRINT
- fprintf(stderr, "%d: %s: %d %d %s (scope: %d)\n", __LINE__, DISPLAY(f), result, is_global(expr), describe_type_bits(sc, f), c_safe);
+ fprintf(stderr, "%d: %s: %s %d %s (scope: %d)\n", __LINE__, DISPLAY(f), display_min_body(result), is_global(expr), describe_type_bits(sc, f), c_safe);
#endif
if ((c_safe) ||
((is_any_closure(f)) && (is_safe_closure(f))) ||
@@ -61713,7 +62184,7 @@ static body_t form_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer x, slist *
if (locals)
{
#if SAFE_FORM_PRINT
- fprintf(stderr, "%d: %s result: %d\n", __LINE__, DISPLAY(lbody), result);
+ fprintf(stderr, "%d: %s result: %s\n", __LINE__, DISPLAY(lbody), display_min_body(result));
#endif
if (lresult == VERY_SAFE_BODY)
set_all_locals(sc, lbody, locals);
@@ -61725,11 +62196,11 @@ static body_t form_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer x, slist *
{
result = min_body(result, form_is_safe(sc, func, car(p), main_args, false));
#if SAFE_FORM_PRINT
- fprintf(stderr, "%d: %s %d\n", __LINE__, DISPLAY_80(car(p)), result);
+ fprintf(stderr, "%d: %s %s\n", __LINE__, DISPLAY_80(car(p)), display_min_body(result));
#endif
}
#if SAFE_FORM_PRINT
- fprintf(stderr, "%d: %s: %d\n", __LINE__, DISPLAY_80(car(p)), result);
+ fprintf(stderr, "%d: %s: %s\n", __LINE__, DISPLAY_80(car(p)), display_min_body(result));
#endif
if (result == UNSAFE_BODY)
return(UNSAFE_BODY);
@@ -61776,7 +62247,7 @@ static body_t body_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer body, slis
if (!is_null(p))
return(UNSAFE_BODY);
#if SAFE_FORM_PRINT
- fprintf(stderr, "%d: %d\n", __LINE__, result);
+ fprintf(stderr, "body_is_safe: %d: %s\n", __LINE__, display_min_body(result));
#endif
return(result);
}
@@ -61802,7 +62273,7 @@ static s7_pointer optimize_lambda(s7_scheme *sc, bool unstarred_lambda, s7_point
sargs = add_sym(sc, p, sargs);
result = body_is_safe(sc, func, body, sargs, true);
#if SAFE_FORM_PRINT
- fprintf(stderr, "%s: %d\n", DISPLAY_80(body), result);
+ fprintf(stderr, "optimize_lambda %s: %s\n", DISPLAY_80(body), display_min_body(result));
#endif
if (result == VERY_SAFE_BODY)
{
@@ -61825,23 +62296,6 @@ static s7_pointer optimize_lambda(s7_scheme *sc, bool unstarred_lambda, s7_point
free_syms(sargs);
clear_symbol_list(sc); /* tracks locals */
- if (is_symbol(func)) /* func can be sc->gc_nil (see check_lambda and check_lambda_star) */
- {
- s7_pointer lst;
- lst = cons(sc, add_symbol_to_list(sc, func), sc->nil);
- sc->temp10 = lst;
- if (optimize(sc, body, 1, collect_parameters(sc, args, lst)) == OPT_OOPS)
- clear_all_optimizations(sc, body);
- sc->temp10 = sc->nil;
- free_cell(sc, lst);
- }
- else
- {
- /* fprintf(stderr, "%s[%d]: %s\n", __func__, __LINE__, DISPLAY(body)); */
- if (optimize(sc, body, 1, collect_parameters(sc, args, sc->nil)) == OPT_OOPS)
- clear_all_optimizations(sc, body);
- }
-
/* if the body is safe, we can optimize the calling sequence */
if (!arglist_has_rest(sc, args))
{
@@ -61870,13 +62324,30 @@ static s7_pointer optimize_lambda(s7_scheme *sc, bool unstarred_lambda, s7_point
if (result != UNSAFE_BODY)
{
#if SAFE_FORM_PRINT
- fprintf(stderr, "%s is safe\n", DISPLAY_80(body));
+ fprintf(stderr, "%s is a safe-closure\n", DISPLAY_80(body));
#endif
set_safe_closure(body);
/* this bit is set on the function itself in make_closure and friends */
}
}
/* else fprintf(stderr, "rest: %d %s\n", result, DISPLAY(body)); */
+
+ if (is_symbol(func)) /* func can be sc->gc_nil (see check_lambda and check_lambda_star) */
+ {
+ s7_pointer lst;
+ lst = cons(sc, add_symbol_to_list(sc, func), sc->nil);
+ sc->temp10 = lst;
+ if (optimize(sc, body, 1, collect_parameters(sc, args, lst)) == OPT_OOPS)
+ clear_all_optimizations(sc, body);
+ sc->temp10 = sc->nil;
+ free_cell(sc, lst);
+ }
+ else
+ {
+ /* fprintf(stderr, "%s[%d]: %s\n", __func__, __LINE__, DISPLAY(body)); */
+ if (optimize(sc, body, 1, collect_parameters(sc, args, sc->nil)) == OPT_OOPS)
+ clear_all_optimizations(sc, body);
+ }
}
return(NULL);
}
@@ -62296,7 +62767,7 @@ static s7_pointer check_let(s7_scheme *sc)
eval_error(sc, "named let has no body: ~A", sc->code);
if (!is_pair(cddr(sc->code))) /* (let hi () . =>) */
eval_error(sc, "named let stray dot? ~A", sc->code);
- if (is_immutable_symbol(car(sc->code)))
+ if (is_constant_symbol(sc, car(sc->code)))
return(s7_error(sc, sc->wrong_type_arg_symbol, set_elist_2(sc, s7_make_string_wrapper(sc, "can't bind an immutable object: ~S"), sc->code)));
set_local(car(sc->code));
start = cadr(sc->code);
@@ -62328,7 +62799,7 @@ static s7_pointer check_let(s7_scheme *sc)
if (!(is_symbol(y)))
eval_error(sc, "bad variable ~S in let", carx);
- if (is_immutable_symbol(y))
+ if (is_constant_symbol(sc, y))
return(s7_error(sc, sc->wrong_type_arg_symbol, set_elist_2(sc, s7_make_string_wrapper(sc, "can't bind an immutable object: ~S"), x)));
/* check for name collisions -- not sure this is required by Scheme */
@@ -62457,7 +62928,7 @@ static s7_pointer check_let_star(s7_scheme *sc)
eval_error(sc, "named let* has no body: ~A", sc->code);
if (!is_pair(cddr(sc->code))) /* (let* hi () . =>) */
eval_error(sc, "named let* stray dot? ~A", sc->code);
- if (is_immutable_symbol(car(sc->code)))
+ if (is_constant_symbol(sc, car(sc->code)))
return(s7_error(sc, sc->wrong_type_arg_symbol, set_elist_2(sc, s7_make_string_wrapper(sc, "can't bind an immutable object: ~S"), sc->code)));
set_local(car(sc->code));
if ((!is_null(cadr(sc->code))) &&
@@ -62493,7 +62964,7 @@ static s7_pointer check_let_star(s7_scheme *sc)
if (!(is_symbol(var))) /* (let* ((3 1)) 1) */
eval_error(sc, "bad variable ~S in let*", var);
- if (is_immutable_symbol(var)) /* (let* ((pi 3)) ...) */
+ if (is_constant_symbol(sc, var)) /* (let* ((pi 3)) ...) */
return(s7_error(sc, sc->wrong_type_arg_symbol, set_elist_2(sc, s7_make_string_wrapper(sc, "can't bind an immutable object: ~S"), var_and_val)));
/* currently (let* ((a 1) (a (+ a 1))) a) is 2, not an error. */
@@ -62601,7 +63072,7 @@ static s7_pointer check_letrec(s7_scheme *sc, bool letrec)
eval_error_with_caller(sc, "~A: bad variable ~S", caller, carx);
y = car(carx);
- if (is_immutable_symbol(y))
+ if (is_constant_symbol(sc, y))
return(s7_error(sc, sc->wrong_type_arg_symbol, set_elist_2(sc, s7_make_string_wrapper(sc, "can't bind an immutable object: ~S"), x)));
if (!is_pair(cdr(carx))) /* (letrec ((x . 1))...) */
@@ -62651,7 +63122,7 @@ static s7_pointer check_let_temporarily(s7_scheme *sc)
if (is_symbol(car(carx)))
{
- if (is_immutable_symbol(car(carx))) /* (let-temporarily ((pi 3)) ...) */
+ if (is_constant_symbol(sc, car(carx))) /* (let-temporarily ((pi 3)) ...) */
return(s7_error(sc, sc->wrong_type_arg_symbol, set_elist_2(sc, s7_make_string_wrapper(sc, "can't bind an immutable object: ~S"), x)));
if (is_syntactic(car(carx))) /* (let-temporarily ((if 3)) ...) */
return(s7_error(sc, sc->wrong_type_arg_symbol, set_elist_2(sc, s7_make_string_wrapper(sc, "can't set! ~S"), car(carx))));
@@ -63140,8 +63611,8 @@ static s7_pointer check_define(s7_scheme *sc)
if (sc->cur_op == OP_DEFINE)
{
if ((is_pair(car(sc->code))) &&
- (!symbol_has_accessor(func)) &&
- (!is_immutable_symbol(func)))
+ (!symbol_has_setter(func)) &&
+ (!is_possibly_constant(func)))
pair_set_syntax_symbol(sc->code, sc->define_funchecked_symbol);
else pair_set_syntax_symbol(sc->code, sc->define_unchecked_symbol);
}
@@ -63288,8 +63759,8 @@ static s7_pointer check_define_macro(s7_scheme *sc, opcode_t op)
s7_warn(sc, 128, "%s: syntactic keywords tend to behave badly if redefined", DISPLAY(x));
set_local(x);
}
- if (is_immutable_symbol(x))
- eval_error_with_caller(sc, "~A: ~S is immutable", caller, x);
+ if (is_constant_symbol(sc, x))
+ eval_error_with_caller(sc, "~A: ~S is constant", caller, x);
if (!is_pair(cdr(sc->code))) /* (define-macro (...)) */
eval_error_with_caller(sc, "~A ~A, but no body?", caller, x);
@@ -63626,8 +64097,8 @@ static s7_pointer check_set(s7_scheme *sc)
eval_error(sc, "set! can't change ~S", car(sc->code));
else
{
- if (is_immutable_symbol(car(sc->code))) /* (set! pi 3) */
- eval_error(sc, "set!: can't alter immutable object: ~S", car(sc->code));
+ if (is_constant_symbol(sc, car(sc->code))) /* (set! pi 3) */
+ eval_error(sc, "set!: can't alter constant binding: ~S", car(sc->code));
}
}
@@ -63716,7 +64187,7 @@ static s7_pointer check_set(s7_scheme *sc)
settee = car(sc->code);
value = cadr(sc->code);
- if ((!symbol_has_accessor(settee)) &&
+ if ((!symbol_has_setter(settee)) &&
(!is_syntactic(settee)))
{
if (is_symbol(value))
@@ -63931,6 +64402,8 @@ static bool set_pair_p_3(s7_scheme *sc, s7_pointer obj, s7_pointer arg, s7_point
eval_range_error(sc, "vector-set!: index must not be negative: ~S", sc->code);
if (index >= vector_length(obj))
eval_range_error(sc, "vector-set!: index must be less than vector length: ~S", sc->code);
+ if (is_immutable(obj))
+ immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->vector_set_symbol, obj));
vector_setter(obj)(sc, obj, index, value);
sc->value = _NFre(value);
}
@@ -63953,6 +64426,9 @@ static bool set_pair_p_3(s7_scheme *sc, s7_pointer obj, s7_pointer arg, s7_point
eval_range_error(sc, "string-set!: index must not be negative: ~S", sc->code);
if (index >= string_length(obj))
eval_range_error(sc, "string-set!: index must be less than string length: ~S", sc->code);
+ if (is_immutable(obj))
+ immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->string_set_symbol, obj));
+
if (s7_is_character(value))
{
string_value(obj)[index] = (char)s7_character(value);
@@ -63960,7 +64436,7 @@ static bool set_pair_p_3(s7_scheme *sc, s7_pointer obj, s7_pointer arg, s7_point
}
else
{
- if ((is_byte_vector(obj)) &&
+ if ((is_byte_vector_not_string(obj)) &&
(s7_is_integer(value)))
{
int32_t ic;
@@ -63984,11 +64460,13 @@ static bool set_pair_p_3(s7_scheme *sc, s7_pointer obj, s7_pointer arg, s7_point
break;
case T_HASH_TABLE:
+ if (is_immutable(obj))
+ immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->hash_table_set_symbol, obj));
sc->value = s7_hash_table_set(sc, obj, arg, value);
break;
case T_LET:
- sc->value = s7_let_set(sc, obj, arg, value);
+ sc->value = s7_let_set(sc, obj, arg, value); /* this checks immutable */
break;
case T_C_OPT_ARGS_FUNCTION:
@@ -64098,7 +64576,7 @@ static int32_t set_pair_ex(s7_scheme *sc)
}
else cx = caar_code;
- /* code here is the accessor and the value without the "set!": ((window-width) 800) */
+ /* code here is the setter and the value without the "set!": ((window-width) 800) */
/* (set! (hi 0) (* 2 3)) -> ((hi 0) (* 2 3)) */
/* for these kinds of objects, some Schemes restrict set!
@@ -64138,11 +64616,7 @@ static int32_t set_pair_ex(s7_scheme *sc)
if ((is_null(cdr(settee))) ||
(!is_null(cddr(settee))))
{
- /* no-index or multi-index case -- use slow version.
- * TODO: ambiguity here -- is (set! (obj a b) v) actually (set! ((obj a) b) v)?
- * perhaps look at setter? c-object-set takes 1 arg -- is this a bug?
- */
- push_op_stack(sc, sc->object_set_function);
+ push_op_stack(sc, sc->c_object_set_function);
if (is_null(cdr(settee)))
{
push_stack(sc, OP_EVAL_ARGS1, list_1(sc, cx), cddr(sc->code));
@@ -64172,7 +64646,7 @@ static int32_t set_pair_ex(s7_scheme *sc)
sc->value = (*(c_object_set(sc, cx)))(sc, cx, sc->t2_1);
return(goto_START);
}
- push_op_stack(sc, sc->object_set_function);
+ push_op_stack(sc, sc->c_object_set_function);
sc->args = list_2(sc, index, cx);
sc->code = cdr(sc->code);
return(goto_EVAL_ARGS);
@@ -64180,7 +64654,7 @@ static int32_t set_pair_ex(s7_scheme *sc)
else
{
push_stack(sc, OP_EVAL_ARGS1, list_1(sc, cx), cdr(sc->code));
- push_op_stack(sc, sc->object_set_function);
+ push_op_stack(sc, sc->c_object_set_function);
sc->code = cadr(settee);
}
return(goto_EVAL);
@@ -64204,6 +64678,8 @@ static int32_t set_pair_ex(s7_scheme *sc)
settee = car(sc->code);
if (is_null(cdr(settee)))
s7_wrong_number_of_args_error(sc, "no index for vector-set!: ~S", sc->code);
+ if (is_immutable(cx))
+ immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->vector_set_symbol, cx));
if ((!is_null(cddr(settee))) &&
(is_normal_vector(cx)))
@@ -64299,6 +64775,8 @@ static int32_t set_pair_ex(s7_scheme *sc)
if ((ind < 0) ||
(ind >= string_length(cx)))
out_of_range(sc, sc->string_set_symbol, small_int(2), index, (ind < 0) ? its_negative_string : its_too_large_string);
+ if (is_immutable(cx))
+ immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->string_set_symbol, cx));
val = cadr(sc->code);
if (!is_pair(val))
@@ -64313,7 +64791,7 @@ static int32_t set_pair_ex(s7_scheme *sc)
}
else
{
- if ((is_byte_vector(cx)) &&
+ if ((is_byte_vector_not_string(cx)) &&
(s7_is_integer(val)))
{
int32_t ic;
@@ -64402,6 +64880,8 @@ static int32_t set_pair_ex(s7_scheme *sc)
settee = car(sc->code);
if (is_null(cdr(settee)))
s7_wrong_number_of_args_error(sc, "no key for hash-table-set!: ~S", sc->code);
+ if (is_immutable(cx))
+ immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->hash_table_set_symbol, cx));
if (!is_null(cddr(settee)))
{
@@ -64454,6 +64934,8 @@ static int32_t set_pair_ex(s7_scheme *sc)
settee = car(sc->code);
if (is_null(cdr(settee)))
s7_wrong_number_of_args_error(sc, "no identifier for let-set!: ~S", sc->code);
+ if (is_immutable(cx))
+ immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->let_set_symbol, cx));
if (!is_null(cddr(settee)))
{
@@ -64497,7 +64979,7 @@ static int32_t set_pair_ex(s7_scheme *sc)
case T_C_FUNCTION:
case T_C_FUNCTION_STAR:
/* perhaps it has a setter */
- if (is_procedure(c_function_setter(cx)))
+ if (is_t_procedure(c_function_setter(cx)))
{
/* here the setter can be anything, so we need to check the needs_copied_args bit
* (set! ((dilambda / (let ((x 3)) (lambda (y) (+ x y))))) 3)!
@@ -64587,7 +65069,7 @@ static int32_t set_pair_ex(s7_scheme *sc)
{
s7_pointer setter;
setter = closure_setter(cx);
- if (is_procedure(setter)) /* appears to be caar_code */
+ if (is_t_procedure(setter)) /* appears to be caar_code */
{
/* (set! (o g) ...), here cx = o, sc->code = ((o g) ...) */
push_op_stack(sc, setter);
@@ -64952,8 +65434,7 @@ static bool is_simple_expression(s7_scheme *sc, s7_pointer x)
{
return((!is_pair(x)) ||
((is_optimized(x)) &&
- (is_all_x_safe(sc, x)) &&
- (car(x) != sc->quote_symbol)));
+ (is_all_x_safe(sc, x))));
}
static bool tree_has_definers(s7_scheme *sc, s7_pointer tree)
@@ -65001,7 +65482,7 @@ static s7_pointer check_do(s7_scheme *sc)
if (!is_symbol(car(y))) /* (do ((3 2)) ()) */
eval_error(sc, "do step variable: ~S is not a symbol?", y);
- if (is_immutable_symbol(car(y))) /* (do ((pi 3 (+ pi 1))) ((= pi 4)) pi) */
+ if (is_constant_symbol(sc, car(y))) /* (do ((pi 3 (+ pi 1))) ((= pi 4)) pi) */
eval_error(sc, "do step variable: ~S is immutable", y);
if (is_pair(cdr(y)))
@@ -65043,7 +65524,6 @@ static s7_pointer check_do(s7_scheme *sc)
(has_opt_back(sc->code)))
{
s7_pointer vars, end, body, p;
- int32_t nvars, nsteps = 0;
pair_set_syntax_symbol(sc->code, sc->do_unchecked_symbol);
@@ -65063,63 +65543,12 @@ static s7_pointer check_do(s7_scheme *sc)
/* an annoying kludge -- define in the body can clobber the step expressions set up below!
* (let ((x 2)) (do ((i 0 (+ i x))) ((= i 4)) (define x 1) (display i)) (newline)) -- steps by 1
+ * but varlet is actually ok most of the time, so handle it separately
*/
body = cddr(sc->code);
if (tree_has_definers(sc, body))
return(sc->code);
- /* TODO: set up init/step choices */
- for (nvars = 0, p = vars; is_pair(p); nvars++, p = cdr(p))
- if (is_pair(cddar(p)))
- {
- x = car(p);
- nsteps++;
- }
- /* 1/1 2/2 1/n n/m. 0/n almost never (only make-index where currently cell_optimize has no chance) */
-#if 1
- if ((nvars > 1) &&
- (nsteps == 1))
- {
- /* temporary */
- for (nvars = 0, p = vars; is_pair(p); nvars++, p = cdr(p))
- {
- s7_pointer v;
- v = car(p);
- if (is_simple_expression(sc, cadr(v)))
- set_x_call(cdr(v), all_x_eval(sc, cdr(v), sc->envir, let_symbol_is_safe));
- else return(sc->code);
- }
-
- if (!is_simple_expression(sc, caddr(x))) /* x is the stepper */
- return(sc->code);
- if (is_pair(caddr(x)))
- {
- set_x_call(cddr(x), all_x_eval(sc, cddr(x), sc->envir, let_symbol_is_safe));
- if (c_callee(cddr(x)) == all_x_c_add1)
- {
- if ((c_callee(end) == all_x_c_ss) &&
- (caar(end) == sc->eq_symbol) &&
- (cadar(end) == car(x)))
- {
- bool has_set = false;
- if ((is_null(cdr(body))) &&
- (do_is_safe(sc, body, sc->w = list_1(sc, car(x)), sc->nil, &has_set)))
- {
- if (!has_set)
- {
- pair_set_syntax_symbol(sc->code, sc->dotimes_one_step_symbol); /* safe dotimes */
- return(sc->nil);
- }
- }
- }
- }
- }
-
- /* inits all non-pair, or all allx, or any */
- /* steppers allx, +1 -1 cdr */
- }
-#endif
-
/* 1/1 is of course the biggy -- can 1/n share its code? */
/* need to start: do_op_1step_no_opt[_1] = set up frame goto check end, then push _1, set code, goto begin1, step via allx
* :set frame non-steppers, then stepper at front, goto CHECK
@@ -65292,7 +65721,7 @@ static s7_pointer check_do(s7_scheme *sc)
* are ok because at init-time, the new frame is not connected.
* another tricky case: current var might be used in previous step expr(!)
* and worse, the loop env can be changed by a top-level define in the body,
- * clobbering the step_expression accessors in dox_step!
+ * clobbering the step_expression setters in dox_step!
*/
for (p = vars; is_pair(p); p = cdr(p))
{
@@ -65341,8 +65770,8 @@ static s7_pointer check_do(s7_scheme *sc)
(car(step_expr) == sc->cdr_symbol) ||
(car(step_expr) == sc->cddr_symbol) ||
((is_pair(cadr(var))) &&
- (is_pair(s7_procedure_signature(sc, c_function_base(opt_cfunc(step_expr))))) &&
- (car(s7_procedure_signature(sc, c_function_base(opt_cfunc(step_expr)))) != sc->T) &&
+ (is_pair(signature(sc, c_function_base(opt_cfunc(step_expr))))) &&
+ (car(signature(sc, c_function_base(opt_cfunc(step_expr)))) != sc->T) &&
(caadr(var) == car(step_expr)))))
/* i.e. accept char-position as init/step, but not iterate */
set_safe_stepper(cddr(var));
@@ -65354,48 +65783,6 @@ static s7_pointer check_do(s7_scheme *sc)
return(sc->code);
}
-static s7_pointer make_do_frame(s7_scheme *sc)
-{
- int64_t id;
- s7_pointer frame, vars;
-
- new_frame(sc, sc->envir, frame); /* new frame is not tied into the symbol lookup process yet */
- sc->temp11 = frame;
- id = let_id(frame);
-
- for (vars = car(sc->code); is_pair(vars); vars = cdr(vars))
- {
- s7_pointer v, slot;
- v = car(vars);
- new_cell_no_check(sc, slot, T_SLOT);
- slot_set_symbol(slot, car(v));
- slot_set_value(slot, sc->F);
- set_next_slot(slot, let_slots(frame)); /* GC protect it right away */
- let_set_slots(frame, slot);
- symbol_set_local(slot_symbol(slot), id, slot);
- slot_set_value(slot, c_call(cdr(v))(sc, cadr(v)));
- slot_set_expression(slot, cddr(v));
- if (is_pair(cddr(v)))
- dox_set_slot1(frame, slot);
- }
-
- sc->temp11 = sc->nil;
- return(frame);
-}
-
-static void update_steppers(s7_scheme *sc)
-{
- /* TODO: probably need to use pending_expr here etc */
- s7_pointer v;
- for (v = let_slots(sc->envir); is_slot(v); v = next_slot(v))
- {
- s7_pointer step_expr;
- step_expr = slot_expression(v);
- if (!is_null(step_expr))
- slot_set_value(v, c_call(step_expr)(sc, car(step_expr)));
- }
-}
-
static bool has_safe_steppers(s7_scheme *sc, s7_pointer frame)
{
s7_pointer slot;
@@ -65909,18 +66296,13 @@ static bool opt_dotimes(s7_scheme *sc, s7_pointer code, s7_pointer scc, bool saf
{
sc->pc = 0;
fp(o);
- /* TODO: are these type checks needed now? -- could check setter+integer etc in cell_optimize */
+#if DEBUGGING
if (!is_integer(slot_value(step_slot)))
- {
- slot_set_value(step_slot, g_add_1s(sc, set_plist_2(sc, small_int(1), slot_value(step_slot))));
- if (is_true(sc, g_equal_2(sc, set_plist_2(sc, slot_value(step_slot), slot_value(end_slot))))) break;
- }
- else
- {
- step = s7_integer(slot_value(step_slot)) + 1;
- slot_set_value(step_slot, make_integer(sc, step));
- if (step == s7_integer(slot_value(end_slot))) break;
- }
+ fprintf(stderr, "%d not int: %s\n", __LINE__, DISPLAY(step_slot));
+#endif
+ step = s7_integer(slot_value(step_slot)) + 1;
+ slot_set_value(step_slot, make_integer(sc, step));
+ if (step == s7_integer(slot_value(end_slot))) break;
}
}
else
@@ -65928,17 +66310,13 @@ static bool opt_dotimes(s7_scheme *sc, s7_pointer code, s7_pointer scc, bool saf
while (true)
{
func(sc, car(code));
+#if DEBUGGING
if (!is_integer(slot_value(step_slot)))
- {
- slot_set_value(step_slot, g_add_1s(sc, set_plist_2(sc, small_int(1), slot_value(step_slot))));
- if (is_true(sc, g_equal_2(sc, set_plist_2(sc, slot_value(step_slot), slot_value(end_slot))))) break;
- }
- else
- {
- step = s7_integer(slot_value(step_slot)) + 1;
- slot_set_value(step_slot, make_integer(sc, step));
- if (step == s7_integer(slot_value(end_slot))) break;
- }
+ fprintf(stderr, "%d not int: %s\n", __LINE__, DISPLAY(step_slot));
+#endif
+ step = s7_integer(slot_value(step_slot)) + 1;
+ slot_set_value(step_slot, make_integer(sc, step));
+ if (step == s7_integer(slot_value(end_slot))) break;
}
}
}
@@ -65951,51 +66329,117 @@ static bool opt_dotimes(s7_scheme *sc, s7_pointer code, s7_pointer scc, bool saf
{
s7_pointer p;
start_opts(sc);
- for (p = code; is_pair(p); p = cdr(p))
- if (!float_optimize(sc, p))
- return(false);
- }
- else return(false);
- /* TODO: here and in do_let, generalize the body exprs */
- end = denominator(slot_value(sc->args));
- if (safe_step)
- {
- s7_pointer stepper;
- slot_set_value(sc->args, stepper = make_mutable_integer(sc, integer(slot_value(sc->args))));
- for (; integer(stepper) < end; integer(stepper)++)
+ if (!no_float_opt(code))
{
- sc->pc = 0;
- for (i = 0; i < body_len; i++)
+ for (p = code; is_pair(p); p = cdr(p))
+ if (!float_optimize(sc, p))
+ break;
+ if (is_pair(p))
{
- sc->opts[sc->pc]->v7.fd(sc->opts[sc->pc]);
- sc->pc++;
+ pc_fallback(sc, 0);
+ set_no_float_opt(code);
+ }
+ else
+ {
+ end = denominator(slot_value(sc->args));
+ if (safe_step)
+ {
+ s7_pointer stepper;
+ slot_set_value(sc->args, stepper = make_mutable_integer(sc, integer(slot_value(sc->args))));
+ for (; integer(stepper) < end; integer(stepper)++)
+ {
+ sc->pc = 0;
+ for (i = 0; i < body_len; i++)
+ {
+ sc->opts[sc->pc]->v7.fd(sc->opts[sc->pc]);
+ sc->pc++;
+ }
+ }
+ }
+ else
+ {
+ s7_pointer step_slot, end_slot;
+ step_slot = dox_slot1(sc->envir);
+ end_slot = dox_slot2(sc->envir);
+ while (true)
+ {
+ s7_int step;
+ sc->pc = 0;
+ for (i = 0; i < body_len; i++)
+ {
+ sc->opts[sc->pc]->v7.fd(sc->opts[sc->pc]);
+ sc->pc++;
+ }
+
+ step = s7_integer(slot_value(step_slot)) + 1;
+ slot_set_value(step_slot, make_integer(sc, step));
+ if (step == s7_integer(slot_value(end_slot))) break;
+ }
+ }
+ sc->value = sc->T;
+ sc->code = cdadr(scc);
+ return(true);
}
}
- }
- else
- {
- s7_pointer step_slot, end_slot;
- step_slot = dox_slot1(sc->envir);
- end_slot = dox_slot2(sc->envir);
- while (true)
+ /* not float opt */
+
+ for (p = code; is_pair(p); p = cdr(p))
{
- s7_int step;
- sc->pc = 0;
- for (i = 0; i < body_len; i++)
+ opt_info *start;
+ start = sc->opts[sc->pc];
+ if (!cell_optimize(sc, p))
+ break;
+ if (start->v7.fp == d_to_p)
+ start->v7.fp = d_to_p_nr;
+ }
+ if (is_null(p))
+ {
+ end = denominator(slot_value(sc->args));
+ if (safe_step)
+ {
+ s7_pointer stepper;
+ slot_set_value(sc->args, stepper = make_mutable_integer(sc, integer(slot_value(sc->args))));
+ for (; integer(stepper) < end; integer(stepper)++)
+ {
+ sc->pc = 0;
+ for (i = 0; i < body_len; i++)
+ {
+ opt_info *o;
+ o = sc->opts[sc->pc];
+ o->v7.fp(o);
+ sc->pc++;
+ }
+ }
+ }
+ else
{
- sc->opts[sc->pc]->v7.fd(sc->opts[sc->pc]);
- sc->pc++;
+ s7_pointer step_slot, end_slot;
+ step_slot = dox_slot1(sc->envir);
+ end_slot = dox_slot2(sc->envir);
+ while (true)
+ {
+ s7_int step;
+ sc->pc = 0;
+ for (i = 0; i < body_len; i++)
+ {
+ opt_info *o;
+ o = sc->opts[sc->pc];
+ o->v7.fp(o);
+ sc->pc++;
+ }
+
+ step = s7_integer(slot_value(step_slot)) + 1;
+ slot_set_value(step_slot, make_integer(sc, step));
+ if (step == s7_integer(slot_value(end_slot))) break;
+ }
}
-
- step = s7_integer(slot_value(step_slot)) + 1;
- slot_set_value(step_slot, make_integer(sc, step));
- if (step == s7_integer(slot_value(end_slot))) break;
+ sc->value = sc->T;
+ sc->code = cdadr(scc);
+ return(true);
}
}
- sc->value = sc->T;
- sc->code = cdadr(scc);
- return(true);
+ return(false);
}
@@ -66008,6 +66452,7 @@ static int32_t do_let(s7_scheme *sc, s7_pointer step_slot, s7_pointer scc, bool
if (sc->safety > CLM_OPTIMIZATION_SAFETY) return(fall_through);
/* fprintf(stderr, "let_ok: %s\n", DISPLAY(scc)); */
+ /* do_let with non-float vars doesn't get many fixable hits */
let_code = caddr(scc);
let_body = cddr(let_code);
@@ -66030,6 +66475,7 @@ static int32_t do_let(s7_scheme *sc, s7_pointer step_slot, s7_pointer scc, bool
if (!float_optimize(sc, expr)) /* each of these needs to set the associated variable */
{
sc->envir = old_e;
+ /* fprintf(stderr, "vars: %s\n", DISPLAY_80(scc)); */
return(fall_through);
}
if (let_star)
@@ -66047,6 +66493,7 @@ static int32_t do_let(s7_scheme *sc, s7_pointer step_slot, s7_pointer scc, bool
if (!float_optimize(sc, p))
{
sc->envir = old_e;
+ /* fprintf(stderr, "body: %s\n", DISPLAY_80(scc)); */
return(fall_through);
}
}
@@ -66180,25 +66627,13 @@ static int32_t safe_dotimes_ex(s7_scheme *sc)
/* (define (hi) (do ((i 1 (+ 1 i))) ((= i 1) i))) -- we need the frame even if the loop is not evaluated */
- /* safe_dotimes: if null (or constant) body, set step=end and quit (here end is (= step lim) so nothing can happen)
- * TODO: break out this case in check_do
+ /* safe_dotimes: (car(body) is known to be a pair here)
* if 1-expr body look for syntactic case, if let(*) goto do_let, else opt_dotimes
* if they are unhappy, got safe_dotimes_step_p
- * TODO: another case for check_do
* else goto opt_dotimes then safe_dotimes_step_o
* if multi-line body, check opt_dotimes, then safe_dotimes_step
*/
- if ((is_null(sc->code)) ||
- ((!is_pair(car(sc->code))) &&
- (is_null(cdr(sc->code)))))
- {
- numerator(slot_value(sc->args)) = s7_integer(end_val);
- sc->value = sc->T;
- sc->code = cdadr(code);
- return(goto_SAFE_DO_END_CLAUSES);
- }
-
if (s7_integer(init_val) == s7_integer(end_val))
{
sc->value = sc->T;
@@ -66325,7 +66760,7 @@ static int32_t safe_do_ex(s7_scheme *sc)
return(goto_SAFE_DO_END_CLAUSES);
set_unsafe_do(sc->code);
}
-
+ /* fprintf(stderr, "%s unsafe\n", DISPLAY_80(sc->code)); */
sc->code = cddr(code);
set_unsafe_do(sc->code);
set_opt_pair2(code, sc->code);
@@ -66562,7 +66997,7 @@ static int32_t unknown_ex(s7_scheme *sc, s7_pointer f)
int32_t hop;
code = sc->code;
- hop = (is_immutable_symbol(car(code))) ? 1 : 0;
+ hop = (is_constant_symbol(sc, car(code))) ? 1 : 0;
/* fprintf(stderr, "%s: local: %d, hop: %d\n", DISPLAY(code), is_local_symbol(code), hop); */
switch (type(f))
@@ -66621,7 +67056,7 @@ static int32_t unknown_g_ex(s7_scheme *sc, s7_pointer f)
int32_t hop;
code = sc->code;
- hop = (is_immutable_symbol(car(code))) ? 1 : 0;
+ hop = (is_constant_symbol(sc, car(code))) ? 1 : 0;
/* fprintf(stderr, "unknown_g_ex: %s, local: %d, hop: %d\n", DISPLAY_80(sc->code), is_local_symbol(sc->code), hop); */
sym_case = is_symbol(cadr(code));
@@ -66761,7 +67196,7 @@ static int32_t unknown_gg_ex(s7_scheme *sc, s7_pointer f)
s7_pointer code;
code = sc->code;
- hop = (is_immutable_symbol(car(code))) ? 1 : 0;
+ hop = (is_constant_symbol(sc, car(code))) ? 1 : 0;
s1 = is_symbol(cadr(code));
s2 = is_symbol(caddr(code));
@@ -66851,7 +67286,7 @@ static int32_t unknown_gg_ex(s7_scheme *sc, s7_pointer f)
annotate_args(sc, cdr(code), sc->envir);
set_arglist_length(code, small_int(2));
if (closure_star_arity_to_int(sc, f) == 2)
- return(fixup_unknown_op(sc, code, f, hop + ((is_safe_closure(f)) ? OP_SAFE_CLOSURE_STAR_AA : OP_CLOSURE_STAR_AA)));
+ return(fixup_unknown_op(sc, code, f, hop + ((is_safe_closure(f)) ? OP_SAFE_CLOSURE_STAR_AA : OP_CLOSURE_STAR_ALL_X)));
return(fixup_unknown_op(sc, code, f, hop + ((is_safe_closure(f)) ? OP_SAFE_CLOSURE_STAR_ALL_X : OP_CLOSURE_STAR_ALL_X)));
}
break;
@@ -66874,7 +67309,7 @@ static int32_t unknown_all_s_ex(s7_scheme *sc, s7_pointer f)
(!is_slot(find_symbol(sc, car(arg)))))
return(fall_through);
- hop = (is_immutable_symbol(car(code))) ? 1 : 0;
+ hop = (is_constant_symbol(sc, car(code))) ? 1 : 0;
switch (type(f))
{
@@ -66936,7 +67371,7 @@ static int32_t unknown_a_ex(s7_scheme *sc, s7_pointer f)
int32_t hop;
code = sc->code;
- hop = (is_immutable_symbol(car(code))) ? 1 : 0;
+ hop = (is_constant_symbol(sc, car(code))) ? 1 : 0;
#if DEBUGGING
if (!has_all_x(cdr(code)))
@@ -67024,7 +67459,7 @@ static int32_t unknown_aa_ex(s7_scheme *sc, s7_pointer f)
/* fprintf(stderr, "unknown_aa: %d %s %s\n", type(f), DISPLAY(f), DISPLAY(sc->code)); */
code = sc->code;
- hop = (is_immutable_symbol(car(code))) ? 1 : 0;
+ hop = (is_constant_symbol(sc, car(code))) ? 1 : 0;
set_arglist_length(code, small_int(2));
annotate_args(sc, cdr(code), sc->envir);
@@ -67058,7 +67493,7 @@ static int32_t unknown_aa_ex(s7_scheme *sc, s7_pointer f)
{
set_arglist_length(code, small_int(2));
if (closure_star_arity_to_int(sc, f) == 2)
- return(fixup_unknown_op(sc, code, f, hop + ((is_safe_closure(f)) ? OP_SAFE_CLOSURE_STAR_AA : OP_CLOSURE_STAR_AA)));
+ return(fixup_unknown_op(sc, code, f, hop + ((is_safe_closure(f)) ? OP_SAFE_CLOSURE_STAR_AA : OP_CLOSURE_STAR_ALL_X)));
return(fixup_unknown_op(sc, code, f, hop + ((is_safe_closure(f)) ? OP_SAFE_CLOSURE_STAR_ALL_X : OP_CLOSURE_STAR_ALL_X)));
}
break;
@@ -67075,7 +67510,7 @@ static int32_t unknown_all_x_ex(s7_scheme *sc, s7_pointer f)
int32_t num_args, hop;
code = sc->code;
- hop = (is_immutable_symbol(car(code))) ? 1 : 0;
+ hop = (is_constant_symbol(sc, car(code))) ? 1 : 0;
num_args = integer(arglist_length(code));
switch (type(f))
@@ -67288,7 +67723,7 @@ static int32_t string_a_ex(s7_scheme *sc)
if ((index < string_length(s)) &&
(index >= 0))
{
- if (is_byte_vector(s))
+ if (is_byte_vector_not_string(s))
sc->value = small_int((unsigned char)string_value(s)[index]);
else sc->value = s7_make_character(sc, ((unsigned char *)string_value(s))[index]);
return(goto_START);
@@ -67571,7 +68006,7 @@ static void apply_string(s7_scheme *sc) /* -------- s
if ((index >= 0) &&
(index < string_length(sc->code)))
{
- if (is_byte_vector(sc->code))
+ if (is_byte_vector_not_string(sc->code))
sc->value = small_int((unsigned char)(string_value(sc->code))[index]);
else sc->value = s7_make_character(sc, ((unsigned char *)string_value(sc->code))[index]);
return;
@@ -68030,7 +68465,7 @@ static int32_t define1_ex(s7_scheme *sc)
* This happens when we reload a file that calls define-constant.
*/
/* sc->code is a symbol at this point */
- if (is_immutable_symbol(sc->code)) /* (define pi 3) or (define (pi a) a) */
+ if (is_constant_symbol(sc, sc->code)) /* (define pi 3) or (define (pi a) a) */
{
s7_pointer x;
@@ -68048,17 +68483,17 @@ static int32_t define1_ex(s7_scheme *sc)
(s7_is_morally_equal(sc, sc->value, slot_value(x))))) /* if value is unchanged, just ignore this (re)definition */
eval_error_no_return(sc, sc->syntax_error_symbol, "define: ~S is immutable", sc->code); /* can't use s7_is_equal because value might be NaN, etc */
}
- if (symbol_has_accessor(sc->code))
+ if (symbol_has_setter(sc->code))
{
s7_pointer x;
x = find_symbol(sc, sc->code);
if ((is_slot(x)) &&
- (slot_has_accessor(x)))
+ (slot_has_setter(x)))
{
- sc->value = bind_accessed_symbol(sc, OP_DEFINE_WITH_ACCESSOR, sc->code, sc->value);
+ sc->value = bind_symbol_with_setter(sc, OP_DEFINE_WITH_SETTER, sc->code, sc->value);
if (sc->value == sc->no_value)
return(goto_APPLY);
- /* if all goes well, OP_DEFINE_WITH_ACCESSOR will jump to DEFINE2 */
+ /* if all goes well, OP_DEFINE_WITH_SETTER will jump to DEFINE2 */
}
}
return(fall_through);
@@ -68066,6 +68501,10 @@ static int32_t define1_ex(s7_scheme *sc)
static void define2_ex(s7_scheme *sc)
{
+ if ((is_immutable(sc->envir)) &&
+ (is_let(sc->envir))) /* not () */
+ eval_error_no_return(sc, sc->syntax_error_symbol, "define ~S: let is immutable", sc->code);
+
if ((is_any_closure(sc->value)) &&
((!(is_let(closure_let(sc->value)))) ||
(!(is_funclet(closure_let(sc->value)))))) /* otherwise it's (define f2 f1) or something similar */
@@ -68927,80 +69366,6 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
goto BEGIN1;
- DOTIMES_ONE_STEP:
- case OP_DOTIMES_ONE_STEP:
- {
- s7_pointer end, stepper, end_slot;
- s7_int lim = 0; /* make the compiler happy */
-
- /* fprintf(stderr, "dotimes one step %s\n", DISPLAY(sc->code)); */
-
- sc->envir = make_do_frame(sc);
- /* fprintf(stderr, "frame: %s\n", DISPLAY(sc->envir)); */
-
- end = cadr(sc->code);
- do_all_x_end(end);
-
- stepper = dox_slot1(sc->envir);
- end_slot = find_symbol(sc, caddar(end)); /* can't trust local slot here (local_symbol?) */
- if (is_t_integer(slot_value(end_slot)))
- {
- /* TODO: need to make sure step not set */
- lim = integer(slot_value(end_slot));
- denominator(slot_value(stepper)) = lim;
- set_step_end(stepper);
- }
-
- if (s7_optimize_nr(sc, cddr(sc->code)))
- {
- s7_pointer step_expr;
- step_expr = car(slot_expression(stepper));
- /* fprintf(stderr, "slot: %s, end: %s %s\n", DISPLAY(stepper), DISPLAY(end), DISPLAY(slot_expression(stepper))); */
-
- if ((is_slot(stepper)) &&
- (c_callee(end) == all_x_c_ss) &&
- (c_callee(car(end)) == g_equal_2) &&
- (cadar(end) == slot_symbol(stepper)) &&
- (is_t_integer(slot_value(stepper))) &&
- /* (is_safe_stepper(stepper)) && */
- (caar(end) = sc->add_symbol) &&
- (cadar(end) == cadr(step_expr)) &&
- (is_t_integer(caddr(step_expr))) &&
- (integer(caddr(step_expr)) == 1) &&
- (is_step_end(stepper)))
- {
- opt_info *o;
- s7_pointer (*fp)(void *o);
- s7_pointer val;
- o = sc->opts[0];
- fp = o->v7.fp;
- val = make_mutable_integer(sc, integer(slot_value(stepper)));
- slot_set_value(stepper, val);
- for (; integer(val) < lim; integer(val)++)
- {
- sc->pc = 0;
- fp(o);
- }
- sc->value = sc->T;
- sc->code = cdr(end);
- goto SAFE_DO_END_CLAUSES; /* no multiple-values here */
- }
-
- while (true)
- {
- sc->pc = 0;
- sc->opts[0]->v7.fp(sc->opts[0]);
- update_steppers(sc);
- /* TODO: get the stepper and handle direct in more than just +1 (do_let|dotimes) */
- do_all_x_end(end);
- }
- }
- }
- push_stack_no_args(sc, OP_DOX_STEP, sc->code);
- sc->code = _TPair(cddr(sc->code));
- goto BEGIN1;
-
-
/* -------------------------------- */
SAFE_DOTIMES:
case OP_SAFE_DOTIMES:
@@ -69115,7 +69480,6 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
/* simple_do: set up local env, check end (c_c?), goto simple_do_ex
* if latter gets s7_optimize, run locally, else goto simple_do_step.
* but is not 1 expr body, etc -- just goto simple_do_step,
- * TODO: make this decision in check_do
*/
s7_pointer init, end, code;
@@ -69421,7 +69785,6 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (op == sc->safe_do_symbol) goto SAFE_DO;
if (op == sc->do_no_vars_symbol) goto DO_NO_VARS;
- if (op == sc->dotimes_one_step_symbol) goto DOTIMES_ONE_STEP;
goto SIMPLE_DO;
}
@@ -69581,7 +69944,6 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
EVAL:
case OP_EVAL:
-
/* main part of evaluation
* at this point, it's sc->code we care about; sc->args is not set yet.
*/
@@ -69718,7 +70080,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer val;
val = find_symbol_unchecked(sc, cadr(code));
- eval_boolean_method(sc, is_pair, sc->is_pair_symbol, val);
+ sc->value = (is_pair(val)) ? sc->T : sc->F;
goto START;
}
@@ -69728,7 +70090,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer val;
val = find_symbol_unchecked(sc, cadr(code));
- eval_boolean_method(sc, is_null, sc->is_null_symbol, val);
+ sc->value = (is_null(val)) ? sc->T : sc->F;
goto START;
}
@@ -69738,7 +70100,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer val;
val = find_symbol_unchecked(sc, cadr(code));
- eval_boolean_method(sc, is_symbol, sc->is_symbol_symbol, val);
+ sc->value = (is_symbol(val)) ? sc->T : sc->F;
goto START;
}
@@ -69981,6 +70343,19 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
goto START;
}
+ case OP_SAFE_C_opAq_S:
+ if (!c_function_is_ok(sc, code)) break;
+ case HOP_SAFE_C_opAq_S:
+ {
+ s7_pointer arg;
+ arg = cadr(code);
+ set_car(sc->a1_1, c_call(cdr(arg))(sc, cadr(arg)));
+ set_car(sc->t2_1, c_call(arg)(sc, sc->a1_1));
+ set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(code)));
+ sc->value = c_call(code)(sc, sc->t2_1);
+ goto START;
+ }
+
case OP_SAFE_C_S_opAAq:
if (!c_function_is_ok(sc, code)) break;
case HOP_SAFE_C_S_opAAq:
@@ -70370,6 +70745,20 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
goto START;
}
+ case OP_SAFE_C_CCS:
+ if (!c_function_is_ok(sc, code)) break;
+ case HOP_SAFE_C_CCS:
+ {
+ s7_pointer args;
+ args = cdr(code);
+
+ set_car(sc->t3_3, find_symbol_unchecked(sc, opt_sym1(args)));
+ set_car(sc->t3_1, car(args));
+ set_car(sc->t3_2, opt_con2(args));
+ sc->value = c_call(code)(sc, sc->t3_1);
+ goto START;
+ }
+
case OP_SAFE_C_CSS:
if (!c_function_is_ok(sc, code)) break;
case HOP_SAFE_C_CSS:
@@ -72377,8 +72766,6 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
goto BEGIN1;
}
- case OP_CLOSURE_STAR_AA:
- /* in the AA case closure_arity==2 and args=2 so we could simplify the all_x cases below */
case OP_CLOSURE_STAR_ALL_X:
if (!closure_star_is_ok(sc, code, MATCH_UNSAFE_CLOSURE_STAR, integer(arglist_length(code))))
{
@@ -72386,7 +72773,6 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
goto OPT_EVAL;
break;
}
- case HOP_CLOSURE_STAR_AA:
case HOP_CLOSURE_STAR_ALL_X:
{
s7_pointer p, old_args;
@@ -73210,8 +73596,16 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
goto BEGIN1;
case T_C_MACRO:
- sc->value = c_macro_call(sc->code)(sc, sc->args);
- goto START;
+ {
+ int32_t len;
+ len = safe_list_length(sc, sc->args);
+ if (len < (int32_t)c_macro_required_args(sc->code))
+ s7_error(sc, sc->wrong_number_of_args_symbol, set_elist_3(sc, sc->not_enough_arguments_string, sc->code, sc->args));
+ if ((int32_t)c_macro_all_args(sc->code) < len)
+ s7_error(sc, sc->wrong_number_of_args_symbol, set_elist_3(sc, sc->too_many_arguments_string, sc->code, sc->args));
+ sc->value = c_macro_call(sc->code)(sc, sc->args);
+ goto START;
+ }
}
eval_error(sc, "macroexpand argument is not a macro call: ~A", sc->args);
@@ -73234,7 +73628,13 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
sc->code = car(sc->code);
if (is_pair(sc->code)) sc->code = car(sc->code); /* (define-constant (ex3 a)...) */
if (is_symbol(sc->code))
- set_immutable(sc->code);
+ {
+ s7_pointer slot;
+ slot = find_symbol(sc, sc->code);
+ /* set_immutable(sc->code); */ /* obsolete */
+ set_possibly_constant(sc->code);
+ set_immutable(slot);
+ }
break;
case OP_DEFINE_CONSTANT:
@@ -73246,7 +73646,17 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
(symbol_id(car(sc->code)) == 0) && /* else (let iter ... (define-constant iter iter) ...) -> segfault on later calls */
(is_null(cddr(sc->code))))
{
- set_immutable(car(sc->code));
+ s7_pointer sym;
+ sym = car(sc->code);
+ /* set_immutable(sym); */ /* obsolete */
+ set_immutable(global_slot(sym)); /* id == 0 so its global */
+ set_possibly_constant(sym);
+ {
+ s7_pointer slot;
+ slot = find_symbol(sc, sym);
+ if (slot != global_slot(sym))
+ fprintf(stderr, "%s slots: %p %p %p\n", DISPLAY(sym), slot, global_slot(sym), local_slot(sym));
+ }
sc->value = find_symbol_checked(sc, car(sc->code));
goto START;
}
@@ -73264,7 +73674,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_DEFINE1:
if (define1_ex(sc) == goto_APPLY) goto APPLY;
- case OP_DEFINE_WITH_ACCESSOR:
+ case OP_DEFINE_WITH_SETTER:
define2_ex(sc);
break;
@@ -73416,7 +73826,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_SET_PAIR:
{
- /* ([set!] (procedure-setter g) s) or ([set!] (str 0) #\a) */
+ /* ([set!] (setter g) s) or ([set!] (str 0) #\a) */
s7_pointer obj, arg, value;
value = cadr(sc->code);
if (is_symbol(value))
@@ -73475,7 +73885,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
SET_CASE(OP_SET_SYMBOL_opCq, slot_set_value(lx, c_call(cadr(sc->code))(sc, opt_pair2(sc->code))))
- /* here we know the symbols do not have accessors, at least at optimization time */
+ /* here we know the symbols do not have setters, at least at optimization time */
SET_CASE(OP_SET_SYMBOL_opSq,
do { \
set_car(sc->t1_1, find_symbol_unchecked(sc, opt_sym2(sc->code))); \
@@ -73648,7 +74058,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
check_set(sc);
case OP_SET_UNCHECKED:
- if (is_pair(car(sc->code))) /* has accessor */
+ if (is_pair(car(sc->code))) /* has setter */
{
int32_t choice;
choice = set_pair_ex(sc);
@@ -73683,26 +74093,44 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
lx = find_symbol(sc, _TSet(sc->code));
if (is_slot(lx))
{
- if (slot_has_accessor(lx))
+ if (slot_has_setter(lx))
{
s7_pointer func;
- func = slot_accessor(lx);
+ func = slot_setter(lx);
if (is_procedure_or_macro(func))
{
- if (is_c_function(func))
+ if (has_let_arg(func))
{
- set_car(sc->t2_1, sc->code);
- set_car(sc->t2_2, sc->value);
- sc->value = c_function_call(func)(sc, sc->t2_1);
- if (sc->value == sc->error_symbol) /* backwards compatibility... (but still used I think in g_features_set) */
- return(s7_error(sc, sc->error_symbol, set_elist_3(sc, s7_make_string_wrapper(sc, "can't set ~S to ~S"), car(sc->t2_1), car(sc->t2_2))));
+ if (is_c_function(func))
+ {
+ set_car(sc->t3_1, sc->code);
+ set_car(sc->t3_2, sc->value);
+ set_car(sc->t3_3, sc->envir);
+ sc->value = c_function_call(func)(sc, sc->t3_1);
+ }
+ else
+ {
+ sc->args = list_3(sc, sc->code, sc->value, sc->envir);
+ push_stack(sc, OP_SET_WITH_SETTER, sc->args, lx); /* op, args, code */
+ sc->code = func;
+ goto APPLY;
+ }
}
else
{
- sc->args = list_2(sc, sc->code, sc->value);
- push_stack(sc, OP_SET_WITH_ACCESSOR, sc->args, lx); /* op, args, code */
- sc->code = func;
- goto APPLY;
+ if (is_c_function(func))
+ {
+ set_car(sc->t2_1, sc->code);
+ set_car(sc->t2_2, sc->value);
+ sc->value = c_function_call(func)(sc, sc->t2_1);
+ }
+ else
+ {
+ sc->args = list_2(sc, sc->code, sc->value);
+ push_stack(sc, OP_SET_WITH_SETTER, sc->args, lx); /* op, args, code */
+ sc->code = func;
+ goto APPLY;
+ }
}
}
}
@@ -73717,9 +74145,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
eval_type_error(sc, "set! ~A: unbound variable", sc->code);
}
- case OP_SET_WITH_ACCESSOR:
- if (sc->value == sc->error_symbol) /* backwards compatibility... */
- return(s7_error(sc, sc->error_symbol, set_elist_2(sc, s7_make_string_wrapper(sc, "can't set ~S"), sc->code)));
+ case OP_SET_WITH_SETTER:
slot_set_value(sc->code, sc->value);
break;
@@ -74925,7 +75351,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
cadddr(sc->args) = cdr(cadddr(sc->args));
car(sc->args) = cdar(sc->args);
if ((!is_symbol(settee)) ||
- (symbol_has_accessor(settee)) ||
+ (symbol_has_setter(settee)) ||
(is_pair(new_value)))
{
push_stack(sc, OP_LET_TEMP_INIT2, sc->args, sc->code);
@@ -74957,7 +75383,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
caddr(sc->args) = cdaddr(sc->args);
car(sc->args) = cdar(sc->args);
if ((!is_symbol(settee)) ||
- (symbol_has_accessor(settee)))
+ (symbol_has_setter(settee)))
{
push_stack(sc, OP_LET_TEMP_DONE1, sc->args, sc->code);
if ((is_pair(old_value)) || (is_symbol(old_value)))
@@ -75242,7 +75668,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (is_false(sc, sc->value))
goto START;
sc->value = c_call(cdr(sc->code))(sc, cadr(sc->code));
- goto START;
+ break; /* goto START; */
/* -------------------------------- OR -------------------------------- */
@@ -75330,7 +75756,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (is_true(sc, sc->value))
goto START;
sc->value = c_call(cdr(sc->code))(sc, cadr(sc->code));
- goto START;
+ break; /* goto START; */
/* by going direct without a push_stack on the last one we get tail calls,
* but if the last arg (also in "and" above) is "values", there is a slight
@@ -75399,14 +75825,15 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
}
break;
- case OP_DEFINE_MACRO_WITH_ACCESSOR:
- if (sc->value == sc->error_symbol) /* backwards compatibility... */
- return(s7_error(sc, sc->error_symbol, set_elist_3(sc, s7_make_string_wrapper(sc, "can't define-macro ~S to ~S"), car(sc->args), cadr(sc->args))));
+ case OP_DEFINE_MACRO_WITH_SETTER:
sc->code = sc->value;
if ((!is_pair(sc->code)) ||
(!is_pair(car(sc->code))) ||
(!is_symbol(caar(sc->code))))
eval_error(sc, "define-macro: ~S does not look like a macro?", sc->code);
+ if ((is_immutable(sc->envir)) &&
+ (is_let(sc->envir))) /* not () */
+ eval_error_no_return(sc, sc->syntax_error_symbol, "define-macro ~S: let is immutable", caar(sc->code));
sc->value = make_macro(sc, sc->cur_op);
break;
@@ -75416,19 +75843,22 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_DEFINE_MACRO:
case OP_DEFINE_MACRO_STAR:
check_define_macro(sc, sc->cur_op);
- if (symbol_has_accessor(caar(sc->code)))
+ if (symbol_has_setter(caar(sc->code)))
{
s7_pointer x;
x = find_symbol(sc, caar(sc->code));
if ((is_slot(x)) &&
- (slot_has_accessor(x)))
+ (slot_has_setter(x)))
{
- sc->value = bind_accessed_symbol(sc, OP_DEFINE_MACRO_WITH_ACCESSOR, caar(sc->code), sc->code);
+ sc->value = bind_symbol_with_setter(sc, OP_DEFINE_MACRO_WITH_SETTER, caar(sc->code), sc->code);
if (sc->value == sc->no_value)
goto APPLY;
sc->code = sc->value;
}
}
+ if ((is_immutable(sc->envir)) &&
+ (is_let(sc->envir))) /* not () */
+ eval_error_no_return(sc, sc->syntax_error_symbol, "define-macro ~S: let is immutable", caar(sc->code));
sc->value = make_macro(sc, sc->cur_op);
break;
@@ -81079,7 +81509,7 @@ static s7_pointer g_s7_let_set_fallback(s7_scheme *sc, s7_pointer args)
}
-/* some procedure-signature support functions */
+/* some signature support functions */
static s7_pointer g_is_float(s7_scheme *sc, s7_pointer args)
{
@@ -81443,14 +81873,14 @@ s7_scheme *s7_init(void)
sc->gpofl_loc = INITIAL_PROTECTED_OBJECTS_SIZE - 1;
sc->protected_objects = s7_make_vector(sc, INITIAL_PROTECTED_OBJECTS_SIZE);
- sc->protected_accessors_size = INITIAL_PROTECTED_OBJECTS_SIZE;
- sc->protected_accessors_loc = 0;
- sc->protected_accessors = s7_make_vector(sc, INITIAL_PROTECTED_OBJECTS_SIZE);
+ sc->protected_setters_size = INITIAL_PROTECTED_OBJECTS_SIZE;
+ sc->protected_setters_loc = 0;
+ sc->protected_setters = s7_make_vector(sc, INITIAL_PROTECTED_OBJECTS_SIZE);
for (i = 0; i < INITIAL_PROTECTED_OBJECTS_SIZE; i++)
{
vector_element(sc->protected_objects, i) = sc->gc_nil;
- vector_element(sc->protected_accessors, i) = sc->gc_nil;
+ vector_element(sc->protected_setters, i) = sc->gc_nil;
sc->gpofl[i] = i;
}
@@ -81720,6 +82150,7 @@ s7_scheme *s7_init(void)
sc->macroexpand_symbol = assign_syntax(sc, "macroexpand", OP_MACROEXPAND, small_int(1), small_int(1), macroexpand_help);
sc->with_let_symbol = assign_syntax(sc, "with-let", OP_WITH_LET, small_int(1), max_arity, with_let_help);
sc->let_temporarily_symbol = assign_syntax(sc, "let-temporarily", OP_LET_TEMPORARILY, small_int(2), max_arity, let_temporarily_help);
+ set_local_slot(sc->with_let_symbol, global_slot(sc->with_let_symbol)); /* for set_locals */
set_immutable(sc->with_let_symbol);
sc->quote_unchecked_symbol = assign_internal_syntax(sc, "quote", OP_QUOTE_UNCHECKED);
@@ -81768,7 +82199,6 @@ s7_scheme *s7_init(void)
sc->dox_symbol = assign_internal_syntax(sc, "do", OP_DOX);
sc->do_no_vars_symbol = assign_internal_syntax(sc, "do", OP_DO_NO_VARS);
sc->do_no_vars_no_opt_symbol = assign_internal_syntax(sc, "do", OP_DO_NO_VARS_NO_OPT);
- sc->dotimes_one_step_symbol = assign_internal_syntax(sc, "do", OP_DOTIMES_ONE_STEP);
sc->lambda_unchecked_symbol = assign_internal_syntax(sc, "lambda", OP_LAMBDA_UNCHECKED);
sc->lambda_star_unchecked_symbol = assign_internal_syntax(sc, "lambda*", OP_LAMBDA_STAR_UNCHECKED);
@@ -81874,8 +82304,7 @@ s7_scheme *s7_init(void)
sc->when_unchecked_symbol = assign_internal_syntax(sc, "when", OP_WHEN_UNCHECKED);
sc->unless_unchecked_symbol = assign_internal_syntax(sc, "unless", OP_UNLESS_UNCHECKED);
- sc->documentation_symbol = make_symbol(sc, "documentation");
- sc->signature_symbol = make_symbol(sc, "signature");
+ sc->setter_symbol = make_symbol(sc, "setter");
#if WITH_IMMUTABLE_UNQUOTE
/* this code solves the various unquote redefinition troubles
@@ -81966,7 +82395,6 @@ s7_scheme *s7_init(void)
sc->is_let_symbol = defun("let?", is_let, 1, 0, false); symbol_type(sc->is_let_symbol) = T_LET;
sc->is_openlet_symbol = defun("openlet?", is_openlet, 1, 0, false);
sc->is_iterator_symbol = defun("iterator?", is_iterator, 1, 0, false); symbol_type(sc->is_iterator_symbol) = T_ITERATOR;
- sc->is_constant_symbol = defun("constant?", is_constant, 1, 0, false);
sc->is_macro_symbol = defun("macro?", is_macro, 1, 0, false);
sc->is_c_pointer_symbol = defun("c-pointer?", is_c_pointer, 1, 1, false); symbol_type(sc->is_c_pointer_symbol) = T_C_POINTER;
sc->is_c_object_symbol = defun("c-object?", is_c_object, 1, 0, false); symbol_type(sc->is_c_object_symbol) = T_C_OBJECT;
@@ -82030,8 +82458,11 @@ s7_scheme *s7_init(void)
sc->symbol_symbol = defun("symbol", symbol, 1, 0, true);
sc->symbol_to_value_symbol = defun("symbol->value", symbol_to_value, 1, 1, false);
sc->symbol_to_dynamic_value_symbol = defun("symbol->dynamic-value", symbol_to_dynamic_value, 1, 0, false);
- s7_typed_dilambda(sc, "symbol-access", g_symbol_access, 1, 1, g_symbol_set_access, 2, 1, H_symbol_access, Q_symbol_access, NULL);
- sc->symbol_access_symbol = make_symbol(sc, "symbol-access");
+ s7_typed_dilambda(sc, "symbol-setter", g_symbol_setter, 1, 1, g_symbol_set_setter, 2, 1, H_symbol_setter, Q_symbol_setter, NULL);
+ sc->symbol_setter_symbol = make_symbol(sc, "symbol-setter");
+ sc->immutable_symbol = defun("immutable!", immutable, 1, 0, false);
+ sc->is_immutable_symbol = defun("immutable?", is_immutable, 1, 0, false);
+ sc->is_constant_symbol = defun("constant?", is_constant, 1, 0, false);
sc->string_to_keyword_symbol = defun("string->keyword", string_to_keyword, 1, 0, false);
sc->symbol_to_keyword_symbol = defun("symbol->keyword", symbol_to_keyword, 1, 0, false);
@@ -82041,6 +82472,7 @@ s7_scheme *s7_init(void)
sc->rootlet_symbol = defun("rootlet", rootlet, 0, 0, false);
sc->curlet_symbol = defun("curlet", curlet, 0, 0, false);
sc->unlet_symbol = defun("unlet", unlet, 0, 0, false);
+ set_local_slot(sc->unlet_symbol, global_slot(sc->unlet_symbol)); /* for set_locals */
set_immutable(sc->unlet_symbol);
/* unlet (and with-let) don't actually need to be immutable, but s7.html says they are... */
sc->sublet_symbol = defun("sublet", sublet, 1, 0, true);
@@ -82053,7 +82485,7 @@ s7_scheme *s7_init(void)
sc->let_ref_symbol = defun("let-ref", let_ref, 2, 0, false);
sc->let_set_symbol = defun("let-set!", let_set, 3, 0, false);
sc->let_ref_fallback_symbol = make_symbol(sc, "let-ref-fallback");
- sc->let_set_fallback_symbol = make_symbol(sc, "let-set!-fallback");
+ sc->let_set_fallback_symbol = make_symbol(sc, "let-set-fallback"); /* was let-set!-fallback until 9-Oct-17 */
sc->make_iterator_symbol = defun("make-iterator", make_iterator, 1, 1, false);
sc->iterate_symbol = defun("iterate", iterate, 1, 0, false);
@@ -82282,7 +82714,7 @@ s7_scheme *s7_init(void)
sc->car_symbol = defun("car", car, 1, 0, false);
sc->cdr_symbol = defun("cdr", cdr, 1, 0, false);
sc->set_car_symbol = defun("set-car!", set_car, 2, 0, false);
- sc->set_cdr_symbol = unsafe_defun("set-cdr!", set_cdr, 2, 0, false);
+ sc->set_cdr_symbol = defun("set-cdr!", set_cdr, 2, 0, false); /* was unsafe 27-Sep-17 */
sc->caar_symbol = defun("caar", caar, 1, 0, false);
sc->cadr_symbol = defun("cadr", cadr, 1, 0, false);
sc->cdar_symbol = defun("cdar", cdar, 1, 0, false);
@@ -82407,13 +82839,13 @@ s7_scheme *s7_init(void)
sc->list_values_symbol = unsafe_defun("list-values", list_values, 0, 0, true); /* see comment above */
set_immutable(sc->list_values_symbol);
- sc->procedure_documentation_symbol = defun("procedure-documentation", procedure_documentation, 1, 0, false);
- sc->procedure_signature_symbol = defun("procedure-signature", procedure_signature, 1, 0, false);
+ sc->documentation_symbol = defun("documentation", documentation, 1, 0, false);
+ sc->signature_symbol = defun("signature", signature, 1, 0, false);
sc->help_symbol = defun("help", help, 1, 0, false);
sc->procedure_source_symbol = defun("procedure-source", procedure_source, 1, 0, false);
sc->funclet_symbol = defun("funclet", funclet, 1, 0, false);
sc->dilambda_symbol = defun("dilambda", dilambda, 2, 0, false);
- s7_typed_dilambda(sc, "procedure-setter", g_procedure_setter, 1, 0, g_procedure_set_setter, 2, 0, H_procedure_setter, Q_procedure_setter, NULL);
+ s7_typed_dilambda(sc, "setter", g_setter, 1, 0, g_set_setter, 2, 0, H_setter, Q_setter, NULL);
sc->arity_symbol = defun("arity", arity, 1, 0, false);
sc->is_aritable_symbol = defun("aritable?", is_aritable, 2, 0, false);
@@ -82434,8 +82866,8 @@ s7_scheme *s7_init(void)
#endif
s7_define_function(sc, "s7-optimize", g_optimize, 1, 0, false, "short-term debugging aid");
- sym = s7_define_function(sc, "(c-object set)", g_internal_c_object_set, 1, 0, true, "internal object setter redirection");
- sc->object_set_function = slot_value(global_slot(sym));
+ sc->c_object_set_function = s7_make_function(sc, "#<c-object-setter>", g_c_object_set, 1, 0, true, "c-object setter");
+ /* c_function_signature(sc->c_object_set_function) = s7_make_circular_signature(sc, 2, 3, sc->T, sc->is_c_object_symbol, sc->T); */
set_scope_safe(slot_value(global_slot(sc->call_with_input_string_symbol)));
set_scope_safe(slot_value(global_slot(sc->call_with_input_file_symbol)));
@@ -82461,20 +82893,20 @@ s7_scheme *s7_init(void)
set_scope_safe(slot_value(global_slot(sc->apply_values_symbol)));
set_scope_safe(slot_value(global_slot(sc->list_values_symbol)));
- defun("tree-leaves", tree_leaves, 1, 0, false);
- defun("tree-memq", tree_memq, 2, 0, false);
- defun("tree-set-memq", tree_set_memq, 2, 0, false);
- sc->tree_count_symbol = defun("tree-count", tree_count, 2, 1, false);
+ sc->tree_leaves_symbol = defun("tree-leaves", tree_leaves, 1, 0, false);
+ sc->tree_memq_symbol = defun("tree-memq", tree_memq, 2, 0, false);
+ sc->tree_set_memq_symbol = defun("tree-set-memq", tree_set_memq, 2, 0, false);
+ sc->tree_count_symbol = defun("tree-count", tree_count, 2, 1, false);
/* -------- *features* -------- */
sc->features_symbol = s7_define_variable(sc, "*features*", sc->nil);
- s7_symbol_set_access(sc, sc->features_symbol, s7_make_function(sc, "(set *features*)", g_features_set, 2, 0, false, "*features* accessor"));
+ s7_symbol_set_setter(sc, sc->features_symbol, s7_make_function(sc, "(set *features*)", g_features_set, 2, 0, false, "*features* setter"));
/* -------- *load-path* -------- */
sc->load_path_symbol = s7_define_variable_with_documentation(sc, "*load-path*", sc->nil,
"*load-path* is a list of directories (strings) that the load function searches if it is passed an incomplete file name");
- s7_symbol_set_access(sc, sc->load_path_symbol, s7_make_function(sc, "(set *load-path*)", g_load_path_set, 2, 0, false, "*load-path* accessor"));
+ s7_symbol_set_setter(sc, sc->load_path_symbol, s7_make_function(sc, "(set *load-path*)", g_load_path_set, 2, 0, false, "*load-path* setter"));
#ifdef CLOAD_DIR
sc->cload_directory_symbol = s7_define_variable(sc, "*cload-directory*", s7_make_string(sc, (char *)CLOAD_DIR));
@@ -82482,8 +82914,8 @@ s7_scheme *s7_init(void)
#else
sc->cload_directory_symbol = s7_define_variable(sc, "*cload-directory*", make_empty_string(sc, 0, 0));
#endif
- s7_symbol_set_access(sc, sc->cload_directory_symbol, s7_make_function(sc, "(set *cload-directory*)", g_cload_directory_set, 2, 0, false,
- "*cload-directory* accessor"));
+ s7_symbol_set_setter(sc, sc->cload_directory_symbol, s7_make_function(sc, "(set *cload-directory*)", g_cload_directory_set, 2, 0, false,
+ "*cload-directory* setter"));
/* -------- *autoload* --------
@@ -82514,7 +82946,7 @@ s7_scheme *s7_init(void)
/* -------- *#readers* -------- */
sym = s7_define_variable(sc, "*#readers*", sc->nil);
sc->sharp_readers = global_slot(sym);
- s7_symbol_set_access(sc, sym, s7_make_function(sc, "(set *#readers*)", g_sharp_readers_set, 2, 0, false, "*#readers* accessor"));
+ s7_symbol_set_setter(sc, sym, s7_make_function(sc, "(set *#readers*)", g_sharp_readers_set, 2, 0, false, "*#readers* setter"));
/* sigh... I don't like these! */
s7_define_constant(sc, "nan.0", real_NaN);
@@ -82527,6 +82959,10 @@ s7_scheme *s7_init(void)
s7_provide(sc, "s7-" S7_VERSION);
s7_provide(sc, "ratio");
+ sc->local_documentation_symbol = s7_make_symbol(sc, "+documentation+");
+ sc->local_signature_symbol = s7_make_symbol(sc, "+signature+");
+ sc->local_setter_symbol = s7_make_symbol(sc, "+setter+");
+
#if WITH_PURE_S7
s7_provide(sc, "pure-s7");
#endif
@@ -82631,7 +83067,7 @@ s7_scheme *s7_init(void)
/* despite the similar names, current-error-port is different from the other two, and a setter is needed
* in scheme because error and warn send output to it by default. It is not a "dynamic variable" unlike
* the other two. In the input/output cases, setting the port can only cause confusion.
- * current-error-port should simply be an s7 variable with a name like *error-port* and an accessor to
+ * current-error-port should simply be an s7 variable with a name like *error-port* and an setter to
* ensure its new value, if any, is an output port.
*/
@@ -82750,6 +83186,11 @@ s7_scheme *s7_init(void)
s7_set_p_pi_direct_function(slot_value(global_slot(sc->string_ref_symbol)), string_ref_p_pi_direct);
s7_set_p_pip_direct_function(slot_value(global_slot(sc->string_set_symbol)), string_set_p_pip_direct);
+ s7_set_p_pi_function(slot_value(global_slot(sc->byte_vector_ref_symbol)), byte_vector_ref_p_pi);
+ s7_set_p_pi_direct_function(slot_value(global_slot(sc->byte_vector_ref_symbol)), byte_vector_ref_p_pi_direct);
+ s7_set_p_pip_function(slot_value(global_slot(sc->byte_vector_set_symbol)), byte_vector_set_p_pip);
+ s7_set_p_pip_direct_function(slot_value(global_slot(sc->byte_vector_set_symbol)), byte_vector_set_p_pip_direct);
+
s7_set_p_pp_function(slot_value(global_slot(sc->hash_table_ref_symbol)), hash_table_ref_p_pp);
s7_set_p_ppp_function(slot_value(global_slot(sc->hash_table_set_symbol)), hash_table_set_p_ppp);
s7_set_p_pp_direct_function(slot_value(global_slot(sc->hash_table_ref_symbol)), hash_table_ref_p_pp_direct);
@@ -82903,14 +83344,13 @@ s7_scheme *s7_init(void)
s7_set_i_p_function(slot_value(global_slot(sc->denominator_symbol)), denominator_i);
s7_set_i_p_function(slot_value(global_slot(sc->char_to_integer_symbol)), char_to_integer_i);
s7_set_i_p_function(slot_value(global_slot(sc->hash_table_entries_symbol)), hash_table_entries_i);
- s7_set_i_p_function(slot_value(global_slot(s7_make_symbol(sc, "tree-leaves"))), tree_leaves_i);
+ s7_set_i_p_function(slot_value(global_slot(sc->tree_leaves_symbol)), tree_leaves_i);
s7_set_b_p_function(slot_value(global_slot(sc->is_boolean_symbol)), s7_is_boolean);
s7_set_b_p_function(slot_value(global_slot(sc->is_byte_vector_symbol)), s7_is_byte_vector);
s7_set_b_p_function(slot_value(global_slot(sc->is_c_object_symbol)), s7_is_c_object);
s7_set_b_p_function(slot_value(global_slot(sc->is_char_symbol)), s7_is_character);
s7_set_b_p_function(slot_value(global_slot(sc->is_complex_symbol)), s7_is_complex);
- s7_set_b_p_function(slot_value(global_slot(sc->is_constant_symbol)), s7_is_constant);
s7_set_b_p_function(slot_value(global_slot(sc->is_continuation_symbol)), s7_is_continuation);
s7_set_b_p_function(slot_value(global_slot(sc->is_c_pointer_symbol)), s7_is_c_pointer);
s7_set_b_p_function(slot_value(global_slot(sc->is_dilambda_symbol)), s7_is_dilambda);
@@ -82946,11 +83386,18 @@ s7_scheme *s7_init(void)
s7_set_b_p_function(slot_value(global_slot(sc->is_syntax_symbol)), s7_is_syntax);
s7_set_b_p_function(slot_value(global_slot(sc->is_vector_symbol)), s7_is_vector);
s7_set_b_p_function(slot_value(global_slot(sc->is_iterator_symbol)), is_iterator_b);
+
s7_set_b_p_function(slot_value(global_slot(sc->is_char_alphabetic_symbol)), is_char_alphabetic_b);
s7_set_b_p_function(slot_value(global_slot(sc->is_char_lower_case_symbol)), is_char_lower_case_b);
s7_set_b_p_function(slot_value(global_slot(sc->is_char_numeric_symbol)), is_char_numeric_b);
s7_set_b_p_function(slot_value(global_slot(sc->is_char_upper_case_symbol)), is_char_upper_case_b);
s7_set_b_p_function(slot_value(global_slot(sc->is_char_whitespace_symbol)), is_char_whitespace_b);
+ s7_set_b_p_direct_function(slot_value(global_slot(sc->is_char_alphabetic_symbol)), is_char_alphabetic_c);
+ s7_set_b_p_direct_function(slot_value(global_slot(sc->is_char_lower_case_symbol)), is_char_lower_case_c);
+ s7_set_b_p_direct_function(slot_value(global_slot(sc->is_char_numeric_symbol)), is_char_numeric_c);
+ s7_set_b_p_direct_function(slot_value(global_slot(sc->is_char_upper_case_symbol)), is_char_upper_case_c);
+ s7_set_b_p_direct_function(slot_value(global_slot(sc->is_char_whitespace_symbol)), is_char_whitespace_c);
+
s7_set_b_p_function(slot_value(global_slot(sc->is_openlet_symbol)), s7_is_openlet);
s7_set_b_p_function(slot_value(global_slot(sc->iterator_is_at_end_symbol)), iterator_is_at_end_b);
s7_set_b_p_function(slot_value(global_slot(sc->is_zero_symbol)), is_zero_b);
@@ -82960,8 +83407,9 @@ s7_scheme *s7_init(void)
s7_set_b_p_function(slot_value(global_slot(sc->is_provided_symbol)), is_provided_b);
s7_set_b_p_function(slot_value(global_slot(sc->is_defined_symbol)), is_defined_b_p);
s7_set_b_pp_function(slot_value(global_slot(sc->is_defined_symbol)), is_defined_b_pp);
- s7_set_b_pp_function(slot_value(global_slot(s7_make_symbol(sc, "tree-memq"))), tree_memq_b_pp);
- s7_set_b_pp_function(slot_value(global_slot(s7_make_symbol(sc, "tree-set-memq"))), tree_set_memq_b_pp);
+ s7_set_b_pp_function(slot_value(global_slot(sc->tree_memq_symbol)), tree_memq_b_pp);
+ s7_set_b_pp_function(slot_value(global_slot(sc->tree_set_memq_symbol)), tree_set_memq_b_pp);
+ s7_set_b_p_function(slot_value(global_slot(sc->is_immutable_symbol)), s7_is_immutable);
s7_set_p_p_function(slot_value(global_slot(sc->is_pair_symbol)), is_pair_p_p);
s7_set_p_p_function(slot_value(global_slot(sc->integer_to_char_symbol)), integer_to_char_p_p);
@@ -83119,19 +83567,16 @@ s7_scheme *s7_init(void)
(lambda (clause) \n\
(let ((val (eval (car clause)))) \n\
(when val \n\
- (return (if (null? (cdr clause)) \n\
- val \n\
- (if (eq? (cadr clause) '=>) \n\
- ((eval (caddr clause)) val) \n\
- (if (null? (cddr clause)) \n\
- (cadr clause) \n\
- (apply values (map quote (cdr clause)))))))))) \n\
+ (return (cond ((null? (cdr clause)) val) \n\
+ ((eq? (cadr clause) '=>) ((eval (caddr clause)) val)) \n\
+ ((null? (cddr clause)) (cadr clause)) \n\
+ (else (apply values (map quote (cdr clause))))))))) \n\
clauses) \n\
(values))))"); /* this is not redundant */
s7_eval_c_string(sc, "(define make-hook \n\
- (let ((signature '(procedure?)) \n\
- (documentation \"(make-hook . pars) returns a new hook (a function) that passes the parameters to its function list.\")) \n\
+ (let ((+signature+ '(procedure?)) \n\
+ (+documentation+ \"(make-hook . pars) returns a new hook (a function) that passes the parameters to its function list.\")) \n\
(lambda hook-args \n\
(let ((body ())) \n\
(apply lambda* hook-args \n\
@@ -83143,8 +83588,8 @@ s7_scheme *s7_init(void)
())))))");
s7_eval_c_string(sc, "(define hook-functions \n\
- (let ((signature '(list? procedure?)) \n\
- (documentation \"(hook-functions hook) gets or sets the list of functions associated with the hook\")) \n\
+ (let ((+signature+ '(list? procedure?)) \n\
+ (+documentation+ \"(hook-functions hook) gets or sets the list of functions associated with the hook\")) \n\
(dilambda \n\
(lambda (hook) \n\
((funclet hook) 'body)) \n\
@@ -83195,6 +83640,10 @@ s7_scheme *s7_init(void)
s7_cons(sc, sc->let_ref_fallback_symbol, s7_make_function(sc, "s7-let-ref", g_s7_let_ref_fallback, 2, 0, false, "*s7* reader")),
s7_cons(sc, sc->let_set_fallback_symbol, s7_make_function(sc, "s7-let-set", g_s7_let_set_fallback, 3, 0, false, "*s7* writer"))))));
+ /* obsolete */
+ sc->procedure_documentation_symbol = s7_make_symbol(sc, "procedure-documentation");
+ sc->procedure_signature_symbol = s7_make_symbol(sc, "procedure-signature");
+ sc->procedure_setter_symbol = s7_make_symbol(sc, "procedure-setter");
#if (!DISABLE_DEPRECATED)
s7_eval_c_string(sc, "(begin \n\
@@ -83205,6 +83654,10 @@ s7_scheme *s7_init(void)
(define make-random-state random-state) \n\
(define make-complex complex) \n\
(define make-keyword string->keyword) \n\
+ (define symbol-access symbol-setter) \n\
+ (define procedure-setter setter) \n\
+ (define procedure-signature signature) \n\
+ (define procedure-documentation documentation) \n\
(define (procedure-arity obj) (let ((c (arity obj))) (list (car c) (- (cdr c) (car c)) (> (cdr c) 100000)))))");
#endif
#if DEBUGGING
@@ -83215,13 +83668,14 @@ s7_scheme *s7_init(void)
#endif
/* fprintf(stderr, "size: %d, max op: %d, opt: %d\n", (int)sizeof(s7_cell), OP_MAX_DEFINED, OPT_MAX_DEFINED); */
- /* 64 bit machine: size: 56 [size 80 if gmp, 136 if debugging], op: 425, opt: 442 */
+ /* 64 bit machine: size: 56 [size 80 if gmp, 136 if debugging], op: 411, opt: 446 */
if (sizeof(void *) > sizeof(s7_int))
fprintf(stderr, "s7_int is too small: it has %d bytes, but void* has %d\n", (int)sizeof(s7_int), (int)sizeof(void *));
save_unlet(sc);
init_s7_let(sc); /* set up *s7* */
+ init_signatures(sc); /* depends on procedure symbols */
already_inited = true;
return(sc);
@@ -83294,6 +83748,10 @@ int main(int argc, char **argv)
* the problem is less obvious:
* "The window 0x5555564dab00 already has a drawing context. You cannot call gdk_window_begin_draw_frame() without calling gdk_window_end_draw_frame() first."
* and the stupid thing segfaults. This is called in make-cairo, end in free-cairo.
+ * The basic draw-bass-clef (sndscm.html) works ok, t410.scm crashes
+ * even with this check (make_cairo in snd-gutils.c), it still crashes:
+ * if ((last_context) && (GDK_IS_DRAWING_CONTEXT(last_context)) && (gdk_drawing_context_is_valid(last_context)) && (win == gdk_drawing_context_get_window(last_context)))
+ * gdk_window_end_draw_frame(win, last_context);
*
* Snd:
* dac loop [need start/end of loop in dac_info, reader goes to start when end reached (requires rebuffering)
@@ -83308,70 +83766,55 @@ int main(int argc, char **argv)
* remove as many edpos args as possible, and num+bool->num
* snd namespaces: dac, edits, fft, gxcolormaps, mix, region, snd. for snd-mix, tie-ins are in place
*
- * libgtk:
- * callback funcs need calling check -- 5 list as fields of c-pointer?
- * several more special funcs
- *
- * test opt_sizes escape in sort et al -- perhaps save sc->envir, make sure it is ok if optimize fails
- * opt let? opt_float_begin in s7_float_optimize for map-channel in snd?
- * check glob/libc.scm in openbsd -- some problem loading libc_s7.so (it works in snd, not in repl?)
+ * libgtk: callback funcs need calling check -- 5 list as fields of c-pointer? several more special funcs
+ * check glob/libc.scm in openbsd -- some problem loading libc_s7.so (it works in snd, not in repl? missing lib?)
* libc needs many type checks
* is_type replacing is_symbol etc [all_x_is_*_s if_is_* safe_is_*]
* is_type_car|cdr|a in all 3 cases
- * need symbol->type-checker-recog->type -- symbol_type: object.sym.type
+ * need symbol->type-checker-recog->type -- symbol_type: object.sym.info->type
* maybe pass \u... through in read_constant_string unchanged, or read in s7?? no worse than \x..;
+ * c_object type table entries should also be s7_function, reported by object->let perhaps [and (obj 'reverse) -> type table reverse wrapped?]
+ * wrappers in the meantime? c_object_type_to_let -- also there's repetition now involving local obj->let methods
*
- * immutable sequence as bit 25? == elements can't be set, immutable let=no slot added/deleted, so values changed
- * then immutable-let access->offsets (type?), auto-copy-on-write? or (constant-copied ...)?
- * currently the define-constant cases are inconsistent
- * slot-setter, symbol-setter, let-setter?
- * (define fnc (let ((setter...)) (lambda ...))) (define lt (let ((setter (lambda..))) (inlet...)))? -- and all the others like documentation/tester
- * but where is this outlet saved esp. if vector? for let, a new union.
- * vect get/set should be s7_function (multi-dim indices for example)
- * string a new union as long as not associated with symbol, hash-table has extensible dproc
- * pair can use opt fields, c_pointer has room already, immutable slot can use expr/pending_value
- * so no problem at the s7_cell level, how to handle (eg) (let ((lt (let ((setter (lambda...))) (proc-creates-let...))))...)
- * but how to access these?
- * (define str (let ((documentation "a string")) "asdf")) -- (documentation str) is not in curlet
- * and how to recognize immutable values/symbols/bindings etc?
- * (define x (let ((documentation "help for x")) (* pi 3))) -- there is room for this but it's currently the number print name
- * add constant = set completely-immutable-value bit, but since callable anytime, every seq-set always has to check it
- * literator for lambda?
- * c_object type table entries should also be s7_function, reported by object->let perhaps
- * wrappers in the meantime?
- *
- * symbol 8-bits->cycling number, let tracks range? inserts ordered? [see above]
- * could opt recognize large heavily-used lets and use this?
+ * new proc-sig cases could be used elsewhere in opt (as in b_pp_direct)
+ * *s7* should be a normal let -- defined? symbol->value: *s7* is a let, but its contents are behind let_*_fallback
+ * add defined? and symbol->value fields to *s7* table, maybe a bit for symbol-defined
+ * syms_tag may need 64-bits -- seems ok at 32 bits so far...
*
- * ex lint for specific ques: turn off lint-format, seek all calls of f global|local|with a specific arg etc
- * (requires lint on set of files, then specialize report-usage)
- * does this give who-calls?
- * or change to new call, reporting changes etc
+ * (char-alphabetic? (string-ref #u8(0 1) 1)) -> error: char-alphabetic? argument, 1, is an integer but should be a character
+ * (let () (define (hi) (do ((i 0 (+ i 1))) ((= i 1)) (char-alphabetic? (string-ref #u8(0 1) 1)))) (hi))
+ * -> is_char_alphabetic_c[20350]: not a character, but an integer (1)
+ * from opt_b_p_f
+ * so... byte-vectors should be a separate type from strings
+ * (byte-vector-ref "123" 0)
+ * -> byte-vector-ref argument 1, "123", is a string but should be a string
+ * (let ((bv (byte-vector 1))) (set! (bv 0) #\1)) -> #\1
+ * for many more examples see t716.scm.
*
- * ----------------------------------------------------------------------------
+ * --------------------------------------------------------------
*
- * 12 | 13 | 14 | 15 || 16 | 17.4 17.5 17.6 17.7 17.8
- * tmac | | | || 9052 | 615 259 261 261
- * index 44.3 | 3291 | 1725 | 1276 || 1255 | 1158 1111 1058 1053
- * tref | | | 2372 || 2125 | 1375 1231 1125 1109
- * tauto 265 | 89 | 9 | 8.4 || 2993 | 3255 3254 1772 1378
- * teq | | | 6612 || 2777 | 2129 1978 1988 1921
- * s7test 1721 | 1358 | 995 | 1194 || 2926 | 2645 2356 2215 2172
- * tlet 5318 | 3701 | 3712 | 3700 || 4006 | 3616 2527 2436 2436
- * lint | | | || 4041 | 3376 3114 3003 2726
- * lg | | | || 211 | 161 149 144 134.9
- * tform | | | 6816 || 3714 | 3530 3361 3295 2746
- * tcopy | | | 13.6 || 3183 | 3404 3229 3092 3071
- * tmap | | | 9.3 || 5279 | 3939 3387 3386
- * tfft | | 15.5 | 16.4 || 17.3 | 4901 4008 3963 3964
- * tsort | | | || 8584 | 4869 4080 4010 4012
- * titer | | | || 5971 | 5224 4768 4707 4562
- * bench | | | || 7012 | 6378 6327 5934 5106
- * thash | | | 50.7 || 8778 | 8488 8057 7550 7537
- * tgen | 71 | 70.6 | 38.0 || 12.6 | 12.4 12.6 11.7 11.9
- * tall 90 | 43 | 14.5 | 12.7 || 17.9 | 20.4 18.6 17.7 17.8
- * calls 359 | 275 | 54 | 34.7 || 43.7 | 42.5 41.1 39.7 39.4
- * || 145 | 135 132 93.2 89.4
+ * 12 | 13 | 14 | 15 || 16 | 17.4 17.8 17.9
+ * tmac | | | || 9052 | 615 261
+ * index 44.3 | 3291 | 1725 | 1276 || 1255 | 1158 1050
+ * tref | | | 2372 || 2125 | 1375 1105
+ * tauto 265 | 89 | 9 | 8.4 || 2993 | 3255 1496
+ * teq | | | 6612 || 2777 | 2129 1927
+ * s7test 1721 | 1358 | 995 | 1194 || 2926 | 2645 2117
+ * tlet 5318 | 3701 | 3712 | 3700 || 4006 | 3616 2426
+ * lint | | | || 4041 | 3376 2677
+ * lg | | | || 211 | 161 132.4
+ * tform | | | 6816 || 3714 | 3530 2733
+ * tcopy | | | 13.6 || 3183 | 3404 2918
+ * tmap | | | 9.3 || 5279 | 3386
+ * tfft | | 15.5 | 16.4 || 17.3 | 4901 3964
+ * tsort | | | || 8584 | 4869 4012
+ * titer | | | || 5971 | 5224 4537
+ * bench | | | || 7012 | 6378 5077
+ * thash | | | 50.7 || 8778 | 8488 7531
+ * tgen | 71 | 70.6 | 38.0 || 12.6 | 12.4 11.8
+ * tall 90 | 43 | 14.5 | 12.7 || 17.9 | 20.4 17.8
+ * calls 359 | 275 | 54 | 34.7 || 43.7 | 42.5 38.4
+ * || 139 | 129 81.8
*
- * ----------------------------------------------------------------------------
+ * --------------------------------------------------------------
*/
diff --git a/s7.h b/s7.h
index 892fb45..ab4ac91 100644
--- a/s7.h
+++ b/s7.h
@@ -1,13 +1,13 @@
#ifndef S7_H
#define S7_H
-#define S7_VERSION "5.9"
-#define S7_DATE "3-Aug-17"
+#define S7_VERSION "5.12"
+#define S7_DATE "3-Oct-17"
#include <stdint.h> /* for int64_t */
typedef int64_t s7_int; /* This sets the size of integers in Scheme; it needs to be big enough to accomodate a C pointer. */
-typedef double s7_double; /* similarly for Scheme reals; only "double" works in C++ */
+typedef double s7_double; /* similarly for Scheme reals; only double works in C++ */
/* old forms... */
typedef s7_int s7_Int;
@@ -377,9 +377,8 @@ s7_pointer s7_gensym(s7_scheme *sc, const char *prefix); /* (
bool s7_is_keyword(s7_pointer obj); /* (keyword? obj) */
s7_pointer s7_make_keyword(s7_scheme *sc, const char *key); /* (make-keyword key) */
-s7_pointer s7_symbol_access(s7_scheme *sc, s7_pointer sym);
-s7_pointer s7_symbol_set_access(s7_scheme *sc, s7_pointer symbol, s7_pointer func);
-
+s7_pointer s7_symbol_setter(s7_scheme *sc, s7_pointer sym);
+s7_pointer s7_symbol_set_setter(s7_scheme *sc, s7_pointer symbol, s7_pointer func);
s7_pointer s7_slot(s7_scheme *sc, s7_pointer symbol);
s7_pointer s7_slot_value(s7_pointer slot);
@@ -437,7 +436,8 @@ s7_pointer s7_define_variable(s7_scheme *sc, const char *name, s7_pointer value)
s7_pointer s7_define_variable_with_documentation(s7_scheme *sc, const char *name, s7_pointer value, const char *help);
s7_pointer s7_define_constant(s7_scheme *sc, const char *name, s7_pointer value);
s7_pointer s7_define_constant_with_documentation(s7_scheme *sc, const char *name, s7_pointer value, const char *help);
-bool s7_is_constant(s7_pointer p);
+bool s7_is_immutable(s7_pointer p);
+s7_pointer s7_immutable(s7_pointer p);
/* These three functions add a symbol and its binding to either the top-level environment
* or the 'env' passed as the second argument to s7_define.
@@ -465,9 +465,9 @@ s7_pointer s7_arity(s7_scheme *sc, s7_pointer x); /* (
const char *s7_help(s7_scheme *sc, s7_pointer obj); /* (help obj) */
s7_pointer s7_make_continuation(s7_scheme *sc); /* call/cc... (see example below) */
-const char *s7_procedure_documentation(s7_scheme *sc, s7_pointer p); /* (procedure-documentation x) if any (don't free the string) */
-s7_pointer s7_procedure_setter(s7_scheme *sc, s7_pointer obj);
-s7_pointer s7_procedure_signature(s7_scheme *sc, s7_pointer func);
+const char *s7_documentation(s7_scheme *sc, s7_pointer p); /* (documentation x) if any (don't free the string) */
+s7_pointer s7_setter(s7_scheme *sc, s7_pointer obj); /* (setter obj) */
+s7_pointer s7_signature(s7_scheme *sc, s7_pointer func); /* (signature obj) */
s7_pointer s7_make_signature(s7_scheme *sc, int32_t len, ...); /* procedure-signature data */
s7_pointer s7_make_circular_signature(s7_scheme *sc, int32_t cycle_point, int32_t len, ...);
@@ -561,10 +561,6 @@ s7_pointer s7_call_with_location(s7_scheme *sc, s7_pointer func, s7_pointer args
* s7_call_with_location passes some information to the error handler.
*/
-void s7_define_function_with_setter(s7_scheme *sc, const char *name, s7_function get_fnc,
- s7_function set_fnc, int32_t req_args, int32_t opt_args, const char *doc);
- /* this is now the same as s7_dilambda (different args) */
-
bool s7_is_dilambda(s7_pointer obj);
s7_pointer s7_dilambda(s7_scheme *sc,
const char *name,
@@ -625,49 +621,9 @@ void s7_c_type_set_copy (s7_scheme *sc, int32_t tag, s7_pointer (*copy)
void s7_c_type_set_fill (s7_scheme *sc, int32_t tag, s7_pointer (*fill)(s7_scheme *sc, s7_pointer args));
void s7_c_type_set_reverse (s7_scheme *sc, int32_t tag, s7_pointer (*reverse)(s7_scheme *sc, s7_pointer args));
-
-#if (!DISABLE_DEPRECATED)
-int32_t s7_new_type(const char *name,
- char *(*print)(s7_scheme *sc, void *value),
- void (*free)(void *value),
- bool (*equal)(void *val1, void *val2),
- void (*gc_mark)(void *val),
- s7_pointer (*apply)(s7_scheme *sc, s7_pointer obj, s7_pointer args),
- s7_pointer (*set)(s7_scheme *sc, s7_pointer obj, s7_pointer args));
-
-int32_t s7_new_type_x(s7_scheme *sc,
- const char *name,
- char *(*print)(s7_scheme *sc, void *value),
- void (*free)(void *value),
- bool (*equal)(void *val1, void *val2),
- void (*gc_mark)(void *val),
- s7_pointer (*apply)(s7_scheme *sc, s7_pointer obj, s7_pointer args),
- s7_pointer (*set)(s7_scheme *sc, s7_pointer obj, s7_pointer args),
- s7_pointer (*length)(s7_scheme *sc, s7_pointer obj),
- s7_pointer (*copy)(s7_scheme *sc, s7_pointer args),
- s7_pointer (*reverse)(s7_scheme *sc, s7_pointer obj),
- s7_pointer (*fill)(s7_scheme *sc, s7_pointer args));
-
-void s7_object_type_set_direct(int32_t tag,
- s7_pointer (*dref)(s7_scheme *sc, s7_pointer obj, s7_int index),
- s7_pointer (*dset)(s7_scheme *sc, s7_pointer obj, s7_int index, s7_pointer val));
-
-#define s7_is_object s7_is_c_object
-#define s7_object_type s7_c_object_type
-#define s7_object_value s7_c_object_value
-#define s7_object_value_checked s7_c_object_value_checked
-#define s7_make_object s7_make_c_object
-#define s7_make_object_with_let s7_make_c_object_with_let
-#define s7_mark_object s7_mark_c_object
-#define s7_object_let s7_c_object_let
-#define s7_object_set_let s7_c_object_set_let
-#define s7_set_object_print_readably s7_c_type_set_print_readably
-#endif
-
/* These functions create a new Scheme object type. There is a simple example in s7.html.
*
- * s7_new_type describes the type for Scheme:
- * name: the name used by describe-object
+ * s7_make_c_type creates a new C-based type for Scheme:
* print: the function called whenever s7 is asked to display a value with this type
* free: the function called when an object of this type is about to be garbage collected
* equal: compare two objects of this type; (equal? obj1 obj2)
@@ -678,13 +634,10 @@ void s7_object_type_set_direct(int32_t tag,
* is passed to the apply function as the arguments).
* set: a function that is called whenever an object of this type occurs as
* the target of a generalized set!
- *
- * in the extended version (s7_new_type_x), you can also set the following:
* length: the function called when the object is asked what its length is.
* copy: the function called when a copy of the object is needed.
* fill: the function called to fill the object with some value.
- *
- * s7_new_type and s7_new_typ_x return an integer that identifies the new type for the other functions.
+ * reverse: similarly...
*
* s7_is_c_object returns true if 'p' holds a value of a type created by s7_new_type.
* s7_c_object_type returns the c_object's type
@@ -873,14 +826,65 @@ s7_pointer s7_apply_n_9(s7_scheme *sc, s7_pointer args,
#define s7_define_integer_function s7_define_safe_function
#define s7_make_random_state s7_random_state
#define s7_eval_form s7_eval
+
+#define s7_is_constant(Obj) ((!s7_is_symbol(Obj)) || (s7_is_immutable(Obj)))
+
+int32_t s7_new_type(const char *name,
+ char *(*print)(s7_scheme *sc, void *value),
+ void (*free)(void *value),
+ bool (*equal)(void *val1, void *val2),
+ void (*gc_mark)(void *val),
+ s7_pointer (*apply)(s7_scheme *sc, s7_pointer obj, s7_pointer args),
+ s7_pointer (*set)(s7_scheme *sc, s7_pointer obj, s7_pointer args));
+
+int32_t s7_new_type_x(s7_scheme *sc,
+ const char *name,
+ char *(*print)(s7_scheme *sc, void *value),
+ void (*free)(void *value),
+ bool (*equal)(void *val1, void *val2),
+ void (*gc_mark)(void *val),
+ s7_pointer (*apply)(s7_scheme *sc, s7_pointer obj, s7_pointer args),
+ s7_pointer (*set)(s7_scheme *sc, s7_pointer obj, s7_pointer args),
+ s7_pointer (*length)(s7_scheme *sc, s7_pointer obj),
+ s7_pointer (*copy)(s7_scheme *sc, s7_pointer args),
+ s7_pointer (*reverse)(s7_scheme *sc, s7_pointer obj),
+ s7_pointer (*fill)(s7_scheme *sc, s7_pointer args));
+
+void s7_object_type_set_direct(int32_t tag,
+ s7_pointer (*dref)(s7_scheme *sc, s7_pointer obj, s7_int index),
+ s7_pointer (*dset)(s7_scheme *sc, s7_pointer obj, s7_int index, s7_pointer val));
+
+#define s7_is_object s7_is_c_object
+#define s7_object_type s7_c_object_type
+#define s7_object_value s7_c_object_value
+#define s7_object_value_checked s7_c_object_value_checked
+#define s7_make_object s7_make_c_object
+#define s7_make_object_with_let s7_make_c_object_with_let
+#define s7_mark_object s7_mark_c_object
+#define s7_object_let s7_c_object_let
+#define s7_object_set_let s7_c_object_set_let
+#define s7_set_object_print_readably s7_c_type_set_print_readably
+
+#define s7_symbol_access s7_symbol_setter
+#define s7_symbol_set_access s7_symbol_set_setter
+
+void s7_define_function_with_setter(s7_scheme *sc, const char *name, s7_function get_fnc,
+ s7_function set_fnc, int32_t req_args, int32_t opt_args, const char *doc);
+ /* this is now the same as s7_dilambda (different args) */
#endif
+#define s7_procedure_setter s7_setter
+#define s7_procedure_documentation s7_documentation
+#define s7_procedure_signature s7_signature
/* --------------------------------------------------------------------------------
*
* s7 changes
*
+ * 3-Oct: renamed procedure-signature -> signature, procedure-documentation -> documentation, and procedure-setter -> setter.
+ * 18-Sep: s7_immutable, s7_is_immutable. define-constant follows lexical scope now.
+ * s7_symbol_access -> s7_symbol_setter, symbol-access -> symbol-setter.
* 3-Aug: object->c_object name changes.
* 28-Jul: s7_make_c_pointer_with_type and s7_c_pointer_type.
* 24-Jul: int64_t rather than long long int, and various related changes.
diff --git a/s7.html b/s7.html
index 48dff79..e922684 100644
--- a/s7.html
+++ b/s7.html
@@ -206,7 +206,7 @@ indented and on a sort of brownish background.
<li><a href="#math">math functions</a>
<li><a href="#define*">define*, named let*</a>
<li><a href="#macros">define-macro</a>
- <li><a href="#pws">procedure-setter</a>
+ <li><a href="#pws">setter</a>
<li><a href="#generalizedset">generic functions, generalized set!</a>
<li><a href="#multidimensionalvectors">multidimensional vectors</a>
<li><a href="#hashtables">hash tables</a>
@@ -215,12 +215,12 @@ indented and on a sort of brownish background.
<li><a href="#callwithexit1">call-with-exit</a>
<li><a href="#format1">format</a>
<li><a href="#hooks">hooks</a>
- <li><a href="#procedureinfo">procedure info</a>
+ <li><a href="#variableinfo">variable info</a>
<li><a href="#evalstring">eval</a>
<li><a href="#IO">IO and other OS functions</a>
<li><a href="#errors">errors</a>
<li><a href="#autoload">autoload</a>
- <li><a href="#constants">define-constant, symbol-access</a>
+ <li><a href="#constants">define-constant, symbol-setter</a>
<li><a href="#miscellanea">marvels and curiousities:</a>
<ul>
@@ -960,6 +960,74 @@ giving the new symbol name's prefix. gensym? returns #t if its argument is a sy
<em class="gray">4</em>
</pre>
+<blockquote>
+<div class="indented">
+
+<p>A macro is a first-class citizen of s7. You can
+pass it as a function argument, apply it to a list, return it from a function,
+call it recursively,
+and assign it to a variable. You can even set its setter!
+</p>
+
+<pre class="indented">
+&gt; (define-macro (hi a) `(+ ,a 1))
+<em class="gray">hi</em>
+&gt; (apply hi '(4))
+<em class="gray">5</em>
+&gt; (define (fmac mac) (apply mac '(4)))
+<em class="gray">fmac</em>
+&gt; (fmac hi)
+<em class="gray">5</em>
+&gt; (define (fmac mac) (mac 4))
+<em class="gray">fmac</em>
+&gt; (fmac hi)
+<em class="gray">5</em>
+&gt; (define (make-mac)
+ (define-macro (hi a) `(+ ,a 1)))
+<em class="gray">make-mac</em>
+&gt; (let ((x (make-mac)))
+ (x 2))
+<em class="gray">3</em>
+&gt; (define-macro (ref v i) `(vector-ref ,v ,i))
+<em class="gray">ref</em>
+&gt; (define-macro (set v i x) `(vector-set! ,v ,i ,x))
+<em class="gray">set</em>
+&gt; (set! (setter ref) set)
+<em class="gray">set</em>
+&gt; (let ((v (vector 1 2 3))) (set! (ref v 0) 32) v)
+<em class="gray">#(32 2 3)</em>
+</pre>
+
+<p>To expand all the macros in a piece of code:
+</p>
+<pre class="indented">
+(define-macro (fully-macroexpand form)
+ (list 'quote
+ (let expand ((form form))
+ (cond ((not (pair? form)) form)
+ ((and (symbol? (car form))
+ (macro? (symbol-&gt;value (car form))))
+ (expand (apply macroexpand (list form))))
+ ((and (eq? (car form) 'set!) ; look for (set! (mac ...) ...) and use mac's setter
+ (pair? (cdr form))
+ (pair? (cadr form))
+ (macro? (symbol-&gt;value (caadr form))))
+ (expand
+ (apply (eval
+ (procedure-source (setter (symbol-&gt;value (caadr form)))))
+ (append (cdadr form) (cddr form)))))
+ (else (cons (expand (car form)) (expand (cdr form))))))))
+</pre>
+<p>This does not always handle bacros correctly because their expansion can depend on the run-time
+state.
+</p>
+</div>
+
+
+<details>
+<summary class="indented">bacros</summary>
+<div class="indented">
+
<p>A bacro is a macro that expands its body and evaluates
the result in the calling environment.
</p>
@@ -1005,11 +1073,6 @@ The calling environment itself is (outlet (curlet)) from within a bacro, so
(f1 2 3) ; prints out "(f1 :a 2 :b 3)" and returns 5
</pre>
-
-<blockquote>
-
-<div class="indented">
-
<p>
Since a bacro (normally) sheds its define-time environment:
</p>
@@ -1068,68 +1131,7 @@ Here's a brief example of all four:
-&gt; 37
</pre>
</div>
-
-<div class="indented">
-
-<p>As the setf example shows, a macro is a first-class citizen of s7. You can
-pass it as a function argument, apply it to a list, return it from a function,
-call it recursively,
-and assign it to a variable. You can even set its procedure-setter!
-</p>
-
-<pre class="indented">
-&gt; (define-macro (hi a) `(+ ,a 1))
-<em class="gray">hi</em>
-&gt; (apply hi '(4))
-<em class="gray">5</em>
-&gt; (define (fmac mac) (apply mac '(4)))
-<em class="gray">fmac</em>
-&gt; (fmac hi)
-<em class="gray">5</em>
-&gt; (define (fmac mac) (mac 4))
-<em class="gray">fmac</em>
-&gt; (fmac hi)
-<em class="gray">5</em>
-&gt; (define (make-mac)
- (define-macro (hi a) `(+ ,a 1)))
-<em class="gray">make-mac</em>
-&gt; (let ((x (make-mac)))
- (x 2))
-<em class="gray">3</em>
-&gt; (define-macro (ref v i) `(vector-ref ,v ,i))
-<em class="gray">ref</em>
-&gt; (define-macro (set v i x) `(vector-set! ,v ,i ,x))
-<em class="gray">set</em>
-&gt; (set! (procedure-setter ref) set)
-<em class="gray">set</em>
-&gt; (let ((v (vector 1 2 3))) (set! (ref v 0) 32) v)
-<em class="gray">#(32 2 3)</em>
-</pre>
-
-<p>To expand all the macros in a piece of code:
-</p>
-<pre class="indented">
-(define-macro (fully-macroexpand form)
- (list 'quote
- (let expand ((form form))
- (cond ((not (pair? form)) form)
- ((and (symbol? (car form))
- (macro? (symbol-&gt;value (car form))))
- (expand (apply macroexpand (list form))))
- ((and (eq? (car form) 'set!) ; look for (set! (mac ...) ...) and use mac's procedure-setter
- (pair? (cdr form))
- (pair? (cadr form))
- (macro? (symbol-&gt;value (caadr form))))
- (expand
- (apply (eval
- (procedure-source (procedure-setter (symbol-&gt;value (caadr form)))))
- (append (cdadr form) (cddr form)))))
- (else (cons (expand (car form)) (expand (cdr form))))))))
-</pre>
-<p>This does not always handle bacros correctly because their expansion can depend on the run-time
-state.
-</p>
-</div>
+</details>
<details>
@@ -1178,7 +1180,7 @@ other hand, seem unnecessary.
</p>
</div>
</details>
-
+</blockquote>
<p>s7 macros are not hygienic. For example,
</p>
@@ -1353,6 +1355,7 @@ a with-let that captures the current environment, and at each use of a macro arg
wrap it in a with-let that re-establishes that environment.
</p>
+<blockquote>
<div class="indented">
<pre>
(define-macro (swap a b) ; assume a and b are symbols
@@ -1373,7 +1376,7 @@ wrap it in a with-let that re-establishes that environment.
&gt; (let ((tmp (cons 1 2))) (swap (car tmp) (cdr tmp)) tmp)
<em class="gray">(2 . 1)</em>
-(set! (procedure-setter swap) (define-macro (set-swap a b c) `(set! ,b ,c)))
+(set! (setter swap) (define-macro (set-swap a b c) `(set! ,b ,c)))
&gt; (let ((a 1) (b 2) (c 3) (d 4)) (swap a (swap b (swap c d))) (list a b c d))
<em class="gray">(2 3 4 1)</em>
@@ -1390,6 +1393,7 @@ wrap it in a with-let that re-establishes that environment.
<em class="gray">(2 3 1)</em>
</pre>
</div>
+</blockquote>
<p>
If you want the macro's expanded result
@@ -1437,7 +1441,7 @@ to be evaluated in its definition environment:
-->
-
+<blockquote>
<div class="indented">
<p>Here is Peter Seibel's wonderful once-only macro:
@@ -1475,7 +1479,6 @@ to be evaluated in its definition environment:
<p>Sadly, with-let is simpler.
</p>
</div>
-
</blockquote>
<!--
@@ -1486,10 +1489,10 @@ to be evaluated in its definition environment:
-<div class="header" id="pws"><h4>procedure-setter</h4></div>
+<div class="header" id="pws"><h4>setter</h4></div>
<pre class="indented">
-(<em class=def>procedure-setter</em> proc)
+(<em class=def>setter</em> proc)
(<em class=def id="dilambda">dilambda</em> proc setter)
</pre>
@@ -1500,13 +1503,13 @@ value passed to set!:
</p>
<pre class="indented">
-&gt; (procedure-setter cadr)
+&gt; (setter cadr)
<em class="gray">#f</em>
-&gt; (set! (procedure-setter cadr)
+&gt; (set! (setter cadr)
(lambda (lst val)
(set! (car (cdr lst)) val)))
<em class="gray">#&lt;lambda (lst val)&gt;</em>
-&gt; (procedure-source (procedure-setter cadr))
+&gt; (procedure-source (setter cadr))
<em class="gray">(lambda (lst val) (set! (car (cdr lst)) val))</em>
&gt; (let ((lst (list 1 2 3)))
(set! (cadr lst) 4)
@@ -1517,7 +1520,7 @@ value passed to set!:
<p>In some cases, the setter needs to be a macro:
</p>
<pre class="indented">
-&gt; (set! (procedure-setter logbit?)
+&gt; (set! (setter logbit?)
(define-macro (m var index on) ; here we want to set "var", so we need a macro
`(if ,on
(set! ,var (logior ,var (ash 1 ,index)))
@@ -1707,12 +1710,11 @@ Here's a generic FFT:
(let ((temp (data j)))
(set! (data j) (data i))
(set! (data i) temp)))
- (do ((m (/ n 2)))
+ (do ((m (/ n 2) (/ m 2)))
((or (&lt; m 2)
(&lt; j m))
(set! j (+ j m)))
- (set! j (- j m))
- (set! m (/ m 2))))
+ (set! j (- j m))))
(do ((ipow (floor (log n 2)))
(prev 1)
(lg 0 (+ lg 1))
@@ -1932,7 +1934,7 @@ value in the closure's environment:
((#&lt;eof&gt;) ((set! iter (make-iterator obj))))
(else)))))))
</pre>
-<p>The 'iterator? variable is similar to the 'documentation variable used by procedure-documentation.
+<p>The 'iterator? variable is similar to the '+documentation+ variable used by documentation.
It gives make-iterator some hope of catching inadvertent bogus function arguments that would
otherwise cause an infinite loop.
</p>
@@ -2456,7 +2458,7 @@ Environments are first class (and applicable) objects in s7.
(<em class=def id="unlet">unlet</em>) the current environment, but all built-in functions have their original values
(<em class=def id="letref">let-ref</em> env sym) get value of sym in env, same as (env sym)
-(<em class=def id="letset">let-set!</em> env sym val)
+(<em class=def id="letset">let-set!</em> env sym val) set value of sym in val to val, same as (set! (env sym) val)
(<em class=def id="inlet">inlet</em> . bindings) make a new environment with the given bindings
(<em class=def id="sublet">sublet</em> env . bindings) same as inlet, but the new environment is local to env
@@ -2510,8 +2512,21 @@ chain up to the rootlet. That is, two environments are equal if any local varia
</p>
<p><b>let-ref</b> and <b>let-set!</b> return #&lt;undefined&gt; if the first argument is not
-defined in the environment or its parents.
+defined in the environment or its parents. To search just the given environment (ignoring its outlet chain),
+use defined? with the third argument #t before calling let-ref or let-set!:
+</p>
+
+<pre class="indented">
+&gt; (defined? 'car (inlet 'a 1) #t)
+<em class="gray">#f</em>
+&gt; (defined? 'car (inlet 'a 1))
+<em class="gray">#t</em>
+</pre>
+
+<p>This matters in let-set!: <code>(let-set! (inlet 'a 1) 'car #f)</code>
+is the same as <code>(set! car #f)</code>!
</p>
+
<p>
<b>with-let</b> evaluates its body in the given environment, so
<code>(with-let e . body)</code> is equivalent to
@@ -2626,8 +2641,7 @@ keeps a circular buffer of the calls to that function:
<pre class="indented">
(define func (let ((history (let ((lst (make-list 8 #f)))
- (set-cdr! (list-tail lst 7) lst)
- lst)))
+ (set-cdr! (list-tail lst 7) lst))))
(lambda (x y)
(let ((result (+ x y)))
(set-car! history (list result x y))
@@ -2807,7 +2821,7 @@ such as abs, we need to put it back to its original form:
<p><b>openlet</b> marks its argument, either an environment, a closure, a c-object, or a c-pointer
-as open. I need better terminology here! An open object is one that the
+as open; <b>coverlet</b> as closed. I need better terminology here! An open object is one that the
built-in s7 functions handle specially. If they encounter one in their
argument list, they look in the object for their own name, and call that
function if it exists. A bare-bones example:
@@ -2846,6 +2860,49 @@ A slightly more complex example:
and openlet? -&gt; methods?.
</p>
+<blockquote>
+<details>
+<summary class="indented">let-ref and let-set! methods</summary>
+<div class="indented">
+<p>let-ref and let-set! are problematic as methods. It is very easy to get into an infinite
+loop, especially with let-ref since any reference to the let within the method body probably
+calls let-ref, which notices the let-ref method... One way around this is to call coverlet
+on the let before doing anything, then at the end, call openlet:
+</p>
+<pre class="indented">
+&gt; (let ((hi (openlet
+ (inlet 'a 1
+ 'let-ref (lambda (obj val)
+ (<em class="red">coverlet</em> obj)
+ (let ((res (+ (obj val) 1)))
+ (<em class="red">openlet</em> obj)
+ res))))))
+ (hi 'a))
+<em class="gray">2</em>
+</pre>
+
+<p>Use let-ref-fallback and let-set-fallback instead, if possible. A let-set!
+method can implement a copy-on-write let:
+</p>
+
+<pre class="indented">
+(define (cowlet . fields) ; copy-on-write let
+ (openlet (apply inlet
+ 'let-set! (lambda (obj field val)
+ (let ((new-obj (copy (coverlet obj))))
+ (set! (new-obj field) val)
+ (openlet obj)
+ (openlet new-obj)))
+ fields)))
+(let ((lt1 (cowlet 'a 1 'b 2)))
+ (set! (lt1 'b) 1)) ; this leaves lt1 unchanged, returns a new let with b=1
+</pre>
+
+</div>
+</details>
+</blockquote>
+
+
<p><b>object-&gt;let</b> returns an environment (more of a dictionary really) that
contains details about its argument. It
is intended as a debugging aid, underlying a debugger's "inspect" for example.
@@ -3196,7 +3253,7 @@ current environment chain, it is considered a local environment:
:length (lambda (f) len)
:object-&gt;string (lambda (f . args) "#&lt;fvector&gt;")
:let-set! (lambda (fv i val) (#_vector-set! (fv 'v) i (-&gt;float val)))
- :let-ref (lambda (fv i) (#_vector-ref (fv 'v) i))))))
+ :let-ref-fallback (lambda (fv i) (#_vector-ref (fv 'v) i))))))
(set! fvector? (lambda (p)
(and (let? p)
(eq? (p 'type) type))))))
@@ -3693,22 +3750,18 @@ handler. Here is a sketch of the situation:
</p>
<pre class="indented">
-(let ()
- (catch #t
- (lambda ()
- (let ((res (call/cc
- (lambda (ok)
- (error 'cerror "an error" ok)))))
- (display res) (newline)))
- (lambda args
- (if (and (eq? (car args) 'cerror)
- (<em class=red>continuation?</em> (cadadr args)))
- (begin
- (display "continuing...")
- ((cadadr args) 2)))
- (display "oops"))))
-
-continuing...2
+(catch #t
+ (lambda ()
+ (let ((res (call/cc
+ (lambda (ok)
+ (error 'cerror "an error" ok)))))
+ (display res) (newline)))
+ (lambda args
+ (when (and (eq? (car args) 'cerror)
+ (<em class=red>continuation?</em> (cadadr args)))
+ (display "continuing...")
+ ((cadadr args) 2))
+ (display "oops")))
</pre>
<p>In a more general case, the error handler is separate from the
@@ -4024,69 +4077,84 @@ result = s7_call(s7, hook, s7_list(s7, 2, s7_make_integer(s7, 1), s7_make_intege
-<div class="header" id="procedureinfo"><h4>procedure info</h4></div>
+<div class="header" id="variableinfo"><h4>variable info</h4></div>
<pre class="indented">
-(<em class=def id="proceduresource">procedure-source</em> proc)
-(<em class=def id="proceduredocumentation">procedure-documentation</em> proc)
-(<em class=def id="proceduresignature">procedure-signature</em> proc)
-(<em class=def id="proceduresetter">procedure-setter</em> proc)
+(<em class=def id="documentation">documentation</em> obj) ; old name: (procedure-documentation obj)
+(<em class=def id="signature">signature</em> obj) ; old: (procedure-signature obj)
+(<em class=def id="setter">setter</em> obj) ; old: (procedure-setter obj)
+(<em class=def id="arity">arity</em> obj) ; very old: (procedure-arity obj)
+(<em class=def id="aritablep">aritable?</em> obj num-args)
(funclet proc)
+(<em class=def id="proceduresource">procedure-source</em> proc)
+</pre>
-(<em class=def id="arity">arity</em> obj)
-(<em class=def id="aritablep">aritable?</em> obj num-args)
+<p>
+<b>funclet</b> returns
+a procedure's environment.
+</p>
+<pre class="indented">
+&gt; (funclet (let ((b 32)) (lambda (a) (+ a b))))
+<em class="gray">(inlet 'b 32)</em>
+&gt; (funclet abs)
+<em class="gray">(rootlet)</em>
</pre>
<p>
-procedure-setter returns or sets the set function associated with a procedure (set-car! with car, for example).
-funclet returns
-a procedure's environment.
-procedure-source returns the procedure source (a list).
+<b>setter</b> returns or sets the set function associated with a procedure (set-car! with car, for example).
</p>
+<p>
+<b>procedure-source</b> returns the procedure source (a list):
+</p>
<pre class="indented">
(define (procedure-arglist f) (cadr (procedure-source f)))
</pre>
<p>
-procedure-documentation returns the documentation string associated with a procedure. This used to be
-the initial string in the function's body (as in CL), but now it is the value of the 'documentation variable, if any,
-in the procedure's local environment. That is, <code>(define (f a) "doc string" a)</code> is now
-<code>(define f (let ((documentation "doc string")) (lambda (a) a)))</code>. This change gets the
-string out of the body (where it can slow down evaluation of the function to no purpose), and
-makes it possible to extend the function information arbitrarily.
+<b>documentation</b> returns the documentation string associated with a procedure. This used to be
+the initial string in the function's body (as in CL), but now it is the value of the '+documentation+ variable, if any,
+in the procedure's local environment:
</p>
+<pre class="indented">
+(define func
+ (let ((+documentation+ "helpful info"))
+ (lambda (a) a)))
+
+&gt; (documentation func)
+<em class="gray">"helpful info"</em>
+</pre>
<p>
-arity takes any object and returns either #f if it is not applicable,
+<b>arity</b> takes any object and returns either #f if it is not applicable,
or a cons containing the minimum and maximum number of arguments acceptable. If the maximum reported
is a really big number, that means any number of arguments is ok.
-aritable? takes two arguments, an object and an integer, and returns #t if the object can be
+<b>aritable?</b> takes two arguments, an object and an integer, and returns #t if the object can be
applied to that many arguments.
</p>
<pre class="indented">
-&gt; (define add-2 (let ((documentation "add-2 adds its 2 args")) (lambda* (a (b 32)) (+ a b))))
+&gt; (define* (add-2 a (b 32)) (+ a b))
<em class="gray">add-2</em>
-&gt; (procedure-documentation add-2)
-<em class="gray">"add-2 adds its 2 args"</em>
&gt; (procedure-source add-2)
<em class="gray">(lambda* (a (b 32)) (+ a b))</em>
&gt; (arity add-2)
<em class="gray">(0 . 2)</em>
+&gt; (aritable? add-2 1)
+<em class="gray">#t</em>
</pre>
<p>
-procedure-signature is a list describing the argument types and returned value type
+<b>signature</b> is a list describing the argument types and returned value type
of the function. The first entry in the list is the return type, and the rest are
argument types. #t means any type is possible, and 'values means the function returns multiple values.
</p>
<pre class="indented">
-&gt; (procedure-signature round)
-<em class="gray">(integer? real?)</em> ; round takes a real argument, returns an integer
-&gt; (procedure-signature vector-ref)
+&gt; (signature round)
+<em class="gray">(integer? real?)</em> ; round takes a real argument, returns an integer
+&gt; (signature vector-ref)
<em class="gray">(#t vector? . #1=(integer? . #1#))</em> ; trailing args are all integers (indices)
</pre>
@@ -4094,25 +4162,25 @@ argument types. #t means any type is possible, and 'values means the function r
</p>
<pre class="indented">
-&gt; (procedure-signature char-position)
+&gt; (signature char-position)
<em class="gray">((boolean? integer?) (char? string?) string? integer?)</em>
</pre>
<p>which says that the first argument to char-position can be a string or a character,
and the return type can be either boolean or an integer.
-If the function is defined in scheme, its signature is the value of the 'signature variable
+If the function is defined in scheme, its signature is the value of the '+signature+ variable
in its closure:
</p>
<pre class="indented">
-&gt; (define f1 (let ((documentation "helpful info")
- (signature '(boolean? real?)))
+&gt; (define f1 (let ((+documentation+ "helpful info")
+ (+signature+ '(boolean? real?)))
(lambda (x)
(positive? x))))
<em class="gray">f1</em>
-&gt; (procedure-documentation f1)
+&gt; (documentation f1)
<em class="gray">"helpful info"</em>
-&gt; (procedure-signature f1)
+&gt; (signature f1)
<em class="gray">(boolean? real?)</em>
</pre>
@@ -4120,22 +4188,22 @@ in its closure:
</p>
<pre class="indented">
-&gt; (define f1 (let ((procedure-documentation (lambda (f) "helpful info"))
- (procedure-signature (lambda (f) '(boolean? real?))))
+&gt; (define f1 (let ((documentation (lambda (f) "helpful info"))
+ (signature (lambda (f) '(boolean? real?))))
(<em class=red>openlet</em> ; openlet alerts s7 that f1 has methods
(lambda (x)
(positive? x)))))
-&gt; (procedure-documentation f1)
+&gt; (documentation f1)
<em class="gray">"helpful info"</em>
-&gt; (procedure-signature f1)
+&gt; (signature f1)
<em class="gray">(boolean? real?)</em>
</pre>
-<p>procedure-signature could also be used to implement CL's 'the:
+<p>signature could also be used to implement CL's 'the:
</p>
<pre class="indented">
(define-macro (the value-type form)
- `((let ((signature (list ,value-type)))
+ `((let ((+signature+ (list ,value-type)))
(lambda ()
,form))))
@@ -4172,6 +4240,25 @@ in its closure:
<em class="gray">oops: (myadd 2 3) -&gt; -1</em>
</pre>
+<p>Even the setter can be set this way:
+</p>
+<pre class="indented">
+(define flocals
+ (let ((x 1))
+ (let ((+setter+ (lambda (val) (set! x val))))
+ (lambda ()
+ x))))
+
+&gt; (flocals)
+<em class="gray">1</em>
+&gt; (setter flocals)
+<em class="gray">#&lt;lambda (val)&gt;</em>
+&gt; (set! (flocals) 32)
+<em class="gray">32</em>
+&gt; (flocals)
+<em class="gray">32</em>
+</pre>
+
<blockquote>
<br>
@@ -4525,7 +4612,7 @@ the dumb "lambda". Here are more useful examples:
<pre class="indented">
(openlet ; a soft port for format that sends its output to *stderr* and returns the string
(inlet 'format (lambda (port str . args)
- (display (apply format #f str args) *stderr*))))
+ (apply format *stderr* str args))))
(define (open-output-log name)
;; return a soft output port that does not hold its output file open
@@ -4726,7 +4813,7 @@ map-with-exit would be
<pre class="indented">
(define-macro (catch-case clauses . body)
- (let ((base `(lambda () ,@body)))
+ (let ((base (cons 'lambda (cons () body))))
(for-each (lambda (clause)
(let ((tag (car clause)))
(set! base `(lambda ()
@@ -4941,14 +5028,22 @@ via <code>(varlet (curlet) *libgsl*)</code>.
</p>
-<div class="header" id="constants"><h4>define-constant, constant?, symbol-access</h4></div>
+<div class="header" id="constants"><h4>define-constant and symbol-setter</h4></div>
-<p><em class=def id="defineconstant">define-constant</em> defines a constant and
-<em class=def id="constantp">constant?</em> returns #t if its argument
-is a constant. A constant in s7 is really constant: it can't be set or rebound.
+<p><b><em class=def id="defineconstant">define-constant</em></b> defines a symbol whose value is always the same (within the current lexical scope),
+<b><em class=def id="constantp">constant?</em></b> returns #t if its argument is a constant,
+<b><em class=def id="immutableb">immutable!</em></b> declares a sequence to be immutable (its elements can't be changed), and
+<b><em class=def id="immutablep">immutable?</em></b> returns #t if its argument is immutable.
</p>
<pre class="indented">
+&gt; (define v (immutable! (vector 1 2 3)))
+<em class="gray">#(1 2 3)</em>
+&gt; (vector-set! v 0 23)
+<em class="red">error</em><em class="gray">: can't vector-set! #(1 2 3) (it is immutable)</em>
+&gt; (immutable? v)
+<em class="gray">#t</em>
+
&gt; (define-constant var 32)
<em class="gray">var</em>
&gt; (set! var 1)
@@ -4957,18 +5052,37 @@ is a constant. A constant in s7 is really constant: it can't be set or rebound.
<em class="gray">;can't bind or set an immutable object: var, line 1</em>
</pre>
-<p>This has the possibly surprising side effect that previous uses of the constant name
-become constants:
+<p>define-constant blocks any attempt to set! or shadow the constant (lexically speaking of course),
+so local constants behave as you'd expect:
</p>
<pre class="indented">
-(define (func a) (let ((cvar (+ a 1))) cvar))
-(define-constant cvar 23)
-(func 1)
-;can't bind or set an immutable object: cvar
+&gt; (let () (define-constant x 3) (let ((x 32)) x))
+<em class="red">error</em><em class="gray">: can't bind an immutable object: ((x 32))</em>
+&gt; (let ((x 3)) (set! x (let () (define-constant x 32) x))) ; outer x is not a constant
+32
</pre>
+<p>But watch out for deferred bindings:
+</p>
-<p>So, obviously, choose unique names for your constants, or don't use define-constant.
+<pre class="indented">
+&gt; (define (func a) (let ((cvar (+ a 1))) cvar))
+<em class="gray">func</em>
+&gt; (define-constant cvar 23) ; cvar is now globally constant so it can't be shadowed
+<em class="gray">23</em>
+&gt; (func 1) ; here we're trying to shadow cvar
+<em class="red">error</em><em class="gray">: can't bind an immutable object: ((cvar (+ a 1)))</em>
+&gt; (let ((x 1))
+ (define z (let ()
+ (define-constant x 3)
+ (lambda (y)
+ (let ((x y)) ; this x is the inner constant x
+ x))))
+ (z 1)) ; so this is an error even though the outer x is not a constant
+<em class="red">error</em><em class="gray">: can't bind an immutable object: ((x y))</em>
+</pre>
+
+<p>
A function can also be a constant. In some cases, the optimizer can take advantage
of this information to speed up function calls.
</p>
@@ -4978,12 +5092,13 @@ variable trace (informative function upon set or keeping a history of past value
variable's values or doing automatic conversions upon set), and notification upon set (either in Scheme
or in C; I wanted this many years ago in Snd). The notification function is especially useful if
you have a Scheme variable and want to reflect any change in its value immediately in C (see <a href="#notify">below</a>).
-In s7, <em class=def id="symbolaccess">symbol-access</em> sets this function.
+In s7, <em class=def id="symbolsetter">symbol-setter</em> sets this function.
</p>
-<p>Each environment is a set of symbols and their associated values. symbol-access places a function (or macro) between a symbol
-and its value in a given environment. The accessor function takes two arguments, the symbol and the new value, and
-returns the value that is actually set. For example, the function can ensure that a variable is always an integer:
+<p>Each environment is a set of symbols and their associated values. symbol-setter places a function (or macro) between a symbol
+and its value in a given environment. The setter function takes two arguments, the symbol and the new value, and
+returns the value that is actually set. If the setter function accepts a third argument, the current (symbol-relative) environment
+is also passed (the weird argument order is an historical artifact).
</p>
<pre class="indented">
@@ -4992,9 +5107,9 @@ returns the value that is actually set. For example, the function can ensure th
(y 3) ; will always keep its initial value
(z 3)) ; will report set!
- (set! (symbol-access 'x) (lambda (s v) (if (integer? v) v x)))
- (set! (symbol-access 'y) (lambda (s v) y))
- (set! (symbol-access 'z) (lambda (s v) (format *stderr* "z ~A -&gt; ~A~%" z v) v))
+ (set! (symbol-setter 'x) (lambda (s v) (if (integer? v) v x)))
+ (set! (symbol-setter 'y) (lambda (s v) y))
+ (set! (symbol-setter 'z) (lambda (s v) (format *stderr* "z ~A -&gt; ~A~%" z v) v))
(set! x 3.3) ; x does not change because 3.3 is not an integer
(set! y 3.3) ; y does not change
@@ -5010,7 +5125,7 @@ returns the value that is actually set. For example, the function can ensure th
&gt; (define-macro (reflective-let vars . body)
`(let ,vars
,@(map (lambda (vr)
- `(set! (symbol-access ',(car vr))
+ `(set! (symbol-setter ',(car vr))
(lambda (s v)
(format *stderr* "~S -&gt; ~S~%" s v)
v)))
@@ -5020,7 +5135,7 @@ returns the value that is actually set. For example, the function can ensure th
&gt; (reflective-let ((a 1)) (set! a 2))
<em class="gray">2</em> ; prints "a -&gt; 2"
&gt;(let ((a 0))
- (set! (symbol-access 'a)
+ (set! (symbol-setter 'a)
(let ((history (make-vector 3 0))
(position 0))
(lambda (s v)
@@ -5030,25 +5145,61 @@ returns the value that is actually set. For example, the function can ensure th
v)))
(set! a 1)
(set! a 2)
- ((funclet (symbol-access 'a)) 'history))
+ ((funclet (symbol-setter 'a)) 'history))
<em class="gray">#(1 2 0)</em>
</pre>
-<p>Or implement reactive programming:
+<p>define-constant is more restrictive than a symbol-setter that raises an error: the latter
+does not block nested (possibly non-constant) bindings of the symbol. The symbol-setters
+are kind of ugly. Here's a macro that lets you put the let variable's setter after
+the initial value:
+</p>
+
+<pre class="indented">
+(define-macro (let/setter vars . body)
+ ;; (let/setter ((name value [setter])...) ...)
+ (let ((setters (map (lambda (binding)
+ (and (pair? (cddr binding))
+ (caddr binding)))
+ vars))
+ (gsetters (gensym)))
+ `(let ((,gsetters (list ,@setters))
+ ,@(map (lambda (binding)
+ (list (car binding) (cadr binding)))
+ vars))
+ ,@(do ((setter setters (cdr setter))
+ (var vars (cdr var))
+ (i 0 (+ i 1))
+ (result ()))
+ ((null? setter)
+ (reverse result))
+ (if (car setter)
+ (set! result (cons `(set! (symbol-setter (quote ,(caar var))) (list-ref ,gsetters ,i)) result))))
+ ,@body)))
+
+(let ((a 3))
+ (let/setter ((a 1)
+ (b 2 (lambda (s v)
+ (+ v a)))) ; this is the outer "a"
+ (set! a (+ a 1))
+ (set! b (+ a b))
+ (display (list a b)) (newline)))
+</pre>
+
+<p>Reactive programming:
</p>
<pre class="indented">
(let ((a 1)
(b 2)
(c 3))
- (set! (symbol-access 'b) (lambda (s v) (set! a (+ v c)) v))
- (set! (symbol-access 'c) (lambda (s v) (set! a (+ b v)) v))
+ (set! (symbol-setter 'b) (lambda (s v) (set! a (+ v c)) v))
+ (set! (symbol-setter 'c) (lambda (s v) (set! a (+ b v)) v))
(set! a (+ b c)) ; a will be updated if b or c is set
(set! b 4)
(set! c 5)
a) ; a is 9 = (+ 4 5)
</pre>
-
<details>
<summary class="indented">reactive-let</summary>
<div class="indented">
@@ -5079,7 +5230,7 @@ returns the value that is actually set. For example, the function can ensure th
<em class="gray">"a -&gt; 3"</em>
</pre>
-<p>In the reactive-let example, the macro notices that '-b- depends on 'a, so it sets up a symbol-access on 'a
+<p>In the reactive-let example, the macro notices that '-b- depends on 'a, so it sets up a symbol-setter on 'a
so that <code>(set! a 3)</code> triggers <code>(set! -b- (+ a 1))</code>. I'm using -name- to distinguish
the variables that can change value at any time; in the Lisp community, +name+ is often used to mark a constant,
so this seems like a natural convention.
@@ -5371,7 +5522,7 @@ rest. Say we'd like #t&lt;number&gt; to interpret the number in base 12:
(define (traverse tree)
(if (pair? tree)
(cons (traverse (car tree))
- (case (cdr tree) ((()) ()) (else =&gt; traverse)))
+ (case (cdr tree) ((())) (else =&gt; traverse)))
(if (memq tree '(and or not)) tree
(and (symbol? tree) (provided? tree)))))
(if (eval (traverse e))
@@ -5477,7 +5628,7 @@ Here we scan the symbol table looking for any function that doesn't have documen
(if (<em class=red>defined?</em> sym)
(let ((val (<em class=red>symbol-&gt;value</em> sym)))
(if (and (procedure? val)
- (string=? "" (procedure-documentation val)))
+ (string=? "" (documentation val)))
(format *stderr* "~S " sym)))))
(<em class=red>symbol-table</em>))
</pre>
@@ -5972,7 +6123,7 @@ the generic functions mechanism, much like a c-object:
<li>for-each and map accept different length arguments; the operation stops when any argument reaches its end.
<li>for-each and map accept any applicable object as the first argument, and any sequence or iterator as a trailing argument.
<li>letrec*, but without conviction.
-<li>set! and *-set! return the new value (modulo symbol-access), not #&lt;unspecified&gt;.
+<li>set! and *-set! return the new value (modulo symbol-setter), not #&lt;unspecified&gt;.
<li>define and its friends return the new value.
<li>port-closed?
<li>list? means "pair or null", proper-list? is r5rs list?, float? means "real and not rational", sequence? = length.
@@ -6037,7 +6188,6 @@ definition, and a later redefinition does not affect earlier uses.
<li>change with-output-to-* and with-input-from-* to omit the pointless lambda.
<li>remove the with-* IO functions (e.g. with-input-from-string), keeping the call-with-* versions (call-with-input-string).
<li>remove assq, assv, memq, and memv (these are pointless now that assoc and member can be passed eq? and eqv?).
-<li>remove unless: it is much harder to read than when. The 'not should not be hidden.
</ul>
<p>There are several less-than-ideal names. Perhaps s7 should use *pi*, *most-negative-fixnum*,
@@ -6045,6 +6195,7 @@ definition, and a later redefinition does not affect earlier uses.
same kind of name (or +pi+ to show it is a constant?).
get-output-string should be current-output-string. write-char behaves like display, not write.
provided? should be feature? or *features* should be *provisions*.
+list-ref, list-set!, and list-tail actually only apply to pairs.
</p>
<p>
@@ -6146,7 +6297,8 @@ so you don't need to quote it. <code>(eq? () '())</code> is #t.
This is consistent with, for example,
<code>(eq? #f '#f)</code> which is also #t.
The standard says "the empty list is a special object of its own type", so surely either choice is
-acceptable in that regard. One place where the quote matters is in a case statement; the selector is
+acceptable in that regard (but, sigh, the standard stupidly goes on to deny that () can evaluate to itself).
+One place where the quote matters is in a case statement; the selector is
evaluated but the key is not:
</p>
@@ -6173,7 +6325,7 @@ to keep it from being evaluated, but
<p>These examples bring up another odd corner of scheme: else. In <code>(cond (else 1))</code>
the 'else is evaluated (like any cond test), so its value might be #f; in <code>(case 0 (else 1))</code>
it is not evaluated (like any case key), so it's just a symbol.
-Since symbol accessors are local in s7,
+Since symbol setters are local in s7,
someone can <code>(let ((else #f)) (cond (else 1)))</code> even if we protect the rootlet 'else.
Of course, in scheme this kind of trouble is pervasive, so rather than make 'else a constant
I think the best path is to use unlet:
@@ -6185,90 +6337,16 @@ can't be changed.
<details>
-<summary class="indented">mutable constants</summary>
+<summary class="indented">notes on constants</summary>
<div class="indented">
-<p>How should s7 treat this:
-<code>(string-set! "hiho" 1 #\z)</code>, or
-<code>(vector-set! #(1 2 3) 1 32)</code>, or
-<code>(list-set! '(1 2 3) 1 32)</code>?
-Originally, in s7, the first two were errors, and the third was allowed, which doesn't make much sense.
-Guile and Common Lisp accept all three, but that leads to weird cases where we can reach
-into a function's body:
-</p>
-
-<pre class="indented">
-&gt; (let ((x (lambda () '(1 2 3)))) (list-set! (x) 1 32) (x))
-<em class="gray">(1 32 3)</em> ; s7, Guile
-&gt; (flet ((x () '(1 2 3))) (setf (nth 1 (x)) 32) (x))
-<em class="gray">(1 32 3)</em> ; Clisp
-&gt; (let ((x (lambda () (list 1 2 3)))) (list-set! (x) 1 32) (x))
-<em class="gray">(1 2 3)</em>
-</pre>
-
-<p>
-But it's possible to reach into a function's closure, even when the
-closed-over thing is a constant:
-</p>
-
-<pre class="indented">
-&gt; (flet ((x () '(1 2 3))) (setf (nth 1 (x)) 32) (x))
-<em class="gray">(1 32 3)</em>
-&gt; (let ((xx (let ((x '(1 2 3))) (lambda () x)))) (list-set! (xx) 1 32) (xx))
-<em class="gray">(1 32 3)</em>
-&gt; (let ((xx (let ((x (list 1 2 3))) (lambda () x)))) (list-set! (xx) 1 32) (xx))
-<em class="gray">(1 32 3)</em>
-</pre>
-
-<p>
-And it's possible to reach into a constant list via list-set! (or set-car! of course):
-</p>
-
-<pre class="indented">
-&gt; (let* ((x '(1 2)) (y (list x)) (z (car y))) (list-set! z 1 32) (list x y z))
-<em class="gray">((1 32) ((1 32)) (1 32))</em>
-</pre>
-
-<p>
-It would be a programmer's nightmare to have to keep track of which piece of a list is
-constant, and an implementor's nightmare to copy every list. set! in all its forms is
-used for its side-effects, so why should we try to put a fence around them?
-If we flush "immutable constant" because it is a ham-fisted, whack-it-with-a-shovel approach,
-the only real problem I can see is symbol-&gt;string. In CL, this is explicitly an error:
-</p>
-
-<pre class="indented">
-&gt; (setf (elt (symbol-name 'xyz) 1) #\X)
-<em class="gray">*** - Attempt to modify a read-only string: "XYZ"</em>
-</pre>
-
-<p>And in Guile:
-</p>
-
-<pre class="indented">
-&gt; (string-set! (symbol-&gt;string 'symbol-&gt;string) 1 #\X)
-<em class="gray">ERROR: string is read-only: "symbol-&gt;string"</em>
-</pre>
-
-<p>So both have a notion of immutable strings.
-I wonder what other Scheme programmers (not implementors!) want in this situation.
-Currently, there are no immutable list, string, or vector constants, and
-symbol-&gt;string
-returns a copy of the string.
-copy can protect some values. Or combine object-&gt;string and string-&gt;symbol:
-</p>
-
<pre class="indented">
+&gt; (let ((x (lambda () "hiho"))) (string-set! (x) 1 #\x) (x))
+<em class="gray">"hxho"</em>
&gt; (let ((x (lambda () (copy "hiho")))) (string-set! (x) 1 #\x) (x))
<em class="gray">"hiho"</em>
-&gt; (let ((x (string-&gt;symbol "hiho"))) (string-set! (symbol-&gt;string x) 1 #\x) (symbol-&gt;string x))
-<em class="gray">"hiho"</em>
-&gt; (define (immutable obj) (string-&gt;symbol (object-&gt;string obj :readable)))
-<em class="gray">immutable</em>
-&gt; (define (symbol-&gt;object sym) (eval-string (symbol-&gt;string sym)))
-<em class="gray">symbol-&gt;object</em>
-&gt; (symbol-&gt;object (immutable (list 1 2 3)))
-<em class="gray">(1 2 3)</em>
+&gt; (let ((x (lambda () (immutable! "hiho")))) (string-set! (x) 1 #\x) (x))
+<em class="red">error</em><em class="gray">: can't string-set! "hiho" (it is immutable)</em>
</pre>
<p>s7 normally tries to optimize garbage collection by
@@ -8287,7 +8365,7 @@ int main(int argc, char **argv)
s7_define_function(s7, "notify-C", scheme_set_notification, 2, 0, false, "called if notified-var is set!");
s7_define_variable(s7, "notified-var", s7_make_integer(s7, 0));
- <em class=red>s7_symbol_set_access</em>(s7, s7_make_symbol(s7, "notified-var"), s7_name_to_value(s7, "notify-C"));
+ <em class=red>s7_symbol_set_setter</em>(s7, s7_make_symbol(s7, "notified-var"), s7_name_to_value(s7, "notify-C"));
if (argc == 2)
{
@@ -9471,7 +9549,7 @@ thread-safe local variables, which can be saved and communicated between s7 runs
:let-ref-fallback (lambda (obj sym)
(eval-string (gdbm_fetch (obj 'file) (symbol-&gt;string sym))))
- :let-set!-fallback (lambda (obj sym val)
+ :let-set-fallback (lambda (obj sym val)
(gdbm_store (obj 'file)
(symbol-&gt;string sym)
(object-&gt;string val :readable)
diff --git a/s7test.scm b/s7test.scm
index 986c12b..da314b4 100644
--- a/s7test.scm
+++ b/s7test.scm
@@ -398,7 +398,7 @@
(recompose-1 n))
-(if (symbol-access 'val) (set! (symbol-access 'val) #f)) ; might get here from snd-test
+(if (symbol-setter 'val) (set! (symbol-setter 'val) #f)) ; might get here from snd-test
(define _ht_ (make-hash-table))
@@ -944,8 +944,6 @@ void block_init(s7_scheme *sc)
s7_define_safe_function(sc, \"function-close-output\", fout_close, 1, 0, false, \"\");
s7_define_safe_function(sc, \"function-open-input\", fin_open, 1, 0, false, \"\");
- s7_define_function_with_setter(sc, \"dilambda-test\", g_dilambda_test, g_dilambda_set_test, 0, 0, \"dilambda-test info\");
-
s7_define_safe_function(sc, \"hash_heq\", g_heq, 2, 0, false, \"hash-table test\");
s7_define_safe_function(sc, \"hash_hloc\", g_hloc, 1, 0, false, \"hash-table test\");
@@ -1301,7 +1299,7 @@ void block_init(s7_scheme *sc)
(test (blocks :scaler 3 :phase 1) 'error)
(test (map blocks '(1 2 3)) '((1 1) (2 1) (3 1)))
(test (map blocks '( 1 2 3) '(4 5 6)) '((1 4) (2 5) (3 6)))
- (test (procedure-documentation blocks) "test for function*")
+ (test (documentation blocks) "test for function*")
(test (apply blocks '(:frequency 5 :scaler 4)) '(5 4))
(test (let () (define (b1) (blocks 100)) (b1)) '(100 1))
(test (procedure? blocks) #t)
@@ -2862,6 +2860,84 @@ void block_init(s7_scheme *sc)
(test (type-of (c-pointer 0)) 'c-pointer?)
(test (type-of (random-state 123)) 'random-state?)
(test (type-of lambda) 'syntax?)
+(test (type-of (byte-vector 1 2)) 'string?) ;; someday...
+
+(let ()
+ (define (remove obj seq) ; remove-all?
+ (case (type-of seq)
+
+ ((pair?)
+ (if (proper-list? seq)
+ (let loop ((lst seq) (res ()))
+ (if (null? lst)
+ (reverse! res)
+ (loop (cdr lst)
+ (if (equal? obj (car lst))
+ res
+ (cons (car lst) res)))))
+ seq))
+
+ ((string? vector? float-vector? int-vector?)
+ (let ((len (length seq)))
+ (if (zero? len)
+ seq
+ (do ((v (copy seq))
+ (j -1)
+ (i 0 (+ i 1)))
+ ((= i len)
+ (if (string? seq)
+ (copy v ((if (byte-vector? seq) make-byte-vector make-string) (+ j 1)))
+ (make-shared-vector v (+ j 1))))
+ (if (not (equal? obj (seq i)))
+ (set! (v (set! j (+ j 1))) (seq i)))))))
+
+ ((hash-table?)
+ (let ((ht (copy seq)))
+ (hash-table-set! ht obj #f)
+ ht))
+
+ ((let?)
+ (let ((lt (copy seq)))
+ (if (and (openlet? lt)
+ (let-ref lt 'remove))
+ ((let-ref lt 'remove) obj lt)
+ (cutlet lt obj))
+ lt))
+
+ (else seq)))
+
+ (test (remove #\a "abcdabcd") "bcdbcd")
+ (test (remove 1 (vector 0 1 2 1 1)) #(0 2))
+ (test (remove 1 (vector 1)) #())
+ (test (remove 1 (byte-vector 0 1 2 1 1)) #u8(0 2))
+ (test (remove 1 (int-vector 1 2 1 3 4 1 5)) #i(2 3 4 5))
+ (test (remove 1.0 (float-vector 1.0 3.0 1.0)) #r(3.0))
+ (test (remove 1 '(1 2 3 4 1)) '(2 3 4))
+ (test (remove 'a (hash-table* 'a 1 'b 2)) (hash-table '(b . 2)))
+ (test (remove 'a (inlet 'a 1 'b 2)) (inlet 'b 2))
+ (let ((lt1 (remove 'a (openlet (inlet 'a 1 'b 2
+ 'remove (lambda (obj lt)
+ (set! (lt 'b) 3)
+ (cutlet lt obj)))))))
+ (test (lt1 'b) 3))
+ (test (remove 1 (vector)) #())
+
+ (define (hi)
+ (let ((v (byte-vector 1 2 3))
+ (sv (make-vector 3)))
+ (do ((i 0 (+ i 1)))
+ ((= i 3) sv)
+ (set! (sv i) (v i)))))
+ (test (hi) #(1 2 3))
+
+ (define (hi)
+ (let ((v (byte-vector 1 2 3))
+ (sv (make-byte-vector 3)))
+ (do ((i 0 (+ i 1)))
+ ((= i 3) sv)
+ (set! (sv i) (v i)))))
+ (test (hi) #u8(1 2 3)))
+
;;; --------------------------------------------------------------------------------
@@ -3636,6 +3712,24 @@ void block_init(s7_scheme *sc)
3.14 3/4 1.0+1.0i #f #t :hi (if #f #f) (lambda (a) (+ a 1)))))
(list char=? char<? char<=? char>? char>=? char-ci=? char-ci<? char-ci<=? char-ci>? char-ci>=?))
+ (let () ; check direct opts
+ (define (fc str)
+ (let ((len (length str))
+ (count 0))
+ (do ((i 0 (+ i 1)))
+ ((= i len) count)
+ (if (char-whitespace? (string-ref str i))
+ (set! count (+ count 1)))
+ (if (char-alphabetic? (string-ref str i))
+ (set! count (+ count 1)))
+ (if (char-numeric? (string-ref str i))
+ (set! count (+ count 1)))
+ (if (char-lower-case? (string-ref str i))
+ (set! count (+ count 1)))
+ (if (char-upper-case? (string-ref str i))
+ (set! count (+ count 1))))))
+ (test (fc "123 4Ab.2") 10))
+
;;; --------------------------------------------------------------------------------
;;; char=?
@@ -5661,10 +5755,10 @@ i" (lambda (p) (eval (read p)))) pi)
(test (eval (symbol "(#)") (curlet)) 3))
(let ()
- (define (immutable obj) (string->symbol (object->string obj :readable)))
+ (define (immutabl obj) (string->symbol (object->string obj :readable)))
(define (symbol->object sym) (eval-string (symbol->string sym)))
- (test (symbol->object (immutable (list 1 2 3))) (list 1 2 3))
- (test (symbol->object (immutable "hi")) "hi"))
+ (test (symbol->object (immutabl (list 1 2 3))) (list 1 2 3))
+ (test (symbol->object (immutabl "hi")) "hi"))
#|
(let ((str "(let ((X 3)) X)"))
@@ -12125,7 +12219,7 @@ i" (lambda (p) (eval (read p)))) pi)
(let ((h (make-hook)))
(test (procedure? h) #t)
- (test (procedure-documentation h) "")
+ (test (documentation h) "")
(test (hook-functions h) ())
(test (h) #<unspecified>)
(test (h 1) 'error)
@@ -15312,6 +15406,25 @@ i" (lambda (p) (eval (read p)))) pi)
(list "hi" -1 #\a 1 'a-symbol (make-vector 3) abs _ht_ _null_ _c_obj_ quasiquote macroexpand 1/0 (log 0)
3.14 3/4 1.0+1.0i #f #t :hi (if #f #f) (lambda (a) (+ a 1)))))
+;;; newline
+(test (newline 0) 'error)
+(test (newline *stdout* 0) 'error)
+(test (newline #f) #\newline)
+(test (with-output-to-string (lambda () (newline))) "\n")
+(test (with-output-to-string (lambda () (newline #f))) "")
+(test (call-with-output-string (lambda (p) (newline p))) "\n")
+(test (newline *stdin*) 'error)
+
+(test (display 0 0) 'error)
+(test (write 0 0) 'error)
+(test (write-char 0 0) 'error)
+(test (write-string 0 0) 'error)
+(test (write-line 0 0) 'error)
+(test (read-char 0) 'error)
+(test (read 0) 'error)
+(test (read-string 1 0) 'error)
+(test (read-line 0) 'error)
+
;;; -------- format --------
;;; format
@@ -18798,8 +18911,8 @@ c"
(let ((sym (car val))
(fnc (cdr val)))
(if (procedure? fnc)
- (let ((sig (catch #t (lambda () (procedure-signature fnc)) (lambda args #f)))
- (doc (catch #t (lambda () (procedure-documentation fnc)) (lambda args #f)))
+ (let ((sig (catch #t (lambda () (signature fnc)) (lambda args #f)))
+ (doc (catch #t (lambda () (documentation fnc)) (lambda args #f)))
(src (catch #t (lambda () (procedure-source fnc)) (lambda args #f)))
(ari (catch #t (lambda () (arity fnc)) (lambda args #f))))
(let ((lst (list sym fnc sig doc src ari)))
@@ -20458,7 +20571,7 @@ in s7:
`(begin
,@(map (lambda (a b)
`(if (,comparator ,a ,b) ; we're ignoring the fancy CL getf|setf business
- (let ((,tmp ,a)) ; I suppose if it's a list, get procedure-setter?
+ (let ((,tmp ,a)) ; I suppose if it's a list, get setter?
(set! ,a ,b)
(set! ,b ,tmp))))
(map (lambda (ab) (places (car ab))) net)
@@ -20930,7 +21043,7 @@ in s7:
res))
(lambda (val)
(set! (obj pos) val))))))
- (test (procedure? (procedure-setter (make-settable-iterator (vector 1 2 3)))) #t)
+ (test (procedure? (setter (make-settable-iterator (vector 1 2 3)))) #t)
(let ((v (vector 1 2 3)))
(let ((iter (make-settable-iterator v)))
(set! (iter) 32)
@@ -20965,10 +21078,10 @@ in s7:
(set! lst (cons (iter) lst)))))
-(test (procedure-setter (make-iterator "123")) #f)
-(test (procedure-setter (make-iterator #(1))) #f)
-(test (procedure-setter (make-iterator '(1))) #f)
-(test (procedure-setter (make-iterator (float-vector pi))) #f)
+(test (setter (make-iterator "123")) #f)
+(test (setter (make-iterator #(1))) #f)
+(test (setter (make-iterator '(1))) #f)
+(test (setter (make-iterator (float-vector pi))) #f)
(test (copy (make-iterator '(1 2 3)) (vector 1)) 'error)
@@ -21435,7 +21548,7 @@ in s7:
(test (let ((__do_step_var_check__ 2)) 1) 'error)
(test (let () (set! __do_step_var_check__ 2)) 'error)
(test (let ((__a_var__ 123))
- (set! (symbol-access '__a_var__) (lambda (val sym) 0))
+ (set! (symbol-setter '__a_var__) (lambda (val sym) 0))
(set! __a_var__ -1123))
0)
(test (do ((hi #3d(((1 2) (3 4)) ((5 6) (7 8))) (hi 1))) ((equal? hi 8) hi)) 8)
@@ -23354,10 +23467,10 @@ in s7:
(test (apply (cons 1 2) '(0)) 1) ; ! (apply (cons 1 2) '(1)) is an error
(test (procedure? apply) #t)
-(test (help apply) "(apply func ...) applies func to the rest of the arguments")
+(test (string? (help apply)) #t)
(let ((lst (list 'values '(procedure? sequence?) #t))) ; values rather than #t since (+ (apply values '(1 2))) -> 3
(set-cdr! (cddr lst) (cddr lst))
- (test (equal? lst (procedure-signature apply)) #t))
+ (test (equal? lst (signature apply)) #t))
(for-each
(lambda (arg)
@@ -25177,8 +25290,12 @@ in s7:
(test (let ((define 1)) define) 1)
(test (let ((y 1)) (begin (define x 1)) (+ x y)) 2)
(test (let ((: 0)) (- :)) 0)
-;; this only works if we haven't called (string->symbol "") making : into a keyword (see also other cases below)
-;; perhaps I should document this weird case -- don't use : as a variable name
+(test (symbol? (with-input-from-string ":" read)) #t)
+(test (let ((: 3)) :) 3)
+(test (keyword? ':) #f)
+(test (symbol->keyword ':) '::)
+(test (let () (define : 3) :) 3)
+
;;; optimizer troubles
(test (let () (define (f x) (let asd ())) (f 1)) 'error)
@@ -25190,7 +25307,7 @@ in s7:
(test (let ((3 1)) 1) 'error)
(test (let ((3: 1)) 1) 'error)
(test (let ((optional: 1)) 1) 'error)
-(test (let ((x_x_x 32)) (let () (define-constant x_x_x 3) x_x_x) (set! x_x_x 31) x_x_x) 'error)
+(test (let ((x_x_x 32)) (let () (define-constant x_x_x 3) x_x_x) (set! x_x_x 31) x_x_x) 31) ; changed 18-Sep-17
(test (let ((x 1)) (+ (let ((a (begin (define x 2) x))) a) x)) 4)
(test (let ((x 1)) (+ (letrec ((a (begin (define x 2) x))) a) x)) 3)
(test (let ((a #<eof>)) (eof-object? a)) #t)
@@ -27489,7 +27606,7 @@ who says the continuation has to restart the map from the top?
(test (call-with-exit (let ((x 3)) (define (return y) (y x)) return)) 3)
(test (call-with-exit (lambda (return) (with-input-from-string "hi" return))) ()) ; because thunk? -- does it close the port?
(test (call-with-exit (lambda (return) (call-with-input-string "hi" return))) 'error)
-(test (call-with-exit (lambda (return) (set! (procedure-setter return) abs))) 'error)
+(test (call-with-exit (lambda (return) (set! (setter return) abs))) 'error)
(test (call-with-exit (lambda (return) (dynamic-wind return (lambda () 1) (lambda () (error 'test-error "oops"))))) ())
(test (call-with-exit (lambda (return) (map return '(1 2 3)))) 1)
(test (call-with-exit (lambda (return) (dynamic-wind (lambda () 2) (lambda () 1) return))) ()) ; ?? is this a bug?
@@ -28130,7 +28247,7 @@ who says the continuation has to restart the map from the top?
-(test (call-with-exit (lambda (k) (procedure-documentation k))) "")
+(test (call-with-exit (lambda (k) (documentation k))) "")
(test (call-with-exit (lambda (k) (procedure-source k))) ())
(test (let ((pws (dilambda vector-ref vector-set!)))
@@ -29210,7 +29327,7 @@ who says the continuation has to restart the map from the top?
(test (provide) 'error)
(test (provide lambda) 'error)
-(provide 's7test) ; should be a no-op
+(provide 's7test) ; should be a no-op??
(let ((count 0))
(for-each
(lambda (p)
@@ -29685,6 +29802,7 @@ who says the continuation has to restart the map from the top?
(test (sort! (list) <) ())
(test (sort! (vector) <) #())
+(test (sort! (string) char<?) (string))
(test (sort! (list #\a) <) '(#\a)) ; I guess this is reasonable
(test (sort! (list #("hi")) <) '(#("hi")))
(test (sort! (append (sort! (append (sort! () <) ()) <) ()) <) ())
@@ -31329,7 +31447,7 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
(test (let ((tmp (cons 1 2))) (swap (car tmp) (cdr tmp)) tmp) '(2 . 1))
(define-macro (set-swap a b c) `(set! ,b ,c))
- (set! (procedure-setter swap) set-swap)
+ (set! (setter swap) set-swap)
(test (let ((a 1) (b 2) (c 3) (d 4)) (swap a (swap b (swap c d))) (list a b c d)) '(2 3 4 1))
@@ -31355,7 +31473,7 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
(pair? (cdr form))
(pair? (cadr form))
(macro? (symbol->value (caadr form))))
- (expand (apply (eval (copy (procedure-source (procedure-setter (symbol->value (caadr form)))) :readable))
+ (expand (apply (eval (copy (procedure-source (setter (symbol->value (caadr form)))) :readable))
(append (cdadr form) (copy (cddr form)))))
(cons (expand (car form))
(expand (cdr form)))))
@@ -31629,19 +31747,19 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
(test (let () (define (hi (a 1)) a) (hi 1)) 'error)
(test (let ((_?_0 #f))
- (set! (symbol-access '_?_0) (lambda args #f))
+ (set! (symbol-setter '_?_0) (lambda args #f))
(define-macro (_?_0 a) `(+ ,a 1))
(_?_0 2))
'error)
(test (let ((_?_1 #f))
- (set! (symbol-access '_?_1) (lambda args 'error))
+ (set! (symbol-setter '_?_1) (lambda args 'error))
(define-macro (_?_1 a) `(+ ,a 1))
(_?_1 2))
'error)
(test (let ((_?_2 #f))
- (set! (symbol-access '_?_2) (lambda (s v) v))
+ (set! (symbol-setter '_?_2) (lambda (s v) v))
(define-macro (_?_2 a) `(+ ,a 1))
(_?_2 2))
3)
@@ -31712,7 +31830,7 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
(define-macro (set-mac-free-v z)
`(vector-set! v 1 ,z))
- (set! (procedure-setter mac-free-v) set-mac-free-v)
+ (set! (setter mac-free-v) set-mac-free-v)
(define (mac-y2)
(let ((v (vector 1.0 0.1 1.2)))
@@ -32059,7 +32177,7 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
(test (arity object->string) '(1 . 3))
(test (arity string) (cons 0 *max-arity*))
(test (arity dynamic-wind) '(3 . 3))
-(test (arity symbol-access) '(1 . 2))
+(test (arity symbol-setter) '(1 . 2))
(test (arity sublet) (cons 1 *max-arity*))
(test (arity vector-length) '(1 . 1))
(test (arity char-ready?) '(0 . 1))
@@ -32076,7 +32194,7 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
(test (arity gensym) '(0 . 1))
(test (arity make-hash-table) '(0 . 2))
(test (arity multiple-value-bind) (cons 2 *max-arity*))
-(test (arity procedure-setter) '(1 . 1))
+(test (arity setter) '(1 . 1))
(test (arity define-bacro) (cons 2 *max-arity*))
(test (arity string-append) (cons 0 *max-arity*))
(test (arity port-line-number) '(0 . 1))
@@ -32138,7 +32256,7 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
(test (arity open-output-string) '(0 . 0))
(test (arity rational?) '(1 . 1))
(test (arity open-input-string) '(1 . 1))
-(test (arity procedure-documentation) '(1 . 1))
+(test (arity documentation) '(1 . 1))
(test (arity hash-table-set!) '(3 . 3))
(test (arity hash-table-ref) (cons 2 *max-arity*))
(test (arity call-with-values) '(2 . 2))
@@ -32229,9 +32347,9 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
(when with-block
(test (procedure? _c_obj_) #t)
- (test (procedure-setter _c_obj_) #t)
- (test (procedure-signature _c_obj_) #f)
- (test (procedure-documentation _c_obj_) "")
+ (test (procedure? (setter _c_obj_)) #t)
+ (test (signature _c_obj_) (let ((lst (list #t 'c-object? #t))) (set-cdr! (cddr lst) (cddr lst)) lst))
+ (test (documentation _c_obj_) "")
(test (procedure-source _c_obj_) ())
(test (arity _c_obj_) (cons 0 *max-arity*))
(test (aritable? _c_obj_ 1) #t))
@@ -32373,32 +32491,35 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
;;; --------------------------------------------------------------------------------
-;;; procedure-setter
-
-(test (procedure-setter) 'error)
-(test (procedure-setter car cons) 'error)
-(test (procedure-setter car) set-car!)
-(test (procedure-setter vector-ref) vector-set!)
-(test (procedure-setter make-string) #f)
-(test (procedure-setter quasiquote) #f)
-
-(test (procedure-setter cdr) set-cdr!)
-(test (procedure-setter hash-table-ref) hash-table-set!)
-(test (procedure-setter list-ref) list-set!)
-(test (procedure-setter string-ref) string-set!)
+;;; setter
+
+(test (setter) 'error)
+(test (setter car cons) 'error)
+(test (setter car) set-car!)
+(test (setter vector-ref) vector-set!)
+(test (setter make-string) #f)
+(test (setter quasiquote) #f)
+
+(test (setter cdr) set-cdr!)
+(test (setter hash-table-ref) hash-table-set!)
+(test (setter list-ref) list-set!)
+(test (setter string-ref) string-set!)
(when (not pure-s7)
- (test (procedure-setter current-input-port) set-current-input-port)
- (test (procedure-setter current-output-port) set-current-output-port))
-(test (procedure-setter current-error-port) set-current-error-port)
+ (test (setter current-input-port) set-current-input-port)
+ (test (setter current-output-port) set-current-output-port))
+(test (setter current-error-port) set-current-error-port)
(for-each
(lambda (arg)
- (test (procedure-setter arg) 'error))
- (list -1 #\a #f _ht_ 1 #(1 2 3) 3.14 3/4 1.0+1.0i () 'hi 'car "car" :hi #(()) (list 1 2 3) '(1 . 2) "hi"))
+ (test (setter arg) 'error))
+ (list -1 #\a #f 1 3.14 3/4 1.0+1.0i ()))
+(test (setter :hi) #f) ; setter -> symbol-setter here
+(test (setter 'hi) #f)
+(let ((sym 3)) (set! (symbol-setter 'sym) (lambda (x) x)) (test (procedure? (setter 'sym)) #t))
(for-each
(lambda (arg)
- (test (set! (procedure-setter abs) arg) 'error))
+ (test (set! (setter abs) arg) 'error))
(list -1 #\a #t _ht_ 1 #(1 2 3) 3.14 3/4 1.0+1.0i () 'hi 'car "car" :hi #(()) (list 1 2 3) '(1 . 2) "hi"))
(let ()
@@ -32406,43 +32527,43 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
(define-macro (hiha a) `(+ 1 ,a))
(define-bacro* (hoha a) `(+ 1 ,a))
(define pws (dilambda (lambda () 1) (lambda (x) x)))
- (test (procedure-setter hiho) #f)
- (test (procedure-setter hiha) #f)
- (test (procedure-setter hoha) #f)
- (test (procedure? (procedure-setter pws)) #t)
- (test ((procedure-setter pws) 32) 32)
+ (test (setter hiho) #f)
+ (test (setter hiha) #f)
+ (test (setter hoha) #f)
+ (test (procedure? (setter pws)) #t)
+ (test ((setter pws) 32) 32)
)
(test (let ((v #(1 2 3)))
- ((procedure-setter vector-ref) v 0 32)
+ ((setter vector-ref) v 0 32)
v)
#(32 2 3))
(test (let ((v #(1 2 3)))
- ((procedure-setter vector-ref) (let () v) 0 32)
+ ((setter vector-ref) (let () v) 0 32)
v)
#(32 2 3))
(let ()
(define (vref v i) (vector-ref v i))
- (set! (procedure-setter vref) vector-set!)
+ (set! (setter vref) vector-set!)
(test (let ((v (vector 1 2 3))) (set! (vref v 1) 32) v) #(1 32 3)))
-(let-temporarily (((procedure-setter cadr)
+(let-temporarily (((setter cadr)
(lambda (lst val)
(set! (car (cdr lst)) val))))
(test (let ((lst (list 1 2 3)))
(set! (cadr lst) 4)
lst)
'(1 4 3))
- (test (procedure? (procedure-setter cadr)) #t)
+ (test (procedure? (setter cadr)) #t)
(gc) (gc) ; lint.scm tests this exhaustively
- (test (procedure? (procedure-setter cadr)) #t)
- (if (not (procedure? (procedure-setter cadr)))
- (format *stderr* " setter: ~A~%" (procedure-setter cadr))))
+ (test (procedure? (setter cadr)) #t)
+ (if (not (procedure? (setter cadr)))
+ (format *stderr* " setter: ~A~%" (setter cadr))))
(let ()
(define-macro (vref v a) `(vector-ref ,v ,a))
(define-macro (vset! v a x) `(vector-set! ,v ,a ,x))
- (set! (procedure-setter vref) vset!)
+ (set! (setter vref) vset!)
(let ((v (vector 1 2 3)))
(set! (vref v 1) 32)
@@ -32451,83 +32572,116 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
(define hi 0)
(define-macro (xx) `hi)
(define-macro (set-xx val) `(set! hi ,val))
- (set! (procedure-setter xx) set-xx)
+ (set! (setter xx) set-xx)
(set! (xx) 32)
(test hi 32))
(let ()
- (set! (procedure-setter logbit?)
+ (set! (setter logbit?)
(define-macro (m var index on) ; here we want to set "var", so we need a macro
`(if ,on
(set! ,var (logior ,var (ash 1 ,index)))
(set! ,var (logand ,var (lognot (ash 1 ,index)))))))
(test (let ((int #b1010)) (set! (logbit? int 0) #t) int) 11))
-(let-temporarily (((procedure-setter <) <))
+(let-temporarily (((setter <) <))
(test (set! (< 3 2) 3) #f)
(test (set! (< 1) 2) #t))
-(let ((old-setter (procedure-setter abs))) ; check gc protection
- (set! (procedure-setter abs) (define-macro (_m1_ x) `(+ ,x 1)))
+(let ((old-setter (setter abs))) ; check gc protection
+ (set! (setter abs) (define-macro (_m1_ x) `(+ ,x 1)))
(define-macro (_m1_ x) `(- ,x 1))
(gc)
(gc)
- (test (macro? (procedure-setter abs)) #t)
- (set! (procedure-setter abs) old-setter))
+ (test (macro? (setter abs)) #t)
+ (set! (setter abs) old-setter))
+
+(when with-block
+ (let ((b (make-block 3)))
+ ((setter b) b 0 1.0)
+ (test b (block 1.0 0.0 0.0))))
+
+(let ((str "123")) ((setter str) str 0 #\a) (test str "a23"))
+(let ((bv #u8(0 1 2))) ((setter bv) bv 0 3) (test bv #u8(3 1 2)))
+(let ((iv #i(0 1 2))) ((setter iv) iv 0 3) (test iv #i(3 1 2)))
+(let ((v #(0 1 2))) ((setter v) v 0 3) (test v #(3 1 2)))
+(let ((fv #r(0.0 1.0 2.0))) ((setter fv) fv 0 3.0) (test fv #r(3.0 1.0 2.0)))
+(let ((lst (list 0 1 2))) ((setter lst) lst 0 3) (test lst '(3 1 2)))
+(let ((lt (inlet 'a 3))) ((setter lt) lt 'a 4) (test lt (inlet 'a 4)))
+(let ((ht (hash-table* 'a 3))) ((setter ht) ht 'a 4) (test ht (hash-table* 'a 4)))
+(test (setter (make-iterator (list 1 2 3))) #f)
+
+(let ()
+ (define flocals
+ (let ((x 1))
+ (let ((+setter+ (lambda (val) (set! x val)))
+ (+documentation+ (immutable! "this is a test"))
+ (+signature+ '(#t procedure?)))
+ (lambda ()
+ x))))
+
+ (test (flocals)1)
+ (test (procedure? (setter flocals)) #t)
+ (set! (flocals) 32)
+ (test (flocals) 32)
+ (test (signature flocals) '(#t procedure?))
+ (test (documentation flocals) "this is a test"))
+
;;; --------------------------------------------------------------------------------
-;;; procedure-documentation
+;;; documentation
-(test (let () (define hi (let ((documentation "this is a string")) (lambda () 1))) (procedure-documentation hi)) "this is a string")
-(test (let () (define hi (let ((documentation "this is a string")) (lambda () 1))) (help hi)) "this is a string")
-(test (let () (define hi (let ((documentation "this is a string")) (lambda () 1))) (#_help hi)) "this is a string")
+(test (let () (define hi (let ((+documentation+ "this is a string")) (lambda () 1))) (documentation hi)) "this is a string")
+(test (let () (define hi (let ((+documentation+ "this is a string")) (lambda () 1))) (help hi)) "this is a string")
+(test (let () (define hi (let ((+documentation+ "this is a string")) (lambda () 1))) (#_help hi)) "this is a string")
(test (let ((documentation "oops")) (let () (define hi (lambda () 1)) (help hi))) #f)
-(test (let ((documentation "oops")) (define hi (let () (lambda () 1))) (procedure-documentation hi)) "")
+(test (let () (define hi (let ((+documentation+ "ok")) (lambda () 1))) (documentation hi)) "ok")
+(test (let ((documentation "oops")) (define hi (let () (lambda () 1))) (documentation hi)) 'error) ; it's a string here!
(test (let () (define (hi) "this is a string") (hi)) "this is a string")
-(test (set! (procedure-documentation abs) "X the unknown") 'error)
-(test (let ((str (procedure-documentation abs))) (set! ((procedure-documentation abs) 1) #\x) (equal? str (procedure-documentation abs))) #t)
-(test (let ((str (procedure-documentation abs))) (fill! (procedure-documentation abs) #\x) (equal? str (procedure-documentation abs))) #t)
+(test (set! (documentation abs) "X the unknown") 'error)
+(test (let ((str (documentation abs))) (set! ((documentation abs) 1) #\x) (equal? str (documentation abs))) #t)
+(test (let ((str (documentation abs))) (fill! (documentation abs) #\x) (equal? str (documentation abs))) #t)
(let ()
- (define amac (let ((documentation "this is a string")) (define-macro (_ a) `(+ ,a 1))))
- (test (procedure-documentation amac) "this is a string"))
+ (define amac (let ((+documentation+ "this is a string")) (define-macro (_ a) `(+ ,a 1))))
+ (test (documentation amac) "this is a string"))
(let ()
- (define amac (let ((documentation "this is a string")) (define-macro* (_ (a 1)) `(+ ,a 1))))
- (test (procedure-documentation amac) "this is a string"))
+ (define amac (let ((+documentation+ "this is a string")) (define-macro* (_ (a 1)) `(+ ,a 1))))
+ (test (documentation amac) "this is a string"))
(let ()
- (define amac (let ((documentation "this is a string")) (define-bacro (_ a) `(+ ,a 1))))
- (test (procedure-documentation amac) "this is a string"))
+ (define amac (let ((+documentation+ "this is a string")) (define-bacro (_ a) `(+ ,a 1))))
+ (test (documentation amac) "this is a string"))
(let ()
- (define amac (let ((documentation "this is a string")) (define-bacro* (_ (a 1)) `(+ ,a 1))))
- (test (procedure-documentation amac) "this is a string"))
+ (define amac (let ((+documentation+ "this is a string")) (define-bacro* (_ (a 1)) `(+ ,a 1))))
+ (test (documentation amac) "this is a string"))
(let ()
(define-macro (amac a) `(+ ,a 1))
- (test (procedure-documentation amac) ""))
+ (test (documentation amac) ""))
(let ()
(define-bacro (amac a) ,a)
- (test (procedure-documentation amac) ""))
+ (test (documentation amac) ""))
-(test (procedure-documentation abs) "(abs x) returns the absolute value of the real number x")
+(test (documentation abs) "(abs x) returns the absolute value of the real number x")
(test (#_help abs) "(abs x) returns the absolute value of the real number x")
-(test (procedure-documentation 'abs) "(abs x) returns the absolute value of the real number x")
-(test (let ((hi (let ((documentation "this is a test")) (lambda (x) (+ x 1)))))
- (list (hi 1) (procedure-documentation hi)))
+(test (documentation 'abs) "(abs x) returns the absolute value of the real number x")
+(test (let ((hi (let ((+documentation+ "this is a test")) (lambda (x) (+ x 1)))))
+ (list (hi 1) (documentation hi)))
(list 2 "this is a test"))
-(test (procedure-documentation (let ((documentation "docs")) (lambda* (a b) a))) "docs")
-(test (procedure-documentation (let ((documentation "")) (lambda* (a b) a))) "")
-(test (procedure-documentation (let ((documentation "args: (a b)")) (lambda* (a b) a))) "args: (a b)")
-(test (procedure-documentation (call-with-exit (lambda (c) c))) "")
-(test (procedure-documentation (call/cc (lambda (c) c))) "")
-(test (procedure-documentation) 'error)
-(test (procedure-documentation abs abs) 'error)
+(test (documentation (let ((+documentation+ "docs")) (lambda* (a b) a))) "docs")
+(test (documentation (let ((+documentation+ "")) (lambda* (a b) a))) "")
+(test (documentation (let ((+documentation+ "args: (a b)")) (lambda* (a b) a))) "args: (a b)")
+(test (documentation (call-with-exit (lambda (c) c))) "")
+(test (documentation (call/cc (lambda (c) c))) "")
+(test (documentation) 'error)
+(test (documentation abs abs) 'error)
(if (not (provided? 'snd))
(for-each
(lambda (arg)
- (test (procedure-documentation arg) 'error)
+ (test (documentation arg) 'error)
(test (help arg) #f))
(list -1 #\a #f _ht_ 1 #(1 2 3) 3.14 3/4 1.0+1.0i () 'hi #(()) (list 1 2 3) '(1 . 2) "hi" :hi)))
@@ -32535,15 +32689,15 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
(let ((p (dilambda (lambda (a) (+ a 1)) (lambda (a b) (+ a b)))))
(test (object->string (procedure-source p)) "(lambda (a) (+ a 1))")
(let ((p1 p)
- (p2 (dilambda (let ((documentation "pws doc")) (lambda (a) (+ a 1))) (lambda (a b) (+ a b)))))
+ (p2 (dilambda (let ((+documentation+ "pws doc")) (lambda (a) (+ a 1))) (lambda (a b) (+ a b)))))
(test (equal? p p1) #t)
(test (equal? p1 p2) #f)
- (test (procedure-documentation p2) "pws doc")
+ (test (documentation p2) "pws doc")
(test (apply p2 '(2)) 3)))
-(let ((func (eval '(let ((documentation "this is from eval")) (lambda (a) (+ a 1))))))
+(let ((func (eval '(let ((+documentation+ "this is from eval")) (lambda (a) (+ a 1))))))
(test (func 3) 4)
- (test (procedure-documentation func) "this is from eval"))
+ (test (documentation func) "this is from eval"))
(test (let ((e (inlet '(x . 3))))
(let ((func (eval '(lambda (a) (+ a x)) e)))
(func 2)))
@@ -32554,397 +32708,411 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
;;; --------------------------------------------------------------------------------
-;;; procedure-signature
+;;; signature
-(test (procedure-signature boolean?) '(boolean? #t))
+(test (signature boolean?) '(boolean? #t))
(if (not with-bignums)
- (test (procedure-signature round) '(integer? real?)))
-(test (procedure-signature quasiquote) #f)
-(test (procedure-signature test) #f)
+ (test (signature round) '(integer? real?)))
+(test (signature quasiquote) #f)
+(test (signature test) #f)
(for-each
(lambda (arg)
- (test (procedure-documentation arg) 'error))
+ (test (documentation arg) 'error))
(list -1 #\a #f _ht_ 1 #(1 2 3) 3.14 3/4 1.0+1.0i () 'hi #(()) (list 1 2 3) '(1 . 2) "hi" :hi))
-(test (procedure-signature round abs) 'error)
-(test (procedure-signature) 'error)
+(test (signature round abs) 'error)
+(test (signature) 'error)
(let ()
- (define f1 (let ((signature '(real? boolean?)))
+ (define f1 (let ((+signature+ '(real? boolean?)))
(lambda (x)
(if x 1.0 2.0))))
- (test (procedure-signature f1) '(real? boolean?))
+ (test (signature f1) '(real? boolean?))
(define f2 f1)
- (test (procedure-signature f1) '(real? boolean?))
- (test (procedure-signature f2) '(real? boolean?))
+ (test (signature f1) '(real? boolean?))
+ (test (signature f2) '(real? boolean?))
(test (f1 #t) (f2 #t))
(define f3 f1)
- (test (procedure-signature f1) '(real? boolean?))
- (test (procedure-signature f2) '(real? boolean?))
+ (test (signature f1) '(real? boolean?))
+ (test (signature f2) '(real? boolean?))
(define f4 f2)
- (test (procedure-signature f1) '(real? boolean?))
- (test (procedure-signature f2) '(real? boolean?)))
+ (test (signature f1) '(real? boolean?))
+ (test (signature f2) '(real? boolean?)))
(when (not pure-s7)
- (test (procedure-signature make-polar) '(number? real? real?))
- (test (procedure-signature string-copy) '(string? string?))
- (test (procedure-signature char-ci>=?) (let ((L (list 'boolean? 'char?))) (set-cdr! (cdr L) (cdr L)) L))
- (test (procedure-signature char-ci<?) (let ((L (list 'boolean? 'char?))) (set-cdr! (cdr L) (cdr L)) L))
- (test (procedure-signature char-ci=?) (let ((L (list 'boolean? 'char?))) (set-cdr! (cdr L) (cdr L)) L))
- (test (procedure-signature char-ci>?) (let ((L (list 'boolean? 'char?))) (set-cdr! (cdr L) (cdr L)) L))
- (test (procedure-signature char-ci<=?) (let ((L (list 'boolean? 'char?))) (set-cdr! (cdr L) (cdr L)) L))
- (test (procedure-signature string-ci<=?) (let ((L (list 'boolean? 'string?))) (set-cdr! (cdr L) (cdr L)) L))
- (test (procedure-signature string-ci>=?) (let ((L (list 'boolean? 'string?))) (set-cdr! (cdr L) (cdr L)) L))
- (test (procedure-signature string-ci<?) (let ((L (list 'boolean? 'string?))) (set-cdr! (cdr L) (cdr L)) L))
- (test (procedure-signature string-ci=?) (let ((L (list 'boolean? 'string?))) (set-cdr! (cdr L) (cdr L)) L))
- (test (procedure-signature string-ci>?) (let ((L (list 'boolean? 'string?))) (set-cdr! (cdr L) (cdr L)) L))
- (test (procedure-signature string-length) '(integer? string?))
- (test (procedure-signature vector-length) '(integer? vector?))
- (test (procedure-signature set-current-output-port) '(output-port? output-port?))
- (test (procedure-signature set-current-input-port) '(input-port? input-port?))
- (test (procedure-signature set-current-error-port) '(output-port? output-port?))
- (test (procedure-signature char-ready?) '(boolean? input-port?))
- (test (procedure-signature string-fill!) (let ((L (list '(char? integer?) 'string? 'char? 'integer?))) (set-cdr! (cdddr L) (cdddr L)) L))
- (test (procedure-signature string->list) (let ((L (list 'proper-list? 'string? 'integer?))) (set-cdr! (cddr L) (cddr L)) L))
- (test (procedure-signature vector-fill!) (let ((L (list #t 'vector? #t 'integer?))) (set-cdr! (cdddr L) (cdddr L)) L))
- (test (procedure-signature let->list) '(pair? let?))
- (test (procedure-signature vector-append) (let ((L (list 'vector?))) (set-cdr! L L) L))
- (test (procedure-signature list->string) '(string? proper-list?))
- (test (procedure-signature list->vector) '(vector? proper-list?))
- (test (procedure-signature exact?) '(boolean? number?))
- (test (procedure-signature exact->inexact) (let ((L (list 'real?))) (set-cdr! L L) L))
- (test (procedure-signature inexact?) '(boolean? number?))
- (test (procedure-signature inexact->exact) '(rational? real?))
- (test (procedure-signature vector->list) (let ((L (list 'proper-list? 'vector? 'integer?))) (set-cdr! (cddr L) (cddr L)) L))
- (test (procedure-signature integer-length) (let ((L (list 'integer?))) (set-cdr! L L) L))
+ (test (signature char-ci<=?) (let ((L (list 'boolean? 'char?))) (set-cdr! (cdr L) (cdr L)) L))
+ (test (signature char-ci<?) (let ((L (list 'boolean? 'char?))) (set-cdr! (cdr L) (cdr L)) L))
+ (test (signature char-ci=?) (let ((L (list 'boolean? 'char?))) (set-cdr! (cdr L) (cdr L)) L))
+ (test (signature char-ci>=?) (let ((L (list 'boolean? 'char?))) (set-cdr! (cdr L) (cdr L)) L))
+ (test (signature char-ci>?) (let ((L (list 'boolean? 'char?))) (set-cdr! (cdr L) (cdr L)) L))
+ (test (signature char-ready?) '(boolean? input-port?))
+ (test (signature exact->inexact) (let ((L (list 'real?))) (set-cdr! L L) L))
+ (test (signature exact?) '(boolean? number?))
+ (test (signature inexact->exact) '(rational? real?))
+ (test (signature inexact?) '(boolean? number?))
+ (test (signature integer-length) (let ((L (list 'integer?))) (set-cdr! L L) L))
+ (test (signature let->list) '(pair? let?))
+ (test (signature list->string) '(string? proper-list?))
+ (test (signature list->vector) '(vector? proper-list?))
+ (test (signature make-polar) '(number? real? real?))
+ (test (signature set-current-error-port) '(output-port? output-port?))
+ (test (signature set-current-input-port) '(input-port? input-port?))
+ (test (signature set-current-output-port) '(output-port? output-port?))
+ (test (signature string->list) (let ((L (list 'proper-list? 'string? 'integer?))) (set-cdr! (cddr L) (cddr L)) L))
+ (test (signature string-ci<=?) (let ((L (list 'boolean? 'string?))) (set-cdr! (cdr L) (cdr L)) L))
+ (test (signature string-ci<?) (let ((L (list 'boolean? 'string?))) (set-cdr! (cdr L) (cdr L)) L))
+ (test (signature string-ci=?) (let ((L (list 'boolean? 'string?))) (set-cdr! (cdr L) (cdr L)) L))
+ (test (signature string-ci>=?) (let ((L (list 'boolean? 'string?))) (set-cdr! (cdr L) (cdr L)) L))
+ (test (signature string-ci>?) (let ((L (list 'boolean? 'string?))) (set-cdr! (cdr L) (cdr L)) L))
+ (test (signature string-copy) '(string? string?))
+ (test (signature string-fill!) (let ((L (list '(char? integer?) 'string? 'char? 'integer?))) (set-cdr! (cdddr L) (cdddr L)) L))
+ (test (signature string-length) '(integer? string?))
+ (test (signature vector->list) (let ((L (list 'proper-list? 'vector? 'integer?))) (set-cdr! (cddr L) (cddr L)) L))
+ (test (signature vector-append) (let ((L (list 'vector?))) (set-cdr! L L) L))
+ (test (signature vector-fill!) (let ((L (list #t 'vector? #t 'integer?))) (set-cdr! (cdddr L) (cdddr L)) L))
+ (test (signature vector-length) '(integer? vector?))
)
-(test (procedure-signature cddddr) '(#t pair?))
-(test (procedure-signature *) (let ((L (list 'number?))) (set-cdr! L L) L))
-(test (procedure-signature +) (let ((L (list 'number?))) (set-cdr! L L) L))
-(test (procedure-signature -) (let ((L (list 'number?))) (set-cdr! L L) L))
-(test (procedure-signature /) (let ((L (list 'number?))) (set-cdr! L L) L))
-(test (procedure-signature <) (let ((L (list 'boolean? 'real?))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature =) (let ((L (list 'boolean? 'number?))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature >) (let ((L (list 'boolean? 'real?))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature symbol->keyword) '(keyword? symbol?))
-(test (procedure-signature close-input-port) '(unspecified? input-port?))
-(test (procedure-signature string-append) (let ((L (list 'string?))) (set-cdr! L L) L))
-(test (procedure-signature caar) '(#t pair?))
-(test (procedure-signature provided?) '(boolean? symbol?))
-(test (procedure-signature make-byte-vector) (let ((L (list 'byte-vector? 'integer?))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature byte-vector-ref) '(integer? byte-vector? integer?))
-(test (procedure-signature byte-vector-set!) '(integer? byte-vector? integer? integer?))
-(test (procedure-signature append) (let ((L (list #t))) (set-cdr! L L) L))
-(test (procedure-signature cosh) (let ((L (list 'number?))) (set-cdr! L L) L))
-(test (procedure-signature positive?) '(boolean? real?))
-(test (procedure-signature input-port?) '(boolean? #t))
-(test (procedure-signature complex?) '(boolean? #t))
-(test (procedure-signature lognot) (let ((L (list 'integer?))) (set-cdr! L L) L))
-(test (procedure-signature logand) (let ((L (list 'integer?))) (set-cdr! L L) L))
-(test (procedure-signature reverse!) '(sequence? sequence?))
-(test (procedure-signature s7-version) (let ((L (list 'string?))) (set-cdr! L L) L))
-(test (procedure-signature pair?) '(boolean? #t))
-(test (procedure-signature write-byte) '(integer? integer? output-port?))
-(test (procedure-signature delete-file) '(integer? string?))
-(test (procedure-signature sequence?) '(boolean? #t))
-(test (procedure-signature directory?) '(boolean? string?))
-(test (procedure-signature cdar) '(#t pair?))
-(test (procedure-signature hash-table-entries) '(integer? hash-table?))
-(test (procedure-signature copy) (let ((L (list #t #t #t 'integer?))) (set-cdr! (cdddr L) (cdddr L)) L))
-(test (procedure-signature cadadr) '(#t pair?))
-(test (procedure-signature openlet) (let ((L (list (list 'let? 'procedure? 'macro? 'c-object?)))) (set-cdr! L L) L))
-(test (procedure-signature set-cdr!) '(#t pair? #t))
-(test (procedure-signature rootlet) '(let?))
-(test (procedure-signature object->string) '(string? #t (boolean? keyword?) integer?))
-(test (procedure-signature stacktrace) '(string? integer? integer? integer? integer? boolean?))
-;(test (procedure-signature make-hook) '(procedure?))
-(test (procedure-signature char-whitespace?) '(boolean? char?))
-(test (procedure-signature random) '(number? number? random-state?))
-(test (procedure-signature hash-table*) (let ((L (list 'hash-table? #t))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature arity) '((pair? boolean?) #t))
-(test (procedure-signature number?) '(boolean? #t))
-(test (procedure-signature infinite?) '(boolean? number?))
-(test (procedure-signature logbit?) (let ((L (list 'boolean? 'integer?))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature cddadr) '(#t pair?))
-(test (procedure-signature char-alphabetic?) '(boolean? char?))
-(test (procedure-signature keyword->symbol) '(symbol? keyword?))
-(test (procedure-signature random-state?) '(boolean? #t))
-(test (procedure-signature expt) (let ((L (list 'number?))) (set-cdr! L L) L))
-(test (procedure-signature logior) (let ((L (list 'integer?))) (set-cdr! L L) L))
-(test (procedure-signature string=?) (let ((L (list 'boolean? 'string?))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature <=) (let ((L (list 'boolean? 'real?))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature >=) (let ((L (list 'boolean? 'real?))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature eqv?) (let ((L (list 'boolean? #t))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature vector-ref) (let ((L (list #t 'vector? 'integer?))) (set-cdr! (cddr L) (cddr L)) L))
-(test (procedure-signature float-vector-set!) (let ((L (list 'real? 'float-vector? 'integer? 'integer:real?))) (set-cdr! (cdddr L) (cdddr L)) L))
-(test (procedure-signature procedure-signature) '((pair? boolean?) procedure?))
-(test (procedure-signature hash-table-set!) '(#t hash-table? #t #t))
-(test (procedure-signature round) '(integer? real?))
-(test (procedure-signature char-position) '((integer? boolean?) (char? string?) string? integer?))
-(test (procedure-signature make-iterator) '(iterator? sequence? pair?))
-(test (procedure-signature complex) '(number? real? real?))
-(test (procedure-signature tan) (let ((L (list 'number?))) (set-cdr! L L) L))
-(test (procedure-signature eval-string) '(values string? let?))
-(test (procedure-signature caadr) '(#t pair?))
-(test (procedure-signature current-output-port) '(output-port?))
-(test (procedure-signature null?) '(boolean? #t))
-(test (procedure-signature caddar) '(#t pair?))
-(test (procedure-signature let-ref) '(#t let? symbol?))
-(test (procedure-signature nan?) '(boolean? number?))
-(test (procedure-signature make-string) '(string? integer? char?))
-(test (procedure-signature int-vector) (let ((L (list 'int-vector? 'integer?))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature truncate) '(integer? real?))
-(test (procedure-signature list-ref) (let ((L (list #t 'pair? 'integer?))) (set-cdr! (cddr L) (cddr L)) L))
-(test (procedure-signature aritable?) '(boolean? #t integer?))
-(test (procedure-signature read-char) '((char? eof-object?) input-port?))
-(test (procedure-signature eof-object?) '(boolean? #t))
-(test (procedure-signature gensym?) '(boolean? #t))
-(test (procedure-signature output-port?) '(boolean? #t))
-(test (procedure-signature autoload) '(#t symbol? #t))
-(test (procedure-signature cdadr) '(#t pair?))
-(test (procedure-signature iterator-at-end?) '(boolean? iterator?))
-(test (procedure-signature gensym) '(gensym? string?))
-(test (procedure-signature cdddar) '(#t pair?))
-(test (procedure-signature (symbol "(c-object set)")) #f)
-(test (procedure-signature curlet) '(let?))
-(test (procedure-signature quotient) (let ((L (list 'real?))) (set-cdr! L L) L))
-(test (procedure-signature let?) '(boolean? #t))
-(test (procedure-signature integer?) '(boolean? #t))
-(test (procedure-signature display) '(#t #t output-port?))
-(test (procedure-signature make-shared-vector) '(vector? vector? (pair? integer?) integer?))
-(test (procedure-signature exp) (let ((L (list 'number?))) (set-cdr! L L) L))
-(test (procedure-signature float-vector) (let ((L (list 'float-vector? 'real?))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature iterator-sequence) '(sequence? iterator?))
-(test (procedure-signature getenv) (let ((L (list 'string?))) (set-cdr! L L) L))
-(test (procedure-signature string-position) '((integer? boolean?) string? string? integer?))
-(test (procedure-signature integer-decode-float) '(pair? float?))
-(test (procedure-signature acos) (let ((L (list 'number?))) (set-cdr! L L) L))
-(test (procedure-signature string->keyword) '(keyword? string?))
-(test (procedure-signature write-char) '(char? char? output-port?))
-(test (procedure-signature float-vector-ref) (let ((L (list '(float? float-vector?) 'float-vector? 'integer?))) (set-cdr! (cddr L) (cddr L)) L))
-(test (procedure-signature cyclic-sequences) '(proper-list? #t))
-(test (procedure-signature reverse) '(sequence? sequence?))
-(test (procedure-signature with-output-to-file) '(#t string? procedure?))
-(test (procedure-signature procedure-documentation) '(string? procedure?))
-(test (procedure-signature open-output-string) '(output-port?))
-(test (procedure-signature string<?) (let ((L (list 'boolean? 'string?))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature caaar) '(#t pair?))
-(test (procedure-signature equal?) (let ((L (list 'boolean? #t))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature min) (let ((L (list 'real?))) (set-cdr! L L) L))
-(test (procedure-signature sin) (let ((L (list 'number?))) (set-cdr! L L) L))
-(test (procedure-signature cadaar) '(#t pair?))
-(test (procedure-signature list) (let ((L (list 'proper-list? #t))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature make-rectangular) '(number? real? real?))
-(test (procedure-signature macro?) '(boolean? #t))
-(test (procedure-signature inlet) (let ((L (list 'let? #t))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature procedure-setter) '(#t procedure?))
-(test (procedure-signature hash-table-ref) (let ((L (list #t 'hash-table? #t))) (set-cdr! (cddr L) (cddr L)) L))
-(test (procedure-signature unlet) '(let?))
-(test (procedure-signature int-vector?) '(boolean? #t))
-(test (procedure-signature char<?) (let ((L (list 'boolean? 'char?))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature abs) '(real? real?))
-(test (procedure-signature open-input-file) '(input-port? string? string?))
-(test (procedure-signature keyword?) '(boolean? #t))
-(test (procedure-signature acosh) (let ((L (list 'number?))) (set-cdr! L L) L))
-(test (procedure-signature make-hash-table) '(hash-table? integer? (procedure? pair?)))
-(test (procedure-signature cdaar) '(#t pair?))
-(test (procedure-signature set-car!) '(#t pair? #t))
-(test (procedure-signature lcm) (let ((L (list 'rational?))) (set-cdr! L L) L))
-(test (procedure-signature string->byte-vector) '(byte-vector? string?))
-(test (procedure-signature magnitude) '(real? number?))
-(test (procedure-signature cddaar) '(#t pair?))
-(test (procedure-signature list-tail) '(list? pair? integer?))
-(test (procedure-signature read) '(#t input-port?))
-(test (procedure-signature for-each) (let ((L (list 'unspecified? 'procedure? 'sequence?))) (set-cdr! (cddr L) (cddr L)) L))
-(test (procedure-signature memq) '((pair? boolean?) #t list?))
-(test (procedure-signature int-vector-set!) (let ((L (list 'integer? 'int-vector? 'integer?))) (set-cdr! (cddr L) (cddr L)) L))
-(test (procedure-signature call-with-input-file) '(#t string? procedure?))
-(test (procedure-signature call-with-input-string) '(#t string? procedure?))
-(test (procedure-signature dilambda) '(procedure? procedure? procedure?))
-(test (procedure-signature hash-table?) '(boolean? #t))
-(test (procedure-signature dilambda?) '(boolean? #t))
-(test (procedure-signature not) '(boolean? #t))
-(test (procedure-signature logxor) (let ((L (list 'integer?))) (set-cdr! L L) L))
-(test (procedure-signature c-object?) '(boolean? #t))
-(test (procedure-signature vector?) '(boolean? #t))
-(test (procedure-signature length) '((real? boolean?) #t))
-(test (procedure-signature caaddr) '(#t pair?))
-(test (procedure-signature vector) (let ((L (list 'vector? #t))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature throw) (let ((L (list 'values 'symbol? #t))) (set-cdr! (cddr L) (cddr L)) L)) ; was pcl_t
-(test (procedure-signature error) (let ((L (list 'values 'symbol? #t))) (set-cdr! (cddr L) (cddr L)) L)) ; same
-(test (procedure-signature catch) '(values (symbol? boolean?) procedure? procedure?))
-(test (procedure-signature eq?) (let ((L (list 'boolean? #t))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature proper-list?) '(boolean? #t))
-(test (procedure-signature char-upper-case?) '(boolean? char?))
-(test (procedure-signature symbol->dynamic-value) '(#t symbol?))
-(test (procedure-signature remainder) (let ((L (list 'real?))) (set-cdr! L L) L))
-(test (procedure-signature format) (let ((L (list '(string? boolean?) #t))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature hash-table) (let ((L (list 'hash-table? 'list?))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature file-mtime) '(integer? string?))
-(test (procedure-signature constant?) '(boolean? #t))
-(test (procedure-signature random-state->list) '(pair? random-state?))
-(test (procedure-signature boolean?) '(boolean? #t))
-(test (procedure-signature max) (let ((L (list 'real?))) (set-cdr! L L) L))
-(test (procedure-signature cadr) '(#t pair?))
-(test (procedure-signature cdaddr) '(#t pair?))
-(test (procedure-signature car) '(#t pair?))
-(test (procedure-signature integer->char) '(char? integer?))
-(test (procedure-signature char>?) (let ((L (list 'boolean? 'char?))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature asin) (let ((L (list 'number?))) (set-cdr! L L) L))
-(test (procedure-signature current-error-port) '(output-port?))
-(test (procedure-signature flush-output-port) '(#t output-port?))
-(test (procedure-signature owlet) '(let?))
-(test (procedure-signature c-pointer) '(c-pointer? integer? #t #t))
-(test (procedure-signature with-output-to-string) '(string? procedure?))
-(test (procedure-signature memv) '((pair? boolean?) #t list?))
-(test (procedure-signature char?) '(boolean? #t))
-(test (procedure-signature ash) (let ((L (list 'integer?))) (set-cdr! L L) L))
-(test (procedure-signature denominator) '(integer? rational?))
-(test (procedure-signature string>=?) (let ((L (list 'boolean? 'string?))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature make-float-vector) '(float-vector? (integer? pair?) real?))
-(test (procedure-signature call-with-output-file) '(#t string? procedure?))
-(test (procedure-signature call-with-output-string) '(string? procedure?))
-(test (procedure-signature char<=?) (let ((L (list 'boolean? 'char?))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature cddr) '(#t pair?))
-(test (procedure-signature current-input-port) '(input-port?))
-(test (procedure-signature open-input-string) '(input-port? string?))
-(test (procedure-signature write) '(#t #t output-port?))
-(test (procedure-signature cdr) '(#t pair?))
-(test (procedure-signature call/cc) '(values procedure?))
-(test (procedure-signature port-filename) '(string? (input-port? output-port?)))
-(test (procedure-signature caaadr) '(#t pair?))
-(test (procedure-signature symbol?) '(boolean? #t))
-(test (procedure-signature values) (let ((L (list 'values #t))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature symbol) (let ((L (list 'symbol? 'string?))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature asinh) (let ((L (list 'number?))) (set-cdr! L L) L))
-(test (procedure-signature pair-line-number) '((integer? boolean?) pair?))
-(test (procedure-signature pair-filename) '((string? boolean?) pair?))
-(test (procedure-signature load) '(values string? let?))
-(test (procedure-signature cos) (let ((L (list 'number?))) (set-cdr! L L) L))
-(test (procedure-signature iterate) '(#t iterator?))
-(test (procedure-signature substring) (let ((L (list 'string? 'string? 'integer?))) (set-cdr! (cddr L) (cddr L)) L))
-(test (procedure-signature tanh) (let ((L (list 'number?))) (set-cdr! L L) L))
-(test (procedure-signature symbol-access) '((boolean? procedure?) symbol? let?))
-(test (procedure-signature provide) '(symbol? symbol?))
-(test (procedure-signature rational?) '(boolean? #t))
-(test (procedure-signature vector-set!) (let ((L (list #t 'vector? 'integer? 'integer:any?))) (set-cdr! (cdddr L) (cdddr L)) L))
-(test (procedure-signature string-set!) '(char? string? integer? char?))
-(test (procedure-signature assoc) '((pair? boolean?) #t list? procedure?))
-(test (procedure-signature string-ref) '(char? string? integer?))
-(test (procedure-signature float-vector?) '(boolean? #t))
-(test (procedure-signature log) (let ((L (list 'number?))) (set-cdr! L L) L))
-(test (procedure-signature fill!) (let ((L (list #t 'sequence? #t 'integer?))) (set-cdr! (cdddr L) (cdddr L)) L))
-(test (procedure-signature cdaadr) '(#t pair?))
-(test (procedure-signature even?) '(boolean? integer?))
-(test (procedure-signature make-list) '(proper-list? integer? #t))
-(test (procedure-signature modulo) (let ((L (list 'real?))) (set-cdr! L L) L))
-(test (procedure-signature defined?) '(boolean? symbol? let? boolean?))
-(test (procedure-signature with-input-from-file) '(#t string? procedure?))
-(test (procedure-signature with-input-from-string) '(#t string? procedure?))
-(test (procedure-signature real-part) '(real? number?))
-(test (procedure-signature sqrt) (let ((L (list 'number?))) (set-cdr! L L) L))
-(test (procedure-signature char-downcase) (let ((L (list 'char?))) (set-cdr! L L) L))
-(test (procedure-signature symbol->value) '(#t symbol? let?))
-(test (procedure-signature assq) '((pair? boolean?) #t list?))
-(test (procedure-signature make-vector) '(vector? (integer? pair?) #t))
-(test (procedure-signature eval) '(values #t let?))
-(test (procedure-signature caddr) '(#t pair?))
-(test (procedure-signature cons) '(pair? #t #t))
-(test (procedure-signature port-closed?) '(boolean? (input-port? output-port?)))
-(test (procedure-signature char-upcase) (let ((L (list 'char?))) (set-cdr! L L) L))
-(test (procedure-signature sort!) '(sequence? sequence? procedure?))
-(test (procedure-signature write-string) (let ((L (list 'string? 'string? 'output-port? 'integer?))) (set-cdr! (cdddr L) (cdddr L)) L))
-(test (procedure-signature char>=?) (let ((L (list 'boolean? 'char?))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature caadar) '(#t pair?))
-(test (procedure-signature file-exists?) '(boolean? string?))
-(test (procedure-signature vector-dimensions) '(pair? vector?))
-(test (procedure-signature imag-part) '(real? number?))
-(test (procedure-signature make-int-vector) '(int-vector? (integer? pair?) integer?))
-(test (procedure-signature procedure-source) '(list? procedure?))
-(test (procedure-signature zero?) '(boolean? number?))
-(test (procedure-signature dynamic-wind) (let ((L (list 'values 'procedure?))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature cdddr) '(#t pair?))
-(test (procedure-signature list?) '(boolean? #t))
-(test (procedure-signature string-downcase) (let ((L (list 'string?))) (set-cdr! L L) L))
-(test (procedure-signature sinh) (let ((L (list 'number?))) (set-cdr! L L) L))
-(test (procedure-signature get-output-string) '(string? output-port? boolean?))
-(test (procedure-signature real?) '(boolean? #t))
-(test (procedure-signature char->integer) '(integer? char?))
-(test (procedure-signature numerator) '(integer? rational?))
-(test (procedure-signature cdadar) '(#t pair?))
-(test (procedure-signature assv) '((pair? boolean?) #t list?))
-(test (procedure-signature read-line) '((string? eof-object?) input-port? boolean?))
-(test (procedure-signature ceiling) '(integer? real?))
-(test (procedure-signature char-lower-case?) '(boolean? char?))
-(test (procedure-signature call-with-current-continuation) '(values procedure?))
-(test (procedure-signature newline) '(unspecified? output-port?))
-(test (procedure-signature symbol-table) '(vector?))
-(test (procedure-signature char-numeric?) '(boolean? char?))
-(test (procedure-signature string-upcase) (let ((L (list 'string?))) (set-cdr! L L) L))
-(test (procedure-signature member) '((pair? boolean?) #t list? procedure?))
-(test (procedure-signature close-output-port) '(unspecified? output-port?))
-(test (procedure-signature byte-vector) (let ((L (list 'byte-vector? 'integer?))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature cadar) '(#t pair?))
-(test (procedure-signature morally-equal?) (let ((L (list 'boolean? #t))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature call-with-exit) '(values procedure?))
-(test (procedure-signature funclet) '(let? procedure?))
-(test (procedure-signature floor) '(integer? real?))
-(test (procedure-signature let-set!) '(#t let? symbol? #t))
-(test (procedure-signature system) '((integer? string?) string? boolean?))
-(test (procedure-signature map) (let ((L (list 'list? 'procedure? 'sequence?))) (set-cdr! (cddr L) (cddr L)) L))
-(test (procedure-signature caaaar) '(#t pair?))
-(test (procedure-signature port-line-number) '(integer? (input-port? null?)))
-(test (procedure-signature c-pointer?) '(boolean? #t #t))
-(test (procedure-signature int-vector-ref) (let ((L (list '(integer? int-vector?) 'int-vector? 'integer?))) (set-cdr! (cddr L) (cddr L)) L))
-(test (procedure-signature gc) '(#t boolean?))
-(test (procedure-signature angle) '(real? number?))
-(test (procedure-signature coverlet) (let ((L (list (list 'let? 'procedure? 'macro? 'c-object?)))) (set-cdr! L L) L))
-(test (procedure-signature float?) '(boolean? #t))
-(test (procedure-signature cddar) '(#t pair?))
-(test (procedure-signature atan) '(number? number? real?))
-(test (procedure-signature varlet) (let ((L (list 'let? '(let? null?) '(pair? symbol? let?) #t))) (set-cdr! (cdddr L) (cddr L)) L))
-(test (procedure-signature random-state) (let ((L (list 'random-state? 'integer?))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature emergency-exit) '(#t #t))
-(test (procedure-signature #_exit) '(#t #t))
-(test (procedure-signature peek-char) '((char? eof-object?) input-port?))
-(test (procedure-signature directory->list) '(pair? string?))
-(test (procedure-signature cdaaar) '(#t pair?))
-(test (procedure-signature string?) '(boolean? #t))
-(test (procedure-signature negative?) '(boolean? real?))
-(test (procedure-signature gcd) (let ((L (list 'rational?))) (set-cdr! L L) L))
-(test (procedure-signature string) (let ((L (list 'string? 'char?))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature string<=?) (let ((L (list 'boolean? 'string?))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature cutlet) (let ((L (list 'let? 'let? 'symbol?))) (set-cdr! (cddr L) (cddr L)) L))
-(test (procedure-signature outlet) '(let? let?))
-(test (procedure-signature continuation?) '(boolean? #t))
-(test (procedure-signature byte-vector?) '(boolean? #t))
-(test (procedure-signature openlet?) '(boolean? #t))
-(test (procedure-signature char=?) (let ((L (list 'boolean? 'char?))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature cadddr) '(#t pair?))
-(test (procedure-signature apply) (let ((L (list 'values '(procedure? sequence?) #t))) (set-cdr! (cddr L) (cddr L)) L))
-(test (procedure-signature open-output-file) '(output-port? string? string?))
-(test (procedure-signature rationalize) '(rational? real? real?))
-(test (procedure-signature string>?) (let ((L (list 'boolean? 'string?))) (set-cdr! (cdr L) (cdr L)) L))
-(test (procedure-signature iterator?) '(boolean? #t))
-(test (procedure-signature string->symbol) '(symbol? string?))
-(test (procedure-signature symbol->string) '(string? symbol?))
-(test (procedure-signature read-string) '((string? eof-object?) integer? input-port?))
-(test (procedure-signature odd?) '(boolean? integer?))
-(test (procedure-signature atanh) (let ((L (list 'number?))) (set-cdr! L L) L))
-(test (procedure-signature read-byte) '((integer? eof-object?) input-port?))
-(test (procedure-signature procedure?) '(boolean? #t))
-(test (procedure-signature sublet) (let ((L (list 'let? '(let? null?) '(pair? symbol? let?) #t))) (set-cdr! (cdddr L) (cddr L)) L))
-(test (procedure-signature list-set!) (let ((L (list #t 'pair? 'integer? 'integer:any?))) (set-cdr! (cdddr L) (cdddr L)) L))
-(test (procedure-signature string->number) '((number? boolean?) string? integer?))
-(test (procedure-signature number->string) '(string? number? integer?))
-(test (procedure-signature type-of) '((symbol? boolean?) #t))
-(test (procedure-signature quasiquote) #f)
-(test (procedure-signature apply-values) '(#t list?))
-(test (procedure-signature tree-memq) '(boolean? #t list?))
-(test (procedure-signature tree-set-memq) '(boolean? list? list?))
-(test (procedure-signature tree-leaves) '(integer? list?))
-(test (procedure-signature tree-count) '(integer? #t list? integer?))
+(test (signature #_exit) '(#t #t))
+(test (signature (symbol "(c-object set)")) #f)
+(test (signature *) (let ((L (list 'number?))) (set-cdr! L L) L))
+(test (signature +) (let ((L (list 'number?))) (set-cdr! L L) L))
+(test (signature -) (let ((L (list 'number?))) (set-cdr! L L) L))
+(test (signature /) (let ((L (list 'number?))) (set-cdr! L L) L))
+(test (signature <) (let ((L (list 'boolean? 'real?))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature <=) (let ((L (list 'boolean? 'real?))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature =) (let ((L (list 'boolean? 'number?))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature >) (let ((L (list 'boolean? 'real?))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature >=) (let ((L (list 'boolean? 'real?))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature abs) '(real? real?))
+(test (signature acos) (let ((L (list 'number?))) (set-cdr! L L) L))
+(test (signature acosh) (let ((L (list 'number?))) (set-cdr! L L) L))
+(test (signature angle) '(real? number?))
+(test (signature append) (let ((L (list #t))) (set-cdr! L L) L))
+(test (signature apply) (let ((L (list 'values '(procedure? sequence?) #t))) (set-cdr! (cddr L) (cddr L)) L))
+(test (signature apply-values) '(#t list?))
+(test (signature aritable?) '(boolean? #t integer?))
+(test (signature arity) '((pair? boolean?) #t))
+(test (signature ash) (let ((L (list 'integer?))) (set-cdr! L L) L))
+(test (signature asin) (let ((L (list 'number?))) (set-cdr! L L) L))
+(test (signature asinh) (let ((L (list 'number?))) (set-cdr! L L) L))
+(test (signature assoc) '((pair? boolean?) #t list? procedure?))
+(test (signature assq) '((pair? boolean?) #t list?))
+(test (signature assv) '((pair? boolean?) #t list?))
+(test (signature atan) '(number? number? real?))
+(test (signature atanh) (let ((L (list 'number?))) (set-cdr! L L) L))
+(test (signature autoload) '(#t symbol? #t))
+(test (signature boolean?) '(boolean? #t))
+(test (signature byte-vector) (let ((L (list 'byte-vector? 'integer?))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature byte-vector-ref) '(integer? byte-vector? integer?))
+(test (signature byte-vector-set!) '(integer? byte-vector? integer? integer?))
+(test (signature byte-vector?) '(boolean? #t))
+(test (signature c-object?) '(boolean? #t))
+(test (signature c-pointer) '(c-pointer? integer? #t #t))
+(test (signature c-pointer?) '(boolean? #t #t))
+(test (signature caaaar) '(#t pair?))
+(test (signature caaadr) '(#t pair?))
+(test (signature caaar) '(#t pair?))
+(test (signature caadar) '(#t pair?))
+(test (signature caaddr) '(#t pair?))
+(test (signature caadr) '(#t pair?))
+(test (signature caar) '(#t pair?))
+(test (signature cadaar) '(#t pair?))
+(test (signature cadadr) '(#t pair?))
+(test (signature cadar) '(#t pair?))
+(test (signature caddar) '(#t pair?))
+(test (signature cadddr) '(#t pair?))
+(test (signature caddr) '(#t pair?))
+(test (signature cadr) '(#t pair?))
+(test (signature call-with-current-continuation) '(values procedure?))
+(test (signature call-with-exit) '(values procedure?))
+(test (signature call-with-input-file) '(#t string? procedure?))
+(test (signature call-with-input-string) '(#t string? procedure?))
+(test (signature call-with-output-file) '(#t string? procedure?))
+(test (signature call-with-output-string) '(string? procedure?))
+(test (signature call/cc) '(values procedure?))
+(test (signature car) '(#t pair?))
+(test (signature catch) '(values (symbol? boolean?) procedure? procedure?))
+(test (signature cdaaar) '(#t pair?))
+(test (signature cdaadr) '(#t pair?))
+(test (signature cdaar) '(#t pair?))
+(test (signature cdadar) '(#t pair?))
+(test (signature cdaddr) '(#t pair?))
+(test (signature cdadr) '(#t pair?))
+(test (signature cdar) '(#t pair?))
+(test (signature cddaar) '(#t pair?))
+(test (signature cddadr) '(#t pair?))
+(test (signature cddar) '(#t pair?))
+(test (signature cdddar) '(#t pair?))
+(test (signature cddddr) '(#t pair?))
+(test (signature cdddr) '(#t pair?))
+(test (signature cddr) '(#t pair?))
+(test (signature cdr) '(#t pair?))
+(test (signature ceiling) '(integer? real?))
+(test (signature char->integer) '(integer? char?))
+(test (signature char-alphabetic?) '(boolean? char?))
+(test (signature char-downcase) (let ((L (list 'char?))) (set-cdr! L L) L))
+(test (signature char-lower-case?) '(boolean? char?))
+(test (signature char-numeric?) '(boolean? char?))
+(test (signature char-position) '((integer? boolean?) (char? string?) string? integer?))
+(test (signature char-upcase) (let ((L (list 'char?))) (set-cdr! L L) L))
+(test (signature char-upper-case?) '(boolean? char?))
+(test (signature char-whitespace?) '(boolean? char?))
+(test (signature char<=?) (let ((L (list 'boolean? 'char?))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature char<?) (let ((L (list 'boolean? 'char?))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature char=?) (let ((L (list 'boolean? 'char?))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature char>=?) (let ((L (list 'boolean? 'char?))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature char>?) (let ((L (list 'boolean? 'char?))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature char?) '(boolean? #t))
+(test (signature close-input-port) '(unspecified? input-port?))
+(test (signature close-output-port) '(unspecified? output-port?))
+(test (signature complex) '(number? real? real?))
+(test (signature complex?) '(boolean? #t))
+(test (signature cons) '(pair? #t #t))
+(test (signature continuation?) '(boolean? #t))
+(test (signature copy) (let ((L (list #t #t #t 'integer?))) (set-cdr! (cdddr L) (cdddr L)) L))
+(test (signature cos) (let ((L (list 'number?))) (set-cdr! L L) L))
+(test (signature cosh) (let ((L (list 'number?))) (set-cdr! L L) L))
+(test (signature coverlet) (let ((L (list (list 'let? 'procedure? 'macro? 'c-object?)))) (set-cdr! L L) L))
+(test (signature curlet) '(let?))
+(test (signature current-error-port) '(output-port?))
+(test (signature current-input-port) '(input-port?))
+(test (signature current-output-port) '(output-port?))
+(test (signature cutlet) (let ((L (list 'let? 'let? 'symbol?))) (set-cdr! (cddr L) (cddr L)) L))
+(test (signature cyclic-sequences) '(proper-list? #t))
+(test (signature defined?) '(boolean? symbol? let? boolean?))
+(test (signature delete-file) '(integer? string?))
+(test (signature denominator) '(integer? rational?))
+(test (signature dilambda) '(procedure? procedure? procedure?))
+(test (signature dilambda?) '(boolean? #t))
+(test (signature directory->list) '(pair? string?))
+(test (signature directory?) '(boolean? string?))
+(test (signature display) '(#t #t output-port?))
+(test (signature dynamic-wind) (let ((L (list 'values 'procedure?))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature emergency-exit) '(#t #t))
+(test (signature eof-object?) '(boolean? #t))
+(test (signature eq?) (let ((L (list 'boolean? #t))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature equal?) (let ((L (list 'boolean? #t))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature eqv?) (let ((L (list 'boolean? #t))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature error) (let ((L (list 'values 'symbol? #t))) (set-cdr! (cddr L) (cddr L)) L)) ; same
+(test (signature eval) '(values #t let?))
+(test (signature eval-string) '(values string? let?))
+(test (signature even?) '(boolean? integer?))
+(test (signature exp) (let ((L (list 'number?))) (set-cdr! L L) L))
+(test (signature expt) (let ((L (list 'number?))) (set-cdr! L L) L))
+(test (signature file-exists?) '(boolean? string?))
+(test (signature file-mtime) '(integer? string?))
+(test (signature fill!) (let ((L (list #t 'sequence? #t 'integer?))) (set-cdr! (cdddr L) (cdddr L)) L))
+(test (signature float-vector) (let ((L (list 'float-vector? 'real?))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature float-vector-ref) (let ((L (list '(float? float-vector?) 'float-vector? 'integer?))) (set-cdr! (cddr L) (cddr L)) L))
+(test (signature float-vector-set!) (let ((L (list 'real? 'float-vector? 'integer? 'integer:real?))) (set-cdr! (cdddr L) (cdddr L)) L))
+(test (signature float-vector?) '(boolean? #t))
+(test (signature float?) '(boolean? #t))
+(test (signature floor) '(integer? real?))
+(test (signature flush-output-port) '(#t output-port?))
+(test (signature for-each) (let ((L (list 'unspecified? 'procedure? 'sequence?))) (set-cdr! (cddr L) (cddr L)) L))
+(test (signature format) (let ((L (list '(string? boolean?) #t))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature funclet) '(let? procedure?))
+(test (signature gc) '(#t boolean?))
+(test (signature gcd) (let ((L (list 'rational?))) (set-cdr! L L) L))
+(test (signature gensym) '(gensym? string?))
+(test (signature gensym?) '(boolean? #t))
+(test (signature get-output-string) '(string? output-port? boolean?))
+(test (signature getenv) (let ((L (list 'string?))) (set-cdr! L L) L))
+(test (signature hash-table) (let ((L (list 'hash-table? 'list?))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature hash-table*) (let ((L (list 'hash-table? #t))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature hash-table-entries) '(integer? hash-table?))
+(test (signature hash-table-ref) (let ((L (list #t 'hash-table? #t))) (set-cdr! (cddr L) (cddr L)) L))
+(test (signature hash-table-set!) '(#t hash-table? #t #t))
+(test (signature hash-table?) '(boolean? #t))
+(test (signature imag-part) '(real? number?))
+(test (signature immutable!) '(#t #t))
+(test (signature immutable?) '(boolean? #t))
+(test (signature infinite?) '(boolean? number?))
+(test (signature inlet) (let ((L (list 'let? #t))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature input-port?) '(boolean? #t))
+(test (signature int-vector) (let ((L (list 'int-vector? 'integer?))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature int-vector-ref) (let ((L (list '(integer? int-vector?) 'int-vector? 'integer?))) (set-cdr! (cddr L) (cddr L)) L))
+(test (signature int-vector-set!) (let ((L (list 'integer? 'int-vector? 'integer?))) (set-cdr! (cddr L) (cddr L)) L))
+(test (signature int-vector?) '(boolean? #t))
+(test (signature integer->char) '(char? integer?))
+(test (signature integer-decode-float) '(pair? float?))
+(test (signature integer?) '(boolean? #t))
+(test (signature iterate) '(#t iterator?))
+(test (signature iterator-at-end?) '(boolean? iterator?))
+(test (signature iterator-sequence) '(sequence? iterator?))
+(test (signature iterator?) '(boolean? #t))
+(test (signature keyword->symbol) '(symbol? keyword?))
+(test (signature keyword?) '(boolean? #t))
+(test (signature lcm) (let ((L (list 'rational?))) (set-cdr! L L) L))
+(test (signature length) '((real? boolean?) #t))
+(test (signature let-ref) '(#t let? symbol?))
+(test (signature let-set!) '(#t let? symbol? #t))
+(test (signature let?) '(boolean? #t))
+(test (signature list) (let ((L (list 'proper-list? #t))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature list-ref) (let ((L (list #t 'pair? 'integer?))) (set-cdr! (cddr L) (cddr L)) L))
+(test (signature list-set!) (let ((L (list #t 'pair? 'integer? 'integer:any?))) (set-cdr! (cdddr L) (cdddr L)) L))
+(test (signature list-tail) '(list? pair? integer?))
+(test (signature list?) '(boolean? #t))
+(test (signature load) '(values string? let?))
+(test (signature log) (let ((L (list 'number?))) (set-cdr! L L) L))
+(test (signature logand) (let ((L (list 'integer?))) (set-cdr! L L) L))
+(test (signature logbit?) (let ((L (list 'boolean? 'integer?))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature logior) (let ((L (list 'integer?))) (set-cdr! L L) L))
+(test (signature lognot) (let ((L (list 'integer?))) (set-cdr! L L) L))
+(test (signature logxor) (let ((L (list 'integer?))) (set-cdr! L L) L))
+(test (signature macro?) '(boolean? #t))
+(test (signature magnitude) '(real? number?))
+(test (signature make-byte-vector) (let ((L (list 'byte-vector? 'integer?))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature make-float-vector) '(float-vector? (integer? pair?) real?))
+(test (signature make-hash-table) '(hash-table? integer? (procedure? pair?)))
+(test (signature make-int-vector) '(int-vector? (integer? pair?) integer?))
+(test (signature make-iterator) '(iterator? sequence? pair?))
+(test (signature make-list) '(proper-list? integer? #t))
+(test (signature make-rectangular) '(number? real? real?))
+(test (signature make-shared-vector) '(vector? vector? (pair? integer?) integer?))
+(test (signature make-string) '(string? integer? char?))
+(test (signature make-vector) '(vector? (integer? pair?) #t))
+(test (signature map) (let ((L (list 'list? 'procedure? 'sequence?))) (set-cdr! (cddr L) (cddr L)) L))
+(test (signature max) (let ((L (list 'real?))) (set-cdr! L L) L))
+(test (signature member) '((pair? boolean?) #t list? procedure?))
+(test (signature memq) '((pair? boolean?) #t list?))
+(test (signature memv) '((pair? boolean?) #t list?))
+(test (signature min) (let ((L (list 'real?))) (set-cdr! L L) L))
+(test (signature modulo) (let ((L (list 'real?))) (set-cdr! L L) L))
+(test (signature morally-equal?) (let ((L (list 'boolean? #t))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature nan?) '(boolean? number?))
+(test (signature negative?) '(boolean? real?))
+(test (signature newline) '(char? output-port?))
+(test (signature not) '(boolean? #t))
+(test (signature null?) '(boolean? #t))
+(test (signature number->string) '(string? number? integer?))
+(test (signature number?) '(boolean? #t))
+(test (signature numerator) '(integer? rational?))
+(test (signature object->string) '(string? #t (boolean? keyword?) integer?))
+(test (signature odd?) '(boolean? integer?))
+(test (signature open-input-file) '(input-port? string? string?))
+(test (signature open-input-string) '(input-port? string?))
+(test (signature open-output-file) '(output-port? string? string?))
+(test (signature open-output-string) '(output-port?))
+(test (signature openlet) (let ((L (list (list 'let? 'procedure? 'macro? 'c-object?)))) (set-cdr! L L) L))
+(test (signature openlet?) '(boolean? #t))
+(test (signature outlet) '(let? let?))
+(test (signature output-port?) '(boolean? #t))
+(test (signature owlet) '(let?))
+(test (signature pair-filename) '((string? boolean?) pair?))
+(test (signature pair-line-number) '((integer? boolean?) pair?))
+(test (signature pair?) '(boolean? #t))
+(test (signature peek-char) '((char? eof-object?) input-port?))
+(test (signature port-closed?) '(boolean? (input-port? output-port?)))
+(test (signature port-filename) '(string? (input-port? output-port?)))
+(test (signature port-line-number) '(integer? (input-port? null?)))
+(test (signature positive?) '(boolean? real?))
+(test (signature documentation) '(string? procedure?))
+(test (signature setter) '(#t procedure?))
+(test (signature signature) '((pair? boolean?) procedure?))
+(test (signature procedure-source) '(list? procedure?))
+(test (signature procedure?) '(boolean? #t))
+(test (signature proper-list?) '(boolean? #t))
+(test (signature provide) '(symbol? symbol?))
+(test (signature provided?) '(boolean? symbol?))
+(test (signature quasiquote) #f)
+(test (signature quotient) (let ((L (list 'real?))) (set-cdr! L L) L))
+(test (signature random) '(number? number? random-state?))
+(test (signature random-state) (let ((L (list 'random-state? 'integer?))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature random-state->list) '(pair? random-state?))
+(test (signature random-state?) '(boolean? #t))
+(test (signature rational?) '(boolean? #t))
+(test (signature rationalize) '(rational? real? real?))
+(test (signature read) '(#t input-port?))
+(test (signature read-byte) '((integer? eof-object?) input-port?))
+(test (signature read-char) '((char? eof-object?) input-port?))
+(test (signature read-line) '((string? eof-object?) input-port? boolean?))
+(test (signature read-string) '((string? eof-object?) integer? input-port?))
+(test (signature real-part) '(real? number?))
+(test (signature real?) '(boolean? #t))
+(test (signature remainder) (let ((L (list 'real?))) (set-cdr! L L) L))
+(test (signature reverse!) '(sequence? sequence?))
+(test (signature reverse) '(sequence? sequence?))
+(test (signature rootlet) '(let?))
+(test (signature round) '(integer? real?))
+(test (signature s7-version) (let ((L (list 'string?))) (set-cdr! L L) L))
+(test (signature sequence?) '(boolean? #t))
+(test (signature set-car!) '(#t pair? #t))
+(test (signature set-cdr!) '(#t pair? #t))
+(test (signature sin) (let ((L (list 'number?))) (set-cdr! L L) L))
+(test (signature sinh) (let ((L (list 'number?))) (set-cdr! L L) L))
+(test (signature sort!) '(sequence? sequence? procedure?))
+(test (signature sqrt) (let ((L (list 'number?))) (set-cdr! L L) L))
+(test (signature stacktrace) '(string? integer? integer? integer? integer? boolean?))
+(test (signature string) (let ((L (list 'string? 'char?))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature string->byte-vector) '(byte-vector? string?))
+(test (signature string->keyword) '(keyword? string?))
+(test (signature string->number) '((number? boolean?) string? integer?))
+(test (signature string->symbol) '(symbol? string?))
+(test (signature string-append) (let ((L (list 'string?))) (set-cdr! L L) L))
+(test (signature string-downcase) (let ((L (list 'string?))) (set-cdr! L L) L))
+(test (signature string-position) '((integer? boolean?) string? string? integer?))
+(test (signature string-ref) '(char? string? integer?))
+(test (signature string-set!) '(char? string? integer? char?))
+(test (signature string-upcase) (let ((L (list 'string?))) (set-cdr! L L) L))
+(test (signature string<=?) (let ((L (list 'boolean? 'string?))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature string<?) (let ((L (list 'boolean? 'string?))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature string=?) (let ((L (list 'boolean? 'string?))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature string>=?) (let ((L (list 'boolean? 'string?))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature string>?) (let ((L (list 'boolean? 'string?))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature string?) '(boolean? #t))
+(test (signature sublet) (let ((L (list 'let? '(let? null?) '(pair? symbol? let?) #t))) (set-cdr! (cdddr L) (cddr L)) L))
+(test (signature substring) (let ((L (list 'string? 'string? 'integer?))) (set-cdr! (cddr L) (cddr L)) L))
+(test (signature symbol) (let ((L (list 'symbol? 'string?))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature symbol->dynamic-value) '(#t symbol?))
+(test (signature symbol->keyword) '(keyword? symbol?))
+(test (signature symbol->string) '(string? symbol?))
+(test (signature symbol->value) '(#t symbol? let?))
+(test (signature symbol-setter) '((boolean? procedure?) symbol? let?))
+(test (signature symbol-table) '(vector?))
+(test (signature symbol?) '(boolean? #t))
+(test (signature system) '((integer? string?) string? boolean?))
+(test (signature tan) (let ((L (list 'number?))) (set-cdr! L L) L))
+(test (signature tanh) (let ((L (list 'number?))) (set-cdr! L L) L))
+(test (signature throw) (let ((L (list 'values 'symbol? #t))) (set-cdr! (cddr L) (cddr L)) L)) ; was pcl_t
+(test (signature tree-count) '(integer? #t list? integer?))
+(test (signature tree-leaves) '(integer? list?))
+(test (signature tree-memq) '(boolean? #t list?))
+(test (signature tree-set-memq) '(boolean? list? list?))
+(test (signature truncate) '(integer? real?))
+(test (signature type-of) '((symbol? boolean?) #t))
+(test (signature unlet) '(let?))
+(test (signature values) (let ((L (list 'values #t))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature varlet) (let ((L (list 'let? '(let? null?) '(pair? symbol? let?) #t))) (set-cdr! (cdddr L) (cddr L)) L))
+(test (signature vector) (let ((L (list 'vector? #t))) (set-cdr! (cdr L) (cdr L)) L))
+(test (signature vector-dimensions) '(pair? vector?))
+(test (signature vector-ref) (let ((L (list #t 'vector? 'integer?))) (set-cdr! (cddr L) (cddr L)) L))
+(test (signature vector-set!) (let ((L (list #t 'vector? 'integer? 'integer:any?))) (set-cdr! (cdddr L) (cdddr L)) L))
+(test (signature vector?) '(boolean? #t))
+(test (signature with-input-from-file) '(#t string? procedure?))
+(test (signature with-input-from-string) '(#t string? procedure?))
+(test (signature with-output-to-file) '(#t string? procedure?))
+(test (signature with-output-to-string) '(string? procedure?))
+(test (signature write) '(#t #t output-port?))
+(test (signature write-byte) '(integer? integer? output-port?))
+(test (signature write-char) '(char? char? output-port?))
+(test (signature write-string) (let ((L (list 'string? 'string? 'output-port? 'integer?))) (set-cdr! (cdddr L) (cdddr L)) L))
+(test (signature zero?) '(boolean? number?))
+(test (signature make-hook) '(procedure?))
+(test (signature hook-functions) '(list? procedure?))
+
+(test (signature 'abs) (signature abs)) ; for lint mainly
+(test (signature #(1 2)) (let ((lst (list #t 'vector? 'integer?))) (set-cdr! (cddr lst) (cddr lst)) lst))
+(test (signature #i(1 2)) (let ((lst (list 'integer? 'int-vector? 'integer?))) (set-cdr! (cddr lst) (cddr lst)) lst))
+(test (signature #r(1.0 2.0)) (let ((lst (list 'float? 'float-vector? 'integer?))) (set-cdr! (cddr lst) (cddr lst)) lst))
+(test (signature #u8(1 2)) '(integer? byte-vector? integer?))
+(test (signature "12") '(char? string? integer?))
+(test (signature '(1 2)) (let ((lst (list #t 'pair? 'integer?))) (set-cdr! (cddr lst) (cddr lst)) lst))
+(test (signature (hash-table* 'a 1)) '(#t hash-table? #t))
+(test (signature (inlet 'a 1)) '(#t let? #t))
+(test (signature (openlet (inlet 'a 1 'signature (lambda (obj) (list 'integer? 'let? 'symbol?))))) '(integer? let? symbol?))
+
#|
(define (show-cycle sig)
@@ -32973,12 +33141,12 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
(define (test-sym sym)
(let ((f (symbol->value sym)))
(when (procedure? f)
- (let ((sig (procedure-signature f)))
+ (let ((sig (signature f)))
(if (pair? sig)
(if (infinite? (length sig))
- (begin (format *stderr* "(test (procedure-signature ~A) " sym) (show-cycle sig) (format *stderr* ")~%"))
- (format *stderr* "(test (procedure-signature ~A) '~A)~%" sym sig))
- (format *stderr* "(test (procedure-signature ~A) ~A)~%" sym sig))))))
+ (begin (format *stderr* "(test (signature ~A) " sym) (show-cycle sig) (format *stderr* ")~%"))
+ (format *stderr* "(test (signature ~A) '~A)~%" sym sig))
+ (format *stderr* "(test (signature ~A) ~A)~%" sym sig))))))
(let ((st (symbol-table)))
(for-each test-sym st))
@@ -33002,10 +33170,10 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
(lambda ()
(let ((f (symbol->value-anywhere s)))
(if (procedure? f)
- (let ((sig (procedure-signature f))
+ (let ((sig (signature f))
(ari (arity f)))
(if (and sig (not (pair? sig)))
- (format *stderr* "procedure-signature ~A: ~A~%" s sig))
+ (format *stderr* "signature ~A: ~A~%" s sig))
(when (pair? sig)
(if (and (pair? ari)
(> (cdr ari) (- (length sig) 1))
@@ -33055,25 +33223,21 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
(((funclet func) 'lst) a))))
(test (func 1) 2))
-#|
-;;; but:
-:(define func (let ((lst (list 1 2 3)))
+(let ()
+ (define func (let ((lst (list 1 2 3)))
(lambda (a)
((funclet func) 'lst a))))
-func
-:(func 1)
-;environment as applicable object takes one argument: (lst 1)
-; 'lst
+ (test (func 1) 2))
-which seems inconsistent
+(let ((lt (inlet 'a #(1 2 3))))
+ (test (lt 'a 1) 2))
-:(define func (let ((lst (list 1 2 3)))
+(let ()
+ (define func (let ((lst (list 1 2 3)))
(lambda (a)
((list (funclet func)) 0 'lst))))
-func
-:(func 1)
-(1 2 3)
-|#
+ (test (func 1) '(1 2 3)))
+
(for-each
(lambda (arg)
@@ -33330,7 +33494,7 @@ func
;;; :(let ((a 1)) (define (m1 b) (+ a b)) (let->list (outlet (funclet m1))))
;;; ((__func__ . m1))
;;;
-;;; (procedure-documentation macroexpand) -> "" ; also cond-expand
+;;; (documentation macroexpand) -> "" ; also cond-expand
#|
;;; this checks existing procedures
@@ -33343,7 +33507,7 @@ func
(format p "---------------- ~A ----------------~%" sym)
(catch #t
(lambda ()
- (let ((str (procedure-documentation val))
+ (let ((str (documentation val))
(sym-name (symbol->string sym)))
(if (procedure? val)
(if (= (length str) 0)
@@ -33529,7 +33693,7 @@ func
(test (eval (eval (list and "hi"))) "hi")
(let-temporarily (((*s7* 'safety) 1))
- (test (eval (cdr (procedure-signature /))) 'error))
+ (test (eval (cdr (signature /))) 'error))
(test (apply + (+ 1) ()) 1)
(test (apply #(1) (+) ()) 1)
@@ -33979,7 +34143,7 @@ func
(pair? (cdr form))
(pair? (cadr form))
(macro? (symbol->value (caadr form))))
- (expand (apply (eval (procedure-source (procedure-setter (symbol->value (caadr form)))))
+ (expand (apply (eval (procedure-source (setter (symbol->value (caadr form)))))
(append (cdadr form) (cddr form))))
(cons (expand (car form))
(expand (cdr form)))))
@@ -34929,16 +35093,16 @@ func
;;; --------------------------------------------------------------------------------
-;;; symbol-access
+;;; symbol-setter
(let ((p (open-output-string)))
(define e ; save environment for use below
(let ((x 3) ; always an integer
(y 3) ; always 3
(z 3)) ; report set!
- (set! (symbol-access 'x) (lambda (s v) (if (integer? v) v x)))
- (set! (symbol-access 'y) (lambda (s v) y))
- (set! (symbol-access 'z) (lambda (s v) (format p "z ~A -> ~A~%" z v) v))
+ (set! (symbol-setter 'x) (lambda (s v) (if (integer? v) v x)))
+ (set! (symbol-setter 'y) (lambda (s v) y))
+ (set! (symbol-setter 'z) (lambda (s v) (format p "z ~A -> ~A~%" z v) v))
(set! x 3.3)
(set! y 3.3)
(set! z 3.3)
@@ -34950,19 +35114,19 @@ func
(for-each
(lambda (arg)
- (test (symbol-access arg) 'error)
- (test (set! (symbol-access _int_) arg) 'error)
+ (test (symbol-setter arg) 'error)
+ (test (set! (symbol-setter _int_) arg) 'error)
(let ((x 1))
(if (not (null? arg))
- (test (set! (symbol-access 'x arg) (lambda (s v) 1)) 'error)))
+ (test (set! (symbol-setter 'x arg) (lambda (s v) 1)) 'error)))
(let ((_x_ 1))
- (set! (symbol-access '_x_) (lambda (s v) v))
+ (set! (symbol-setter '_x_) (lambda (s v) v))
(set! _x_ arg)
(test _x_ arg)))
(list -1 #\a 1 #(1 2 3) 3.14 3/4 1.0+1.0i () #(()) (list 1 2 3) '(1 . 2) "hi"))
(let ((_x_ 1))
- (set! (symbol-access '_x_) (lambda (s v) v))
+ (set! (symbol-setter '_x_) (lambda (s v) v))
(define _x_ 32)
(test _x_ 32)
(define (_x_) 32)
@@ -34977,27 +35141,27 @@ func
(test _x_ 32))
(let ((_x_ 1))
- (set! (symbol-access '_x_) (lambda (s v) #f))
+ (set! (symbol-setter '_x_) (lambda (s v) #f))
(define _x_ 32) (test _x_ #f)
(test (set! _x_ 32) #f))
-(test (symbol-access) 'error)
+(test (symbol-setter) 'error)
(let ((xyzzy 1)
(_int_ 'xyzzy))
- (test (symbol-access 'xyzzy) #f)
- (test (set! (symbol-access _int_) ()) 'error)
- (test (set! (symbol-access _int_) '(#f)) 'error))
+ (test (symbol-setter 'xyzzy) #f)
+ (test (set! (symbol-setter _int_) ()) 'error)
+ (test (set! (symbol-setter _int_) '(#f)) 'error))
(let ((_x1_ #f))
- (set! (symbol-access '_x1_) (lambda (x y) 'error))
+ (set! (symbol-setter '_x1_) (lambda (x y) 'error))
(test (set! _x1_ 32) 'error))
(let ((x 1))
- (set! (symbol-access 'x) (lambda (s v) x))
+ (set! (symbol-setter 'x) (lambda (s v) x))
(let ((x 2))
(set! x 3)
(test x 3)
- (set! (symbol-access 'x (curlet)) (lambda (s v) 32))
+ (set! (symbol-setter 'x (curlet)) (lambda (s v) 32))
(set! x 1)
(test x 32))
(test x 1)
@@ -35009,8 +35173,8 @@ func
(let ((a x)
(b 2)
(c 3))
- (set! (symbol-access 'b) (lambda (s v) (set! a (+ v c)) v))
- (set! (symbol-access 'c) (lambda (s v) (set! a (+ b v)) v))
+ (set! (symbol-setter 'b) (lambda (s v) (set! a (+ v c)) v))
+ (set! (symbol-setter 'c) (lambda (s v) (set! a (+ b v)) v))
(set! a (+ b c))
(set! b (+ b 1))
(set! c 5)
@@ -35018,13 +35182,13 @@ func
(f1 0)
(test (f1 0) 8))
-(test (symbol-access :rest) #f)
-(test (set! (symbol-access :allow-other-keys) #f) 'error)
+(test (symbol-setter :rest) #f)
+(test (set! (symbol-setter :allow-other-keys) #f) 'error)
(let ()
(define v_a_r 32)
(let ((x #(1 2 3)))
- (set! (symbol-access 'v_a_r)
+ (set! (symbol-setter 'v_a_r)
(lambda (sym val)
(set! (x 1) val)
(+ val 2))))
@@ -35036,7 +35200,7 @@ func
(define v_a_r 32)
(let ((x #(1 2 3)))
- (set! (symbol-access 'v_a_r)
+ (set! (symbol-setter 'v_a_r)
(lambda (sym val)
(set! (x 1) val)
(+ val 1))))
@@ -35048,7 +35212,7 @@ func
(let ((x (vector 1 2 3)))
(let ((y (list 4 5 6)))
- (set! (symbol-access 'v_a_r)
+ (set! (symbol-setter 'v_a_r)
(lambda (sym val)
(+ (x val) (y val)))))
(set! v_a_r 1)
@@ -35067,7 +35231,7 @@ func
(define v_a_r_1 0)
(let ((v_a_r_1 43)
(x #(1 2 3)))
- (set! (symbol-access 'v_a_r_1) (lambda (sym val) (x val)))
+ (set! (symbol-setter 'v_a_r_1) (lambda (sym val) (x val)))
(set! v_a_r_1 0)
(test v_a_r_1 1))
(catch #t (lambda () (set! v_a_r_1 2)) (lambda args (apply format *stderr* (cadr args))))
@@ -35078,7 +35242,7 @@ func
(let ((e1 (curlet))
(y 31))
(let ((e2 (curlet)))
- (set! (symbol-access 'y e1)
+ (set! (symbol-setter 'y e1)
(lambda (sym val)
(+ val (x 1)))))
(set! y 3)
@@ -35086,6 +35250,55 @@ func
(set! y 2)
(test y 4)))
+(let ()
+ (define (symbol-documentation sym e)
+ (cond ((symbol-setter sym e) => documentation)
+ (else #f)))
+
+ (define (symbol-signature sym e)
+ (cond ((symbol-setter sym e) => signature)
+ (else #f))) ; or car?
+
+ (define (setter sym val e)
+ (if (integer? val)
+ val
+ (symbol->value sym e)))
+
+ (let ((x 3))
+ (set! (symbol-setter 'x) setter)
+ (set! x 4)
+ (test x 4))
+
+ (let ((x 5))
+ (define setter
+ (let ((+signature+ '(integer? #t))
+ (+documentation+ "x is an integer"))
+ (lambda (s v e)
+ (if (integer? v)
+ v
+ (symbol->value s e)))))
+ (let ((x 6))
+ (set! (symbol-setter 'x) setter)
+ (set! x 7)
+ (test x 7)
+ (test (symbol-documentation 'x (curlet)) "x is an integer")
+ (test (symbol-signature 'x (curlet)) '(integer? #t)))
+ (test x 5)))
+
+(let ((x (inlet :a 1 :b 2))
+ (set1 #f)
+ (set2 #f))
+ (set! (symbol-setter 'a x)
+ (lambda (s v e)
+ (set! set1 v)
+ (+ v 1)))
+ (set! (symbol-setter 'b x)
+ (lambda (s v e)
+ (set! set2 v)
+ (* v 2)))
+ (set! (x 'a) 32)
+ (set! (x 'b) (+ (x 'a) 1))
+ (test x (inlet :a 33 :b 68)))
@@ -35256,15 +35469,17 @@ func
(test (make-instrument-conf4) 5)
-
+;;; --------------------------------------------------------------------------------
;;; define-constant
(test (let () (define-constant __c1__ 32) __c1__) 32)
-;(test (let () __c1__) 'error) ; changed my mind here -- s7 treats define-constant as a global operation now
-(test (let ((__c1__ 3)) __c1__) 'error)
-(test (let* ((__c1__ 3)) __c1__) 'error)
-(test (letrec ((__c1__ 3)) __c1__) 'error)
-(test (let () (define (__c1__ a) a) (__c1__ 3)) 'error)
-(test (let () (set! __c1__ 3)) 'error)
+(test (let () (define-constant __c1__ 32) (let ((__c1__ 3)) __c1__)) 'error)
+(test (let () (define-constant __c1__ 32) (letrec ((__c1__ 3)) __c1__)) 'error)
+(test (let () (define-constant __c1__ 32) (letrec* ((__c1__ 3)) __c1__)) 'error)
+(test (let () (define-constant __c1__ 32) (let* ((__c1__ 3)) __c1__)) 'error)
+(test (let () (define-constant __c1__ 32) (let () (define __c1__ 3) __c1__)) 'error)
+(test (let () (define-constant __c1__ 32) (let () (set! __c1__ 3) __c1__)) 'error)
+(test (let () (define-constant __c1__ 32) (do ((__c1__ 3)) (#t) __c1__)) 'error)
+(test (let () (define-constant __c1__ 32) (let ((x (inlet :__c1__ 34))) x)) 'error)
(let ()
(define (df1 a) (set! pi a))
@@ -35288,6 +35503,49 @@ func
(test (do ((pi 0 (+ pi 1))) ((= pi 3))) 'error)
)
+(let ((xc 3))
+ (let ()
+ (define-constant xc 32)
+ (test (constant? 'xc) #t)
+ (test (let ((xc 3)) xc) 'error)
+ (test (let* ((y 1) (xc y)) xc) 'error)
+ (test (let ((y (lambda (xc) xc))) (y 1)) 'error)
+ (test (let ((y (lambda (a . xc) xc))) (y 1 2)) 'error)
+ (test (let ((y (lambda* (a :rest xc) xc))) (y 1 2)) 'error)
+ (test (do ((xc 0 (+ xc 1))) ((= xc 2) xc) xc) 'error)
+ (test (inlet 'xc 1) 'error)
+ (test (varlet (inlet) 'xc 1) 'error)
+ (test (set! xc 4) 'error)
+ (test xc 32)
+ (test (let () (define xc 5) xc) 'error)
+ (test (let () (define-constant xc 5) xc) 'error)
+ (test (let () (define* (xc y) 5) (xc)) 'error)
+ (test (let () (define-macro (xc y) `(+ ,y 1)) (xc 2)) 'error)
+ )
+ (test xc 3)
+ (test (constant? 'xc) #f)
+ (test (let ((xc 3)) xc) 3)
+ (test (let* ((y 1) (xc y)) xc) 1)
+ (test (let ((y (lambda (xc) xc))) (y 1)) 1)
+ (test (let ((y (lambda (a . xc) xc))) (y 1 2)) '(2))
+ (test (let ((y (lambda* (a :rest xc) xc))) (y 1 2)) '(2))
+ (test (do ((xc 0 (+ xc 1))) ((= xc 2) xc) xc) 2)
+ (test (inlet 'xc 1) (inlet 'xc 1))
+ (test (varlet (inlet) 'xc 1) (inlet 'xc 1))
+ (test (set! xc 4) 4)
+ (test xc 4)
+ (test (let () (define xc 5) xc) 5)
+ (test (let () (define-constant xc 5) xc) 5)
+ (test (let () (define* (xc y) 5) (xc)) 5)
+ (test (let () (define-macro (xc y) `(+ ,y 1)) (xc 2)) 3)
+ (test xc 4)
+ )
+
+(test (let ((z (let () (define-constant xc 3) (lambda (y) (let ((xc y)) xc))))) (z 1)) 'error)
+(test (let ((xc 1)) (define z (let () (define-constant xc 3) (lambda (y) (let ((xc y)) xc)))) (z 1)) 'error)
+(test (let () (define-constant (xc xc) xc) (xc 1)) 1)
+
+
(let ((old-stdin *stdin*)
(old-closed (port-closed? *stdin*)))
(let ((tag (catch #t (lambda () (set! *stdin* #f)) (lambda args 'error))))
@@ -35337,11 +35595,10 @@ func
(format *s7* ";set! *s7* no error? ~A~%" tag))))
-
;;; --------------------------------------------------------------------------------
;;; constant?
-(test (constant? '__c1__) #t)
+(test (constant? '__c1__) #f)
(test (constant? pi) #t)
(test (constant? 'pi) #t) ; take that, Clisp!
(test (constant? 12345) #t)
@@ -35373,14 +35630,6 @@ func
(test (constant? 1/2) #t)
(test (constant? 'with-let) #t)
(test (constant? with-let) #t)
-
-;; and some I wonder about -- in CL's terms, these always evaluate to the same thing, so they're constantp
-;; but Clisp:
-;; (constantp (cons 1 2)) ->NIL
-;; (constantp #(1 2)) -> T
-;; (constantp '(1 . 2)) -> NIL
-;; etc -- what a mess!
-
(test (constant? (cons 1 2)) #t)
(test (constant? #(1 2)) #t)
(test (constant? (list 1 2)) #t)
@@ -35404,25 +35653,177 @@ func
(test (let ((x 'x)) (and (not (constant? x)) (equal? x (eval x)))) #t)
(test (and (constant? (list + 1)) (not (equal? (list + 1) (eval (list + 1))))) #t)
-;; not sure this is the right thing...
-;; but CL makes no sense:
-;; [3]> (constantp (vector 1))
-;; T
-;; [4]> (constantp (cons 1 2))
-;; NIL
-;; [5]> (constantp (list 1))
-;; NIL
-;; [7]> (constantp "hi")
-;; T
-;; (setf (elt "hi" 1) #\a)
-;; #\a
-;; at least they finally agree that pi is a constant!
-(let ()
- (define-constant __hi__ (vector 3 0))
- (set! (__hi__ 1) 231)
- (test __hi__ #(3 231)))
-;; that is, hi is the constant as a vector, not the vector elements
+;;; --------------------------------------------------------------------------------
+;;; immutable! immutable?
+
+(test (immutable? ()) #t)
+(test (immutable? (list 1)) #f)
+(test (immutable? (immutable! (list 1))) #t)
+(test (immutable? '__c1__) #f)
+(test (immutable? pi) #t)
+(test (immutable? 'pi) #t) ; take that, Clisp!
+(test (immutable? :asdf) #t)
+(test (immutable? 'asdf) #f)
+(test (immutable? "hi") #f)
+(test (immutable? #\a) #t)
+(test (immutable? #f) #t)
+(test (immutable? #t) #t)
+(test (immutable? ()) #t)
+(test (immutable?) 'error)
+(test (immutable? 1 2) 'error)
+(test (immutable? #<eof>) #t)
+(test (immutable? 'with-let) #t)
+
+;; Clisp:
+;; (constantp (cons 1 2)) ->NIL
+;; (constantp #(1 2)) -> T
+;; (constantp '(1 . 2)) -> NIL
+;; (constantp (vector 1)) -> T
+
+
+(test (sort! (immutable! (string #\a #\b #\c)) char>?) 'error)
+(test (sort! (immutable! (vector #\a #\b #\c)) char>?) 'error)
+(test (sort! (immutable! (byte-vector 0 1 2)) >) 'error)
+(test (sort! (immutable! (int-vector 0 1 2)) >) 'error)
+(test (sort! (immutable! (float-vector 0 1 2)) >) 'error)
+(test (sort! (immutable! (list 0 1 2)) >) 'error)
+(test (sort! () >) ())
+(test (sort! (vector) >) #())
+
+(test (reverse! (immutable! (string #\a #\b #\c))) 'error)
+(test (reverse! (immutable! (vector #\a #\b #\c))) 'error)
+(test (reverse! (immutable! (byte-vector 0 1 2))) 'error)
+(test (reverse! (immutable! (int-vector 0 1 2))) 'error)
+(test (reverse! (immutable! (float-vector 0 1 2))) 'error)
+(test (reverse! (immutable! (hash-table* :a 1 :b 2))) 'error)
+(test (reverse! (immutable! (inlet :a 1 :b 2))) 'error)
+(test (reverse! (immutable! (list 1 2 3))) 'error)
+(test (reverse! ()) ())
+(test (reverse! (vector)) #())
+
+(test (set-car! (immutable! (cons 1 2)) 3) 'error)
+(test (set-cdr! (immutable! (cons 1 2)) 3) 'error)
+(test (let ((c (immutable! (list 1 2)))) (set-car! c 0)) 'error)
+(test (let ((c (cons 1 (immutable! (cons 2 ()))))) (set-car! (cdr c) 0)) 'error)
+(test (let ((c (cons 1 (immutable! (cons 2 ()))))) (set-car! c 0) c) '(0 2))
+
+(test (fill! (immutable! (string #\a #\b #\c)) #\a) 'error)
+(test (string-fill! (immutable! (string #\a #\b #\c)) #\a) 'error)
+(test (fill! (immutable! (vector #\a #\b #\c)) 1) 'error)
+(test (vector-fill! (immutable! (vector #\a #\b #\c)) 1) 'error)
+(test (fill! (immutable! (byte-vector 0 1 2)) 0) 'error)
+(test (fill! (immutable! (int-vector 0 1 2)) 1) 'error)
+(test (fill! (immutable! (float-vector 0 1 2)) 1.0) 'error)
+(test (fill! (immutable! (hash-table* :a 1 :b 2)) #f) 'error)
+(test (fill! (immutable! (inlet :a 1 :b 2)) #f) 'error)
+(test (fill! (immutable! (list 1 2 3)) 0) 'error)
+
+(test (reverse! (copy (immutable! (string #\a #\b #\c)))) "cba")
+(test (immutable? (copy (immutable! (list 1 2)))) #f)
+(test (immutable? (copy (immutable! "123"))) #f)
+
+(test (let ((str (immutable! (string #\1 #\2)))) (string-set! str 0 #\a)) 'error)
+(test (let ((str (immutable! (string #\1 #\2)))) (set! (str 0) #\a)) 'error)
+(test (let ((bv (immutable! (byte-vector 1 2)))) (byte-vector-set! bv 0 2)) 'error)
+(test (let ((lt (immutable! (inlet :a 1)))) (let-set! lt :a 2)) 'error)
+(test (let ((lt (immutable! (inlet :a 1)))) (set! (lt :a) 2)) 'error)
+(test (let ((lt (immutable! (hash-table* :a 1)))) (hash-table-set! lt :a 2)) 'error)
+(test (let ((lt (immutable! (hash-table* :a 1)))) (set! (lt :a) 2)) 'error)
+
+(test (let ((p (immutable! (list 1 2)))) (list-set! p 0 2)) 'error)
+(test (let ((p (immutable! (list 1 2)))) (set! (p 0) 2)) 'error)
+(test (let ((p (immutable! (vector 1 2)))) (vector-set! p 0 2)) 'error)
+(test (let ((p (immutable! (vector 1 2)))) (set! (p 0) 2)) 'error)
+(test (let ((p (immutable! (int-vector 1 2)))) (int-vector-set! p 0 2)) 'error)
+(test (let ((p (immutable! (int-vector 1 2)))) (set! (p 0) 2)) 'error)
+(test (let ((p (immutable! (float-vector 1 2)))) (float-vector-set! p 0 2)) 'error)
+(test (let ((p (immutable! (float-vector 1 2)))) (set! (p 0) 2)) 'error)
+(test (let ((ht (immutable! (hash-table* 'a 1)))) (hash-table-set! ht 'a #f)) 'error)
+(test (let ((lt (immutable! (inlet 'a 1)))) (varlet lt 'b 2)) 'error)
+(test (let ((lt (immutable! (inlet 'a 1 'b 2)))) (cutlet lt 'b)) 'error)
+
+(let ((src (vector 0 0)))
+ (test (let ((p1 (immutable! (list 1 2)))) (copy src p1)) 'error)
+ (test (let ((p1 (immutable! (string #\a #\b)))) (copy src p1)) 'error)
+ (test (let ((p1 (immutable! (byte-vector 1 2)))) (copy src p1)) 'error)
+ (test (let ((p1 (immutable! (vector 1 2)))) (copy src p1)) 'error)
+ (test (let ((p1 (immutable! (int-vector 1 2)))) (copy src p1)) 'error)
+ (test (let ((p1 (immutable! (float-vector 1 2)))) (copy src p1)) 'error)
+ (test (let ((p1 (immutable! (hash-table* 'a 1)))) (copy src p1)) 'error)
+ (test (let ((p1 (immutable! (inlet 'a 1)))) (copy src p1)) 'error))
+(test (copy (inlet 'a 1) (immutable! (inlet 'b 2))) 'error)
+(test (copy (inlet 'a 1) (immutable! (vector 0 0))) 'error)
+(test (copy (hash-table* 'a 1) (immutable! (vector 0 0))) 'error)
+
+(test (let ((lt (immutable! (inlet 'a 1)))) (let-set! lt 'a 2)) 'error)
+(test (let ((lt (immutable! (inlet 'a 1)))) (set! (lt 'a) 2)) 'error)
+(test (let ((lt (immutable! (inlet 'a 1)))) (let-set! lt 'b 2)) 'error)
+(test (let ((lt (immutable! (inlet 'a 1)))) (set! (lt 'b) 2)) 'error)
+
+(test (let ((lt (immutable! (inlet 'a 1)))) (with-let lt (define b 2))) 'error)
+(test (let ((lt (immutable! (inlet 'a 1)))) (with-let lt (define* (b x) (+ x 2)))) 'error)
+(test (let ((lt (immutable! (inlet 'a 1)))) (with-let lt (apply define '(b 2)))) 'error)
+(test (let ((a 1)) (immutable! (curlet)) (define b 2)) 'error)
+(test (let ((lt (immutable! (inlet 'a 1)))) (with-let lt (define-macro (b x) `(+ ,x 2)))) 'error)
+(test (let ((lt (immutable! (inlet 'a 1)))) (with-let lt (provide 'hiho))) 'error)
+(test (let ((a 1)) (immutable! (curlet)) (provide 'hiho)) 'error)
+
+(test (let () (define (fstr) "fstr result") (let ((str (fstr))) (string-set! str 1 #\!) (fstr))) "f!tr result")
+(test (let () (define (fstr) (immutable! "fstr result")) (let ((str (fstr))) (string-set! str 1 #\!) (fstr))) 'error)
+(test (let () (define (fstr) "fstr result") (object->string fstr :readable)) "(lambda () \"fstr result\")")
+(test (let () (define (fstr) (immutable! "fstr result")) (object->string fstr :readable)) "(lambda () (immutable! \"fstr result\"))")
+(test (let ((str (immutable! "1234"))) (object->string str :readable)) "(immutable! \"1234\")")
+(test (let ((seq (immutable! (list 1 2 3)))) (object->string seq :readable)) "(immutable! (list 1 2 3))")
+(test (let ((seq (immutable! (vector 1 2 3)))) (object->string seq :readable)) "(immutable! (vector 1 2 3))")
+(test (let ((seq (immutable! (int-vector 1 2 3)))) (object->string seq :readable)) "(immutable! #i(1 2 3)")
+(test (let ((seq (immutable! (float-vector 1 2 3)))) (object->string seq :readable)) "(immutable! #r(1.0 2.0 3.0)")
+(test (let ((seq (immutable! (inlet :a 1)))) (object->string seq :readable)) "(immutable! (inlet 'a 1))")
+(test (let ((seq (immutable! (hash-table* :a 1)))) (object->string seq :readable)) "(immutable! (hash-table (cons :a 1)))")
+(test (let ((seq (immutable! (byte-vector 1 2 3)))) (object->string seq :readable)) "(immutable! #u8(1 2 3))")
+(test (let ((seq (immutable! (cons 1 2)))) (object->string seq :readable)) "(immutable! (cons 1 2))")
+(test (let ((seq (immutable! '(1 2)))) (object->string seq :readable)) "(immutable! (list 1 2))")
+(test (let ((seq (immutable! (list 1)))) (object->string (list seq 2) :readable)) "(list (immutable! (list 1)) 2)")
+(test (let ((str (immutable! 1234))) (object->string str :readable)) "1234")
+(test (let ((str (immutable! #\a))) (object->string str :readable)) "#\\a")
+
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (string-set! str 0 #\a)) str) (f (immutable! "1234"))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (string-set! str 0 #\a)) str) (f (immutable! (vector 1 2 3)))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (string-set! str 0 #\a)) str) (f (immutable! "1234"))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (set! (str 0) #\a)) str) (f (immutable! "1234"))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (do ((j 0 (+ j 1))) ((= j 2)) (string-set! str 0 #\a))) str) (f (immutable! "1234"))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (let-set! str :a 2)) str) (f (immutable! (inlet :a 1)))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (set! (str :a) 2)) str) (f (immutable! (inlet :a 1)))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (hash-table-set! str 'a 1)) str) (f (immutable! (hash-table* 'a 1)))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (set! (str 'a) 1)) str) (f (immutable! (hash-table* 'a 1)))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (list-set! str 1 2)) str) (f (immutable! (list 0 1 2)))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (set! (str 1) 2)) str) (f (immutable! (list 0 1 2)))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (set-car! str 1)) str) (f (immutable! (list 0 1 2)))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (set-cdr! str 1)) str) (f (immutable! (list 0 1 2)))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (vector-set! str 1 2)) str) (f (immutable! (vector 0 1 2)))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (set! (str 1) 2)) str) (f (immutable! (vector 0 1 2)))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (byte-vector-set! str 1 2)) str) (f (immutable! (byte-vector 0 1 2)))) 'error)
+(test (let ((lt (immutable! (inlet 'a 1)))) (set! (outlet lt) (curlet))) 'error)
+(test (let ((c (immutable! (cons 1 (immutable! (cons 2 ())))))) (set-car! (cdr c) 3)) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (float-vector-set! str 1 2)) str) (f (immutable! (float-vector 0 1 2)))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (int-vector-set! str 1 2)) str) (f (immutable! (int-vector 0 1 2)))) 'error)
+
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (string-set! (car str) 0 #\a)) str) (f (list (immutable! "1234")))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (set! ((car str) 0) #\a)) str) (f (list (immutable! "1234")))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (do ((j 0 (+ j 1))) ((= j 2)) (string-set! (car str) 0 #\a))) str) (f (list (immutable! "1234")))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (let-set! (car str) :a 2)) str) (f (list (immutable! (inlet :a 1))))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (set! ((car str) :a) 2)) str) (f (list (immutable! (inlet :a 1))))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (hash-table-set! (car str) 'a 1)) str) (f (list (immutable! (hash-table* 'a 1))))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (set! ((car str) 'a) 1)) str) (f (list (immutable! (hash-table* 'a 1))))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (list-set! (car str) 1 2)) str) (f (list (immutable! (list 0 1 2))))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (set! ((car str) 1) 2)) str) (f (list (immutable! (list 0 1 2))))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (set-car! (car str) 1)) str) (f (list (immutable! (list 0 1 2))))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (set-cdr! (car str) 1)) str) (f (list (immutable! (list 0 1 2))))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (vector-set! (car str) 1 2)) str) (f (list (immutable! (vector 0 1 2))))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (set! ((car str) 1) 2)) str) (f (list (immutable! (vector 0 1 2))))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (float-vector-set! (car str) 1 2)) str) (f (list (immutable! (float-vector 0 1 2))))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (int-vector-set! (car str) 1 2)) str) (f (list (immutable! (int-vector 0 1 2))))) 'error)
+(test (let () (define (f str) (do ((i 0 (+ i 1))) ((= i 2)) (byte-vector-set! (car str) 1 2)) str) (f (list (immutable! (byte-vector 0 1 2))))) 'error)
@@ -35603,6 +36004,10 @@ func
(test (equal? (inlet 'a 1) (sublet (inlet 'a 1))) #t)
(test (equal? (sublet (inlet 'a 1)) (inlet 'a 1)) #t)
+(test (equal? (inlet (cons 'a 1)) (inlet 'a 1)) #t)
+(test (equal? (inlet (cons :a 1)) (inlet 'a 1)) #t)
+(test (equal? (inlet :a 1) (inlet 'a 1)) #t)
+
(test (let ((e (inlet 'a 1 'a 2)))
(let ((c (copy e)))
(list (e 'a) (c 'a))))
@@ -35813,6 +36218,7 @@ func
(test (let ((a (inlet 'b #(0 1)))) (set! (with-let a (b 0)) 1) ((a 'b) 0)) 1)
(test (set! (with-let (curlet) 3) 2) 'error)
(test (let ((c (list 1 2))) (set! (with-let (curlet) (c 3)) 32 0)) 'error)
+(test (abs (let ((abs (lambda (x) 32))) (openlet (curlet)))) 32)
(let ((a (inlet 'abc (let ((inx 0)) (dilambda (lambda () inx) (lambda (y) (set! inx y)))))))
(set! ((a 'abc)) 32)
@@ -36501,7 +36907,7 @@ func
(test (x) (list x #f)) ; let-ref expects 2 args
(test (x 1) (list x 1)))
-(let ((x (openlet (inlet 'let-set!-fallback (lambda args args)))))
+(let ((x (openlet (inlet 'let-set-fallback (lambda args args)))))
; (test (set! (x) 1) (list x 1)) ; doesn't work yet
(test (set! (x 1) 2) (list x 1 2)))
@@ -36594,6 +37000,38 @@ func
(set! (*s7* 'print-length) 3)
(test (object->string e) "(inlet 'a 1 'b 2 'c 3 ...)")))
+(let ((hi (openlet (inlet 'a 1
+ 'let-ref (lambda (obj val)
+ (coverlet obj)
+ (let ((res (+ (obj val) 1)))
+ (openlet obj)
+ res))))))
+ (test (hi 'a) 2))
+
+(let ()
+ (define (cowlet . fields) ; copy-on-write let
+ (openlet (apply inlet
+ 'let-set! (lambda (obj field val)
+ (let ((new-obj (copy (coverlet obj))))
+ (set! (new-obj field) val)
+ (openlet obj)
+ (openlet new-obj)))
+ fields)))
+ (let ((hi (cowlet 'a 1 'b 2)))
+ (let-set! hi 'b 1)
+ (test (hi 'b) 2)
+ (set! (hi 'b) 12)
+ (test (hi 'b) 2)
+ (let ((ho (let-set! hi 'b 32))
+ (ha (set! (hi 'b) 32)))
+ (test (openlet? hi) #t)
+ (test (openlet? ho) #t)
+ (test (let? ho) #t)
+ (test (eq? hi ho) #f)
+ (test (hi 'b) 2)
+ (test (ho 'b) 32)
+ (test (eq? ho ha) #f)
+ (test (ha 'b) 32))))
;;; make-type ----------------
@@ -36902,11 +37340,7 @@ func
;;; environments as objects
-(define-bacro* (define-class class-name inherited-classes (slots ()) (methods ()))
-
- ;; a bacro is needed so that the calling environment is accessible via outlet
- ;; we could also use the begin/let shuffle, but it's too embarrassing
-
+(define-macro* (define-class class-name inherited-classes (slots ()) (methods ()))
`(let ((outer-env (outlet (curlet)))
(new-methods ())
(new-slots ())
@@ -37018,7 +37452,7 @@ func
(lambda (obj val) (set! (obj ',slot) val)))))
-(define-bacro (define-method name-and-args . body)
+(define-macro (define-method name-and-args . body)
`(let* ((outer-env (outlet (curlet)))
(method-name (car ',name-and-args))
(method-args (cdr ',name-and-args))
@@ -37069,12 +37503,12 @@ func
(obj 'inherited))
(reverse methods)))
-(define (make-instance class . args)
- (let* ((cls (if (symbol? class) (symbol->value class) class))
- (make (symbol->value (string->symbol (string-append "make-" (symbol->string (cls 'class-name)))))))
- (apply make args)))
+(define-macro (make-instance class . args)
+ `(let* ((cls (if (symbol? ,class) (symbol->value ,class) ,class))
+ (make (symbol->value (string->symbol (string-append "make-" (symbol->string (cls 'class-name)))))))
+ (apply make ',args)))
-(define-bacro (define-method-with-next-method name-and-args . body)
+(define-macro (define-method-with-next-method name-and-args . body)
`(let* ((outer-env (outlet (curlet)))
(method-name (car ',name-and-args))
(method-args (cdr ',name-and-args))
@@ -37118,6 +37552,7 @@ func
method-name))
(let ()
+(let ()
(define-class class-1 ()
'((a 1) (b 2))
(list (list 'add (lambda (obj)
@@ -37285,7 +37720,7 @@ func
(test ((make-instance 'class-3 :a "hi" :c 21) 'c) 21)
- )
+ ))
;;; --------------------------------------------------------------------------------
@@ -37401,7 +37836,8 @@ func
(test (let? bl) #t)
(test (bl 'value) b)
(test (bl 'type) 'c-object?)
- (test (bl 'class) "#<block>")
+ (test (let? (bl 'class)) #t)
+ (test ((bl 'class) 'name) "#<block>")
(test (integer? (bl 'c-object-type)) #t)
(test (bl 'empty) #f)
(test (let? (bl 'c-object-let)) #t)))
@@ -37412,14 +37848,14 @@ func
(test (let? cl) #t)
(test (cl 'value) jet-colormap)
(test (cl 'type) 'c-object?)
- (test (cl 'class) "<colormap>")
+ (test (cl 'class) (inlet 'name "<colormap>" 'setter #f))
(test (integer? (cl 'c-object-type)) #t)
(test (null? (cl 'c-object-let)) #t)))
(let ((cl (object->let fourier-transform)))
(test (let? cl) #t)
(test (cl 'value) fourier-transform)
(test (cl 'type) 'c-object?)
- (test (cl 'class) "<transform>")
+ (test (cl 'class) (inlet 'name "<transform>" 'setter #f))
(test (integer? (cl 'c-object-type)) #t)
(test (null? (cl 'c-object-let)) #t)))
@@ -37458,31 +37894,31 @@ func
(call-with-output-file "empty-file"
(lambda (p)
(format p ";;; this is a test of file/line data in object->let~%~%")
- (format p "(define (ff4 x)~% (+ (log x) 1))~%~%(set! (procedure-setter ff4) set-car!)~%~%")))
+ (format p "(define (ff4 x)~% (+ (log x) 1))~%~%(set! (setter ff4) set-car!)~%~%")))
(let ()
(load "empty-file" (curlet))
(test (object->let ff4)
- (inlet 'value ff4 'type 'procedure? 'arity '(1 . 1) 'file "empty-file" 'line 4 'setter set-car! 'source '(lambda (x) (+ (log x) 1)))))
+ (inlet 'value ff4 'type 'procedure? 'arity '(1 . 1) 'file "empty-file" 'line 4 '+setter+ set-car! 'source '(lambda (x) (+ (log x) 1)))))
(test (object->let abs)
- (inlet 'value abs 'type 'procedure? 'arity '(1 . 1) 'signature '(real? real?) 'documentation "(abs x) returns the absolute value of the real number x"))
+ (inlet 'value abs 'type 'procedure? 'arity '(1 . 1) '+signature+ '(real? real?) '+documentation+ "(abs x) returns the absolute value of the real number x"))
(if with-block
(test (object->let make-block)
- (inlet 'value make-block 'type 'procedure? 'arity '(1 . 1) 'documentation "(make-block size) returns a new block of the given size")))
+ (inlet 'value make-block 'type 'procedure? 'arity '(1 . 1) '+documentation+ "(make-block size) returns a new block of the given size")))
(test (object->let string=?)
(inlet 'value string=?
'type 'procedure?
'arity '(2 . 536870912)
- 'signature (let ((lst (list 'boolean? 'string?)))
+ '+signature+ (let ((lst (list 'boolean? 'string?)))
(set-cdr! (cdr lst) (cdr lst))
lst)
- 'documentation "(string=? str ...) returns #t if all the string arguments are equal"))
+ '+documentation+ "(string=? str ...) returns #t if all the string arguments are equal"))
(test (object->let car)
- (inlet 'value car 'type 'procedure? 'arity '(1 . 1) 'signature '(#t pair?)
- 'documentation "(car pair) returns the first element of the pair"
- 'setter set-car!))
+ (inlet 'value car 'type 'procedure? 'arity '(1 . 1) '+signature+ '(#t pair?)
+ '+documentation+ "(car pair) returns the first element of the pair"
+ '+setter+ set-car!))
(test (object->let quasiquote)
(inlet 'value quasiquote 'type 'macro? 'arity '(1 . 1)
- 'documentation "(quasiquote arg) is the same as `arg. If arg is a list, it can contain comma (\"unquote\") and comma-atsign (\"apply values\") to pre-evaluate portions of the list. unquoted expressions are evaluated and plugged into the list, apply-values evaluates the expression and splices the resultant list into the outer list. `(1 ,(+ 1 1) ,@(list 3 4)) -> (1 2 3 4)."))
+ '+documentation+ "(quasiquote arg) is the same as `arg. If arg is a list, it can contain comma (\"unquote\") and comma-atsign (\"apply values\") to pre-evaluate portions of the list. unquoted expressions are evaluated and plugged into the list, apply-values evaluates the expression and splices the resultant list into the outer list. `(1 ,(+ 1 1) ,@(list 3 4)) -> (1 2 3 4)."))
(let ()
(define-macro (1+ x) `(+ ,x 1))
(let ((e (object->let 1+)))
@@ -37750,11 +38186,6 @@ hi6: (string-app...
;;; --------------------------------------------------------------------------------
;;; dilambda
-(when with-block
- (test (dilambda-test) #f)
- (test (set! (dilambda-test) 32) 32)
- (let () (define (hi) (set! (dilambda-test) 32)) (hi) (test (hi) 32)))
-
(test (let ((local 123))
(define pws-test (dilambda
(lambda () local)
@@ -37890,7 +38321,7 @@ hi6: (string-app...
(test (set! (macfun (+ 2 3)) 3) 4))
(let () ; reality check...
- (set! (procedure-setter logbit?)
+ (set! (setter logbit?)
(define-macro (_m_ var index on)
`(if ,on
(set! ,var (logior ,var (ash 1 ,index)))
@@ -37904,7 +38335,7 @@ hi6: (string-app...
(set! (logbit? r (+ (* 2 i) 1)) (logbit? b i)))))
(test (mingle 6 3) 30)
- (set! (procedure-setter logbit?) #f))
+ (set! (setter logbit?) #f))
(let ()
(dilambda logbit?
@@ -37920,7 +38351,7 @@ hi6: (string-app...
(set! (logbit? r (+ (* 2 i) 1)) (logbit? b i)))))
(test (mingle 6 3) 30)
- (set! (procedure-setter logbit?) #f))
+ (set! (setter logbit?) #f))
#|
@@ -37970,20 +38401,20 @@ hi6: (string-app...
(let ()
(define sf1 (let ((val 0))
(dilambda
- (let ((signature '(integer?))
- (documentation "getter help"))
+ (let ((+signature+ '(integer?))
+ (+documentation+ "getter help"))
(lambda ()
val))
- (let ((signature '(integer? integer?))
- (documentation "setter help"))
+ (let ((+signature+ '(integer? integer?))
+ (+documentation+ "setter help"))
(lambda (new-val)
(if (integer? new-val)
(set! val new-val)
(error 'wrong-type-arg ";sf1 new value should be an integer: ~A" new-val)))))))
- (test (procedure-documentation sf1) "getter help")
- (test (procedure-documentation (procedure-setter sf1)) "setter help")
- (test (procedure-signature sf1) '(integer?))
- (test (procedure-signature (procedure-setter sf1)) '(integer? integer?)))
+ (test (documentation sf1) "getter help")
+ (test (documentation (setter sf1)) "setter help")
+ (test (signature sf1) '(integer?))
+ (test (signature (setter sf1)) '(integer? integer?)))
@@ -38079,6 +38510,10 @@ hi6: (string-app...
(test (eq? (copy "") "") #f)
(test (copy #u8(101 102) (vector 1 2)) #(101 102))
+(let ((lst (list 1 2 3))) ; segfault before source==dest check
+ (test (copy lst lst) lst)
+ (test (copy lst lst 1) (list 2 3 3)))
+
(when with-block
(let ((b (copy (block 1 2 3 4))))
(test b (block 1 2 3 4))
@@ -47604,7 +48039,6 @@ hi6: (string-app...
(test (let ((pi 2)) pi) 'error)
;;; already a constant now (define-constant nan.0 (string->number "nan.0"))
-(test (constant? nan.0) #t)
(if (not (nan? nan.0)) (format #t ";(string->number \"nan.0\") returned ~A~%" nan.0))
(if (infinite? nan.0) (format #t ";nan.0 is infinite?~%"))
@@ -47612,7 +48046,6 @@ hi6: (string-app...
(if (not (infinite? +inf.0)) (format #t ";(string->number \"+inf.0\") returned ~A~%" +inf.0))
(if (nan? +inf.0) (format #t ";+inf.0 is NaN?~%"))
-(test (constant? -inf.0) #t)
;;; (define-constant -inf.0 (string->number "-inf.0"))
(if (not (infinite? -inf.0)) (format #t ";(string->number \"-inf.0\") returned ~A~%" -inf.0))
(if (nan? -inf.0) (format #t ";-inf.0 is NaN?~%"))
@@ -80612,6 +81045,52 @@ etc
(lambda args #f))
#f)
+ (let ((a 3))
+ (let/setter ((a 1)
+ (b 2 (lambda (s v)
+ (+ v a))))
+ (set! a (+ a 1))
+ (set! b (+ a b))
+ (test (list a b) '(2 7))))
+
+ (let ()
+ (let/setter ((a 1 (lambda (s v)
+ (- v 1)))
+ (b 2 (lambda (s v)
+ (+ v 1))))
+ (set! a (+ a 1))
+ (set! b (+ a b))
+ (test (list a b) '(1 4))))
+
+ (let ()
+ (define-macro (inlet/setter . fields)
+ ;; (inlet/setter (name value [setter]) ...)
+ (let ((setters (map (lambda (binding)
+ (and (pair? (cddr binding))
+ (caddr binding)))
+ fields))
+ (gsetters (gensym))
+ (glet (gensym)))
+ `(let ((,gsetters (list ,@setters))
+ (,glet (inlet ,@(map (lambda (binding)
+ `(cons ',(car binding) ,(cadr binding)))
+ fields))))
+ ,@(do ((setter setters (cdr setter))
+ (var fields (cdr var))
+ (i 0 (+ i 1))
+ (result ()))
+ ((null? setter)
+ (reverse result))
+ (if (car setter)
+ (set! result (cons `(set! (symbol-setter (quote ,(caar var)) ,glet) (list-ref ,gsetters ,i)) result))))
+ ,glet)))
+
+ (let ((lt (inlet/setter (a 1) (b 2 (lambda (s v) (+ v 1))))))
+ (set! (lt 'a) 21)
+ (set! (lt 'b) 3)
+ (test (list (lt 'a) (lt 'b)) '(21 4))))
+
+
(test (let ((x 32))
(define gx (elambda () (*env* 'x)))
(let ((x 100))
@@ -80677,8 +81156,8 @@ etc
(test (let ((nv 21) (sym 1)) (reactive-set! nv (* sym 2)) (set! sym 3) nv) 6)
(test (let ((a 1) (b 2)) (reactive-set! b (+ a 4)) (let ((a 10)) (set! a (+ b 5)) (list a b))) '(10 5))
(test (let ((a 1) (b 2)) (reactive-set! b (+ a 4)) (list (let ((b 10)) (set! a (+ b 5)) a) b)) '(15 19))
- (test (let ((a 21) (b 1)) (set! (symbol-access 'b) (lambda (x y) (* 2 y))) (reactive-set! a (* b 2)) (set! b 3) a) 12)
- (test (let ((a 21) (b 1)) (set! (symbol-access 'b) (lambda (x y) (* 2 y))) (let ((b 2)) (reactive-set! a (* b 2)) (set! b 3) a)) 6)
+ (test (let ((a 21) (b 1)) (set! (symbol-setter 'b) (lambda (x y) (* 2 y))) (reactive-set! a (* b 2)) (set! b 3) a) 12)
+ (test (let ((a 21) (b 1)) (set! (symbol-setter 'b) (lambda (x y) (* 2 y))) (let ((b 2)) (reactive-set! a (* b 2)) (set! b 3) a)) 6)
(test (let ((a 1) (b 2) (c 3)) (reactive-set! b (+ c 4)) (let ((a 0)) (reactive-set! a (+ b c)) (set! c 5) a)) 14)
(test (let ((a 1) (b 2) (c 3)) (reactive-set! a (reactive-set! b (+ c 4))) (list a b c)) '(7 7 3))
(test (let ((a 1) (b 2) (c 3)) (reactive-set! a (+ 1 (reactive-set! b (+ c 4)))) (list a b c)) '(8 7 3))
@@ -80689,7 +81168,7 @@ etc
(test (let* ((a 1) (v (reactive-vector a (+ a 1) (* 2 (_ 0))))) (set! a 4) (v 'value)) #(4 5 8))
(test (let ((v (let ((a 1)) (reactive-vector a (+ a 1) (* 2 (_ 0)))))) (set! (v 0) 3) (v 'value)) #(3 2 6))
- ;; unfortunately, reactive-set! does not clear out dead symbol-accessors:
+ ;; unfortunately, reactive-set! does not clear out dead symbol-setters:
;; (let ((a 1) (b 2)) (let ((c 3)) (reactive-set! b (* a c))) (let ((c 4)) (reactive-set! b (+ a 1)) (set! a 5)) (list a b))
;; complains about unbound curlet gensym because the let it is defined in has been exited but the function still sits on the accessor
@@ -80704,7 +81183,7 @@ etc
(test (let ((a 1)) (reactive-let ((b (+ a 1))) (set! a 3) b)) 4)
(test (let ((a 1)) (reactive-let ((b (+ a 1)) (c (* a 2))) (set! a 3) (+ c b))) 10)
(test (let ((a 1) (d 2)) (reactive-let ((b (+ a d)) (c (* a d)) (d 0)) (set! a 3) (+ b c))) 11)
- (test (let ((a 1) (d 2)) (reactive-let ((b (+ a d)) (c (* a d)) (d 0)) (set! a 3)) (symbol-access 'a)) #f)
+ (test (let ((a 1) (d 2)) (reactive-let ((b (+ a d)) (c (* a d)) (d 0)) (set! a 3)) (symbol-setter 'a)) #f)
(test (let ((a 1) (d 2)) (reactive-let ((b (+ a d)) (c (* a d)) (d 0)) (set! a 3) (set! d 12) (+ b c))) 11)
(test (let ((a 1) (b 2)) (+ (reactive-let ((b (+ a 1)) (c (* b 2))) (set! a 3) (+ b c)) a b)) 13) ;c=4 because it watches the outer b
(test (let ((a 1)) (reactive-let ((b (* a 2))) (reactive-let ((c (* a 3))) (set! a 2) (+ b c)))) 10)
@@ -80854,7 +81333,7 @@ etc
(test (sandbox '(+ 1 2)) 3)
(test (sandbox '(let ((x (floor pi))) (+ x 1))) 4)
(test (sandbox '(+ 1 x)) "error: x: unbound variable")
- (test (sandbox '(let ((p (open-output-string))) (display (+ 2 3) p) (get-output-string p))) "5")
+; (test (sandbox '(let ((p (open-output-string))) (display (+ 2 3) p) (get-output-string p))) "5")
(test (sandbox '(begin (define-macro (_mx_ x) `(+ ,x 1)) (_mx_ 2))) 3)
(test (sandbox '(let ((_fx_ (lambda (x) (+ x 1)))) (_fx_ 2))) 3)
@@ -81378,7 +81857,6 @@ etc
(test (boolean=? #f #false) #t)
(test (boolean=? #t #true) #t)
-
;;; symbol=?
(test (symbol=? 'hi 'hi) #t)
(test (symbol=? 'hi 'hi 'hi) #t)
@@ -81396,6 +81874,16 @@ etc
(test (symbol=? :hi :hi) #t)
(test (symbol=? :hi hi:) #f)
+ (let ()
+ (test (provided? 'locals) #f)
+ (provide 'locals)
+ (test (provided? 'locals) #t)
+ (test (pair? (memq 'locals (features))) #t)
+ (test (pair? (memq 'locals *features*)) #t)
+ (test (equal? (features) *features*) #t))
+ (test (memq 'locals (features)) #f)
+ (test (equal? (features) *features*) #t)
+
;; from chibi scheme I think
(let*-values (((root rem) (exact-integer-sqrt 32)))
(test (* root rem) 35))
@@ -82308,8 +82796,8 @@ etc
(inlet 'v (make-vector len (->float init))
'type type
'length (lambda (e) len)
- 'let-set! (lambda (fv i val) (#_vector-set! (fv 'v) i (->float val)))
- 'let-ref (lambda (fv i) (#_vector-ref (fv 'v) i))))))
+ 'let-set-fallback (lambda (fv i val) (#_vector-set! (fv 'v) i (->float val)))
+ 'let-ref-fallback (lambda (fv i) (#_vector-ref (fv 'v) i))))))
(set! fvector? (lambda (p) (and (let? p) (eq? (p 'type) type))))))
(let ((f (make-fvector 10)))
(test (fvector? f) #t)
@@ -82328,7 +82816,6 @@ etc
(if (let? (caddr largs))
(apply func (car largs) (cadr largs) ((caddr largs) 'c) (cdddr largs))
(apply func (car largs) (cadr largs) (caddr largs) ((cadddr largs) 'c) (cddddr largs)))))))
- (test (constant? (openlet (inlet 'c #f 'constant? (baser-method constant?)))) #t)
(test (numerator (openlet (inlet 'c 1/9223372036854775807 'numerator (baser-method numerator)))) 1)
(test (cdaadr (openlet (inlet 'c '((1 (2)) (((3) 4))) 'cdaadr (baser-method cdaadr)))) '(4))
(test (cadadr (openlet (inlet 'c '((1 2) (3 4)) 'cadadr (baser-method cadadr)))) 4)
@@ -82613,9 +83100,9 @@ etc
'object->string (lambda* (obj (w #t)) (format #f "#<stretchable-vector: ~S>" (obj 'value)))
'initial-element #f
'vector-ref local-ref
- 'let-ref local-ref
+ 'let-ref-fallback local-ref
'vector-set! local-set!
- 'let-set! local-set!))))
+ 'let-set-fallback local-set!))))
(let ((v1 (copy stretchable-vector-class))
(ind 12))
@@ -83101,7 +83588,7 @@ etc
(sublet (*mock-pair* 'mock-pair-class)
'object->string (lambda (obj . args)
(apply #_object->string (obj 'value) args))
- 'let-set! (lambda (obj i val)
+ 'let-set-fallback (lambda (obj i val)
(set! (obj 'value) (append (copy (obj 'value) (make-list (+ i 1))) (list-tail (obj 'value) (+ i 1))))
(list-set! (obj 'value) i val))
'list-set! (lambda (obj i val)
@@ -83165,7 +83652,7 @@ etc
(test (defined? sym) #t)
(test (symbol->keyword sym) :a)
(test (provided? sym) #f)
- (test (symbol-access sym) #f)))
+ (test (symbol-setter sym) #f)))
(let ((sym (mock-symbol :a)))
(test (keyword? sym) #t)
(test (keyword->symbol sym) 'a))
@@ -83407,7 +83894,6 @@ etc
(write-func1 p "cc" '(continuation? x) #f 'continuation?)
(write-func1 p "eof" '(eof-object? x) #<eof> 'eof-object?)
(write-func1 p "gen" '(gensym? x) ''a 'gensym?)
- (write-func1 p "con" '(constant? x) 1 'constant?)
(write-func1 p "df" '(defined? x) ''format 'defined?)
(write-func1 p "key" '(keyword? x) ':a 'keyword?)
(write-func1 p "keysym" '(keyword->symbol x) ':a 'keyword->symbol)
@@ -83428,13 +83914,13 @@ etc
(for-each
(lambda (f1)
(write-func1 p (string-append (symbol->string f1) "_x") `(,f1 x) abs f1))
- (list 'procedure-documentation 'funclet
- 'procedure-setter 'procedure-source 'dilambda?))
+ (list 'documentation 'funclet
+ 'setter 'procedure-source 'dilambda?))
(for-each
(lambda (f1)
(write-func1 p (string-append (symbol->string f1) "_x") `(,f1 x) ''abs f1))
- (list 'symbol->dynamic-value 'symbol->keyword 'symbol->string 'symbol->value 'symbol-access 'symbol?))
+ (list 'symbol->dynamic-value 'symbol->keyword 'symbol->string 'symbol->value 'symbol-setter 'symbol?))
(for-each
(lambda (f1)
@@ -83897,11 +84383,11 @@ etc
(test (let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1)) (member :rest (cons 1 2) /))) (define (hi) (func #f)) (hi)) 'error)
(test (let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1)) (char-numeric? (make-vector 3) 1.5 `((+ x 1)) ))) (define (hi) (func #f)) (hi)) 'error)
(test (let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1)) (procedure? //))) (define (hi) (func #f)) (hi)) 'error)
-(test (let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1)) (char-numeric? (char-ready? )))) (define (hi) (func #f)) (hi)) 'error) ;#t if opt
+;(test (let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1)) (char-numeric? (char-ready? )))) (define (hi) (func #f)) (hi)) 'error) ;#t if opt
(test (let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1)) (iterator-at-end? /))) (define (hi) (func #f)) (hi)) 'error)
(test (let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1)) (hash-table-ref /(flush-output-port )))) (define (hi) (func #f)) (hi)) 'error)
(test (let () (define (func x) (let () (set! ((dilambda / (let ((x 3)) (lambda (y) (+ x y))) )) 3))) (define (hi) (func #f)) (hi)) 6) ;!
-(test (let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1)) (unlet /(constant? )))) (define (hi) (func #f)) (hi)) 'error)
+(test (let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1)) (unlet /(immutable? )))) (define (hi) (func #f)) (hi)) 'error)
(test (let () (define (func x) (catch #f (vector-ref #(1 2) 0 1.0+1.0i) (vector-ref #(1 2) 0 1.0+1.0i))) (define (hi) (func #f)) (hi)) 'error)
(test (vector-ref (vector abs log) 0 -1) 1) ; weird...
(test (let () (define (func x) (cond (lambda (if x y) 0 1.0+1.0i (string>=? / `((+ x 1)) x y z (integer->char 255))) (else #f))) (define (hi) (func #f)) (hi)) 'error)
@@ -83933,6 +84419,9 @@ etc
(test (let () (define (func x) (case denominator ((0) 1) (else . 2))) (define (hi) (func #f)) (hi)) 'error)
(test (let () (define (func x) (string? (object->string (hash-table (list-values (object->let /)))))) (define (hi) (func #f)) (hi)) #t)
(test (let () (define (func x) (sort! / (lambda (zero? i) (zero? i)))) (define (hi) (func #f)) (hi)) 'error)
+(test (let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1) i) (string>? (string) (read-line)))) (define (hi) (func #f)) (hi)) 'error)
+(test (let () (define (func x) (do ((i 0 (+ i 1))) ((= i 3)) (let-set! cons '() macroexpand))) (define (hi) (func #f)) (hi)) 'error)
+(test (let () (define (func x) (call-with-values quasiquote macroexpand )) (define (hi) (func #f)) (hi)) 'error)
(test (let () (define (f) (let ((_x_ (+ _x_ 1.0))) 1)) (f)) 'error)
(test (let () (define (f) (define _x_ (let-ref (cdr _x_) 'a))) (f)) 'error)
@@ -83953,7 +84442,7 @@ etc
;;; clumsy test, but will hang in older s7's
(define global_fi
- (let ((documentation "docs"))
+ (let ((+documentation+ "docs"))
(lambda (par_f lst)
(do ((p lst (cdr p)))
((or (not (pair? p))
@@ -85553,7 +86042,7 @@ etc
(gdbm_fetch (obj 'file) (symbol->string sym))
(lambda () (eval (read)))))
- :let-set!-fallback (lambda (obj sym val)
+ :let-set-fallback (lambda (obj sym val)
(gdbm_store (obj 'file)
(symbol->string sym)
(object->string val :readable)
@@ -85672,16 +86161,16 @@ etc
(let loop ((i1 0) (i2 0))
(if (< i1 len1)
(if (< i2 len2)
- (if (char=? (s1 i1) (s2 i2))
+ (if (char=? (string-ref s1 i1) (string-ref s2 i2))
(loop (+ i1 1) (+ i2 1))
- (or (and (char-whitespace? (s2 i2))
+ (or (and (char-whitespace? (string-ref s2 i2))
(loop i1 (+ i2 1)))
- (and (char-whitespace? (s1 i1))
+ (and (char-whitespace? (string-ref s1 i1))
(loop (+ i1 1) i2))))
- (and (char-whitespace? (s1 i1))
+ (and (char-whitespace? (string-ref s1 i1))
(loop (+ i1 1) i2)))
(if (< i2 len2)
- (and (char-whitespace? (s2 i2))
+ (and (char-whitespace? (string-ref s2 i2))
(loop i1 (+ i2 1)))
(and (= i1 len1)
(= i2 len2)))))))
@@ -85734,6 +86223,7 @@ etc
(let ()
(require lint.scm)
+ (set! *report-repeated-code-fragments* #f)
(define lint-test
(letrec ((no-lines
@@ -86207,6 +86697,7 @@ etc
(lint-test "(member y x (lambda (a b) (equal? a (car b))))" " member: member might perhaps be assoc")
(lint-test "(member 1 x (lambda (a b) (> a b)))" " member: perhaps (lambda (a b) (> a b)) -> >")
(lint-test "(member 1 x (lambda (a b) (> b a)))" " member: perhaps (lambda (a b) (> b a)) -> <")
+ (lint-test "(member (abs x) lt (lambda (a b) (< b 2)))" " member: a is ignored, so perhaps (member #f ...)")
(lint-test "(member 1 x abs)" " member: abs is a questionable member function")
(lint-test "(member x (list \"asdf\"))"
" member: perhaps (member x (list \"asdf\")) -> (string=? x \"asdf\")
@@ -86806,9 +87297,9 @@ etc
(let-temporarily ((*report-doc-strings* #t))
(lint-test "(let () (define (hiho a) \"hiho is a function\" (+ a 1)) (hiho 1))"
" let: perhaps (... (define (hiho a) \"hiho is a function\" (+ a 1)) (hiho 1)) -> (... (let ((a 1)) (+ a 1)))
- hiho: old-style doc string: \"hiho is a function\", in s7 use 'documentation:
+ hiho: old-style doc string: \"hiho is a function\", in s7 use '+documentation+:
(define hiho
- (let ((documentation \"hiho is a function\"))
+ (let ((+documentation+ \"hiho is a function\"))
(lambda (a)
(+ a 1))))"))
@@ -87340,7 +87831,8 @@ etc
(lint-test "(string>? \"a\" x \"b\" y)" " string>?: this comparison can't be true: (string>? \"a\" x \"b\" y)")
(lint-test "(copy (copy x))" " copy: (copy (copy x)) could be (copy x)")
- (lint-test "(copy x x)" " copy: (copy x x) could be x")
+ (lint-test "(copy x x)" " copy: (copy x x) is a no-op")
+ (lint-test "(copy x x 0)" " copy: (copy x x 0) is a no-op")
(lint-test "(copy x y 1 0)" " copy: these copy indices make no sense: (copy x y 1 0)")
(lint-test "(copy x y 0 0)" " copy: these copy indices make no sense: (copy x y 0 0)")
@@ -88079,6 +88571,32 @@ etc
" eqv?: this can't be right: (eqv? \":\" (string-ref s 0))
eqv?: eqv? should be equal? in (eqv? \":\" (string-ref s 0))
eqv?: perhaps (eqv? \":\" (string-ref s 0)) -> #f")
+ (lint-test "(eqv? \"a\" (string))"
+ " eqv?: (eqv? \"a\" (string)) is #f
+ eqv?: eqv? should be equal? or string=? in (eqv? \"a\" (string))
+ eqv?: (string) could be \"\"")
+ (lint-test "(eqv? (string) \"a\")"
+ " eqv?: (eqv? (string) \"a\") is #f
+ eqv?: eqv? should be equal? or string=? in (eqv? (string) \"a\")
+ eqv?: (string) could be \"\"")
+ (lint-test "(eqv? \"a\" (substring x 2 3))"
+ " eqv?: perhaps (eqv? \"a\" (substring x 2 3)) -> (char=? #\\a (string-ref x 2))
+ eqv?: eqv? should be equal? or string=? in (eqv? \"a\" (substring x 2 3))")
+ (lint-test "(eqv? (string #\\a) (substring x 2 3))"
+ " eqv?: perhaps (eqv? (string #\\a) (substring x 2 3)) -> (char=? #\\a (string-ref x 2))
+ eqv?: eqv? should be equal? or string=? in (eqv? (string #\\a) (substring x 2 3))
+ eqv?: (string #\\a) could be \"a\"")
+ (lint-test "(eqv? (substring x 0 1) (string #\\a))"
+ " eqv?: perhaps (eqv? (substring x 0 1) (string #\\a)) -> (char=? #\\a (string-ref x 0))
+ eqv?: eqv? should be equal? or string=? in (eqv? (substring x 0 1) (string #\\a))
+ eqv?: (string #\\a) could be \"a\"")
+ (lint-test "(string=? \"a\" (substring x 2 3))" " string=?: perhaps (string=? \"a\" (substring x 2 3)) -> (char=? #\\a (string-ref x 2))")
+ (lint-test "(string=? (string) \"a\")" " string=?: (string=? (string) \"a\") is #f string=?: (string) could be \"\"")
+ (lint-test "(string=? (string y) (substring x 2 3))" " string=?: perhaps (string=? (string y) (substring x 2 3)) -> (char=? y (string-ref x 2))")
+ (lint-test "(string=? (string x) (string y))" " string=?: perhaps (string=? (string x) (string y)) -> (char=? x y)")
+ (lint-test "(string=? (substring y 0 1) (substring x 2 3))"
+ " string=?: perhaps (string=? (substring y 0 1) (substring x 2 3)) -> (char=? (string-ref y 0) (string-ref x 2))")
+
(lint-test "(char-ci=? x #\\return)" " char-ci=?: char-ci=? could be char=? here: (char-ci=? x #\\return)")
(lint-test "(equal? (vector-copy #(a b c)) #(a b c))" " equal?: perhaps (equal? (vector-copy #(a b c)) #(a b c)) -> (equal? #(a b c) #(a b c))")
(lint-test "(not (equal? v (copy v)))" " not: perhaps (equal? v (copy v)) -> (equal? v v)")
@@ -88471,8 +88989,7 @@ etc
(lint-test "(do ((i 0 (+ i 1))) ((= i 3) ()) (display i))" "")
(lint-test "(do ((x y (cdr x))) ((null? x)) (let ((y x)) (car y)))"
" do: this do-loop could probably be replaced by the end test in a let: (do ((x y (cdr x))) ((null? x)) (let ((y x)) (car y)))
- do: this could be omitted: (let ((y x)) (car y)) do: perhaps (let ((y x)) (car y)) -> (car x)
- do: assuming we see all set!s, the binding (y x) is pointless: perhaps (let ((y x)) (car y)) -> (car x)")
+ do: this could be omitted: (let ((y x)) (car y)) do: perhaps (let ((y x)) (car y)) -> (car x)")
(lint-test "(do ((i 0 (+ i 1))) ((= i 3) ()))" " do: this do-loop could be replaced by (): (do ((i 0 (+ i 1))) ((= i 3) ()))")
(lint-test "(do ((i 0 (+ i 1))) ((= i 3) #t))"
" do: this do-loop could be replaced by #t: (do ((i 0 (+ i 1))) ((= i 3) #t))
@@ -89541,12 +90058,6 @@ etc
(lint-test "(and (pair? x) (not (null? x)))" " and: perhaps (and (pair? x) (not (null? x))) -> (pair? x)")
(lint-test "(and (pair? x) (not (string? x)))" " and: perhaps (and (pair? x) (not (string? x))) -> (pair? x)")
(lint-test "(and (not (pair? x)) (symbol? x))" " and: perhaps (and (not (pair? x)) (symbol? x)) -> (symbol? x)")
- (lint-test "(and (symbol? x) (constant? x))" "") ; constant? does not mean symbol? as well
- (lint-test "(or (symbol? x) (constant? x))" "")
- (lint-test "(and (constant? x) (not (symbol? x)))" "")
- (lint-test "(and (constant? x) (symbol? x))" "")
- (lint-test "(and (constant? x) (number? x))" "")
- (lint-test "(and (number? x) (constant? x))" "")
(lint-test "(and (not (eof-object? x)) (char=? x #\\a))" " and: perhaps (and (not (eof-object? x)) (char=? x #\\a)) -> (eqv? x #\\a)")
(lint-test "(and (real? x) (not (rational? x)))" " and: perhaps (and (real? x) (not (rational? x))) -> (float? x)")
(lint-test "(and (list? x) (not (proper-list? x)))" "")
@@ -90477,7 +90988,7 @@ etc
case-lambda: perhaps (case-lambda ((a b) (+ a b))) -> (lambda (a b) (+ a b))")
(lint-test "(case-lambda \"a doc string\" ((a b) (+ a b)))"
" case-lambda: perhaps (lambda (a b) (+ a b)) -> +
- case-lambda: perhaps (case-lambda \"a doc string\" ((a b) (+ a b))) -> (let ((documentation \"a doc string\")) (lambda (a b) (+ a b)))")
+ case-lambda: perhaps (case-lambda \"a doc string\" ((a b) (+ a b))) -> (let ((+documentation+ \"a doc string\")) (lambda (a b) (+ a b)))")
(lint-test "(case-lambda (() (display x #f)) ((y) (display x y)))"
" case-lambda: (display x #f) could be x
case-lambda: perhaps (case-lambda (() (display x #f)) ((y) (display x y))) -> (lambda* (y) (display x y))")
@@ -90664,10 +91175,10 @@ etc
(format #f \"~NC~NC\" (quotient indent 8) #\\tab (modulo indent 8) #\\space)")
(lint-test "(string=? (string (string-ref file-line 0)) \"*\")"
- " string=?: perhaps (string=? (string (string-ref file-line 0)) \"*\") -> (char=? (string-ref file-line 0) #\\*)
+ " string=?: perhaps (string=? (string (string-ref file-line 0)) \"*\") -> (char=? #\\* (string-ref file-line 0))
string=?: perhaps (string (string-ref file-line 0)) -> (substring file-line 0 1)")
(lint-test "(string=? (symbol->string a) (symbol->string b))" " string=?: perhaps (string=? (symbol->string a) (symbol->string b)) -> (eq? a b)")
- (lint-test "(string=? (substring s 0 1) \"#\")" " string=?: perhaps (string=? (substring s 0 1) \"#\") -> (char=? (string-ref s 0) #\\#)")
+ (lint-test "(string=? (substring s 0 1) \"#\")" " string=?: perhaps (string=? (substring s 0 1) \"#\") -> (char=? #\\# (string-ref s 0))")
(lint-test "(string=? \"#\" (string (string-ref s 0)))"
" string=?: perhaps (string=? \"#\" (string (string-ref s 0))) -> (char=? #\\# (string-ref s 0))
string=?: perhaps (string (string-ref s 0)) -> (substring s 0 1)")
@@ -90810,7 +91321,7 @@ etc
(lint-test "(let ()
(define (f11 a b) (if (positive? a) (+ a b) b))
(let ((z (if (positive? a1) (+ a1 b1) b1)))
- (+ z (f11 1 2))))" " perhaps (if (positive? a1) (+ a1 b1) b1) -> (f11 a1 b1)")
+ (+ z (f11 1 2))))" "") ;" perhaps (if (positive? a1) (+ a1 b1) b1) -> (f11 a1 b1)") -- code fragments turned off now
(lint-test "(let ()
(define (f11 a b) (if (positive? a) (+ a b) b))
(define f14 (lambda (x y) (if (positive? x) (+ x y) y)))
@@ -91800,7 +92311,6 @@ etc
(lint-test "(number? most-negative-fixnum)" " number?: perhaps (number? most-negative-fixnum) -> #t")
(lint-test "(complex? pi)" " complex?: perhaps (complex? pi) -> #t")
(lint-test "(exact? 1.0)" " exact?: perhaps (exact? 1.0) -> #f")
- (lint-test "(constant? most-positive-fixnum)" " constant?: perhaps (constant? most-positive-fixnum) -> #t")
(lint-test "(vector-ref #(hi) 0)" " vector-ref: perhaps (vector-ref #(hi) 0) -> 'hi")
(lint-test "(hash-table* 'a 3 'b)" " hash-table*: key with no value? (hash-table* 'a 3 'b)")
(lint-test "(close-output-port (current-output-port))"
@@ -91818,7 +92328,7 @@ etc
(lint-test "(nth 1 lst)" " nth: perhaps (nth 1 lst) -> (list-ref lst 1)")
(lint-test "(sort lst <)" " sort: perhaps (sort lst <) -> (sort! (copy lst) <)")
(lint-test "(sort (map car lst) (lambda (a b) (< (car a) (car b))))" " sort: use sort! here: (sort (map car lst) (lambda (a b) (< (car a) (car b))))")
- (lint-test "(display x (newline))" " display: in (display x (newline)), display's argument 2 should be an output-port, but (newline) is untyped")
+ (lint-test "(display x (newline))" " display: in (display x (newline)), display's argument 2 should be an output-port, but (newline) is a char?")
(lint-test "(let ((p (open-input-string str))) (display x))"
" let: in (let ((p (open-input-string str))) (display x)) perhaps p is opened via (open-input-string str), but never closed
let: p not used, initially: (open-input-string str) from let")
@@ -91852,7 +92362,7 @@ etc
" cond: (number? x) makes (integer? x) pointless in (cond ((number? x) 4) ((integer? x) 3) ((list? x) 0) ((pair? x) 1))
cond: (list? x) makes (pair? x) pointless in (cond ((number? x) 4) ((integer? x) 3) ((list? x) 0) ((pair? x) 1))
(r5rs list? is proper-list? in s7)")
- (lint-test "(set! (symbol-access 'x) (lambda () 21))" " set!: symbol-access function should take 2 arguments: (set! (symbol-access 'x) (lambda () 21))")
+ (lint-test "(set! (symbol-setter 'x) (lambda () 21))" " set!: symbol-setter function should take 2 arguments: (set! (symbol-setter 'x) (lambda () 21))")
(lint-test "(cond-expand (s7 (define (f x) (* x 23))) (else))" "")
(lint-test "(cond-expand (s7))" " cond-expand: pointless cond-expand: (cond-expand (s7))")
(lint-test "(cond-expand ((or s7 guile)))" " cond-expand: pointless cond-expand: (cond-expand ((or s7 guile)))")
@@ -91996,10 +92506,10 @@ etc
" func: unexpected dot: (or . 1nani)
func: in (caaadr /), caaadr's argument should be a pair, but / is a procedure?
hi: func's parameter 1 is not used, but a value is passed: (make-hook '(0 0 #f))")
- (lint-test "(define (func x) (case x ((else) (char>? 11/(symbol-access))) ((-1) (load - -1 3/4)) (else (positive? (format 0(inlet (make-list)))))))"
- " func: in (char>? 11/ (symbol-access)),
- char>?'s argument 2 should be a char, but (symbol-access) is a boolean or a procedure?
- func: symbol-access needs at least 1 argument: (symbol-access)
+ (lint-test "(define (func x) (case x ((else) (char>? 11/(symbol-setter))) ((-1) (load - -1 3/4)) (else (positive? (format 0(inlet (make-list)))))))"
+ " func: in (char>? 11/ (symbol-setter)),
+ char>?'s argument 2 should be a char, but (symbol-setter) is a boolean or a procedure?
+ func: symbol-setter needs at least 1 argument: (symbol-setter)
func: load has too many arguments: (load - -1 3/4)
func: in (load - -1 3/4), load's argument 1 should be a string, but - is a procedure?
func: in (load - -1 3/4), load's argument 2 should be a let, but -1 is an integer?
@@ -92015,7 +92525,6 @@ etc
(lint-test "(define (func x) (when 0 1+0/0i `((+ x 1)) => . with-let))" " func: when is messed up: (when 0 1nani '((+ x 1)) => . with-let)")
(lint-test "(define (func x) (if (string-ci>=?) (dilambda? (char-numeric? 20+)) (* 1 enver quasiquote 0+0/0i /0/01(/))))"
" func: string-ci>=? needs at least 2 arguments: (string-ci>=?)
- func: perhaps (string-ci>=?) -> (char-ci>=?)
func: (dilambda? (char-numeric? 20+)) is always #f
func: perhaps (* 1 enver quasiquote 0nani /0/01 (/)) -> (* enver quasiquote 0nani /0/01 (/))
func: / needs at least 1 argument: (/)")
@@ -92091,6 +92600,9 @@ etc
func: letrec* is messed up: (letrec* 2)
func: bad case key dilambda in (dilambda i let +i (list (list 1)) let . cons)
func: stray dot? (i let +i (list (list 1)) let . cons)")
+ (lint-test "(cddr (cddar :hi))"
+ " cddr: :hi can't be a pair
+ cddr: in (cddar :hi), cddar's argument should be a pair, but :hi is a keyword?")
;; this tickles an infinite recursion bug that is still in lint, but hacked around for now
(lint-test "(let* ((seed 0)
@@ -92132,7 +92644,7 @@ etc
(glint "(define (func x) (lambda* (lambda args args) . -1))")
(glint "(define (func x) (if (or . set!) (sublet 2)))")
(glint "(define (func x) (if (or . 1+0/0i) (caaddr (caaadr /)))) (define (hi) (func (make-hook '(0 0 #f))))")
- (glint "(define (func x) (case x ((else) (char>? 11/(symbol-access))) ((-1) (load - -1 3/4)) (else (positive? (format 0(inlet (make-list)))))))")
+ (glint "(define (func x) (case x ((else) (char>? 11/(symbol-setter))) ((-1) (load - -1 3/4)) (else (positive? (format 0(inlet (make-list)))))))")
(glint "(define (func x) (if (- 2(+)) (lambda 1.)))")
(glint "(define (func x) (when 0 1+0/0i `((+ x 1)) => . with-let))")
(glint "(define (func x) (if (string-ci>=?) (dilambda? (char-numeric? 20+)) (* 1 enver quasiquote 0+0/0i /0/01(/))))")
@@ -92161,14 +92673,14 @@ etc
(glint "(define (func x) (if (char=? 2) (string->number (string>=? 21 1/1.2 -1)) (hash-table? /+(assoc 2i(list . or)))))")
(glint "(define (func x) (if (random-state->list (list (list 1)) set! do (list (list 1 2)))
(define-macro +(defmacro* 21)) (substring 1+02(getenv 0(write () . defmacro*)))))")
- (glint "(define (func x) (if (char-downcase) (float-vector-set! (procedure-setter))
- (procedure-signature -(do `((1)) (string #\\a #\\null #\\b) i+ \"hi\" (do define-bacro* -(length))))))")
+ (glint "(define (func x) (if (char-downcase) (float-vector-set! (setter))
+ (signature -(do `((1)) (string #\\a #\\null #\\b) i+ \"hi\" (do define-bacro* -(length))))))")
(glint "(define (func x) (if (apply -+) (floor ii.) (eval (string->symbol \"\" 1.2.3 i))))")
(glint "(define (func x) (if (string>=? 0i) (number->string 2(real? 1)) (/ +2(logand))))")
(glint "(define (func x) (case x ((define-macro) (list? 01)) ((`((+ x 1))) (/ 2 -1)) (else (char-downcase +00+(eval)))))")
(glint "(define (func x) (cond ((byte-vector-set! 1) (multiple-value-bind -0 (values) 2)) (else (car 1+ `(x) '((x 1) (y) . 2) nan.0))))")
(glint "(define (func x) (case x ((define*) (current-input-port .1+)) (((values #\\c 3 1.2))
- (symbol .2/)) (else (procedure-documentation 2-2i(char=? (+ (reverse (list-tail (reverse /)))))))))")
+ (symbol .2/)) (else (documentation 2-2i(char=? (+ (reverse (list-tail (reverse /)))))))))")
(glint "(define (func x) (if (values i-(caaaar)) (cdaddr ++) (assv +(list (quote 2)))))")
(glint "(define (func x) (/ 0(/ 0 (let-temporarily))))")
(glint "(define (func x) (cond ((when 1/1.2 #2d((1 2) (3 4)) /1) (openlet (caadar 0))) (else (let*-values (string-ci=? 0-(min //))))))")
@@ -92196,7 +92708,7 @@ etc
(glint "(define (func x) (if (number? +) (when (= ..)))) ")
(glint "(define (func x) (cond ((tan) (denominator -+0 begin `((x . 1)))) (else (let `((set! x (+ x 1)) (* x 2)) (let ii. (list 1) '(- 1) \"hi\" or -)))))")
(glint " (define (func x) (if (boolean? i(let)) (when (eq? ++.))))")
- (glint "(define (func x) (if (constant?) (complex do 0+0/0i (cons 1 2) /2.) (not (constant?))))")
+ (glint "(define (func x) (if (immutable?) (complex do 0+0/0i (cons 1 2) /2.) (not (immutable?))))")
(glint "(define (func x) (case x (('(- 1)) (string-position 2)) ((#<eof>) (caar 0
(iterator-sequence))) (else (do '((1 (2)) (((3) 4))) (call/cc (lambda (go) (go 9) 0)) (let (system `(1) 0/0+0i 1+1/0i '((x 1) (y . 2)) 0))))))")
(glint "(define (func x) (if (not) (not) (car '((x 1) . 2) '((x 1) 2) `(x 1) (char-numeric? +2))))")
@@ -92216,7 +92728,7 @@ etc
(glint "(define (func x) (if (real? -) (real? -) (= -)))")
(glint "(define (func x) (if (memq) (memq) (round 0+0/0i (set! _x1_ 3) (list (list 1)) (make-hook '(0 0 #f)) 2
else 0(int-vector 2 letrec - quasiquote (set! _x1_ 3) quote #<eof>))))")
- (glint "(define (func x) (if (char-ci=? 1 0) (char-ci=? 1 0) (case 0(constant? '((x 1) 2) -1 1.0+1.0i macroexpand i(logbit? (output-port? (char-whitespace? .2)))))))")
+ (glint "(define (func x) (if (char-ci=? 1 0) (char-ci=? 1 0) (case 0(immutable? '((x 1) 2) -1 1.0+1.0i macroexpand i(logbit? (output-port? (char-whitespace? .2)))))))")
(glint "(define (func x) (if (sqrt 0.1) (sqrt 0.1) (with-baffle + (define _h1_ 3) (let))))")
(glint "(define (func x) (case x (((values)) (sqrt 0.1)) ((`((x 1))) (sqrt 0.1)) (else (with-baffle + (define _h1_ 3) (let)))))")
(glint "(define (func x) (if (copy 0+) (copy 0+) (length (values #\\c 3 1.2) (set! _x1_ 3) if ++i
@@ -92249,7 +92761,7 @@ etc
(glint "(letrec* - (define _h1_ 3) 1.5 (define _h1_ 3) (do '((()))))")
(glint "(map +(list-tail (vector->list //1(port-line-number ./))))")
(glint "(asin (procedure-source (string-append (string-append . when))))")
- (glint "(for-each 1(list-tail (string->list (funclet (with-input-from-file .(procedure-signature))))))")
+ (glint "(for-each 1(list-tail (string->list (funclet (with-input-from-file .(signature))))))")
(glint "(eval (list 02(quote)))")
(glint "(string-append +0 (integer->char 255) (string-append . 1))")
(glint "(vector-append (vector-append . 1.2.3))")
@@ -92264,7 +92776,7 @@ etc
(glint "(make-hash-table ++0.(string-append \"hi\" (string)))")
(glint "(map (*s7* 'print-length) '((x 1) . 2) letrec* `(((x 1))) 0/0+i '(- 1) (quote #() #<eof> 1/1.2 inf.0 i020))")
(glint "(multiple-value-bind 0(expt (map 2(quote))))")
- (glint "(procedure-documentation (do () `((x 1)) (integer->char 255) . =>))")
+ (glint "(documentation (do () `((x 1)) (integer->char 255) . =>))")
(glint "(let*-values ((x)) (list ()) do -/(proper-list? -0(iterator? .-.-0(input-port? i0))))")
(glint "(logand .-0+11 'hi (1) i12(let-values ((1) . x)))")
(glint "(let-values ((x . 1) . 2) (make-dilambda (lambda () 1) (lambda (a) a)) 2.(cons* .210/))")
@@ -92410,7 +92922,7 @@ etc
(define f321
- (let ((signature '(float? integer?)))
+ (let ((+signature+ '(float? integer?)))
(lambda (int)
(if (integer? int)
(* 1.0 int)
@@ -92994,7 +93506,7 @@ apparently in solaris, it's NaN.0 not nan.0?
#|
(for-each
(lambda (s)
- (if (and (symbol-access s)
+ (if (and (symbol-setter s)
(not (char=? #\* ((symbol->string s) 0))))
(format *stderr* "~A " s)))
(symbol-table))
@@ -93002,7 +93514,7 @@ apparently in solaris, it's NaN.0 not nan.0?
(for-each
(lambda (s)
(if (and (procedure? (symbol->value s))
- (let ((p (procedure-signature (symbol->value s))))
+ (let ((p (signature (symbol->value s))))
(and (pair? p) (pair? (car p)) (memq 'boolean? (car p)))))
(format *stderr* "~A " s)))
(symbol-table))
diff --git a/selection.scm b/selection.scm
index a839da0..0c0ff62 100644
--- a/selection.scm
+++ b/selection.scm
@@ -26,7 +26,7 @@
;;; -------- swap selection chans
(define swap-selection-channels
- (let ((documentation "(swap-selection-channels) swaps the currently selected data's channels")
+ (let ((+documentation+ "(swap-selection-channels) swaps the currently selected data's channels")
(find-selection-sound
(lambda (not-this)
(let ((scs (all-chans)))
@@ -59,7 +59,7 @@
;;; -------- replace-with-selection
(define replace-with-selection
- (let ((documentation "(replace-with-selection) replaces the samples from the cursor with the current selection"))
+ (let ((+documentation+ "(replace-with-selection) replaces the samples from the cursor with the current selection"))
(lambda ()
(let ((beg (cursor))
(len (selection-framples)))
@@ -73,7 +73,7 @@
;;; returns a list of lists of (snd chn): channels in current selection
(define selection-members
- (let ((documentation "(selection-members) -> list of lists of (snd chn) indicating the channels participating in the current selection."))
+ (let ((+documentation+ "(selection-members) -> list of lists of (snd chn) indicating the channels participating in the current selection."))
(lambda ()
(let ((sndlist ()))
(if (selection?)
@@ -91,7 +91,7 @@
;;; the regularized form of this would use dur not end
(define make-selection
- (let ((documentation "(make-selection beg end snd chn) makes a selection like make-region but without creating a region.
+ (let ((+documentation+ "(make-selection beg end snd chn) makes a selection like make-region but without creating a region.
make-selection follows snd's sync field, and applies to all snd's channels if chn is not specified. end defaults
to end of channel, beg defaults to 0, snd defaults to the currently selected sound.")
@@ -127,7 +127,7 @@ to end of channel, beg defaults to 0, snd defaults to the currently selected sou
(define with-temporary-selection
- (let ((documentation "(with-temporary-selection thunk beg dur snd chn) saves the current selection placement, makes a new selection \
+ (let ((+documentation+ "(with-temporary-selection thunk beg dur snd chn) saves the current selection placement, makes a new selection \
of the data from sample beg to beg + dur in the given channel. It then calls thunk, and
restores the previous selection (if any). It returns whatever 'thunk' returned."))
(lambda (thunk beg dur snd chn)
@@ -151,7 +151,7 @@ restores the previous selection (if any). It returns whatever 'thunk' returned.
;;; -------- filter-selection-and-smooth
(define filter-selection-and-smooth
- (let ((documentation "(filter-selection-and-smooth ramp-dur flt order) applies 'flt' (via filter-sound) to \
+ (let ((+documentation+ "(filter-selection-and-smooth ramp-dur flt order) applies 'flt' (via filter-sound) to \
the selection, the smooths the edges with a ramp whose duration is 'ramp-dur' (in seconds)"))
(lambda* (ramp-dur flt order)
(let ((temp-file (snd-tempnam)))
diff --git a/snd-chn.c b/snd-chn.c
index 48f4af8..7ed92b7 100644
--- a/snd-chn.c
+++ b/snd-chn.c
@@ -2970,8 +2970,8 @@ static void gl_spectrogram(sono_info *si, int gl_fft_list, mus_float_t cutoff, b
js[i][j] = skew_color(si->data[i][j] * inv_scl); /* can be NO_COLOR (-1) */
}
}
- xincr = 1.0 / (float)(si->active_slices);
- yincr = 1.0 / (float)bins;
+ xincr = 1.0 / (double)(si->active_slices);
+ yincr = 1.0 / (double)bins;
x1 = -0.5;
for (slice = 0; slice < si->active_slices - 1; slice++)
@@ -9027,7 +9027,7 @@ void write_transform_peaks(FILE *fd, chan_info *ucp)
fprintf(fd, ", fft %" PRId64 " points beginning at sample %" PRId64 " (%.3f secs), %s\n\n",
fp->current_size,
ap->losamp,
- (float)((double)(ap->losamp) / (double)srate),
+ ((double)(ap->losamp) / (double)srate),
mus_fft_window_name(cp->fft_window)); /* was Xen name */
for (i = 0; i < num_peaks; i++)
fprintf(fd, " %.*f %.*f\n",
@@ -10363,53 +10363,53 @@ If it returns " PROC_TRUE ", the key press is not passed to the main handler. 's
s7_symbol_set_documentation(s7, ss->transform_type_symbol, "*transform-type*: transform type (fourier-transform etc)");
s7_symbol_set_documentation(s7, ss->with_gl_symbol, "*with-gl*: #t if Snd should use GL graphics");
- s7_symbol_set_access(s7, ss->transform_type_symbol, s7_make_function(s7, "[acc-" S_transform_type "]", acc_transform_type, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->show_transform_peaks_symbol, s7_make_function(s7, "[acc-" S_show_transform_peaks "]", acc_show_transform_peaks, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->show_y_zero_symbol, s7_make_function(s7, "[acc-" S_show_y_zero "]", acc_show_y_zero, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->show_marks_symbol, s7_make_function(s7, "[acc-" S_show_marks "]", acc_show_marks, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->show_grid_symbol, s7_make_function(s7, "[acc-" S_show_grid "]", acc_show_grid, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->fft_log_frequency_symbol, s7_make_function(s7, "[acc-" S_fft_log_frequency "]", acc_fft_log_frequency, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->fft_log_magnitude_symbol, s7_make_function(s7, "[acc-" S_fft_log_magnitude "]", acc_fft_log_magnitude, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->fft_with_phases_symbol, s7_make_function(s7, "[acc-" S_fft_with_phases "]", acc_fft_with_phases, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->sync_style_symbol, s7_make_function(s7, "[acc-" S_sync_style "]", acc_sync_style, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->show_axes_symbol, s7_make_function(s7, "[acc-" S_show_axes "]", acc_show_axes, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->with_verbose_cursor_symbol, s7_make_function(s7, "[acc-" S_with_verbose_cursor "]", acc_with_verbose_cursor, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->spectro_x_scale_symbol, s7_make_function(s7, "[acc-" S_spectro_x_scale "]", acc_spectro_x_scale, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->spectro_y_scale_symbol, s7_make_function(s7, "[acc-" S_spectro_y_scale "]", acc_spectro_y_scale, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->spectro_z_scale_symbol, s7_make_function(s7, "[acc-" S_spectro_z_scale "]", acc_spectro_z_scale, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->spectro_z_angle_symbol, s7_make_function(s7, "[acc-" S_spectro_z_angle "]", acc_spectro_z_angle, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->spectro_x_angle_symbol, s7_make_function(s7, "[acc-" S_spectro_x_angle "]", acc_spectro_x_angle, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->spectro_y_angle_symbol, s7_make_function(s7, "[acc-" S_spectro_y_angle "]", acc_spectro_y_angle, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->spectrum_end_symbol, s7_make_function(s7, "[acc-" S_spectrum_end "]", acc_spectrum_end, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->spectrum_start_symbol, s7_make_function(s7, "[acc-" S_spectrum_start "]", acc_spectrum_start, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->spectro_hop_symbol, s7_make_function(s7, "[acc-" S_spectro_hop "]", acc_spectro_hop, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->wavelet_type_symbol, s7_make_function(s7, "[acc-" S_wavelet_type "]", acc_wavelet_type, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->dot_size_symbol, s7_make_function(s7, "[acc-" S_dot_size "]", acc_dot_size, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->zero_pad_symbol, s7_make_function(s7, "[acc-" S_zero_pad "]", acc_zero_pad, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->wavo_hop_symbol, s7_make_function(s7, "[acc-" S_wavo_hop "]", acc_wavo_hop, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->wavo_trace_symbol, s7_make_function(s7, "[acc-" S_wavo_trace "]", acc_wavo_trace, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->transform_size_symbol, s7_make_function(s7, "[acc-" S_transform_size "]", acc_transform_size, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->fft_window_symbol, s7_make_function(s7, "[acc-" S_fft_window "]", acc_fft_window, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->transform_graph_type_symbol, s7_make_function(s7, "[acc-" S_transform_graph_type "]", acc_transform_graph_type, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->time_graph_type_symbol, s7_make_function(s7, "[acc-" S_time_graph_type "]", acc_time_graph_type, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->fft_window_alpha_symbol, s7_make_function(s7, "[acc-" S_fft_window_alpha "]", acc_fft_window_alpha, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->fft_window_beta_symbol, s7_make_function(s7, "[acc-" S_fft_window_beta "]", acc_fft_window_beta, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->grid_density_symbol, s7_make_function(s7, "[acc-" S_grid_density "]", acc_grid_density, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->beats_per_minute_symbol, s7_make_function(s7, "[acc-" S_beats_per_minute "]", acc_beats_per_minute, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->show_mix_waveforms_symbol, s7_make_function(s7, "[acc-" S_show_mix_waveforms "]", acc_show_mix_waveforms, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->beats_per_measure_symbol, s7_make_function(s7, "[acc-" S_beats_per_measure "]", acc_beats_per_measure, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->transform_normalization_symbol, s7_make_function(s7, "[acc-" S_transform_normalization "]", acc_transform_normalization, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->x_axis_style_symbol, s7_make_function(s7, "[acc-" S_x_axis_style "]", acc_x_axis_style, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->zoom_focus_style_symbol, s7_make_function(s7, "[acc-" S_zoom_focus_style "]", acc_zoom_focus_style, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->graph_style_symbol, s7_make_function(s7, "[acc-" S_graph_style "]", acc_graph_style, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->max_transform_peaks_symbol, s7_make_function(s7, "[acc-" S_max_transform_peaks "]", acc_max_transform_peaks, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->graphs_horizontal_symbol, s7_make_function(s7, "[acc-" S_graphs_horizontal "]", acc_graphs_horizontal, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->cursor_size_symbol, s7_make_function(s7, "[acc-" S_cursor_size "]", acc_cursor_size, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->cursor_style_symbol, s7_make_function(s7, "[acc-" S_cursor_style "]", acc_cursor_style, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->tracking_cursor_style_symbol, s7_make_function(s7, "[acc-" S_tracking_cursor_style "]", acc_tracking_cursor_style, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->show_sonogram_cursor_symbol, s7_make_function(s7, "[acc-" S_show_sonogram_cursor "]", acc_show_sonogram_cursor, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->min_db_symbol, s7_make_function(s7, "[acc-" S_min_dB "]", acc_min_dB, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->with_gl_symbol, s7_make_function(s7, "[acc-" S_with_gl "]", acc_with_gl, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->transform_type_symbol, s7_make_function(s7, "[acc-" S_transform_type "]", acc_transform_type, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->show_transform_peaks_symbol, s7_make_function(s7, "[acc-" S_show_transform_peaks "]", acc_show_transform_peaks, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->show_y_zero_symbol, s7_make_function(s7, "[acc-" S_show_y_zero "]", acc_show_y_zero, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->show_marks_symbol, s7_make_function(s7, "[acc-" S_show_marks "]", acc_show_marks, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->show_grid_symbol, s7_make_function(s7, "[acc-" S_show_grid "]", acc_show_grid, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->fft_log_frequency_symbol, s7_make_function(s7, "[acc-" S_fft_log_frequency "]", acc_fft_log_frequency, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->fft_log_magnitude_symbol, s7_make_function(s7, "[acc-" S_fft_log_magnitude "]", acc_fft_log_magnitude, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->fft_with_phases_symbol, s7_make_function(s7, "[acc-" S_fft_with_phases "]", acc_fft_with_phases, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->sync_style_symbol, s7_make_function(s7, "[acc-" S_sync_style "]", acc_sync_style, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->show_axes_symbol, s7_make_function(s7, "[acc-" S_show_axes "]", acc_show_axes, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->with_verbose_cursor_symbol, s7_make_function(s7, "[acc-" S_with_verbose_cursor "]", acc_with_verbose_cursor, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->spectro_x_scale_symbol, s7_make_function(s7, "[acc-" S_spectro_x_scale "]", acc_spectro_x_scale, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->spectro_y_scale_symbol, s7_make_function(s7, "[acc-" S_spectro_y_scale "]", acc_spectro_y_scale, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->spectro_z_scale_symbol, s7_make_function(s7, "[acc-" S_spectro_z_scale "]", acc_spectro_z_scale, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->spectro_z_angle_symbol, s7_make_function(s7, "[acc-" S_spectro_z_angle "]", acc_spectro_z_angle, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->spectro_x_angle_symbol, s7_make_function(s7, "[acc-" S_spectro_x_angle "]", acc_spectro_x_angle, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->spectro_y_angle_symbol, s7_make_function(s7, "[acc-" S_spectro_y_angle "]", acc_spectro_y_angle, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->spectrum_end_symbol, s7_make_function(s7, "[acc-" S_spectrum_end "]", acc_spectrum_end, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->spectrum_start_symbol, s7_make_function(s7, "[acc-" S_spectrum_start "]", acc_spectrum_start, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->spectro_hop_symbol, s7_make_function(s7, "[acc-" S_spectro_hop "]", acc_spectro_hop, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->wavelet_type_symbol, s7_make_function(s7, "[acc-" S_wavelet_type "]", acc_wavelet_type, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->dot_size_symbol, s7_make_function(s7, "[acc-" S_dot_size "]", acc_dot_size, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->zero_pad_symbol, s7_make_function(s7, "[acc-" S_zero_pad "]", acc_zero_pad, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->wavo_hop_symbol, s7_make_function(s7, "[acc-" S_wavo_hop "]", acc_wavo_hop, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->wavo_trace_symbol, s7_make_function(s7, "[acc-" S_wavo_trace "]", acc_wavo_trace, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->transform_size_symbol, s7_make_function(s7, "[acc-" S_transform_size "]", acc_transform_size, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->fft_window_symbol, s7_make_function(s7, "[acc-" S_fft_window "]", acc_fft_window, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->transform_graph_type_symbol, s7_make_function(s7, "[acc-" S_transform_graph_type "]", acc_transform_graph_type, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->time_graph_type_symbol, s7_make_function(s7, "[acc-" S_time_graph_type "]", acc_time_graph_type, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->fft_window_alpha_symbol, s7_make_function(s7, "[acc-" S_fft_window_alpha "]", acc_fft_window_alpha, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->fft_window_beta_symbol, s7_make_function(s7, "[acc-" S_fft_window_beta "]", acc_fft_window_beta, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->grid_density_symbol, s7_make_function(s7, "[acc-" S_grid_density "]", acc_grid_density, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->beats_per_minute_symbol, s7_make_function(s7, "[acc-" S_beats_per_minute "]", acc_beats_per_minute, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->show_mix_waveforms_symbol, s7_make_function(s7, "[acc-" S_show_mix_waveforms "]", acc_show_mix_waveforms, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->beats_per_measure_symbol, s7_make_function(s7, "[acc-" S_beats_per_measure "]", acc_beats_per_measure, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->transform_normalization_symbol, s7_make_function(s7, "[acc-" S_transform_normalization "]", acc_transform_normalization, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->x_axis_style_symbol, s7_make_function(s7, "[acc-" S_x_axis_style "]", acc_x_axis_style, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->zoom_focus_style_symbol, s7_make_function(s7, "[acc-" S_zoom_focus_style "]", acc_zoom_focus_style, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->graph_style_symbol, s7_make_function(s7, "[acc-" S_graph_style "]", acc_graph_style, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->max_transform_peaks_symbol, s7_make_function(s7, "[acc-" S_max_transform_peaks "]", acc_max_transform_peaks, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->graphs_horizontal_symbol, s7_make_function(s7, "[acc-" S_graphs_horizontal "]", acc_graphs_horizontal, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->cursor_size_symbol, s7_make_function(s7, "[acc-" S_cursor_size "]", acc_cursor_size, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->cursor_style_symbol, s7_make_function(s7, "[acc-" S_cursor_style "]", acc_cursor_style, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->tracking_cursor_style_symbol, s7_make_function(s7, "[acc-" S_tracking_cursor_style "]", acc_tracking_cursor_style, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->show_sonogram_cursor_symbol, s7_make_function(s7, "[acc-" S_show_sonogram_cursor "]", acc_show_sonogram_cursor, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->min_db_symbol, s7_make_function(s7, "[acc-" S_min_dB "]", acc_min_dB, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->with_gl_symbol, s7_make_function(s7, "[acc-" S_with_gl "]", acc_with_gl, 2, 0, false, "accessor"));
s7_eval_c_string(s7, "(set! *transform-type* fourier-transform)");
#endif
diff --git a/snd-dac.c b/snd-dac.c
index d74370f..311c16d 100644
--- a/snd-dac.c
+++ b/snd-dac.c
@@ -3658,11 +3658,11 @@ If it returns " PROC_TRUE ", the sound is not played."
start_playing_selection_hook = Xen_define_hook(S_start_playing_selection_hook, "(make-hook)", 0, H_start_playing_selection_hook);
#if HAVE_SCHEME
- s7_symbol_set_access(s7, ss->cursor_location_offset_symbol, s7_make_function(s7, "[acc-" S_cursor_location_offset "]", acc_cursor_location_offset, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->cursor_update_interval_symbol, s7_make_function(s7, "[acc-" S_cursor_update_interval "]", acc_cursor_update_interval, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->dac_combines_channels_symbol, s7_make_function(s7, "[acc-" S_dac_combines_channels "]", acc_dac_combines_channels, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->dac_size_symbol, s7_make_function(s7, "[acc-" S_dac_size "]", acc_dac_size, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->with_tracking_cursor_symbol, s7_make_function(s7, "[acc-" S_with_tracking_cursor "]", acc_with_tracking_cursor, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->cursor_location_offset_symbol, s7_make_function(s7, "[acc-" S_cursor_location_offset "]", acc_cursor_location_offset, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->cursor_update_interval_symbol, s7_make_function(s7, "[acc-" S_cursor_update_interval "]", acc_cursor_update_interval, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->dac_combines_channels_symbol, s7_make_function(s7, "[acc-" S_dac_combines_channels "]", acc_dac_combines_channels, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->dac_size_symbol, s7_make_function(s7, "[acc-" S_dac_size "]", acc_dac_size, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->with_tracking_cursor_symbol, s7_make_function(s7, "[acc-" S_with_tracking_cursor "]", acc_with_tracking_cursor, 2, 0, false, "accessor"));
s7_symbol_set_documentation(s7, ss->cursor_location_offset_symbol, "*cursor-location-offset*: samples added to cursor location if cursor displayed during play.");
s7_symbol_set_documentation(s7, ss->cursor_update_interval_symbol, "*cursor-update-interval*: time (seconds) between cursor updates if with-tracking-cursor.");
diff --git a/snd-draw.c b/snd-draw.c
index 10dd48a..5a9463a 100644
--- a/snd-draw.c
+++ b/snd-draw.c
@@ -406,8 +406,13 @@ static point_t *vector_to_points(Xen pts, const char *caller, int *vector_len)
for (i = 0, j = 0; i < len; i++, j += 2)
{
- pack_pts[i].x = Xen_integer_to_C_int(Xen_vector_ref(pts, j));
- pack_pts[i].y = Xen_integer_to_C_int(Xen_vector_ref(pts, j + 1));
+ Xen p;
+ p = Xen_vector_ref(pts, j);
+ Xen_check_type(Xen_is_integer(p), p, j, caller, "an integer");
+ pack_pts[i].x = Xen_integer_to_C_int(p);
+ p = Xen_vector_ref(pts, j + 1);
+ Xen_check_type(Xen_is_integer(p), p, j + 1, caller, "an integer");
+ pack_pts[i].y = Xen_integer_to_C_int(p);
}
return(pack_pts);
}
@@ -521,7 +526,7 @@ defined by the 4 controlling points x0..y3; 'n' is how many points to return"
by = 3 * (y[2] - y[1]) - cy;
ax = x[3] - (x[0] + cx + bx);
ay = y[3] - (y[0] + cy + by);
- incr = 1.0 / (float)n;
+ incr = 1.0 / (double)n;
pts = Xen_make_vector(2 * (n + 1), Xen_integer_zero);
Xen_vector_set(pts, 0, C_int_to_Xen_integer(x[0]));
@@ -2147,25 +2152,25 @@ a new set of channel or sound widgets is created."
new_widget_hook = Xen_define_hook(S_new_widget_hook, "(make-hook 'widget)", 1, H_new_widget_hook);
#if HAVE_SCHEME
- s7_symbol_set_access(s7, ss->data_color_symbol, s7_make_function(s7, "[acc-" S_data_color "]", acc_data_color, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->highlight_color_symbol, s7_make_function(s7, "[acc-" S_highlight_color "]", acc_highlight_color, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->axis_color_symbol, s7_make_function(s7, "[acc-" S_axis_color "]", acc_axis_color, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->sash_color_symbol, s7_make_function(s7, "[acc-" S_sash_color "]", acc_sash_color, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->filter_control_waveform_color_symbol, s7_make_function(s7, "[acc-" S_filter_control_waveform_color "]", acc_filter_control_waveform_color, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->mix_color_symbol, s7_make_function(s7, "[acc-" S_mix_color "]", acc_mix_color, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->selected_data_color_symbol, s7_make_function(s7, "[acc-" S_selected_data_color "]", acc_selected_data_color, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->mark_color_symbol, s7_make_function(s7, "[acc-" S_mark_color "]", acc_mark_color, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->graph_color_symbol, s7_make_function(s7, "[acc-" S_graph_color "]", acc_graph_color, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->selected_graph_color_symbol, s7_make_function(s7, "[acc-" S_selected_graph_color "]", acc_selected_graph_color, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->listener_color_symbol, s7_make_function(s7, "[acc-" S_listener_color "]", acc_listener_color, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->listener_text_color_symbol, s7_make_function(s7, "[acc-" S_listener_text_color "]", acc_listener_text_color, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->basic_color_symbol, s7_make_function(s7, "[acc-" S_basic_color "]", acc_basic_color, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->selection_color_symbol, s7_make_function(s7, "[acc-" S_selection_color "]", acc_selection_color, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->zoom_color_symbol, s7_make_function(s7, "[acc-" S_zoom_color "]", acc_zoom_color, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->position_color_symbol, s7_make_function(s7, "[acc-" S_position_color "]", acc_position_color, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->enved_waveform_color_symbol, s7_make_function(s7, "[acc-" S_enved_waveform_color "]", acc_enved_waveform_color, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->cursor_color_symbol, s7_make_function(s7, "[acc-" S_cursor_color "]", acc_cursor_color, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->text_focus_color_symbol, s7_make_function(s7, "[acc-" S_text_focus_color "]", acc_text_focus_color, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->data_color_symbol, s7_make_function(s7, "[acc-" S_data_color "]", acc_data_color, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->highlight_color_symbol, s7_make_function(s7, "[acc-" S_highlight_color "]", acc_highlight_color, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->axis_color_symbol, s7_make_function(s7, "[acc-" S_axis_color "]", acc_axis_color, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->sash_color_symbol, s7_make_function(s7, "[acc-" S_sash_color "]", acc_sash_color, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->filter_control_waveform_color_symbol, s7_make_function(s7, "[acc-" S_filter_control_waveform_color "]", acc_filter_control_waveform_color, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->mix_color_symbol, s7_make_function(s7, "[acc-" S_mix_color "]", acc_mix_color, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->selected_data_color_symbol, s7_make_function(s7, "[acc-" S_selected_data_color "]", acc_selected_data_color, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->mark_color_symbol, s7_make_function(s7, "[acc-" S_mark_color "]", acc_mark_color, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->graph_color_symbol, s7_make_function(s7, "[acc-" S_graph_color "]", acc_graph_color, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->selected_graph_color_symbol, s7_make_function(s7, "[acc-" S_selected_graph_color "]", acc_selected_graph_color, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->listener_color_symbol, s7_make_function(s7, "[acc-" S_listener_color "]", acc_listener_color, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->listener_text_color_symbol, s7_make_function(s7, "[acc-" S_listener_text_color "]", acc_listener_text_color, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->basic_color_symbol, s7_make_function(s7, "[acc-" S_basic_color "]", acc_basic_color, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->selection_color_symbol, s7_make_function(s7, "[acc-" S_selection_color "]", acc_selection_color, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->zoom_color_symbol, s7_make_function(s7, "[acc-" S_zoom_color "]", acc_zoom_color, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->position_color_symbol, s7_make_function(s7, "[acc-" S_position_color "]", acc_position_color, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->enved_waveform_color_symbol, s7_make_function(s7, "[acc-" S_enved_waveform_color "]", acc_enved_waveform_color, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->cursor_color_symbol, s7_make_function(s7, "[acc-" S_cursor_color "]", acc_cursor_color, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->text_focus_color_symbol, s7_make_function(s7, "[acc-" S_text_focus_color "]", acc_text_focus_color, 2, 0, false, "accessor"));
s7_symbol_set_documentation(s7, ss->axis_color_symbol, "*axis-color*: color of axis (defaults to current data color)");
s7_symbol_set_documentation(s7, ss->basic_color_symbol, "*basic-color*: Snd's basic color");
diff --git a/snd-edits.c b/snd-edits.c
index ac6278c..a39c6bb 100644
--- a/snd-edits.c
+++ b/snd-edits.c
@@ -7868,7 +7868,7 @@ static mus_float_t *g_floats_to_samples(Xen obj, int *size, const char *caller,
for (i = 0; i < num; i++)
vals[i] = (vdata[i]);
}
- else Xen_check_type(0, obj, position, caller, "a " S_vct ", vector, or list");
+ else Xen_check_type(false, obj, position, caller, "a " S_vct ", vector, or list");
}
}
(*size) = num;
diff --git a/snd-env.c b/snd-env.c
index ff5ed4c..0c5249c 100644
--- a/snd-env.c
+++ b/snd-env.c
@@ -1286,7 +1286,9 @@ env *xen_to_env(Xen res)
{
Xen el;
el = Xen_car(lst);
- if ((!(Xen_is_number(Xen_car(el)))) ||
+ if ((!Xen_is_pair(el)) ||
+ (!(Xen_is_number(Xen_car(el)))) ||
+ (!(Xen_is_pair(Xen_cdr(el)))) ||
(!(Xen_is_number(Xen_cadr(el)))))
{
free(data);
@@ -1930,12 +1932,12 @@ stretch-envelope from env.fth: \n\
ss->enved->clipping = DEFAULT_ENVED_CLIPPING;
#if HAVE_SCHEME
- s7_symbol_set_access(s7, ss->enved_base_symbol, s7_make_function(s7, "[acc-" S_enved_base "]", acc_enved_base, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->enved_filter_order_symbol, s7_make_function(s7, "[acc-" S_enved_filter_order "]", acc_enved_filter_order, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->enved_power_symbol, s7_make_function(s7, "[acc-" S_enved_power "]", acc_enved_power, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->enved_style_symbol, s7_make_function(s7, "[acc-" S_enved_style "]", acc_enved_style, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->enved_target_symbol, s7_make_function(s7, "[acc-" S_enved_target "]", acc_enved_target, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->enved_with_wave_symbol, s7_make_function(s7, "[acc-" S_enved_with_wave "]", acc_enved_with_wave, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->enved_base_symbol, s7_make_function(s7, "[acc-" S_enved_base "]", acc_enved_base, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->enved_filter_order_symbol, s7_make_function(s7, "[acc-" S_enved_filter_order "]", acc_enved_filter_order, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->enved_power_symbol, s7_make_function(s7, "[acc-" S_enved_power "]", acc_enved_power, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->enved_style_symbol, s7_make_function(s7, "[acc-" S_enved_style "]", acc_enved_style, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->enved_target_symbol, s7_make_function(s7, "[acc-" S_enved_target "]", acc_enved_target, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->enved_with_wave_symbol, s7_make_function(s7, "[acc-" S_enved_with_wave "]", acc_enved_with_wave, 2, 0, false, "accessor"));
s7_symbol_set_documentation(s7, ss->enved_base_symbol, "*enved-base*: envelope editor exponential base value (1.0)");
s7_symbol_set_documentation(s7, ss->enved_filter_order_symbol, "*enved-filter-order*: envelope editor's FIR filter order (40)");
diff --git a/snd-fft.c b/snd-fft.c
index 4e1e641..e951f31 100644
--- a/snd-fft.c
+++ b/snd-fft.c
@@ -2546,8 +2546,8 @@ of a moving mark:\n\
Xen_define_typed_procedure(S_transform_to_integer, g_transform_to_integer_w, 1, 0, 0, H_transform_to_integer, s7_make_signature(s7, 2, i, tr));
#if HAVE_SCHEME
- s7_symbol_set_access(s7, ss->log_freq_start_symbol, s7_make_function(s7, "[acc-" S_log_freq_start "]", acc_log_freq_start, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->show_selection_transform_symbol, s7_make_function(s7, "[acc-" S_show_selection_transform "]", acc_show_selection_transform, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->log_freq_start_symbol, s7_make_function(s7, "[acc-" S_log_freq_start "]", acc_log_freq_start, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->show_selection_transform_symbol, s7_make_function(s7, "[acc-" S_show_selection_transform "]", acc_show_selection_transform, 2, 0, false, "accessor"));
s7_symbol_set_documentation(s7, ss->log_freq_start_symbol, "*log-freq-start*: log freq base (25.0)");
s7_symbol_set_documentation(s7, ss->show_selection_transform_symbol, "*show-selection-transform*: #t if transform display reflects selection, not time-domain window");
diff --git a/snd-file.c b/snd-file.c
index a37345a..bdd0a4e 100644
--- a/snd-file.c
+++ b/snd-file.c
@@ -2692,7 +2692,7 @@ static char *raw_data_explanation(const char *filename, file_info *hdr, char **i
/* samples */
snprintf(tmp_str, LABEL_BUFFER_SIZE, "\nlength: %.3f (%" PRId64 " samples, %" PRId64 " bytes total)",
- (float)((double)(hdr->samples) / (float)(hdr->chans * hdr->srate)),
+ ((double)(hdr->samples) / (double)(hdr->chans * hdr->srate)),
hdr->samples,
mus_sound_length(filename));
reason_str = mus_strcat(reason_str, tmp_str, &len);
@@ -2705,7 +2705,7 @@ static char *raw_data_explanation(const char *filename, file_info *hdr, char **i
{
snprintf(tmp_str, LABEL_BUFFER_SIZE,
", swapped length: %.3f / sample-size-in-bytes)",
- (float)((double)nsamp / (float)(better_chans * better_srate)));
+ ((double)nsamp / (double)(better_chans * better_srate)));
reason_str = mus_strcat(reason_str, tmp_str, &len);
}
else reason_str = mus_strcat(reason_str, ")", &len);
@@ -2927,7 +2927,7 @@ static Xen g_set_sound_file_extensions(Xen lst)
for (i = 0; i < len; i++)
if (!(Xen_is_string(Xen_list_ref(lst, i))))
{
- Xen_check_type(0, Xen_list_ref(lst, i), i, S_set S_sound_file_extensions, "a filename extension (a string like \"snd\")");
+ Xen_check_type(false, Xen_list_ref(lst, i), i, S_set S_sound_file_extensions, "a filename extension (a string like \"snd\")");
return(Xen_false);
}
for (i = 0; i < len; i++)
@@ -3971,25 +3971,25 @@ the newly updated sound may have a different index."
s7_symbol_set_documentation(s7, ss->clipping_symbol, "*clipping*: #t if Snd should clip output values");
- s7_symbol_set_access(s7, ss->default_output_header_type_symbol, s7_make_function(s7, "[acc-" S_default_output_header_type "]", acc_default_output_header_type, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->default_output_sample_type_symbol, s7_make_function(s7, "[acc-" S_default_output_sample_type "]", acc_default_output_sample_type, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->default_output_chans_symbol, s7_make_function(s7, "[acc-" S_default_output_chans "]", acc_default_output_chans, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->default_output_srate_symbol, s7_make_function(s7, "[acc-" S_default_output_srate "]", acc_default_output_srate, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->ask_before_overwrite_symbol, s7_make_function(s7, "[acc-" S_ask_before_overwrite "]", acc_ask_before_overwrite, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->ask_about_unsaved_edits_symbol, s7_make_function(s7, "[acc-" S_ask_about_unsaved_edits "]", acc_ask_about_unsaved_edits, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->show_full_duration_symbol, s7_make_function(s7, "[acc-" S_show_full_duration "]", acc_show_full_duration, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->show_full_range_symbol, s7_make_function(s7, "[acc-" S_show_full_range "]", acc_show_full_range, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->remember_sound_state_symbol, s7_make_function(s7, "[acc-" S_remember_sound_state "]", acc_remember_sound_state, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->save_as_dialog_src_symbol, s7_make_function(s7, "[acc-" S_save_as_dialog_src "]", acc_save_as_dialog_src, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->save_as_dialog_auto_comment_symbol, s7_make_function(s7, "[acc-" S_save_as_dialog_auto_comment "]", acc_save_as_dialog_auto_comment, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->with_toolbar_symbol, s7_make_function(s7, "[acc-" S_with_toolbar "]", acc_with_toolbar, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->with_tooltips_symbol, s7_make_function(s7, "[acc-" S_with_tooltips "]", acc_with_tooltips, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->with_menu_icons_symbol, s7_make_function(s7, "[acc-" S_with_menu_icons "]", acc_with_menu_icons, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->initial_beg_symbol, s7_make_function(s7, "[acc-" S_initial_beg "]", acc_initial_beg, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->initial_dur_symbol, s7_make_function(s7, "[acc-" S_initial_dur "]", acc_initial_dur, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->auto_update_symbol, s7_make_function(s7, "[acc-" S_auto_update "]", acc_auto_update, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->auto_update_interval_symbol, s7_make_function(s7, "[acc-" S_auto_update_interval "]", acc_auto_update_interval, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->clipping_symbol, s7_make_function(s7, "[acc-" S_clipping "]", acc_clipping, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->default_output_header_type_symbol, s7_make_function(s7, "[acc-" S_default_output_header_type "]", acc_default_output_header_type, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->default_output_sample_type_symbol, s7_make_function(s7, "[acc-" S_default_output_sample_type "]", acc_default_output_sample_type, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->default_output_chans_symbol, s7_make_function(s7, "[acc-" S_default_output_chans "]", acc_default_output_chans, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->default_output_srate_symbol, s7_make_function(s7, "[acc-" S_default_output_srate "]", acc_default_output_srate, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->ask_before_overwrite_symbol, s7_make_function(s7, "[acc-" S_ask_before_overwrite "]", acc_ask_before_overwrite, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->ask_about_unsaved_edits_symbol, s7_make_function(s7, "[acc-" S_ask_about_unsaved_edits "]", acc_ask_about_unsaved_edits, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->show_full_duration_symbol, s7_make_function(s7, "[acc-" S_show_full_duration "]", acc_show_full_duration, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->show_full_range_symbol, s7_make_function(s7, "[acc-" S_show_full_range "]", acc_show_full_range, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->remember_sound_state_symbol, s7_make_function(s7, "[acc-" S_remember_sound_state "]", acc_remember_sound_state, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->save_as_dialog_src_symbol, s7_make_function(s7, "[acc-" S_save_as_dialog_src "]", acc_save_as_dialog_src, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->save_as_dialog_auto_comment_symbol, s7_make_function(s7, "[acc-" S_save_as_dialog_auto_comment "]", acc_save_as_dialog_auto_comment, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->with_toolbar_symbol, s7_make_function(s7, "[acc-" S_with_toolbar "]", acc_with_toolbar, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->with_tooltips_symbol, s7_make_function(s7, "[acc-" S_with_tooltips "]", acc_with_tooltips, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->with_menu_icons_symbol, s7_make_function(s7, "[acc-" S_with_menu_icons "]", acc_with_menu_icons, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->initial_beg_symbol, s7_make_function(s7, "[acc-" S_initial_beg "]", acc_initial_beg, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->initial_dur_symbol, s7_make_function(s7, "[acc-" S_initial_dur "]", acc_initial_dur, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->auto_update_symbol, s7_make_function(s7, "[acc-" S_auto_update "]", acc_auto_update, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->auto_update_interval_symbol, s7_make_function(s7, "[acc-" S_auto_update_interval "]", acc_auto_update_interval, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->clipping_symbol, s7_make_function(s7, "[acc-" S_clipping "]", acc_clipping, 2, 0, false, "accessor"));
#endif
}
diff --git a/snd-forth-init.fs b/snd-forth-init.fs
index 2d957dc..ab1ecab 100644
--- a/snd-forth-init.fs
+++ b/snd-forth-init.fs
@@ -1,6 +1,6 @@
\ .snd_forth -- start up file for Snd/Forth
\
-\ @(#)snd-forth-init.fs 1.43 11/11/14
+\ @(#)snd-forth-init.fs 1.44 9/25/17
\
\ You can install the *.fs scripts with:
@@ -101,7 +101,6 @@ require clm-ins
then
;
-440.0 to *clm-default-frequency*
#t to *clm-play*
#t to *clm-statistics*
#t to *clm-verbose*
diff --git a/snd-g1.h b/snd-g1.h
index 8017101..6de742b 100644
--- a/snd-g1.h
+++ b/snd-g1.h
@@ -181,7 +181,7 @@ rgb_t *color_map_greens(int index);
rgb_t *color_map_blues(int index);
#endif
void g_init_gxcolormaps(void);
-void phases_rgb(float x, rgb_t *r, rgb_t *g, rgb_t *b);
+void phases_rgb(double x, rgb_t *r, rgb_t *g, rgb_t *b);
diff --git a/snd-gchn.c b/snd-gchn.c
index ae8f58f..a0ac2a3 100644
--- a/snd-gchn.c
+++ b/snd-gchn.c
@@ -1438,7 +1438,7 @@ leaves the drawing area (graph pane) of the given channel."
mouse_leave_graph_hook = Xen_define_hook(S_mouse_leave_graph_hook, "(make-hook 'snd 'chn)", 2, H_mouse_leave_graph_hook);
#if HAVE_SCHEME
- s7_symbol_set_access(s7, ss->graph_cursor_symbol, s7_make_function(s7, "[acc-" S_graph_cursor "]", acc_graph_cursor, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->graph_cursor_symbol, s7_make_function(s7, "[acc-" S_graph_cursor "]", acc_graph_cursor, 2, 0, false, "accessor"));
s7_symbol_set_documentation(s7, ss->graph_cursor_symbol, "*graph-cursor*: current graph cursor shape");
#endif
}
diff --git a/snd-gl.scm b/snd-gl.scm
index 11da8bb..50492a2 100644
--- a/snd-gl.scm
+++ b/snd-gl.scm
@@ -7,7 +7,7 @@
;;; ---------------- gl-info ----------------
(define gl-info
;; taken loosely from glxvisuals.c
- (let ((documentation "(gl-info) prints out GL-related info")
+ (let ((+documentation+ "(gl-info) prints out GL-related info")
(class-of (lambda (n)
(and (number? n)
(copy (cond ((= n (*motif* 'StaticGray)) "static-gray")
diff --git a/snd-glistener.c b/snd-glistener.c
index 0c03a8f..960dd4b 100644
--- a/snd-glistener.c
+++ b/snd-glistener.c
@@ -508,8 +508,9 @@ static s7_pointer g_set_prompt_tag(s7_scheme *sc, s7_pointer args)
/* args: (#<c_pointer 0x2dfbed0> (GtkTextTag_ #<c_pointer 0x2e8f180>))
*/
GtkTextTag *new_tag = NULL;
- if (s7_is_pair(s7_cadr(args)))
- new_tag = (GtkTextTag *)(s7_c_pointer(s7_cadr(s7_cadr(args))));
+ if ((s7_is_pair(s7_cadr(args))) &&
+ (s7_is_pair(s7_cdadr(args))))
+ new_tag = (GtkTextTag *)(s7_c_pointer(s7_cadadr(args)));
glistener_set_prompt_tag(unwrap_glistener(sc, "set listener prompt tag", s7_car(args)), new_tag);
return(s7_cadr(args));
diff --git a/snd-gmix.c b/snd-gmix.c
index 54e98e8..47fa4f8 100644
--- a/snd-gmix.c
+++ b/snd-gmix.c
@@ -991,8 +991,8 @@ void reflect_mix_change(int mix_id)
beg = mix_position_from_id(mix_dialog_id);
len = mix_length_from_id(mix_dialog_id);
snprintf(lab, LABEL_BUFFER_SIZE, "%.3f : %.3f%s",
- (float)((double)beg / (float)snd_srate(cp->sound)),
- (float)((double)(beg + len) / (float)snd_srate(cp->sound)),
+ ((double)beg / (double)snd_srate(cp->sound)),
+ ((double)(beg + len) / (double)snd_srate(cp->sound)),
(mix_is_active(mix_dialog_id)) ? "" : " (locked)");
gtk_entry_set_text(GTK_ENTRY(w_beg), lab);
diff --git a/snd-gprefs.c b/snd-gprefs.c
index a45d13c..afd55c5 100644
--- a/snd-gprefs.c
+++ b/snd-gprefs.c
@@ -40,7 +40,7 @@ typedef struct prefs_info {
void (*arrow_up_func)(struct prefs_info *prf);
void (*arrow_down_func)(struct prefs_info *prf);
void (*text_func)(struct prefs_info *prf);
- void (*color_func)(struct prefs_info *prf, float r, float g, float b);
+ void (*color_func)(struct prefs_info *prf, double r, double g, double b);
void (*reflect_func)(struct prefs_info *prf);
void (*save_func)(struct prefs_info *prf, FILE *fd);
const char *(*help_func)(struct prefs_info *prf);
@@ -1080,7 +1080,7 @@ static prefs_info *prefs_row_with_list(const char *label, const char *varname, c
/* ---------------- color selector row(s) ---------------- */
-static void pixel_to_rgb(color_t pix, float *r, float *g, float *b)
+static void pixel_to_rgb(color_t pix, double *r, double *g, double *b)
{
(*r) = rgb_to_float(pix->red);
(*g) = rgb_to_float(pix->green);
@@ -1115,7 +1115,7 @@ static void display_color(GtkWidget *w, color_t pixel)
static void scale_set_color(prefs_info *prf, color_t pixel)
{
- float r = 0.0, g = 0.0, b = 0.0;
+ double r = 0.0, g = 0.0, b = 0.0;
pixel_to_rgb(pixel, &r, &g, &b);
float_to_textfield(prf->rtxt, r);
ADJUSTMENT_SET_VALUE(prf->radj, r);
@@ -1182,14 +1182,14 @@ static void prefs_r_callback(GtkWidget *w, gpointer context)
{
prefs_info *prf = (prefs_info *)context;
char *str;
- float r;
+ double r;
str = (char *)gtk_entry_get_text(GTK_ENTRY(w));
redirect_errors_to(errors_to_color_text, context);
- r = (float)string_to_mus_float_t(str, 0.0, "red amount");
+ r = (double)string_to_mus_float_t(str, 0.0, "red amount");
redirect_errors_to(NULL, NULL);
if (!(prf->got_error))
{
- ADJUSTMENT_SET_VALUE(prf->radj, (float)mus_fclamp(0.0, r, 1.0));
+ ADJUSTMENT_SET_VALUE(prf->radj, (double)mus_fclamp(0.0, r, 1.0));
reflect_color(prf);
}
}
@@ -1199,14 +1199,14 @@ static void prefs_g_callback(GtkWidget *w, gpointer context)
{
prefs_info *prf = (prefs_info *)context;
char *str;
- float r;
+ double r;
str = (char *)gtk_entry_get_text(GTK_ENTRY(w));
redirect_errors_to(errors_to_color_text, context);
- r = (float)string_to_mus_float_t(str, 0.0, "green amount");
+ r = (double)string_to_mus_float_t(str, 0.0, "green amount");
redirect_errors_to(NULL, NULL);
if (!(prf->got_error))
{
- ADJUSTMENT_SET_VALUE(prf->gadj, (float)mus_fclamp(0.0, r, 1.0));
+ ADJUSTMENT_SET_VALUE(prf->gadj, (double)mus_fclamp(0.0, r, 1.0));
reflect_color(prf);
}
}
@@ -1216,14 +1216,14 @@ static void prefs_b_callback(GtkWidget *w, gpointer context)
{
prefs_info *prf = (prefs_info *)context;
char *str;
- float r;
+ double r;
str = (char *)gtk_entry_get_text(GTK_ENTRY(w));
redirect_errors_to(errors_to_color_text, context);
- r = (float)string_to_mus_float_t(str, 0.0, "blue amount");
+ r = (double)string_to_mus_float_t(str, 0.0, "blue amount");
redirect_errors_to(NULL, NULL);
if (!(prf->got_error))
{
- ADJUSTMENT_SET_VALUE(prf->badj, (float)mus_fclamp(0.0, r, 1.0));
+ ADJUSTMENT_SET_VALUE(prf->badj, (double)mus_fclamp(0.0, r, 1.0));
reflect_color(prf);
}
}
@@ -1234,7 +1234,7 @@ static void prefs_call_color_func_callback(GtkWidget *w, gpointer context)
prefs_info *prf = (prefs_info *)context;
if ((prf) && (prf->color_func))
{
- float r, g, b;
+ double r, g, b;
r = ADJUSTMENT_VALUE(prf->radj);
g = ADJUSTMENT_VALUE(prf->gadj);
b = ADJUSTMENT_VALUE(prf->badj);
@@ -1264,11 +1264,11 @@ static gboolean drawer_expose(GtkWidget *w, GdkEventExpose *ev, gpointer data)
static prefs_info *prefs_color_selector_row(const char *label, const char *varname,
color_t current_pixel,
GtkWidget *box,
- void (*color_func)(prefs_info *prf, float r, float g, float b))
+ void (*color_func)(prefs_info *prf, double r, double g, double b))
{
prefs_info *prf = NULL;
GtkWidget *hb, *row, *row2, *sep3;
- float r = 0.0, g = 0.0, b = 0.0;
+ double r = 0.0, g = 0.0, b = 0.0;
prf = (prefs_info *)calloc(1, sizeof(prefs_info));
prf->var_name = varname;
diff --git a/snd-gregion.c b/snd-gregion.c
index 96e4f0a..6596a5b 100644
--- a/snd-gregion.c
+++ b/snd-gregion.c
@@ -150,7 +150,7 @@ static void make_region_labels(file_info *hdr)
#else
set_button_label(chans_text, str);
#endif
- snprintf(str, PRINT_BUFFER_SIZE, "length: %.3f", (float)((double)(hdr->samples) / (float)(hdr->chans * hdr->srate)));
+ snprintf(str, PRINT_BUFFER_SIZE, "length: %.3f", ((double)(hdr->samples) / (double)(hdr->chans * hdr->srate)));
#if (!GTK_CHECK_VERSION(3, 0, 0))
set_label(length_text, str);
#else
diff --git a/snd-gtk.scm b/snd-gtk.scm
index 575c23c..61ba2aa 100644
--- a/snd-gtk.scm
+++ b/snd-gtk.scm
@@ -28,7 +28,7 @@
(func (g_list_nth_data glist i)))))
(define for-each-child
- (let ((documentation "(for-each-child w func) applies func to w and each of its children"))
+ (let ((+documentation+ "(for-each-child w func) applies func to w and each of its children"))
(lambda (w func)
(func w)
(g-list-foreach (gtk_container_get_children (GTK_CONTAINER w))
@@ -37,7 +37,7 @@
(define host-name ; this is the same as (define (machine-name) (caddr ((*libc* 'uname))))
- (let ((documentation "(host-name) -> name of current machine"))
+ (let ((+documentation+ "(host-name) -> name of current machine"))
(lambda ()
(let ((val (gdk_property_get (car (main-widgets))
(gdk_atom_intern "WM_CLIENT_MACHINE" #f)
@@ -374,7 +374,7 @@
#f)))))
(define zync
- (let ((documentation "(zync) ties each sound's y-zoom sliders together so that all change in paralle if one changes"))
+ (let ((+documentation+ "(zync) ties each sound's y-zoom sliders together so that all change in paralle if one changes"))
(lambda ()
(hook-push after-open-hook add-dragger)
(for-each
@@ -384,7 +384,7 @@
(sounds)))))
(define unzync
- (let ((documentation "(unzync) undoes a previous (zync) -- subsequently each sound's y-zoom sliders are independent"))
+ (let ((+documentation+ "(unzync) undoes a previous (zync) -- subsequently each sound's y-zoom sliders are independent"))
(lambda ()
(hook-remove after-open-hook add-dragger)
(for-each
@@ -451,7 +451,7 @@
;;; (remove-main-menu 5) removes the Help menu
(define remove-main-menu
- (let ((documentation "(remove-main-menu menu) removes the specified top-level menu: ((*gtk* 'remove-main-menu) 5) removes the Help menu"))
+ (let ((+documentation+ "(remove-main-menu menu) removes the specified top-level menu: ((*gtk* 'remove-main-menu) 5) removes the Help menu"))
(lambda (menu)
(gtk_widget_hide ((menu-widgets) menu)))))
diff --git a/snd-gutils.c b/snd-gutils.c
index 0730c51..694606a 100644
--- a/snd-gutils.c
+++ b/snd-gutils.c
@@ -947,7 +947,7 @@ void ensure_scrolled_window_row_visible(widget_t list, int row, int num_rows)
{
if (row >= (num_rows - 1))
new_value = maximum;
- else new_value = ((row + 0.5) * ((maximum - minimum) / (float)(num_rows - 1)));
+ else new_value = ((row + 0.5) * ((maximum - minimum) / (double)(num_rows - 1)));
}
if (new_value != ADJUSTMENT_VALUE(v))
ADJUSTMENT_SET_VALUE(v, new_value);
diff --git a/snd-gxcolormaps.c b/snd-gxcolormaps.c
index 0171ead..a7c4702 100644
--- a/snd-gxcolormaps.c
+++ b/snd-gxcolormaps.c
@@ -7,7 +7,7 @@ typedef struct {
Xen lambda;
int gc_loc;
mus_float_t **(*make_rgb)(int size, Xen func);
- void (*get_rgb)(float x, rgb_t *r, rgb_t *g, rgb_t *b);
+ void (*get_rgb)(double x, rgb_t *r, rgb_t *g, rgb_t *b);
} cmap;
static cmap **cmaps = NULL;
@@ -98,12 +98,12 @@ void get_current_color(int index, int n, rgb_t *r, rgb_t *g, rgb_t *b)
cmap *c;
c = cmaps[index];
if (c->get_rgb)
- (c->get_rgb)((float)n / (float)color_map_size(ss), r, g, b);
+ (c->get_rgb)((double)n / (double)color_map_size(ss), r, g, b);
else
{
if (color_map_size(ss) != c->size)
rebuild_colormap(c);
- if (n < c->size)
+ if ((n >= 0) && (n < c->size))
{
(*r) = c->r[n];
(*g) = c->g[n];
@@ -180,7 +180,7 @@ static cmap *new_cmap(const char *name, int size, mus_float_t **rgb)
static cmap *make_builtin_cmap(int size, const char *name,
mus_float_t **(*make_rgb)(int size, Xen ignored),
- void (*get_rgb)(float x, rgb_t *r, rgb_t *g, rgb_t *b))
+ void (*get_rgb)(double x, rgb_t *r, rgb_t *g, rgb_t *b))
{
mus_float_t **rgb = NULL;
cmap *c = NULL;
@@ -328,7 +328,7 @@ static mus_float_t **make_black_and_white_colormap(int size, Xen ignored)
#if USE_GTK
-static void black_and_white_rgb(float n, rgb_t *r, rgb_t *g, rgb_t *b)
+static void black_and_white_rgb(double n, rgb_t *r, rgb_t *g, rgb_t *b)
{
(*r) = 0.0;
(*g) = 0.0;
@@ -360,7 +360,7 @@ static mus_float_t **make_gray_colormap(int size, Xen ignored)
#if USE_GTK
-static void gray_rgb(float n, rgb_t *r, rgb_t *g, rgb_t *b)
+static void gray_rgb(double n, rgb_t *r, rgb_t *g, rgb_t *b)
{
(*r) = n;
(*g) = n;
@@ -390,7 +390,7 @@ static mus_float_t **make_autumn_colormap(int size, Xen ignored)
#if USE_GTK
-static void autumn_rgb(float n, rgb_t *r, rgb_t *g, rgb_t *b)
+static void autumn_rgb(double n, rgb_t *r, rgb_t *g, rgb_t *b)
{
(*r) = 1.0;
(*g) = n;
@@ -420,7 +420,7 @@ static mus_float_t **make_spring_colormap(int size, Xen ignored)
#if USE_GTK
-static void spring_rgb(float n, rgb_t *r, rgb_t *g, rgb_t *b)
+static void spring_rgb(double n, rgb_t *r, rgb_t *g, rgb_t *b)
{
(*r) = 1.0;
(*g) = n;
@@ -450,7 +450,7 @@ static mus_float_t **make_winter_colormap(int size, Xen ignored)
#if USE_GTK
-static void winter_rgb(float n, rgb_t *r, rgb_t *g, rgb_t *b)
+static void winter_rgb(double n, rgb_t *r, rgb_t *g, rgb_t *b)
{
(*r) = 0.0;
(*g) = n;
@@ -480,7 +480,7 @@ static mus_float_t **make_summer_colormap(int size, Xen ignored)
#if USE_GTK
-static void summer_rgb(float n, rgb_t *r, rgb_t *g, rgb_t *b)
+static void summer_rgb(double n, rgb_t *r, rgb_t *g, rgb_t *b)
{
(*r) = n;
(*g) = 0.5 + (0.5 * n);
@@ -510,7 +510,7 @@ static mus_float_t **make_cool_colormap(int size, Xen ignored)
#if USE_GTK
-static void cool_rgb(float n, rgb_t *r, rgb_t *g, rgb_t *b)
+static void cool_rgb(double n, rgb_t *r, rgb_t *g, rgb_t *b)
{
(*r) = n;
(*g) = 1.0 - n;
@@ -540,7 +540,7 @@ static mus_float_t **make_copper_colormap(int size, Xen ignored)
#if USE_GTK
-static void copper_rgb(float x, rgb_t *r, rgb_t *g, rgb_t *b)
+static void copper_rgb(double x, rgb_t *r, rgb_t *g, rgb_t *b)
{
(*r) = (x < 0.8) ? (1.25 * x) : 1.0;
(*g) = 0.8 * x;
@@ -570,7 +570,7 @@ static mus_float_t **make_flag_colormap(int size, Xen ignored)
#if USE_GTK
-static void flag_rgb(float x, rgb_t *r, rgb_t *g, rgb_t *b)
+static void flag_rgb(double x, rgb_t *r, rgb_t *g, rgb_t *b)
{
int k;
k = ((int)(x * color_map_size(ss))) % 4;
@@ -605,7 +605,7 @@ static mus_float_t **make_prism_colormap(int size, Xen ignored)
#if USE_GTK
-static void prism_rgb(float x, rgb_t *r, rgb_t *g, rgb_t *b)
+static void prism_rgb(double x, rgb_t *r, rgb_t *g, rgb_t *b)
{
int k;
mus_float_t rs[6] = {1.0, 1.0, 1.0, 0.0, 0.0, 0.6667};
@@ -644,7 +644,7 @@ static mus_float_t **make_bone_colormap(int size, Xen ignored)
#if USE_GTK
-static void bone_rgb(float x, rgb_t *r, rgb_t *g, rgb_t *b)
+static void bone_rgb(double x, rgb_t *r, rgb_t *g, rgb_t *b)
{
(*r) = (x < .75) ? (x * .875) : ((x * 11.0 / 8.0) - .375);
(*g) = (x < .375) ? (x * .875) : ((x < .75) ? ((x * 29.0 / 24.0) - .125) : ((x * .875) + .125));
@@ -678,7 +678,7 @@ static mus_float_t **make_hot_colormap(int size, Xen ignored)
#if USE_GTK
-static void hot_rgb(float x, rgb_t *r, rgb_t *g, rgb_t *b)
+static void hot_rgb(double x, rgb_t *r, rgb_t *g, rgb_t *b)
{
(*r) = (x < .375) ? (x * 8.0 / 3.0) : 1.0;
(*g) = (x < .375) ? 0.0 : ((x < .75) ? ((x * 8.0 / 3.0) - 1.0) : 1.0);
@@ -712,7 +712,7 @@ static mus_float_t **make_jet_colormap(int size, Xen ignored)
#if USE_GTK
-static void jet_rgb(float x, rgb_t *r, rgb_t *g, rgb_t *b)
+static void jet_rgb(double x, rgb_t *r, rgb_t *g, rgb_t *b)
{
(*r) = (x < .375) ? 0.0 : ((x < .625) ? ((x * 4.0) - 1.5) : ((x < .875) ? 1.0 : ((x * -4.0) + 4.5)));
(*g) = (x < .125) ? 0.0 : ((x < .375) ? ((x * 4.0) - 0.5) : ((x < .625) ? 1.0 : ((x < .875) ? ((x * -4.0) + 3.5) : 0.0)));
@@ -746,7 +746,7 @@ static mus_float_t **make_pink_colormap(int size, Xen ignored)
#if USE_GTK
-static void pink_rgb(float x, rgb_t *r, rgb_t *g, rgb_t *b)
+static void pink_rgb(double x, rgb_t *r, rgb_t *g, rgb_t *b)
{
(*r) = (x < .375) ? (x * 14.0 / 9.0) : ((x * 2.0 / 3.0) + 1.0 / 3.0);
(*g) = (x < .375) ? (x * 2.0 / 3.0) : ((x < .75) ? ((x * 14.0 / 9.0) - 1.0 / 3.0) : ((x * 2.0 / 3.0) + 1.0 / 3.0));
@@ -780,7 +780,7 @@ static mus_float_t **make_rainbow_colormap(int size, Xen ignored)
#if USE_GTK
-static void rainbow_rgb(float x, rgb_t *r, rgb_t *g, rgb_t *b)
+static void rainbow_rgb(double x, rgb_t *r, rgb_t *g, rgb_t *b)
{
(*r) = (x < .4) ? 1.0 : ((x < .6) ? ((x * -5.0) + 3.0) : ((x < .8) ? 0.0 : ((x * 10.0 / 3.0) - 8.0 / 3.0)));
(*g) = (x < .4) ? (x * 2.5) : ((x < .6) ? 1.0 : ((x < .8) ? ((x * -5.0) + 4.0) : 0.0));
@@ -837,7 +837,7 @@ static mus_float_t **make_phases_colormap(int size, Xen ignored)
#if USE_GTK
-void phases_rgb(float x, rgb_t *r, rgb_t *g, rgb_t *b)
+void phases_rgb(double x, rgb_t *r, rgb_t *g, rgb_t *b)
{
x *= (2.0 * M_PI); /* match code above */
@@ -993,6 +993,8 @@ static Xen s7_xen_colormap_length(s7_scheme *sc, Xen obj)
static Xen g_colormap_ref(Xen map, Xen pos);
static Xen s7_colormap_apply(s7_scheme *sc, Xen obj, Xen args)
{
+ if (!s7_is_pair(args))
+ s7_wrong_number_of_args_error(sc, "colormap ref", args);
return(g_colormap_ref(obj, Xen_car(args)));
}
#endif
@@ -1072,7 +1074,7 @@ static Xen g_colormap_ref(Xen map, Xen pos)
map));
x = Xen_real_to_C_double(pos);
- if ((x < 0.0) || (x > 1.0))
+ if ((isnan(x)) || (x < 0.0) || (x > 1.0))
Xen_out_of_range_error(S_colormap_ref, 2, pos, "x must be between 0.0 and 1.0");
get_current_color(index, (int)(color_map_size(ss) * x + 0.5), &r, &g, &b);
@@ -1309,8 +1311,8 @@ void g_init_gxcolormaps(void)
s7_make_signature(s7, 1, i), s7_make_signature(s7, 2, i, i));
#if HAVE_SCHEME
- s7_symbol_set_access(s7, ss->color_map_size_symbol, s7_make_function(s7, "[acc-" S_colormap_size "]", acc_colormap_size, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->color_map_symbol, s7_make_function(s7, "[acc-" S_colormap "]", acc_colormap, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->color_map_size_symbol, s7_make_function(s7, "[acc-" S_colormap_size "]", acc_colormap_size, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->color_map_symbol, s7_make_function(s7, "[acc-" S_colormap "]", acc_colormap, 2, 0, false, "accessor"));
s7_symbol_set_documentation(s7, ss->color_map_size_symbol, "*colormap-size*: current colormap size; default is 512.");
s7_symbol_set_documentation(s7, ss->color_map_symbol, "*colormap*: current colormap choice.");
diff --git a/snd-help.c b/snd-help.c
index 86c685b..dc54c75 100644
--- a/snd-help.c
+++ b/snd-help.c
@@ -3572,7 +3572,7 @@ and its value is returned."
{
if (Xen_is_procedure(sym))
{
- str = (char *)s7_procedure_documentation(s7, sym);
+ str = (char *)s7_documentation(s7, sym);
if (((!str) ||
(mus_strlen(str) == 0)) &&
@@ -3893,8 +3893,8 @@ If more than one hook function, each function gets the previous function's outpu
#if HAVE_SCHEME
autoload_info(s7); /* snd-xref.c included above */
- s7_symbol_set_access(s7, ss->html_dir_symbol, s7_make_function(s7, "[acc-" S_html_dir "]", acc_html_dir, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->html_program_symbol, s7_make_function(s7, "[acc-" S_html_program "]", acc_html_program, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->html_dir_symbol, s7_make_function(s7, "[acc-" S_html_dir "]", acc_html_dir, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->html_program_symbol, s7_make_function(s7, "[acc-" S_html_program "]", acc_html_program, 2, 0, false, "accessor"));
s7_symbol_set_documentation(s7, ss->html_dir_symbol, "*html-dir*: location of Snd documentation");
s7_symbol_set_documentation(s7, ss->html_program_symbol, "*html-program*: name of documentation reader (firefox)");
diff --git a/snd-ladspa.c b/snd-ladspa.c
index a2b4d10..ebf7bfd 100644
--- a/snd-ladspa.c
+++ b/snd-ladspa.c
@@ -611,7 +611,7 @@ Information about parameters can be acquired using " S_analyse_ladspa "."
if ((Xen_list_length(ladspa_plugin_configuration) < 2) ||
(!(Xen_is_string(Xen_car(ladspa_plugin_configuration)))) ||
(!(Xen_is_string(Xen_cadr(ladspa_plugin_configuration)))))
- Xen_check_type(0, ladspa_plugin_configuration, 2, S_apply_ladspa, "a list of 2 or more strings");
+ Xen_check_type(false, ladspa_plugin_configuration, 2, S_apply_ladspa, "a list of 2 or more strings");
/* Third parameter is the number of samples to process. */
Xen_check_type(Xen_is_number(samples),
@@ -881,7 +881,7 @@ Information about parameters can be acquired using " S_analyse_ladspa "."
else
{
beg = 0;
- if (i < sp->nchans)
+ if (i < (int)(sp->nchans))
ncp = sp->chans[i];
else break;
}
diff --git a/snd-listener.c b/snd-listener.c
index 849f64c..c5658ec 100644
--- a/snd-listener.c
+++ b/snd-listener.c
@@ -315,11 +315,11 @@ If it returns true, Snd assumes you've dealt the text yourself, and does not try
#if HAVE_SCHEME
#if USE_GTK
s7_symbol_set_documentation(s7, ss->listener_colorized_symbol, "*listener-colorized*: number of vector elements to print in the listener (default: 12)");
- s7_symbol_set_access(s7, ss->listener_colorized_symbol, s7_make_function(s7, "[acc-" S_listener_colorized "]", acc_listener_colorized, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->listener_colorized_symbol, s7_make_function(s7, "[acc-" S_listener_colorized "]", acc_listener_colorized, 2, 0, false, "accessor"));
#endif
s7_symbol_set_documentation(s7, ss->listener_prompt_symbol, "*listener-prompt*: the current lisp listener prompt string (\">\") ");
- s7_symbol_set_access(s7, ss->listener_prompt_symbol, s7_make_function(s7, "[acc-" S_listener_prompt "]", acc_listener_prompt, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->listener_prompt_symbol, s7_make_function(s7, "[acc-" S_listener_prompt "]", acc_listener_prompt, 2, 0, false, "accessor"));
s7_symbol_set_documentation(s7, ss->stdin_prompt_symbol, "*stdin-prompt*: the current stdin prompt string");
- s7_symbol_set_access(s7, ss->stdin_prompt_symbol, s7_make_function(s7, "[acc-" S_stdin_prompt "]", acc_stdin_prompt, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->stdin_prompt_symbol, s7_make_function(s7, "[acc-" S_stdin_prompt "]", acc_stdin_prompt, 2, 0, false, "accessor"));
#endif
}
diff --git a/snd-main.c b/snd-main.c
index 25c7631..b904cb6 100644
--- a/snd-main.c
+++ b/snd-main.c
@@ -2489,33 +2489,33 @@ the hook functions return " PROC_TRUE ", the save state process opens the file '
s7_symbol_set_documentation(s7, ss->with_relative_panes_symbol, "*with-relative-panes*: #t if multichannel sounds should try to maintain relative pane sizes");
s7_symbol_set_documentation(s7, ss->open_file_dialog_directory_symbol, "*open-file-dialog-directory*: name of directory for initial open file dialog search");
- s7_symbol_set_access(s7, ss->temp_dir_symbol, s7_make_function(s7, "[acc-" S_temp_dir "]", acc_temp_dir, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->save_dir_symbol, s7_make_function(s7, "[acc-" S_save_dir "]", acc_save_dir, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->ladspa_dir_symbol, s7_make_function(s7, "[acc-" S_ladspa_dir "]", acc_ladspa_dir, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->peak_env_dir_symbol, s7_make_function(s7, "[acc-" S_peak_env_dir "]", acc_peak_env_dir, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->listener_font_symbol, s7_make_function(s7, "[acc-" S_listener_font "]", acc_listener_font, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->axis_label_font_symbol, s7_make_function(s7, "[acc-" S_axis_label_font "]", acc_axis_label_font, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->axis_numbers_font_symbol, s7_make_function(s7, "[acc-" S_axis_numbers_font "]", acc_axis_numbers_font, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->tiny_font_symbol, s7_make_function(s7, "[acc-" S_tiny_font "]", acc_tiny_font, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->peaks_font_symbol, s7_make_function(s7, "[acc-" S_peaks_font "]", acc_peaks_font, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->bold_peaks_font_symbol, s7_make_function(s7, "[acc-" S_bold_peaks_font "]", acc_bold_peaks_font, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->with_inset_graph_symbol, s7_make_function(s7, "[acc-" S_with_inset_graph "]", acc_with_inset_graph, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->with_pointer_focus_symbol, s7_make_function(s7, "[acc-" S_with_pointer_focus "]", acc_with_pointer_focus, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->with_smpte_label_symbol, s7_make_function(s7, "[acc-" S_with_smpte_label "]", acc_with_smpte_label, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->with_interrupts_symbol, s7_make_function(s7, "[acc-" S_with_interrupts "]", acc_with_interrupts, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->color_scale_symbol, s7_make_function(s7, "[acc-" S_color_scale "]", acc_color_scale, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->color_cutoff_symbol, s7_make_function(s7, "[acc-" S_color_cutoff "]", acc_color_cutoff, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->color_inverted_symbol, s7_make_function(s7, "[acc-" S_color_inverted "]", acc_color_inverted, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->auto_resize_symbol, s7_make_function(s7, "[acc-" S_auto_resize "]", acc_auto_resize, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->print_length_symbol, s7_make_function(s7, "[acc-" S_print_length "]", acc_print_length, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->selection_creates_region_symbol, s7_make_function(s7, "[acc-" S_selection_creates_region "]", acc_selection_creates_region, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->save_state_file_symbol, s7_make_function(s7, "[acc-" S_save_state_file "]", acc_save_state_file, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->with_background_processes_symbol, s7_make_function(s7, "[acc-" S_with_background_processes "]", acc_with_background_processes, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->with_file_monitor_symbol, s7_make_function(s7, "[acc-" S_with_file_monitor "]", acc_with_file_monitor, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->show_indices_symbol, s7_make_function(s7, "[acc-" S_show_indices "]", acc_show_indices, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->just_sounds_symbol, s7_make_function(s7, "[acc-" S_just_sounds "]", acc_just_sounds, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->play_arrow_size_symbol, s7_make_function(s7, "[acc-" S_play_arrow_size "]", acc_play_arrow_size, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->with_relative_panes_symbol, s7_make_function(s7, "[acc-" S_with_relative_panes "]", acc_with_relative_panes, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->open_file_dialog_directory_symbol, s7_make_function(s7, "[acc-" S_open_file_dialog_directory "]", acc_open_file_dialog_directory, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->temp_dir_symbol, s7_make_function(s7, "[acc-" S_temp_dir "]", acc_temp_dir, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->save_dir_symbol, s7_make_function(s7, "[acc-" S_save_dir "]", acc_save_dir, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->ladspa_dir_symbol, s7_make_function(s7, "[acc-" S_ladspa_dir "]", acc_ladspa_dir, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->peak_env_dir_symbol, s7_make_function(s7, "[acc-" S_peak_env_dir "]", acc_peak_env_dir, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->listener_font_symbol, s7_make_function(s7, "[acc-" S_listener_font "]", acc_listener_font, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->axis_label_font_symbol, s7_make_function(s7, "[acc-" S_axis_label_font "]", acc_axis_label_font, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->axis_numbers_font_symbol, s7_make_function(s7, "[acc-" S_axis_numbers_font "]", acc_axis_numbers_font, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->tiny_font_symbol, s7_make_function(s7, "[acc-" S_tiny_font "]", acc_tiny_font, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->peaks_font_symbol, s7_make_function(s7, "[acc-" S_peaks_font "]", acc_peaks_font, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->bold_peaks_font_symbol, s7_make_function(s7, "[acc-" S_bold_peaks_font "]", acc_bold_peaks_font, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->with_inset_graph_symbol, s7_make_function(s7, "[acc-" S_with_inset_graph "]", acc_with_inset_graph, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->with_pointer_focus_symbol, s7_make_function(s7, "[acc-" S_with_pointer_focus "]", acc_with_pointer_focus, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->with_smpte_label_symbol, s7_make_function(s7, "[acc-" S_with_smpte_label "]", acc_with_smpte_label, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->with_interrupts_symbol, s7_make_function(s7, "[acc-" S_with_interrupts "]", acc_with_interrupts, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->color_scale_symbol, s7_make_function(s7, "[acc-" S_color_scale "]", acc_color_scale, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->color_cutoff_symbol, s7_make_function(s7, "[acc-" S_color_cutoff "]", acc_color_cutoff, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->color_inverted_symbol, s7_make_function(s7, "[acc-" S_color_inverted "]", acc_color_inverted, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->auto_resize_symbol, s7_make_function(s7, "[acc-" S_auto_resize "]", acc_auto_resize, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->print_length_symbol, s7_make_function(s7, "[acc-" S_print_length "]", acc_print_length, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->selection_creates_region_symbol, s7_make_function(s7, "[acc-" S_selection_creates_region "]", acc_selection_creates_region, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->save_state_file_symbol, s7_make_function(s7, "[acc-" S_save_state_file "]", acc_save_state_file, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->with_background_processes_symbol, s7_make_function(s7, "[acc-" S_with_background_processes "]", acc_with_background_processes, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->with_file_monitor_symbol, s7_make_function(s7, "[acc-" S_with_file_monitor "]", acc_with_file_monitor, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->show_indices_symbol, s7_make_function(s7, "[acc-" S_show_indices "]", acc_show_indices, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->just_sounds_symbol, s7_make_function(s7, "[acc-" S_just_sounds "]", acc_just_sounds, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->play_arrow_size_symbol, s7_make_function(s7, "[acc-" S_play_arrow_size "]", acc_play_arrow_size, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->with_relative_panes_symbol, s7_make_function(s7, "[acc-" S_with_relative_panes "]", acc_with_relative_panes, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->open_file_dialog_directory_symbol, s7_make_function(s7, "[acc-" S_open_file_dialog_directory "]", acc_open_file_dialog_directory, 2, 0, false, "accessor"));
#endif
}
diff --git a/snd-marks.c b/snd-marks.c
index a96d786..05ed67e 100644
--- a/snd-marks.c
+++ b/snd-marks.c
@@ -3013,8 +3013,8 @@ If the hook returns " PROC_TRUE ", the mark is not drawn."
draw_mark_hook = Xen_define_hook(S_draw_mark_hook, "(make-hook 'id)", 1, H_draw_mark_hook);
#if HAVE_SCHEME
- s7_symbol_set_access(s7, ss->mark_tag_height_symbol, s7_make_function(s7, "[acc-" S_mark_tag_height "]", acc_mark_tag_height, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->mark_tag_width_symbol, s7_make_function(s7, "[acc-" S_mark_tag_width "]", acc_mark_tag_width, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->mark_tag_height_symbol, s7_make_function(s7, "[acc-" S_mark_tag_height "]", acc_mark_tag_height, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->mark_tag_width_symbol, s7_make_function(s7, "[acc-" S_mark_tag_width "]", acc_mark_tag_width, 2, 0, false, "accessor"));
s7_symbol_set_documentation(s7, ss->mark_tag_height_symbol, "*mark-tag-height*: height (pixels) of mark tags (4)");
s7_symbol_set_documentation(s7, ss->mark_tag_width_symbol, "*mark-tag-width*: width (pixels) of mark tags (10)");
diff --git a/snd-mix.c b/snd-mix.c
index 501052f..5f059f9 100644
--- a/snd-mix.c
+++ b/snd-mix.c
@@ -908,7 +908,7 @@ void mix_info_to_file(FILE *fd, chan_info *cp)
fprintf(fd, "\n (set! (mix-tag-y (m %d)) %d)", n, md->tag_y);
if (md->color != ss->mix_color)
{
- float r, g, b;
+ double r, g, b;
#if USE_MOTIF
XColor tmp_color;
Display *dpy;
@@ -2293,7 +2293,7 @@ static void stop_watch_mix_proc(void)
}
-static float watch_mix_x_incr = 1.0;
+static double watch_mix_x_incr = 1.0;
#if (!USE_NO_GUI)
static TIMEOUT_TYPE watch_mix(TIMEOUT_ARGS)
@@ -3531,8 +3531,12 @@ auto-delete is " PROC_TRUE ", the input file is deleted when it is no longer nee
if (!cp) return(Xen_false);
if (Xen_is_llong(chn_samp_n))
- beg = Xen_llong_to_C_llong(chn_samp_n);
-
+ {
+ beg = Xen_llong_to_C_llong(chn_samp_n);
+ if ((beg < 0) ||
+ (beg > 4294967296LL))
+ Xen_out_of_range_error(S_mix, 2, chn_samp_n, "begin time should be reasonable");
+ }
chans = mus_sound_chans(name);
if (chans <= 0)
{
@@ -4322,10 +4326,10 @@ void g_init_mix(void)
draw_mix_hook = Xen_define_hook(S_draw_mix_hook, "(make-hook 'id 'old-x 'old-y 'x 'y)", 5, H_draw_mix_hook);
#if HAVE_SCHEME
- s7_symbol_set_access(s7, ss->mix_tag_height_symbol, s7_make_function(s7, "[acc-" S_mix_tag_height "]", acc_mix_tag_height, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->mix_tag_width_symbol, s7_make_function(s7, "[acc-" S_mix_tag_width "]", acc_mix_tag_width, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->mix_waveform_height_symbol, s7_make_function(s7, "[acc-" S_mix_waveform_height "]", acc_mix_waveform_height, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->with_mix_tags_symbol, s7_make_function(s7, "[acc-" S_with_mix_tags "]", acc_with_mix_tags, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->mix_tag_height_symbol, s7_make_function(s7, "[acc-" S_mix_tag_height "]", acc_mix_tag_height, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->mix_tag_width_symbol, s7_make_function(s7, "[acc-" S_mix_tag_width "]", acc_mix_tag_width, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->mix_waveform_height_symbol, s7_make_function(s7, "[acc-" S_mix_waveform_height "]", acc_mix_waveform_height, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->with_mix_tags_symbol, s7_make_function(s7, "[acc-" S_with_mix_tags "]", acc_with_mix_tags, 2, 0, false, "accessor"));
s7_symbol_set_documentation(s7, ss->mix_tag_height_symbol, "*mix-tag-height*: height (pixels) of mix tags (14)");
s7_symbol_set_documentation(s7, ss->mix_tag_width_symbol, "*mix-tag-width*: width (pixels) of mix tags (6)");
diff --git a/snd-motif.c b/snd-motif.c
index 1ba3f84..c196641 100644
--- a/snd-motif.c
+++ b/snd-motif.c
@@ -790,7 +790,7 @@ static void ensure_scrolled_window_row_visible(widget_t list, int row, int num_r
{
if (row >= (num_rows - 1))
new_value = maximum;
- else new_value = (int)((row + 0.5) * ((float)(maximum - minimum) / (float)(num_rows - 1)));
+ else new_value = (int)((row + 0.5) * ((double)(maximum - minimum) / (double)(num_rows - 1)));
}
XmScrollBarSetValues(scrollbar, new_value, size, increment, page_increment, true);
}
@@ -4221,8 +4221,8 @@ void reflect_mix_change(int mix_id)
beg = mix_position_from_id(mix_dialog_id);
len = mix_length_from_id(mix_dialog_id);
snprintf(lab, LABEL_BUFFER_SIZE, "%.3f : %.3f%s",
- (float)((double)beg / (float)snd_srate(cp->sound)),
- (float)((double)(beg + len) / (float)snd_srate(cp->sound)),
+ ((double)beg / (double)snd_srate(cp->sound)),
+ ((double)(beg + len) / (double)snd_srate(cp->sound)),
(mix_is_active(mix_dialog_id)) ? "" : " (locked)");
XmTextSetString(w_beg, lab);
@@ -7819,7 +7819,7 @@ static void make_region_labels(file_info *hdr)
set_label(reg_srtxt, str);
snprintf(str, PRINT_BUFFER_SIZE, "chans: %d", hdr->chans);
set_label(reg_chntxt, str);
- snprintf(str, PRINT_BUFFER_SIZE, "length: %.3f", (float)((double)(hdr->samples) / (float)(hdr->chans * hdr->srate)));
+ snprintf(str, PRINT_BUFFER_SIZE, "length: %.3f", ((double)(hdr->samples) / (double)(hdr->chans * hdr->srate)));
set_label(reg_lentxt, str);
snprintf(str, PRINT_BUFFER_SIZE, "maxamp: %.3f", region_maxamp(region_list_position_to_id(current_region)));
set_label(reg_maxtxt, str);
@@ -9682,7 +9682,7 @@ static void post_sound_info(Widget info1, Widget info2, const char *filename, bo
mus_sound_chans(filename),
(mus_sound_chans(filename) > 1) ? "s" : "",
mus_sound_srate(filename),
- mus_sound_duration(filename));
+ (double)mus_sound_duration(filename));
label = XmStringCreateLocalized(buf);
XtVaSetValues(info1,
XmNlabelString, label,
@@ -17089,7 +17089,7 @@ static Xen g_view_files_set_selected_files(Xen dialog, Xen files)
for (i = 0; i < len; i++)
if (!(Xen_is_string(Xen_list_ref(files, i))))
{
- Xen_check_type(0, Xen_list_ref(files, i), i, S_set S_view_files_selected_files, "a filename (string)");
+ Xen_check_type(false, Xen_list_ref(files, i), i, S_set S_view_files_selected_files, "a filename (string)");
return(Xen_false);
}
cfiles = (char **)calloc(len, sizeof(char *));
@@ -17134,7 +17134,7 @@ static Xen g_view_files_set_files(Xen dialog, Xen files)
for (i = 0; i < len; i++)
if (!(Xen_is_string(Xen_list_ref(files, i))))
{
- Xen_check_type(0, Xen_list_ref(files, i), i, S_set S_view_files_files, "a filename (string)");
+ Xen_check_type(false, Xen_list_ref(files, i), i, S_set S_view_files_files, "a filename (string)");
return(Xen_false);
}
cfiles = (char **)calloc(len, sizeof(char *));
@@ -17606,7 +17606,7 @@ typedef struct prefs_info {
void (*arrow_down_func)(struct prefs_info *prf);
void (*text_func)(struct prefs_info *prf);
void (*list_func)(struct prefs_info *prf, char *value);
- void (*color_func)(struct prefs_info *prf, float r, float g, float b);
+ void (*color_func)(struct prefs_info *prf, double r, double g, double b);
void (*reflect_func)(struct prefs_info *prf);
void (*save_func)(struct prefs_info *prf, FILE *fd);
const char *(*help_func)(struct prefs_info *prf);
@@ -18701,7 +18701,7 @@ static color_t rgb_to_color(mus_float_t r, mus_float_t g, mus_float_t b)
}
-static void pixel_to_rgb(Pixel pix, float *r, float *g, float *b)
+static void pixel_to_rgb(Pixel pix, double *r, double *g, double *b)
{
XColor tmp_color;
Display *dpy;
@@ -18787,10 +18787,10 @@ static void prefs_r_callback(Widget w, XtPointer context, XtPointer info)
{
prefs_info *prf = (prefs_info *)context;
char *str;
- float r;
+ double r;
str = XmTextFieldGetString(w);
redirect_errors_to(errors_to_color_text, (void *)prf);
- r = (float)string_to_mus_float_t(str, 0.0, "red amount");
+ r = (double)string_to_mus_float_t(str, 0.0, "red amount");
redirect_errors_to(NULL, NULL);
XmScrollBarSetValue(prf->rscl, mus_iclamp(0, (int)(COLOR_MAX * r), COLOR_MAX));
@@ -18804,10 +18804,10 @@ static void prefs_g_callback(Widget w, XtPointer context, XtPointer info)
{
prefs_info *prf = (prefs_info *)context;
char *str;
- float r;
+ double r;
str = XmTextFieldGetString(w);
redirect_errors_to(errors_to_color_text, (void *)prf);
- r = (float)string_to_mus_float_t(str, 0.0, "green amount");
+ r = (double)string_to_mus_float_t(str, 0.0, "green amount");
redirect_errors_to(NULL, NULL);
XmScrollBarSetValue(prf->gscl, mus_iclamp(0, (int)(COLOR_MAX * r), COLOR_MAX));
@@ -18821,10 +18821,10 @@ static void prefs_b_callback(Widget w, XtPointer context, XtPointer info)
{
prefs_info *prf = (prefs_info *)context;
char *str;
- float r;
+ double r;
str = XmTextFieldGetString(w);
redirect_errors_to(errors_to_color_text, (void *)prf);
- r = (float)string_to_mus_float_t(str, 0.0, "blue amount");
+ r = (double)string_to_mus_float_t(str, 0.0, "blue amount");
redirect_errors_to(NULL, NULL);
XmScrollBarSetValue(prf->bscl, mus_iclamp(0, (int)(COLOR_MAX * r), COLOR_MAX));
@@ -18845,14 +18845,14 @@ static void prefs_call_color_func_callback(Widget w, XtPointer context, XtPointe
XmScrollBarGetValue(prf->gscl, &ig);
XmScrollBarGetValue(prf->bscl, &ib);
- (*(prf->color_func))(prf, (float)ir / COLOR_MAXF, (float)ig / COLOR_MAXF, (float)ib / COLOR_MAXF);
+ (*(prf->color_func))(prf, (double)ir / COLOR_MAXF, (double)ig / COLOR_MAXF, (double)ib / COLOR_MAXF);
}
}
static void scale_set_color(prefs_info *prf, color_t pixel)
{
- float r = 0.0, g = 0.0, b = 0.0;
+ double r = 0.0, g = 0.0, b = 0.0;
pixel_to_rgb(pixel, &r, &g, &b);
float_to_textfield(prf->rtxt, r);
XmScrollBarSetValue(prf->rscl, (int)(COLOR_MAX * r));
@@ -18869,14 +18869,14 @@ static Pixel red, green, blue;
static prefs_info *prefs_color_selector_row(const char *label, const char *varname,
Pixel current_pixel,
Widget box, Widget top_widget,
- void (*color_func)(prefs_info *prf, float r, float g, float b))
+ void (*color_func)(prefs_info *prf, double r, double g, double b))
{
Arg args[20];
int n;
prefs_info *prf = NULL;
Widget sep, sep1, frame;
XtCallbackList n1;
- float r = 0.0, g = 0.0, b = 0.0;
+ double r = 0.0, g = 0.0, b = 0.0;
prf = (prefs_info *)calloc(1, sizeof(prefs_info));
prf->var_name = varname;
@@ -25806,7 +25806,7 @@ static void channel_drag_watcher(Widget w, const char *str, Position x, Position
sp = ss->sounds[snd];
if (snd_ok(sp))
{
- float seconds;
+ mus_float_t seconds;
chan_info *cp;
switch (dtype)
{
@@ -25815,7 +25815,7 @@ static void channel_drag_watcher(Widget w, const char *str, Position x, Position
cp = sp->chans[chn];
if ((sp->nchans > 1) && (sp->channel_style == CHANNELS_COMBINED))
cp = which_channel(sp, y);
- seconds = (float)(ungrf_x(cp->axis, x));
+ seconds = ungrf_x(cp->axis, x);
if (seconds < 0.0) seconds = 0.0;
if (sp->nchans > 1)
status_report(sp, "drop to mix file in chan %d at %.4f", cp->chan + 1, seconds);
@@ -26607,7 +26607,6 @@ static Xen g_set_graph_cursor(Xen curs)
}
-
#include <X11/xpm.h>
#define sound_env_editor(Sp) ((env_editor *)(sp->flt))
@@ -27847,7 +27846,7 @@ static void watch_sash(Widget w, XtPointer closure, XtPointer info)
{
/* this pane has multiple chans and its size has changed enough to matter */
Dimension total_inner = 0, diff;
- float ratio;
+ double ratio;
for (k = 0; k < (int)sp->nchans; k++)
total_inner += inner_sizes[outer_ctr][k];
@@ -27856,7 +27855,7 @@ static void watch_sash(Widget w, XtPointer closure, XtPointer info)
for (k = 0; k < (int)sp->nchans; k++)
XtUnmanageChild(channel_main_pane(sp->chans[k]));
- ratio = (float)(cur_outer_size - diff) / (float)(outer_sizes[outer_ctr] - diff);
+ ratio = (double)(cur_outer_size - diff) / (double)(outer_sizes[outer_ctr] - diff);
if (ratio > 0.0)
{
for (k = 0; k < (int)sp->nchans; k++)
@@ -31086,11 +31085,11 @@ void g_init_motif(void)
#if HAVE_SCHEME
- s7_symbol_set_access(s7, ss->view_files_sort_symbol, s7_make_function(s7, "[acc-" S_view_files_sort "]", acc_view_files_sort, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->view_files_sort_symbol, s7_make_function(s7, "[acc-" S_view_files_sort "]", acc_view_files_sort, 2, 0, false, "accessor"));
top_level_let = s7_nil(s7);
s7_define_variable(s7, "top-level-let",
s7_dilambda(s7, "top-level-let", g_top_level_let, 0, 0, g_set_top_level_let, 1, 0, "listener environment"));
- s7_symbol_set_access(s7, ss->graph_cursor_symbol, s7_make_function(s7, "[acc-" S_graph_cursor "]", acc_graph_cursor, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->graph_cursor_symbol, s7_make_function(s7, "[acc-" S_graph_cursor "]", acc_graph_cursor, 2, 0, false, "accessor"));
s7_symbol_set_documentation(s7, ss->graph_cursor_symbol, "*graph-cursor*: current graph cursor shape");
#endif
diff --git a/snd-motif.scm b/snd-motif.scm
index dca694d..fcac9bd 100644
--- a/snd-motif.scm
+++ b/snd-motif.scm
@@ -43,34 +43,34 @@
(else (find-if pred (cdr lst)))))
(define load-font
- (let ((documentation "(load-font name) loads the font 'name', returning the font id"))
+ (let ((+documentation+ "(load-font name) loads the font 'name', returning the font id"))
(lambda (name)
(let ((fs (XLoadQueryFont (XtDisplay (cadr (main-widgets))) name)))
(and fs (XFontStruct? fs) (.fid fs))))))
(define current-screen
- (let ((documentation "(current-screen) returns the current X screen number of the current display"))
+ (let ((+documentation+ "(current-screen) returns the current X screen number of the current display"))
(lambda ()
(DefaultScreenOfDisplay
(XtDisplay (cadr (main-widgets)))))))
(define white-pixel
- (let ((documentation "(white-pixel) returns a white pixel"))
+ (let ((+documentation+ "(white-pixel) returns a white pixel"))
(lambda ()
(WhitePixelOfScreen (current-screen)))))
(define black-pixel
- (let ((documentation "(black-pixel) returns a black pixel"))
+ (let ((+documentation+ "(black-pixel) returns a black pixel"))
(lambda ()
(BlackPixelOfScreen (current-screen)))))
(define screen-depth
- (let ((documentation "(screen-depth) returns the current screen depth"))
+ (let ((+documentation+ "(screen-depth) returns the current screen depth"))
(lambda ()
(DefaultDepthOfScreen (current-screen)))))
(define xm-clean-string
- (let ((documentation "(xm-clean-string str) changes slash to underbar in the filename 'str' (for the peak env file)"))
+ (let ((+documentation+ "(xm-clean-string str) changes slash to underbar in the filename 'str' (for the peak env file)"))
(lambda (str)
;; full file name should be unique, so I think we need only fix it up to look like a flat name
(let ((len (length str)))
@@ -84,7 +84,7 @@
;;; -------- apply func to every widget belonging to w (and w) --------
(define for-each-child
- (let ((documentation "(for-each-child w func) applies func to w and its descendents"))
+ (let ((+documentation+ "(for-each-child w func) applies func to w and its descendents"))
(lambda (w func)
(func w)
(if (XtIsComposite w)
@@ -94,7 +94,7 @@
(cadr (XtGetValues w (list XmNchildren 0) 1)))))))
(define find-child
- (let ((documentation "(find-child widget name) returns a widget named 'name', if one can be found in the widget hierarchy beneath 'widget'"))
+ (let ((+documentation+ "(find-child widget name) returns a widget named 'name', if one can be found in the widget hierarchy beneath 'widget'"))
(lambda (widget name)
;; unfortunately, if the widget's name has been set for some non-English locale, this
;; won't work -- we need to add gettext support (see snd.c for an example)
@@ -108,7 +108,7 @@
(throw 'no-such-widget (list "find-child" name)))))))
(define display-widget-tree
- (let ((documentation "(display-widget-tree widget) displays the hierarchy of widgets beneath 'widget'"))
+ (let ((+documentation+ "(display-widget-tree widget) displays the hierarchy of widgets beneath 'widget'"))
(lambda (widget)
(let display-widget ((w widget)
(spaces ""))
@@ -123,7 +123,7 @@
(cadr (XtGetValues w (list XmNchildren 0) 1)))))))))
(define set-main-color-of-widget
- (let ((documentation "(set-main-color-of-widget w) sets the background color of widget 'w'"))
+ (let ((+documentation+ "(set-main-color-of-widget w) sets the background color of widget 'w'"))
(lambda (w)
(for-each-child
w
@@ -132,7 +132,7 @@
(XmChangeColor n (if (XmIsScrollBar n) *position-color* *basic-color*))))))))
(define host-name
- (let ((documentation "(host-name) -> name of current machine"))
+ (let ((+documentation+ "(host-name) -> name of current machine"))
(lambda ()
(let ((host (let ((dpy (XtDisplay (cadr (main-widgets))))
(win (XtWindow (cadr (main-widgets)))))
@@ -221,7 +221,7 @@
;;; change File:Open (or File:Mix) so that clicking "ok" does not "unmanage" the dialog
(define keep-file-dialog-open-upon-ok
- (let ((documentation "(keep-file-dialog-open-upon-ok) changes the File:Open menu so that clicking 'ok' does not close the dialog"))
+ (let ((+documentation+ "(keep-file-dialog-open-upon-ok) changes the File:Open menu so that clicking 'ok' does not close the dialog"))
(lambda ()
(let ((dialog (open-file-dialog #f)))
(XtRemoveAllCallbacks dialog XmNokCallback) ; remove built-in version
@@ -248,7 +248,7 @@
;;; (zync) to start and (unzync) to stop
(define remove-dragger
- (let ((documentation "(remove-dragger snd) undoes an earlier add-dragger which syncs together all the y-zoom sliders"))
+ (let ((+documentation+ "(remove-dragger snd) undoes an earlier add-dragger which syncs together all the y-zoom sliders"))
(lambda (snd)
(let ((calls (sound-property 'dragger snd)))
(if calls
@@ -260,7 +260,7 @@
(set! (sound-property 'dragger snd) #f))))
(define add-dragger
- (let ((documentation "(add-dragger snd) syncs together y-zoom sliders"))
+ (let ((+documentation+ "(add-dragger snd) syncs together y-zoom sliders"))
(lambda (hook)
(let ((snd (hook 'snd)))
(set! (sound-property 'save-state-ignore snd)
@@ -289,7 +289,7 @@
(set! calls (cons new-callback calls)))))))))
(define zync
- (let ((documentation "(zync) ties each sound's y-zoom sliders together so that all change in parallel if one changes"))
+ (let ((+documentation+ "(zync) ties each sound's y-zoom sliders together so that all change in parallel if one changes"))
(lambda ()
(hook-push after-open-hook add-dragger)
(for-each
@@ -299,7 +299,7 @@
(sounds)))))
(define unzync
- (let ((documentation "(unzync) undoes a previous (zync) -- subsequently each sound's y-zoom sliders are independent"))
+ (let ((+documentation+ "(unzync) undoes a previous (zync) -- subsequently each sound's y-zoom sliders are independent"))
(lambda ()
(hook-remove after-open-hook add-dragger)
(for-each
@@ -313,7 +313,7 @@
;;; -------- add our own pane to the channel section --------
(define add-channel-pane
- (let ((documentation "(add-channel-pane snd chn name type (args ())) adds a pane to the channel section"))
+ (let ((+documentation+ "(add-channel-pane snd chn name type (args ())) adds a pane to the channel section"))
(lambda* (snd chn name type (args ()))
(XtCreateManagedWidget name type (XtParent (XtParent ((channel-widgets snd chn) 7))) args))))
@@ -321,7 +321,7 @@
;;; -------- add our own pane to the sound section (underneath the controls in this case) --------
(define add-sound-pane
- (let ((documentation "(add-sound-pane snd name type (args ())) adds a pane to the sound section (underneath the control panel)"))
+ (let ((+documentation+ "(add-sound-pane snd name type (args ())) adds a pane to the sound section (underneath the control panel)"))
(lambda* (snd name type (args ()))
(XtCreateManagedWidget name type (car (sound-widgets snd)) args))))
@@ -329,7 +329,7 @@
;;; -------- add our own pane to the overall Snd window (underneath the listener in this case) --------
(define add-main-pane
- (let ((documentation "(add-main-pane name type (args ())) adds a pane to Snd (underneath the listener)"))
+ (let ((+documentation+ "(add-main-pane name type (args ())) adds a pane to Snd (underneath the listener)"))
(lambda* (name type (args ()))
(XtCreateManagedWidget name type (or ((main-widgets) 5) ((main-widgets) 3)) args))))
@@ -337,7 +337,7 @@
;;; -------- add a widget at the top of the listener
(define add-listener-pane
- (let ((documentation "(add-listener-pane name type args) adds a widget at the top of the listener"))
+ (let ((+documentation+ "(add-listener-pane name type args) adds a widget at the top of the listener"))
(lambda (name type args)
(let* ((listener-scroll (XtParent (find-child (cadr (main-widgets)) "lisp-listener")))
(listener-form (XtParent listener-scroll)))
@@ -362,7 +362,7 @@
; XmNforeground *data-color*))
(define remove-menu-bar-menu
- (let ((documentation "(remove-menu-bar-menu which) removes a top-level menu; 'which' can be 0: top-level-menu-bar, 1: file-menu, \
+ (let ((+documentation+ "(remove-menu-bar-menu which) removes a top-level menu; 'which' can be 0: top-level-menu-bar, 1: file-menu, \
2: edit-menu, 3: view-menu, 4: options-menu, 5: help-menu, 6: default popup menu"))
(lambda (which)
(XtUnmanageChild ((menu-widgets) which)))))
@@ -401,7 +401,7 @@
;;; -------- disable control panel --------
(define disable-control-panel
- (let ((documentation "(disable-control-panel snd) disables the control panel for the sound 'snd'"))
+ (let ((+documentation+ "(disable-control-panel snd) disables the control panel for the sound 'snd'"))
(lambda (snd)
(let ((swc (caddr (sound-widgets snd))))
(for-each-child swc
@@ -420,7 +420,7 @@
;;; -------- bring possibly-obscured dialog to top
(define raise-dialog
- (let ((documentation "(raise-dialog w) tries to bring 'w' to the top of the widget heirarchy"))
+ (let ((+documentation+ "(raise-dialog w) tries to bring 'w' to the top of the widget heirarchy"))
(lambda (w)
(if (and (Widget? w)
(XtIsManaged w))
@@ -437,7 +437,7 @@
(define fmv-dialog #f)
(define create-fmv-dialog
- (let ((documentation "(create-fmv-dialog) makes a dialog that runs the fm-violin instrument with various controls"))
+ (let ((+documentation+ "(create-fmv-dialog) makes a dialog that runs the fm-violin instrument with various controls"))
(lambda ()
(if (not (Widget? fmv-dialog))
(let ((xdismiss (XmStringCreate "Go Away" XmFONTLIST_DEFAULT_TAG))
@@ -632,7 +632,7 @@
"-------X----------"))
(define make-pixmap
- (let ((documentation "(make-pixmap w strs) creates a pixmap using the X/Xpm string-based pixmap description"))
+ (let ((+documentation+ "(make-pixmap w strs) creates a pixmap using the X/Xpm string-based pixmap description"))
(lambda (widget strs) ; strs is list of strings as in arrow-strs above
(and (defined? 'XpmAttributes)
(let ((attr (XpmAttributes))
@@ -674,7 +674,7 @@
#x00 #x40 #x04 #x20 #x00 #x10 #x10 #x08 #x00 #x04 #x00 #x00))
(define bitmap->pixmap
- (let ((documentation "(bitmap->pixmap widget bits width height) takes an X-style bitmap and turns it into a pixmap"))
+ (let ((+documentation+ "(bitmap->pixmap widget bits width height) takes an X-style bitmap and turns it into a pixmap"))
(lambda (widget bits width height)
(XCreateBitmapFromData (XtDisplay widget) (XtWindow widget) bits width height))))
@@ -970,7 +970,7 @@
))
(define close-scanned-synthesis-pane
- (let ((documentation "(close-scanned-synthesis-pane) closes the Scanned Sythesis sound pane"))
+ (let ((+documentation+ "(close-scanned-synthesis-pane) closes the Scanned Sythesis sound pane"))
(lambda ()
(for-each-child
(cadr (main-widgets)) ; this is Snd's outermost shell
@@ -1279,7 +1279,7 @@
(define thumbnail-graph
- (let ((documentation "(thumbnail-graph dpy wn gc pts width height) makes a little graph of the data"))
+ (let ((+documentation+ "(thumbnail-graph dpy wn gc pts width height) makes a little graph of the data"))
(lambda (dpy wn gc pts width height)
(let ((top-margin 2)
(bottom-margin 6))
@@ -1400,7 +1400,7 @@
container)))))
(define show-sounds-in-directory
- (let ((documentation "(show-sounds-in-directory (dir \".\")) calls make-sound-box with the given directory"))
+ (let ((+documentation+ "(show-sounds-in-directory (dir \".\")) calls make-sound-box with the given directory"))
(lambda* ((dir "."))
(make-sound-box
"sounds"
@@ -1446,7 +1446,7 @@
(round-down (- seconds (* minutes 60)))
(round-down (- len (* (round-down seconds) smpte-frames-per-second))))))
- (let ((documentation "(draw-smpte-label snd chn) draws a SMPTE time stamp in a box on a graph"))
+ (let ((+documentation+ "(draw-smpte-label snd chn) draws a SMPTE time stamp in a box on a graph"))
(lambda (hook)
(let ((snd (hook 'snd))
(chn (hook 'chn)))
@@ -1473,7 +1473,7 @@
(draw-string smpte (+ x 4) (+ y 4) snd chn)))))))))
(define show-smpte-label
- (let ((documentation "(show-smpte-label on-or-off) turns on/off a label in the time-domain graph showing the current smpte frame of the leftmost sample"))
+ (let ((+documentation+ "(show-smpte-label on-or-off) turns on/off a label in the time-domain graph showing the current smpte frame of the leftmost sample"))
(lambda arg
(if (or (null? arg)
(car arg))
@@ -1486,7 +1486,7 @@
(update-time-graph #t #t))))))
(define smpte-is-on ; for prefs dialog
- (let ((documentation "(smpte-is-on) is #t if we are drawing SMPTE time stamps"))
+ (let ((+documentation+ "(smpte-is-on) is #t if we are drawing SMPTE time stamps"))
(lambda ()
(member draw-smpte-label (hook-functions after-graph-hook)))))
|#
@@ -1494,7 +1494,7 @@
(define red-pixel
(let ((pix #f)
- (documentation "(red-pixel) returns a red pixel"))
+ (+documentation+ "(red-pixel) returns a red pixel"))
(lambda ()
(if (not pix)
(let* ((dpy (XtDisplay (cadr (main-widgets))))
@@ -1509,7 +1509,7 @@
;;; -------- with-level-meters, make-level-meter, display-level
(define make-level-meter
- (let ((documentation "(make-level-meter parent width height args (resizable #t)) makes a VU level meter"))
+ (let ((+documentation+ "(make-level-meter parent width height args (resizable #t)) makes a VU level meter"))
(lambda* (parent width height args (resizable #t))
(let* ((frame (XtCreateManagedWidget "meter-frame" xmFrameWidgetClass parent
(append (list XmNshadowType XmSHADOW_ETCHED_IN
@@ -1549,7 +1549,7 @@
context))))
(define display-level
- (let ((documentation "(display-level meter-data) displays a VU level meter"))
+ (let ((+documentation+ "(display-level meter-data) displays a VU level meter"))
(lambda (meter-data)
(let* ((meter (car meter-data))
(level (meter-data 1))
@@ -1625,7 +1625,7 @@
(XSetForeground dpy gc (black-pixel))))))))))))
(define with-level-meters
- (let ((documentation "(with-level-meters n) adds 'n' level meters to a pane at the top of the Snd window"))
+ (let ((+documentation+ "(with-level-meters n) adds 'n' level meters to a pane at the top of the Snd window"))
(lambda (n)
(let* ((parent ((main-widgets) 3))
(height 70)
@@ -1682,7 +1682,7 @@
;;; (this is a Motif 1.2 style drop -- I've had trouble getting the new style to work at all)
(define make-channel-drop-site
- (let ((documentation "(make-channel-drop-site snd) adds a drop site pane to the current channel"))
+ (let ((+documentation+ "(make-channel-drop-site snd) adds a drop site pane to the current channel"))
(lambda args
(let ((widget (let ((snd (if (pair? args) (car args) (selected-sound))))
(add-channel-pane snd (selected-channel snd)
@@ -1721,7 +1721,7 @@
;;; drop arg is 3-arg func: filename snd chn
(define set-channel-drop
- (let ((documentation "(set-channel-drop drop snd chn) changes a drop callback function; 'drop' is function of 3 args (filename snd chn)"))
+ (let ((+documentation+ "(set-channel-drop drop snd chn) changes a drop callback function; 'drop' is function of 3 args (filename snd chn)"))
(lambda (drop snd chn)
(XmDropSiteUpdate
(car (channel-widgets snd chn))
@@ -1754,7 +1754,7 @@
(define showing-disk-space #f) ; for prefs dialog
(define show-disk-space
- (let ((documentation "(show-disk-space snd) adds a label to snd's status-area area showing the current free space (for use with after-open-hook: (set! (hook-functions after-open-hook) (list (*motif* 'show-disk-space)))")
+ (let ((+documentation+ "(show-disk-space snd) adds a label to snd's status-area area showing the current free space (for use with after-open-hook: (set! (hook-functions after-open-hook) (list (*motif* 'show-disk-space)))")
(labelled-snds ())
(kmg (lambda (num)
@@ -1810,7 +1810,7 @@
;;; the max scrollbar value can change (it's now 10000), so ideally this code should notice it
(define add-amp-controls
- (let ((documentation "(add-amp-controls) adds amplitude sliders to the control panel for each channel in multi-channel sounds")
+ (let ((+documentation+ "(add-amp-controls) adds amplitude sliders to the control panel for each channel in multi-channel sounds")
(label-name (lambda (chan) (if (= chan 0) (copy "amp-label") (format #f "amp-label-~D" chan))))
(number-name (lambda (chan) (if (= chan 0) (copy "amp-number") (format #f "amp-number-~D" chan))))
(scroller-name (lambda (chan) (if (= chan 0) (copy "amp") (format #f "amp-~D" chan)))))
@@ -1988,7 +1988,7 @@
;;; (remove-main-menu 5) removes the Help menu
(define remove-main-menu
- (let ((documentation "(remove-main-menu menu) removes the specified top-level menu: (remove-main-menu 5) removes the Help menu"))
+ (let ((+documentation+ "(remove-main-menu menu) removes the specified top-level menu: (remove-main-menu 5) removes the Help menu"))
(lambda (menu)
(let* ((cascade ((menu-widgets) menu))
(top (cadr (XtGetValues cascade (list XmNsubMenuId 0)))))
@@ -1999,7 +1999,7 @@
;;; -------- add delete and rename options to the file menu
(define add-delete-option
- (let ((documentation "(add-delete-option) adds a delete (file) option to the File menu"))
+ (let ((+documentation+ "(add-delete-option) adds a delete (file) option to the File menu"))
(lambda ()
(add-to-menu 0 "Delete" ; add Delete option to File menu
(lambda ()
@@ -2011,7 +2011,7 @@
8)))) ; place after File:New
(define add-rename-option
- (let ((documentation "(add-rename-option) adds a rename (file) option to the File menu"))
+ (let ((+documentation+ "(add-rename-option) adds a rename (file) option to the File menu"))
(lambda ()
(let ((rename-dialog #f)
(rename-text #f))
@@ -2098,7 +2098,7 @@
(define change-label
- (let ((documentation "(change-label widget new-label) changes widget's label to new-label"))
+ (let ((+documentation+ "(change-label widget new-label) changes widget's label to new-label"))
(lambda (widget new-label)
(let ((str (XmStringCreateLocalized new-label)))
(XtSetValues widget (list XmNlabelString str))
@@ -2119,7 +2119,7 @@
;;; (mark-sync-color "blue")
(define mark-sync-color
- (let ((documentation "(mark-sync-color new-color) sets the color for sync'd marks")
+ (let ((+documentation+ "(mark-sync-color new-color) sets the color for sync'd marks")
(get-color (lambda (color-name)
(let* ((col (XColor))
(dpy (XtDisplay (cadr (main-widgets))))
@@ -2162,7 +2162,7 @@
(define tooltip-label #f)
(define add-tooltip
- (let ((documentation "(add-tooltip widget tip) adds the tooltip 'tip' to the widget"))
+ (let ((+documentation+ "(add-tooltip widget tip) adds the tooltip 'tip' to the widget"))
(lambda (widget tip)
(let ((tool-proc #f)
(quit-proc #f)
@@ -2227,7 +2227,7 @@
(stop-tooltip)))))))
(define menu-option
- (let ((documentation "(menu-option name) finds the widget associated with a given menu item name"))
+ (let ((+documentation+ "(menu-option name) finds the widget associated with a given menu item name"))
(lambda (name)
(call-with-exit
(lambda (return)
@@ -2253,7 +2253,7 @@
(throw 'no-such-menu (list "menu-option" name)))))))
(define show-all-atoms
- (let ((documentation "(show-all-atoms) displays all current X atom names"))
+ (let ((+documentation+ "(show-all-atoms) displays all current X atom names"))
(lambda ()
(let ((i 1)
(dpy (XtDisplay (cadr (main-widgets))))
@@ -2363,7 +2363,7 @@
;;; -------- add a function to be called when the window manager sends us a "save yourself" or "take focus" message
(define upon-save-yourself
- (let ((documentation "(upon-save-yourself thunk) causes 'thunk' to be called if a 'save yourself' message is received"))
+ (let ((+documentation+ "(upon-save-yourself thunk) causes 'thunk' to be called if a 'save yourself' message is received"))
(lambda (thunk)
(XmAddWMProtocolCallback
(cadr (main-widgets))
@@ -2375,7 +2375,7 @@
;;; similarly for "take focus"
(define upon-take-focus
- (let ((documentation "(upon-take-focus thunk) causes 'thunk' to be called if a 'take focus' message is received"))
+ (let ((+documentation+ "(upon-take-focus thunk) causes 'thunk' to be called if a 'take focus' message is received"))
(lambda (thunk)
(XmAddWMProtocolCallback
(cadr (main-widgets))
@@ -2388,7 +2388,7 @@
;;; -------- add text widget to notebook "status" area --------
(define add-text-to-status-area
- (let ((documentation "(add-text-to-status-area) adds a text widget to the notebook status area"))
+ (let ((+documentation+ "(add-text-to-status-area) adds a text widget to the notebook status area"))
(lambda ()
;; it might be a better use of this space to put dlp's icon row in it
(let ((notebook ((main-widgets) 3)))
@@ -2411,7 +2411,7 @@
(define variables-pages ())
(define make-variables-dialog
- (let ((documentation "(make-variables-dialog) makes a variable-display dialog"))
+ (let ((+documentation+ "(make-variables-dialog) makes a variable-display dialog"))
(lambda ()
(let ((xdismiss (XmStringCreate "Go Away" XmFONTLIST_DEFAULT_TAG))
(titlestr (XmStringCreate "Variables" XmFONTLIST_DEFAULT_TAG)))
@@ -2450,7 +2450,7 @@
variables-dialog))))
(define make-variable-display
- (let ((documentation "(make-variable-display page-name variable-name (type 'text) (range (list 0.0 1.0))) makes a variable \
+ (let ((+documentation+ "(make-variable-display page-name variable-name (type 'text) (range (list 0.0 1.0))) makes a variable \
display widget; type = 'text, 'meter, 'graph, 'spectrum, 'scale"))
(lambda* (page-name variable-name (type 'text) (range (list 0.0 1.0)))
(if (not (Widget? variables-dialog)) (make-variables-dialog))
@@ -2516,7 +2516,7 @@ display widget; type = 'text, 'meter, 'graph, 'spectrum, 'scale"))
(else #f)))))))
(define variable-display
- (let ((documentation "(variable-display var widget) displays the value of 'var' in 'widget'"))
+ (let ((+documentation+ "(variable-display var widget) displays the value of 'var' in 'widget'"))
(lambda (var widget)
(if (Widget? widget)
(if (XmIsTextField widget)
@@ -2546,7 +2546,7 @@ display widget; type = 'text, 'meter, 'graph, 'spectrum, 'scale"))
var)))
(define variable-display-reset
- (let ((documentation "(variable-display-reset widget) restarts the variable graphs -- this is intended for the start (or perhaps end) of a note"))
+ (let ((+documentation+ "(variable-display-reset widget) restarts the variable graphs -- this is intended for the start (or perhaps end) of a note"))
(lambda (widget)
(if (and (pair? widget)
(number? (car widget)))
@@ -2631,7 +2631,7 @@ display widget; type = 'text, 'meter, 'graph, 'spectrum, 'scale"))
#|
(define set-root-window-color
- (let ((documentation "(set-root-window-color color) sets the color of the overall X background"))
+ (let ((+documentation+ "(set-root-window-color color) sets the color of the overall X background"))
(lambda (color)
(let* ((dpy (XtDisplay (cadr (main-widgets))))
(root-window (DefaultRootWindow dpy)))
@@ -2647,7 +2647,7 @@ display widget; type = 'text, 'meter, 'graph, 'spectrum, 'scale"))
;;; get open file list across top of window (like Xemacs): use -notebook, then:
;;; this is now the default
(define notebook-with-top-tabs
- (let ((documentation "(notebook-with-top-tabs) posts the list of open sounds across the top of the Snd window (like the Emacs buffer list)"))
+ (let ((+documentation+ "(notebook-with-top-tabs) posts the list of open sounds across the top of the Snd window (like the Emacs buffer list)"))
(lambda ()
(XtVaSetValues ((main-widgets) 3)
(list XmNorientation XmVERTICAL
@@ -2663,7 +2663,7 @@ display widget; type = 'text, 'meter, 'graph, 'spectrum, 'scale"))
(define ssb-dialog #f)
(define create-ssb-dialog
- (let ((documentation "(create-ssb-dialog) creates a dialog for testing the ssb-am stuff"))
+ (let ((+documentation+ "(create-ssb-dialog) creates a dialog for testing the ssb-am stuff"))
(lambda ()
(if (not (Widget? ssb-dialog))
(let ((xdismiss (XmStringCreate "Go Away" XmFONTLIST_DEFAULT_TAG))
@@ -2836,7 +2836,7 @@ display widget; type = 'text, 'meter, 'graph, 'spectrum, 'scale"))
(define audit-dialog #f)
(define create-audit-dialog
- (let ((documentation "(create-audit-dialog) creates a slightly dangerous hearing test dialog (don't push the amps way up if you can't hear anything)"))
+ (let ((+documentation+ "(create-audit-dialog) creates a slightly dangerous hearing test dialog (don't push the amps way up if you can't hear anything)"))
(lambda ()
(if (not (Widget? audit-dialog))
(let ((xdismiss (XmStringCreate "Go Away" XmFONTLIST_DEFAULT_TAG))
diff --git a/snd-prefs.c b/snd-prefs.c
index 756c261..4dbb3bf 100644
--- a/snd-prefs.c
+++ b/snd-prefs.c
@@ -548,7 +548,7 @@ static void clear_show_listener(prefs_info *prf)
static color_t saved_basic_color;
static void save_basic_color(prefs_info *prf, FILE *ignore) {saved_basic_color = ss->basic_color;}
-static void basic_color_func(prefs_info *prf, float r, float g, float b) {set_basic_color(rgb_to_color(r, g, b));}
+static void basic_color_func(prefs_info *prf, double r, double g, double b) {set_basic_color(rgb_to_color(r, g, b));}
static void revert_basic_color(prefs_info *prf)
@@ -570,7 +570,7 @@ static void clear_basic_color(prefs_info *prf)
static color_t saved_highlight_color;
static void save_highlight_color(prefs_info *prf, FILE *ignore) {saved_highlight_color = ss->highlight_color;}
-static void highlight_color_func(prefs_info *prf, float r, float g, float b) {set_highlight_color(rgb_to_color(r, g, b));}
+static void highlight_color_func(prefs_info *prf, double r, double g, double b) {set_highlight_color(rgb_to_color(r, g, b));}
static void revert_highlight_color(prefs_info *prf)
@@ -592,7 +592,7 @@ static void clear_highlight_color(prefs_info *prf)
static color_t saved_position_color;
static void save_position_color(prefs_info *prf, FILE *ignore) {saved_position_color = ss->position_color;}
-static void position_color_func(prefs_info *prf, float r, float g, float b) {set_position_color(rgb_to_color(r, g, b));}
+static void position_color_func(prefs_info *prf, double r, double g, double b) {set_position_color(rgb_to_color(r, g, b));}
static void revert_position_color(prefs_info *prf)
@@ -614,7 +614,7 @@ static void clear_position_color(prefs_info *prf)
static color_t saved_zoom_color;
static void save_zoom_color(prefs_info *prf, FILE *ignore) {saved_zoom_color = ss->zoom_color;}
-static void zoom_color_func(prefs_info *prf, float r, float g, float b) {set_zoom_color(rgb_to_color(r, g, b));}
+static void zoom_color_func(prefs_info *prf, double r, double g, double b) {set_zoom_color(rgb_to_color(r, g, b));}
static void revert_zoom_color(prefs_info *prf)
@@ -637,7 +637,7 @@ static void clear_zoom_color(prefs_info *prf)
static color_t saved_cursor_color;
static void save_cursor_color(prefs_info *prf, FILE *ignore) {saved_cursor_color = ss->cursor_color;}
-static void cursor_color_func(prefs_info *prf, float r, float g, float b)
+static void cursor_color_func(prefs_info *prf, double r, double g, double b)
{
color_cursor(rgb_to_color(r, g, b));
for_each_chan(update_graph);
@@ -663,7 +663,7 @@ static void clear_cursor_color(prefs_info *prf)
static color_t saved_data_color;
static void save_data_color(prefs_info *prf, FILE *ignore) {saved_data_color = ss->data_color;}
-static void data_color_func(prefs_info *prf, float r, float g, float b) {set_data_color(rgb_to_color(r, g, b));}
+static void data_color_func(prefs_info *prf, double r, double g, double b) {set_data_color(rgb_to_color(r, g, b));}
static void revert_data_color(prefs_info *prf)
@@ -685,7 +685,7 @@ static void clear_data_color(prefs_info *prf)
static color_t saved_graph_color;
static void save_graph_color(prefs_info *prf, FILE *ignore) {saved_graph_color = ss->graph_color;}
-static void graph_color_func(prefs_info *prf, float r, float g, float b) {set_graph_color(rgb_to_color(r, g, b));}
+static void graph_color_func(prefs_info *prf, double r, double g, double b) {set_graph_color(rgb_to_color(r, g, b));}
static void revert_graph_color(prefs_info *prf)
@@ -707,7 +707,7 @@ static void clear_graph_color(prefs_info *prf)
static color_t saved_selected_data_color;
static void save_selected_data_color(prefs_info *prf, FILE *ignore) {saved_selected_data_color = ss->selected_data_color;}
-static void selected_data_color_func(prefs_info *prf, float r, float g, float b) {set_selected_data_color(rgb_to_color(r, g, b));}
+static void selected_data_color_func(prefs_info *prf, double r, double g, double b) {set_selected_data_color(rgb_to_color(r, g, b));}
static void revert_selected_data_color(prefs_info *prf)
@@ -729,7 +729,7 @@ static void clear_selected_data_color(prefs_info *prf)
static color_t saved_selected_graph_color;
static void save_selected_graph_color(prefs_info *prf, FILE *ignore) {saved_selected_graph_color = ss->selected_graph_color;}
-static void selected_graph_color_func(prefs_info *prf, float r, float g, float b) {set_selected_graph_color(rgb_to_color(r, g, b));}
+static void selected_graph_color_func(prefs_info *prf, double r, double g, double b) {set_selected_graph_color(rgb_to_color(r, g, b));}
static void revert_selected_graph_color(prefs_info *prf)
@@ -758,7 +758,7 @@ static void set_selection_color(color_t color)
static color_t saved_selection_color;
static void save_selection_color(prefs_info *prf, FILE *ignore) {saved_selection_color = ss->selection_color;}
-static void selection_color_func(prefs_info *prf, float r, float g, float b) {set_selection_color(rgb_to_color(r, g, b));}
+static void selection_color_func(prefs_info *prf, double r, double g, double b) {set_selection_color(rgb_to_color(r, g, b));}
static void revert_selection_color(prefs_info *prf)
@@ -780,7 +780,7 @@ static void clear_selection_color(prefs_info *prf)
static color_t saved_mark_color;
static void save_mark_color(prefs_info *prf, FILE *ignore) {saved_mark_color = ss->mark_color;}
-static void mark_color_func(prefs_info *prf, float r, float g, float b) {color_marks(rgb_to_color(r, g, b));}
+static void mark_color_func(prefs_info *prf, double r, double g, double b) {color_marks(rgb_to_color(r, g, b));}
static void revert_mark_color(prefs_info *prf)
@@ -802,7 +802,7 @@ static void clear_mark_color(prefs_info *prf)
static color_t saved_mix_color;
static void save_mix_color(prefs_info *prf, FILE *ignore) {saved_mix_color = ss->mix_color;}
-static void mix_color_func(prefs_info *prf, float r, float g, float b) {color_mixes(rgb_to_color(r, g, b));}
+static void mix_color_func(prefs_info *prf, double r, double g, double b) {color_mixes(rgb_to_color(r, g, b));}
static void revert_mix_color(prefs_info *prf)
@@ -824,7 +824,7 @@ static void clear_mix_color(prefs_info *prf)
static color_t saved_listener_color;
static void save_listener_color(prefs_info *prf, FILE *ignore) {saved_listener_color = ss->listener_color;}
-static void listener_color_func(prefs_info *prf, float r, float g, float b) {color_listener(rgb_to_color(r, g, b));}
+static void listener_color_func(prefs_info *prf, double r, double g, double b) {color_listener(rgb_to_color(r, g, b));}
static void revert_listener_color(prefs_info *prf)
@@ -846,7 +846,7 @@ static void clear_listener_color(prefs_info *prf)
static color_t saved_listener_text_color;
static void save_listener_text_color(prefs_info *prf, FILE *ignore) {saved_listener_text_color = ss->listener_text_color;}
-static void listener_text_color_func(prefs_info *prf, float r, float g, float b) {color_listener_text(rgb_to_color(r, g, b));}
+static void listener_text_color_func(prefs_info *prf, double r, double g, double b) {color_listener_text(rgb_to_color(r, g, b));}
static void revert_listener_text_color(prefs_info *prf)
@@ -1715,10 +1715,10 @@ static void min_dB_text(prefs_info *prf)
str = GET_TEXT(prf->text);
if ((str) && (*str))
{
- float value;
+ double value;
redirect_errors_to(any_error_to_text, (void *)prf);
- value = (float)string_to_mus_float_t(str, -100000.0, "min dB");
+ value = (double)string_to_mus_float_t(str, -100000.0, "min dB");
redirect_errors_to(NULL, NULL);
if ((!(prf->got_error)) && (value < 0.0))
@@ -1751,10 +1751,10 @@ static void fft_window_beta_text_callback(prefs_info *prf)
str = GET_TEXT(prf->text);
if ((str) && (*str))
{
- float value;
+ double value;
redirect_errors_to(any_error_to_text, (void *)prf);
- value = (float)string_to_mus_float_t(str, 0.0, "fft beta");
+ value = (double)string_to_mus_float_t(str, 0.0, "fft beta");
redirect_errors_to(NULL, NULL);
if ((!(prf->got_error)) && (value <= prf->scale_max))
@@ -1789,10 +1789,10 @@ static void grid_density_text_callback(prefs_info *prf)
str = GET_TEXT(prf->text);
if ((str) && (*str))
{
- float value;
+ double value;
redirect_errors_to(any_error_to_text, (void *)prf);
- value = (float)string_to_mus_float_t(str, 0.0, "grid density");
+ value = (double)string_to_mus_float_t(str, 0.0, "grid density");
redirect_errors_to(NULL, NULL);
if ((!(prf->got_error)) && (value <= prf->scale_max))
@@ -2484,10 +2484,10 @@ static void cursor_location_text(prefs_info *prf)
str = GET_TEXT(prf->text);
if ((str) && (*str))
{
- float interval;
+ double interval;
redirect_errors_to(any_error_to_text, (void *)prf);
- interval = (float)string_to_mus_float_t(str, 0.0, "cursor offset");
+ interval = (double)string_to_mus_float_t(str, 0.0, "cursor offset");
redirect_errors_to(NULL, NULL);
if (!(prf->got_error))
@@ -2631,7 +2631,7 @@ static speed_style_t rts_speed_control_style = DEFAULT_SPEED_CONTROL_STYLE;
static int rts_speed_control_tones = DEFAULT_SPEED_CONTROL_TONES;
#define MIN_SPEED_CONTROL_SEMITONES 1
-static const char *speed_control_styles[NUM_SPEED_CONTROL_STYLES] = {"float ", "ratio ", "semitones:"};
+static const char *speed_control_styles[NUM_SPEED_CONTROL_STYLES] = {"double ", "ratio ", "semitones:"};
static void show_speed_control_semitones(prefs_info *prf)
{
@@ -2726,7 +2726,7 @@ static const char *output_header_type_choices[NUM_OUTPUT_HEADER_TYPE_CHOICES] =
static mus_header_t output_header_types[NUM_OUTPUT_HEADER_TYPE_CHOICES] = {MUS_AIFC, MUS_RIFF, MUS_NEXT, MUS_RF64, MUS_NIST, MUS_AIFF, MUS_CAFF};
#define NUM_OUTPUT_SAMPLE_TYPE_CHOICES 4
-static const char *output_sample_type_choices[NUM_OUTPUT_SAMPLE_TYPE_CHOICES] = {"short ", "int ", "float ", "double"};
+static const char *output_sample_type_choices[NUM_OUTPUT_SAMPLE_TYPE_CHOICES] = {"short ", "int ", "double ", "double"};
static mus_sample_t output_sample_types[NUM_OUTPUT_SAMPLE_TYPE_CHOICES] = {MUS_LSHORT, MUS_LINT, MUS_LFLOAT, MUS_LDOUBLE};
@@ -3893,11 +3893,11 @@ static void initial_bounds_toggle(prefs_info *prf)
static void initial_bounds_text(prefs_info *prf)
{
- float beg = 0.0, dur = 0.1;
+ double beg = 0.0, dur = 0.1;
char *str;
str = GET_TEXT(prf->text);
- sscanf(str, "%f : %f", &beg, &dur);
+ sscanf(str, "%lf : %lf", &beg, &dur);
set_initial_beg(beg);
set_initial_dur(dur);
free_TEXT(str);
diff --git a/snd-print.c b/snd-print.c
index 306e57d..7858d0c 100644
--- a/snd-print.c
+++ b/snd-print.c
@@ -233,8 +233,8 @@ void ps_draw_grf_points(axis_info *ap, int j, mus_float_t y0, graph_style_t grap
{
snprintf(pbuf, PRINT_BUFFER_SIZE, " %.2f %.2f %.2f %.2f RF\n",
ps_grf_x(ap, xpts[i]) - size8,
- (float)gy0,
- (float)size4,
+ (double)gy0,
+ (double)size4,
ps_grf_y(ap, ypts[i]) - gy0);
ps_write(pbuf);
}
@@ -296,7 +296,7 @@ void ps_draw_both_grf_points(axis_info *ap, int j, graph_style_t graph_style, in
snprintf(pbuf, PRINT_BUFFER_SIZE, " %.2f %.2f %.2f %.2f RF\n",
ps_grf_x(ap, xpts[i]) - size8,
ps_grf_y(ap, ypts[i]),
- (float)size4,
+ (double)size4,
ps_grf_y(ap, ypts1[i]) - ps_grf_y(ap, ypts[i]));
ps_write(pbuf);
}
@@ -813,10 +813,10 @@ void g_init_print(void)
#endif
#if HAVE_SCHEME
- s7_symbol_set_access(s7, ss->eps_bottom_margin_symbol, s7_make_function(s7, "[acc-" S_eps_bottom_margin "]", acc_eps_bottom_margin, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->eps_file_symbol, s7_make_function(s7, "[acc-" S_eps_file "]", acc_eps_file, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->eps_left_margin_symbol, s7_make_function(s7, "[acc-" S_eps_left_margin "]", acc_eps_left_margin, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->eps_size_symbol, s7_make_function(s7, "[acc-" S_eps_size "]", acc_eps_size, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->eps_bottom_margin_symbol, s7_make_function(s7, "[acc-" S_eps_bottom_margin "]", acc_eps_bottom_margin, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->eps_file_symbol, s7_make_function(s7, "[acc-" S_eps_file "]", acc_eps_file, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->eps_left_margin_symbol, s7_make_function(s7, "[acc-" S_eps_left_margin "]", acc_eps_left_margin, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->eps_size_symbol, s7_make_function(s7, "[acc-" S_eps_size "]", acc_eps_size, 2, 0, false, "accessor"));
s7_symbol_set_documentation(s7, ss->eps_bottom_margin_symbol, "*eps-bottom-margin*: File:Print and graph->ps bottom margin");
s7_symbol_set_documentation(s7, ss->eps_file_symbol, "*eps-file*: File:Print and graph->ps file name (snd.eps)");
diff --git a/snd-region.c b/snd-region.c
index 416a17f..429c174 100644
--- a/snd-region.c
+++ b/snd-region.c
@@ -2327,8 +2327,8 @@ void g_init_regions(void)
s7_make_signature(s7, 1, i), s7_make_signature(s7, 2, i, i));
#if HAVE_SCHEME
- s7_symbol_set_access(s7, ss->max_regions_symbol, s7_make_function(s7, "[acc-" S_max_regions "]", acc_max_regions, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->region_graph_style_symbol, s7_make_function(s7, "[acc-" S_region_graph_style "]", acc_region_graph_style, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->max_regions_symbol, s7_make_function(s7, "[acc-" S_max_regions "]", acc_max_regions, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->region_graph_style_symbol, s7_make_function(s7, "[acc-" S_region_graph_style "]", acc_region_graph_style, 2, 0, false, "accessor"));
s7_symbol_set_documentation(s7, ss->max_regions_symbol, "*max-regions*: max number of regions saved on the region list");
s7_symbol_set_documentation(s7, ss->region_graph_style_symbol, "*region-graph-style*: graph style of the region dialog graph (graph-lines etc)");
diff --git a/snd-sig.c b/snd-sig.c
index 480d4a4..4938556 100644
--- a/snd-sig.c
+++ b/snd-sig.c
@@ -3628,6 +3628,45 @@ static Xen map_channel_to_buffer(chan_info *cp, snd_fd *sf, Xen proc, mus_long_t
return(res);
}
}
+
+ if ((s7_list_length(s7, res) == 2) &&
+ (s7_is_symbol(s7_cadr(res))))
+ {
+ if (s7_car(res) == s7_make_symbol(s7, "granulate"))
+ {
+ s7_pointer gp;
+ mus_any *g;
+ gp = s7_symbol_value(s7, s7_cadr(res));
+ if ((mus_is_xen(gp)) &&
+ (mus_is_granulate(g = Xen_to_mus_any(gp))))
+ {
+ data = (mus_float_t *)calloc(num, sizeof(mus_float_t));
+ for (kp = 0; kp < num; kp++)
+ data[kp] = mus_granulate_with_editor(g, NULL, NULL);
+ free_snd_fd(sf);
+ change_samples(beg, num, data, cp, caller, pos, -1.0);
+ free(data);
+ return(res);
+ }
+ }
+ if (s7_car(res) == s7_make_symbol(s7, "phase-vocoder"))
+ {
+ s7_pointer gp;
+ mus_any *g;
+ gp = s7_symbol_value(s7, s7_cadr(res));
+ if ((mus_is_xen(gp)) &&
+ (mus_is_phase_vocoder(g = Xen_to_mus_any(gp))))
+ {
+ data = (mus_float_t *)calloc(num, sizeof(mus_float_t));
+ for (kp = 0; kp < num; kp++)
+ data[kp] = mus_phase_vocoder(g, NULL);
+ free_snd_fd(sf);
+ change_samples(beg, num, data, cp, caller, pos, -1.0);
+ free(data);
+ return(res);
+ }
+ }
+ }
} /* is one expr body */
arg = s7_car(s7_closure_args(s7, proc));
@@ -3854,6 +3893,7 @@ static Xen g_map_chan_1(Xen proc_and_list, Xen s_beg, Xen s_end, Xen org, Xen sn
return(res);
}
+
static Xen g_sp_scan(Xen proc_and_list, Xen s_beg, Xen s_end, Xen snd, Xen chn, const char *caller, bool counting, Xen edpos, int arg_pos, Xen s_dur)
{
chan_info *cp;
@@ -3894,6 +3934,14 @@ static Xen g_sp_scan(Xen proc_and_list, Xen s_beg, Xen s_end, Xen snd, Xen chn,
free(errmsg);
return(snd_bad_arity_error(caller, errstr, proc));
}
+#if HAVE_SCHEME
+ {
+ Xen arity;
+ arity = Xen_arity(proc);
+ if (Xen_integer_to_C_int(Xen_car(arity)) != Xen_integer_to_C_int(Xen_cdr(arity)))
+ return(snd_bad_arity_error(caller, C_string_to_Xen_string("function should not accept optional arguments"), proc));
+ }
+#endif
sp = cp->sound;
if (end == 0)
@@ -6562,7 +6610,7 @@ void g_init_sig(void)
#if HAVE_SCHEME
Xen_define_typed_procedure("phases-get-peak", g_phases_get_peak, 3, 0, 0, "", pcl_t);
- s7_symbol_set_access(s7, ss->sinc_width_symbol, s7_make_function(s7, "[acc-" S_sinc_width "]", acc_sinc_width, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->sinc_width_symbol, s7_make_function(s7, "[acc-" S_sinc_width "]", acc_sinc_width, 2, 0, false, "accessor"));
s7_symbol_set_documentation(s7, ss->sinc_width_symbol, "*sinc-width*: sampling rate conversion sinc width (10).");
gc_vect = s7_make_vector(s7, 1);
diff --git a/snd-snd.c b/snd-snd.c
index 0903d91..6412cff 100644
--- a/snd-snd.c
+++ b/snd-snd.c
@@ -6425,20 +6425,20 @@ If it returns " PROC_TRUE ", the usual informative status babbling is squelched.
s7_symbol_set_documentation(s7, ss->filter_control_order_symbol, "*filter-control-order*: control-panel filter order");
s7_symbol_set_documentation(s7, ss->show_controls_symbol, "*show-controls*: #t if snd's control panel is known to be open");
- s7_symbol_set_access(s7, ss->channel_style_symbol, s7_make_function(s7, "[acc-" S_channel_style "]", acc_channel_style, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->filter_control_in_db_symbol, s7_make_function(s7, "[acc-" S_filter_control_in_dB "]", acc_filter_control_in_dB, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->filter_control_in_hz_symbol, s7_make_function(s7, "[acc-" S_filter_control_in_hz "]", acc_filter_control_in_hz, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->speed_control_tones_symbol, s7_make_function(s7, "[acc-" S_speed_control_tones "]", acc_speed_control_tones, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->speed_control_style_symbol, s7_make_function(s7, "[acc-" S_speed_control_style "]", acc_speed_control_style, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->expand_control_length_symbol, s7_make_function(s7, "[acc-" S_expand_control_length "]", acc_expand_control_length, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->expand_control_ramp_symbol, s7_make_function(s7, "[acc-" S_expand_control_ramp "]", acc_expand_control_ramp, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->expand_control_hop_symbol, s7_make_function(s7, "[acc-" S_expand_control_hop "]", acc_expand_control_hop, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->expand_control_jitter_symbol, s7_make_function(s7, "[acc-" S_expand_control_jitter "]", acc_expand_control_jitter, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->contrast_control_amp_symbol, s7_make_function(s7, "[acc-" S_contrast_control_amp "]", acc_contrast_control_amp, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->reverb_control_feedback_symbol, s7_make_function(s7, "[acc-" S_reverb_control_feedback "]", acc_reverb_control_feedback, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->reverb_control_lowpass_symbol, s7_make_function(s7, "[acc-" S_reverb_control_lowpass "]", acc_reverb_control_lowpass, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->reverb_control_decay_symbol, s7_make_function(s7, "[acc-" S_reverb_control_decay "]", acc_reverb_control_decay, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->filter_control_order_symbol, s7_make_function(s7, "[acc-" S_filter_control_order "]", acc_filter_control_order, 2, 0, false, "accessor"));
- s7_symbol_set_access(s7, ss->show_controls_symbol, s7_make_function(s7, "[acc-" S_show_controls "]", acc_show_controls, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->channel_style_symbol, s7_make_function(s7, "[acc-" S_channel_style "]", acc_channel_style, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->filter_control_in_db_symbol, s7_make_function(s7, "[acc-" S_filter_control_in_dB "]", acc_filter_control_in_dB, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->filter_control_in_hz_symbol, s7_make_function(s7, "[acc-" S_filter_control_in_hz "]", acc_filter_control_in_hz, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->speed_control_tones_symbol, s7_make_function(s7, "[acc-" S_speed_control_tones "]", acc_speed_control_tones, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->speed_control_style_symbol, s7_make_function(s7, "[acc-" S_speed_control_style "]", acc_speed_control_style, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->expand_control_length_symbol, s7_make_function(s7, "[acc-" S_expand_control_length "]", acc_expand_control_length, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->expand_control_ramp_symbol, s7_make_function(s7, "[acc-" S_expand_control_ramp "]", acc_expand_control_ramp, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->expand_control_hop_symbol, s7_make_function(s7, "[acc-" S_expand_control_hop "]", acc_expand_control_hop, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->expand_control_jitter_symbol, s7_make_function(s7, "[acc-" S_expand_control_jitter "]", acc_expand_control_jitter, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->contrast_control_amp_symbol, s7_make_function(s7, "[acc-" S_contrast_control_amp "]", acc_contrast_control_amp, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->reverb_control_feedback_symbol, s7_make_function(s7, "[acc-" S_reverb_control_feedback "]", acc_reverb_control_feedback, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->reverb_control_lowpass_symbol, s7_make_function(s7, "[acc-" S_reverb_control_lowpass "]", acc_reverb_control_lowpass, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->reverb_control_decay_symbol, s7_make_function(s7, "[acc-" S_reverb_control_decay "]", acc_reverb_control_decay, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->filter_control_order_symbol, s7_make_function(s7, "[acc-" S_filter_control_order "]", acc_filter_control_order, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, ss->show_controls_symbol, s7_make_function(s7, "[acc-" S_show_controls "]", acc_show_controls, 2, 0, false, "accessor"));
#endif
}
diff --git a/snd-test.fs b/snd-test.fs
index c1698a1..adb6875 100644
--- a/snd-test.fs
+++ b/snd-test.fs
@@ -2,8 +2,7 @@
\ Translator/Author: Michael Scholz <mi-scholz@users.sourceforge.net>
\ Created: 2006/08/05 00:09:28
-\ Changed: 2016/11/17 15:24:33
-\ Changed: 2016/12/28 23:20:33
+\ Changed: 2017/09/25 22:10:36
\ Tags: FIXME - something is wrong
\ XXX - info marker
@@ -1060,7 +1059,6 @@ SIGINT lambda: { sig -- }
#( <'> transform-type fourier-transform )
#( <'> with-file-monitor #t )
#( <'> clm-table-size 512 )
- #( <'> clm-default-frequency 0.0 )
#( <'> with-verbose-cursor #f )
#( <'> with-inset-graph #f )
#( <'> with-interrupts #t )
@@ -1159,7 +1157,6 @@ black-and-white-colormap constant *better-colormap*
#( <'> channel-style 1 )
#( <'> clipping #f )
#( <'> clm-table-size 512 )
- #( <'> clm-default-frequency 0.0 )
#( <'> color-cutoff 0.003 )
#( <'> color-inverted #t )
#( <'> color-scale 1.0 )
@@ -2156,7 +2153,7 @@ black-and-white-colormap constant *better-colormap*
'channels-combined 'channels-separate 'channels-superimposed
'chans 'clear-listener 'clip-hook
'clipping 'clm-channel 'clm-table-size
- 'clm-default-frequency 'close-hook 'close-sound 'color->list
+ 'close-hook 'close-sound 'color->list
'color-cutoff 'color-orientation-dialog 'color-hook 'color-inverted
'color-scale 'color? 'colormap 'colormap-name 'colormap-ref
'colormap-size 'colormap? 'comb 'comb? 'combined-data-color
@@ -7327,7 +7324,7 @@ set-procs <'> set-arity-not-ok 5 array-reject constant set-procs04
<'> save-as-dialog-auto-comment <'> window-width <'> window-x
<'> window-y <'> with-gl <'> with-mix-tags <'> x-axis-style
<'> beats-per-minute <'> zoom-color <'> mix-tag-height <'> mix-tag-width
- <'> with-relative-panes <'> clm-table-size <'> clm-default-frequency
+ <'> with-relative-panes <'> clm-table-size
<'> mark-tag-width <'> mark-tag-height ) each to prc
vct-5 prc set-xt snd-test-catch to tag
tag if
diff --git a/snd-test.rb b/snd-test.rb
index 2274b81..4f5133b 100644
--- a/snd-test.rb
+++ b/snd-test.rb
@@ -2,7 +2,7 @@
# Translator/Author: Michael Scholz <mi-scholz@users.sourceforge.net>
# Created: 2005/02/18 10:18:34
-# Changed: 2017/08/14 06:13:35
+# Changed: 2017/09/25 22:17:08
# Tags: FIXME - something is wrong
# XXX - info marker
@@ -1551,7 +1551,6 @@ def test_00
[:transform_type, $fourier_transform],
[:with_file_monitor, true],
[:clm_table_size, 512],
- [:clm_default_frequency, 0.0],
[:with_verbose_cursor, false],
[:with_inset_graph, false],
[:with_interrupts, true],
@@ -1647,7 +1646,6 @@ def test_01
["channel_style", channel_style(), 1],
["clipping", clipping(), false],
["clm_table_size", clm_table_size(), 512],
- ["clm_default_frequency", clm_default_frequency(), 0.0],
["color_cutoff", color_cutoff(), 0.003],
["color_inverted", color_inverted(), true],
["color_scale", color_scale(), 1.0],
@@ -2479,8 +2477,7 @@ def test_03
:channel_property, :channel_style, :channel_widgets, :channels,
:channels_combined, :channels_separate, :channels_superimposed,
:chans, :clear_listener, :clip_hook,
- :clipping, :clm_channel, :clm_table_size,
- :clm_default_frequency, :close_hook, :close_sound,
+ :clipping, :clm_channel, :clm_table_size, :close_hook, :close_sound,
:color_cutoff, :color_orientation_dialog, :color_hook, :color_inverted,
:color_scale, :color?, :colormap, :colormap_name, :colormap_ref,
:colormap_size, :colormap?, :comb, :comb?, :combined_data_color,
diff --git a/snd-test.scm b/snd-test.scm
index 201e05c..017f3eb 100644
--- a/snd-test.scm
+++ b/snd-test.scm
@@ -1,34 +1,32 @@
;;; Snd tests
;;;
;;; test 0: constants [375]
-;;; test 1: defaults [1022]
-;;; test 2: headers [1375]
-;;; test 3: variables [1689]
-;;; test 4: sndlib [2240]
-;;; test 5: simple overall checks [3972]
-;;; test 6: float-vectors [8584]
-;;; test 7: colors [8844]
-;;; test 8: clm [9319]
-;;; test 9: mix [20981]
-;;; test 10: marks [22700]
-;;; test 11: dialogs [23617]
-;;; test 12: extensions [23776]
-;;; test 13: menus, edit lists, hooks, etc [24013]
-;;; test 14: all together now [25318]
-;;; test 15: chan-local vars [26122]
-;;; test 16: regularized funcs [27784]
-;;; test 17: dialogs and graphics [31280]
-;;; test 18: save and restore [31385]
-;;; test 19: transforms [33015]
-;;; test 20: new stuff [35064]
-;;; test 21: optimizer [36238]
-;;; test 22: with-sound [38591]
-;;; test 23: X/Xt/Xm [41354]
-;;; test 24: GL [44850]
-;;; test 25: errors [44971]
-;;; test 26: s7 [46367]
-;;; test all done [46503]
-;;; test the end [46664]
+;;; test 1: defaults [1020]
+;;; test 2: headers [1373]
+;;; test 3: variables [1687]
+;;; test 4: sndlib [2238]
+;;; test 5: simple overall checks [3970]
+;;; test 6: float-vectors [8582]
+;;; test 7: colors [8842]
+;;; test 8: clm [9326]
+;;; test 9: mix [21076]
+;;; test 10: marks [22795]
+;;; test 11: dialogs [23712]
+;;; test 12: extensions [23871]
+;;; test 13: menus, edit lists, hooks, etc [24108]
+;;; test 14: all together now [25413]
+;;; test 15: chan-local vars [26217]
+;;; test 16: regularized funcs [27879]
+;;; test 17: dialogs and graphics [31373]
+;;; test 18: save and restore [31478]
+;;; test 19: transforms [33108]
+;;; test 20: new stuff [35157]
+;;; test 21: optimizer [36331]
+;;; test 22: with-sound [38683]
+;;; test 23: errors [41443]
+;;; test 24: s7 [42838]
+;;; test the end [43132]
+
;;; (set! (hook-functions *load-hook*) (list (lambda (hook) (format *stderr* "loading ~S...~%" (hook 'name)))))
@@ -67,7 +65,7 @@
(if (not (defined? 'snd-test)) (define snd-test -1))
(define full-test (< snd-test 0))
-(define total-tests 26)
+(define total-tests 24)
(if (not (defined? 'with-exit)) (define with-exit (< snd-test 0)))
(define test-number -1)
@@ -216,7 +214,7 @@
(delete-file new-file-name))))
(define dismiss-all-dialogs
- (let ((documentation "(dismiss-all-dialogs) hides all dialogs"))
+ (let ((+documentation+ "(dismiss-all-dialogs) hides all dialogs"))
(lambda ()
(if (or (provided? 'xm)
(provided? 'xg))
@@ -242,14 +240,14 @@
(define safe-color (make-color 1 0 0))
(define make-color-with-catch
- (let ((documentation "make-color but catch 'no-such-color"))
+ (let ((+documentation+ "make-color but catch 'no-such-color"))
(lambda (c1 c2 c3)
(catch 'no-such-color
(lambda () (make-color c1 c2 c3))
(lambda args safe-color)))))
(define safe-display-edits
- (let ((documentation "display-edits but catch all errors"))
+ (let ((+documentation+ "display-edits but catch all errors"))
(lambda* (snd chn edpos)
(catch #t
(lambda () (display-edits snd chn edpos))
@@ -8962,6 +8960,15 @@ EDITS: 2
(if (not (= (length jet-colormap) *colormap-size*))
(snd-display "jet-colormap length: ~A ~A" (length jet-colormap) *colormap-size*))
+
+ (let ((tag (catch #t
+ (lambda () (colormap-ref jet-colormap))
+ (lambda args (car args)))))
+ (if (not (eq? tag 'wrong-number-of-args)) (snd-display "colormap-ref nil: ~A" tag)))
+ (let ((tag (catch #t
+ (lambda () (jet-colormap))
+ (lambda args (car args)))))
+ (if (not (eq? tag 'wrong-number-of-args)) (snd-display "colormap-apply nil: ~A" tag)))
(for-each
(lambda (n err)
@@ -9326,7 +9333,7 @@ EDITS: 2
(define scissor
- (let ((documentation "(scissor beg) is the scissor-tailed flycatcher"))
+ (let ((+documentation+ "(scissor beg) is the scissor-tailed flycatcher"))
(lambda (begin-time) ; test 23 also
(bigbird begin-time 0.05 1800 1800 .2
'(0 0 40 1 60 1 100 0)
@@ -9371,7 +9378,7 @@ EDITS: 2
;; ----------------
(define make-papoulis-window
- (let ((documentation "(make-papoulis-window size) returns a papoulis window os the given size"))
+ (let ((+documentation+ "(make-papoulis-window size) returns a papoulis window os the given size"))
(lambda (n)
(let ((v (make-float-vector n))
(n2 (/ n 2)))
@@ -9386,7 +9393,7 @@ EDITS: 2
;; ----------------
(define make-dpss-window
- (let ((documentation "(make-dpss-window size w) returns a prolate spheriodal (slepian) window of the given size"))
+ (let ((+documentation+ "(make-dpss-window size w) returns a prolate spheriodal (slepian) window of the given size"))
;; from Verma, Bilbao, Meng, "The Digital Prolate Spheroidal Window"
;; output checked using Julius Smith's dpssw.m, although my "w" is different
(lambda (n w)
@@ -10431,7 +10438,7 @@ EDITS: 2
;; ----------------
(define fltit
- (let ((documentation "(fltit) returns a time-varying filter: (map-channel (fltit))"))
+ (let ((+documentation+ "(fltit) returns a time-varying filter: (map-channel (fltit))"))
(lambda ()
(let ((flt (make-fir-filter 8 #r(.1 .2 .3 .4 .4 .3 .2 .1))))
(do ((xcof (mus-xcoeffs flt)) ; maybe a copy?
@@ -25406,7 +25413,7 @@ EDITS: 2
(define sfile 0) ; used globally by save-state stuff (... is this a bug?)
(define safe-make-selection
- (let ((documentation "make-region with error checks"))
+ (let ((+documentation+ "make-region with error checks"))
(lambda (snd) ; used in test_15 also
(let ((len (framples snd))
(beg 1000)
@@ -31385,7 +31392,7 @@ EDITS: 1
snd chn lisp-graph cr)
(free-cairo cr)))))))
- (let ((-> (let ((documentation "draw an arrow pointing (from the left) at the point (x0 y0)"))
+ (let ((-> (let ((+documentation+ "draw an arrow pointing (from the left) at the point (x0 y0)"))
(lambda (x0 y0 size snd chn cr)
(let ((points (make-vector 8)))
@@ -32487,7 +32494,7 @@ EDITS: 1
0.0 -0.500 0.0 0.500 0.0 -0.500 0.0 0.500 0.0 -0.500)))
(snd-display "fft-env-data: ~A" vals)))
(let ((hilbert-transform-via-fft
- (let ((documentation "same as FIR version but use FFT and change phases by hand"))
+ (let ((+documentation+ "same as FIR version but use FFT and change phases by hand"))
(lambda* (snd chn)
(let* ((size (framples snd chn))
(len (expt 2 (ceiling (log size 2.0)))))
@@ -35186,7 +35193,7 @@ EDITS: 1
comments))))
(display-samps-in-red
- (let ((documentation "display samples 1000 to 2000 in red whenever they're in the current view"))
+ (let ((+documentation+ "display samples 1000 to 2000 in red whenever they're in the current view"))
(lambda (snd chn)
(catch #t
(lambda ()
@@ -39477,9 +39484,6 @@ EDITS: 1
(fullmix "oboe.snd" #f #f #f (list (list (list 0 0 1 1 2 0) 0.5)))
(fullmix "oboe.snd" 3 2 0 (list (list .1 (make-env '(0 0 1 1) :duration 2 :scaler .5)))))
-
- (load "fullmix.scm") ; this is also in clm-ins.scm so we need a separate set of tests
-
(with-sound (:channels 2 :statistics #t)
(fullmix "pistol.snd")
(fullmix "oboe.snd" 1 2 0 (list (list .1 (make-env '(0 0 1 1) :duration 2 :scaler .5)))))
@@ -39753,7 +39757,7 @@ EDITS: 1
(zip-sound 2 3 "mb.snd" "fyow.snd" '(0 0 1.0 0 1.5 1.0 3.0 1.0) .025)
(if all-args
- (let ((ind (open-sound "oboe.snd"))
+ (let ((ind (open-sound "1a.snd"))
(pv (make-pvocoder 256 4 64))
(rd (make-sampler 0)))
(map-channel (lambda (y) (pvocoder pv rd)))
@@ -40622,7 +40626,7 @@ EDITS: 1
(let ((snd (find-sound (with-sound (:clipped #f)
(let ((gen (make-nrcos 100 :n 15 :r 0.5))
(indr (make-env '(0 -1 1 1) :length 40000 :scaler 0.9999)))
- (let ((set-nrcos-scaler (procedure-setter (gen 'mus-scaler))))
+ (let ((set-nrcos-scaler (setter (gen 'mus-scaler))))
(do ((i 0 (+ i 1)))
((= i base-length))
(set-nrcos-scaler gen (env indr))
@@ -41079,7 +41083,7 @@ EDITS: 1
(let ((gen1 (make-safe-rxycos 1000 1 0.99))
(gen2 (make-safe-rxycos 1000 1 0.99))
(frqf (make-env '(0 0 1 1) :length 10000 :scaler (hz->radians 1000))))
- (let ((set-freq (procedure-setter (gen2 'mus-frequency))))
+ (let ((set-freq (setter (gen2 'mus-frequency))))
(do ((i 0 (+ i 1)))
((= i base-length))
(let ((fm (env frqf)))
@@ -41093,7 +41097,7 @@ EDITS: 1
(let ((gen1 (make-safe-rxycos 1000 .1 0.99))
(gen2 (make-safe-rxycos 1000 .1 0.99))
(frqf (make-env '(0 0 1 1) :length 10000 :scaler (hz->radians 1000))))
- (let ((set-freq (procedure-setter (gen2 'mus-frequency))))
+ (let ((set-freq (setter (gen2 'mus-frequency))))
(set! base-r (gen1 'r))
(do ((i 0 (+ i 1)))
((= i base-length))
@@ -41434,3626 +41438,9 @@ EDITS: 1
(test-documentation-instruments)) ; clm23.scm
-;;; ---------------- test 23: X/Xt/Xm --------------------
-(define (snd_test_23)
-
- (when (and (provided? 'snd-motif)
- (provided? 'xm))
- (with-let (sublet *motif*)
-
- (define x->snd-color
- (let ((documentation "(x->snd-color color-name) returns a Snd color object corresponding to the X11 color name 'color-name'"))
- (lambda (color-name)
- (let* ((col (XColor))
- (dpy (XtDisplay (cadr (main-widgets))))
- (cmap (DefaultColormap dpy (DefaultScreen dpy))))
- (if (= (XAllocNamedColor dpy cmap color-name col col) 0)
- (snd-error (format #f "can't allocate ~A" color-name))
- (make-color-with-catch (/ (.red col) 65535.0)
- (/ (.green col) 65535.0)
- (/ (.blue col) 65535.0)))))))
-
- (define (snd-test-clean-string str)
- ;; full file name should be unique, so I think we need only fix it up to look like a flat name
- (let ((len (length str)))
- (do ((new-str (make-string len #\.))
- (i 0 (+ i 1)))
- ((= i len) new-str)
- (let ((c (str i)))
- (string-set! new-str i (if (memv c '(#\\ #\/)) #\_ c))))))
-
- (define (tagged-p val sym) (or (not val) (and (pair? val) (eq? (car val) sym))))
- (define (array-p val type) (or (null? val) (and (pair? val) (type (car val)))))
- (define XM_INT integer?)
- (define (XM_ULONG val) (and (integer? val) (>= val 0)))
- (define (XM_UCHAR val) (or (char? val) (and (integer? val) (>= val 0) (< val 65536))))
- (define XM_FLOAT real?)
- (define (XM_STRING val) (or (not val) (string? val) (memv val '(0 0.0))))
- (define (XM_XMSTRING val) (or (tagged-p val 'XmString) (memv val '(0 0.0))))
- (define (XM_STRING_TABLE val) (or (array-p val (lambda (n) (eq? (car n) 'XmString))) (memv val '(0 0.0))))
- (define (XM_INT_TABLE val) (or (array-p val integer?) (memv val '(0 0.0))))
- (define (XM_BOOLEAN val) (memv val '(#f #t 0 0.0)))
- (define (XM_RENDER_TABLE val) (or (tagged-p val 'XmRenderTable) (memv val '(0 0.0))))
- (define (XM_TRANSFER_ENTRY_LIST val) (or (list? val) (memv val '(0 0.0))))
- (define (XM_RECTANGLE_LIST val) (or (array-p val (lambda (n) (eq? (car n) 'XRectangle))) (memv val '(0 0.0))))
- (define (XM_TAB_LIST val) (or (tagged-p val 'XmTabList) (memv val '(0 0.0))))
- (define (XM_WIDGET_LIST val) (or (array-p val (lambda (n) (eq? (car n) 'Widget))) (memv val '(0 0.0))))
- (define (XM_ATOM_LIST val) (or (not val) (array-p val (lambda (n) (eq? (car n) 'Atom))) (memv val '(0 0.0))))
- (define XM_STRING_LIST XM_STRING_TABLE)
- (define (XM_CHARSET_TABLE val) (or (array-p val (lambda (n) (eq? (car n) 'CharSet))) (memv val '(0 0.0))))
- (define (XM_KEYSYM_TABLE val) (or (array-p val (lambda (n) (eq? (car n) 'KeySym))) (memv val '(0 0.0))))
- (define (XM_WIDGET val) (or (tagged-p val 'Widget) (memv val '(0 0.0))))
- (define (XM_PIXEL val) (or (tagged-p val 'Pixel) (memv val '(0 0.0))))
- (define (XM_PIXMAP val) (or (tagged-p val 'Pixmap) (memv val '(0 0.0))))
- (define (XM_XFONTSTRUCT val) (or (tagged-p val 'XFontStruct) (memv val '(0 0.0))))
- (define (XM_DIMENSION val) (and (integer? val) (>= val 0) (< val 65536)))
- (define (XM_ATOM val) (or (tagged-p val 'Atom) (memv val '(0 0.0))))
- (define (XM_TEXT_SOURCE val) (or (tagged-p val 'XmTextSource) (memv val '(0 0.0))))
- (define (XM_COLORMAP val) (or (tagged-p val 'Colormap) (memv val '(0 0.0))))
- (define (XM_KEYSYM val) (or (tagged-p val 'KeySym) (memv val '(0 0.0))))
- (define (XM_SCREEN val) (or (tagged-p val 'Screen) (memv val '(0 0.0))))
- (define (XM_WINDOW val) (or (tagged-p val 'Window) (memv val '(0 0.0))))
- (define (XM_VISUAL val) (or (tagged-p val 'Visual) (memv val '(0 0.0))))
- (define (XM_WIDGET_CLASS val) (or (tagged-p val 'WidgetClass) (memv val '(0 0.0))))
- (define (XM_STRING_OR_INT val) (or (string? val) (integer? val) (not val)))
- (define (XM_STRING_OR_XMSTRING val) (or (string? val) (not val) (and (pair? val) (eq? (car val) 'XmString)) (memv val '(0 0.0))))
- (define (XM_POSITION val) (and (integer? val) (< (abs val) 65536)))
- (define XM_SHORT XM_POSITION)
- (define (XM_CALLBACK val) (or (procedure? val) (not val) (integer? val)))
- (define (XM_TRANSFER_CALLBACK val) (or (procedure? val) (not val) (integer? val) (and (pair? val) (procedure? (car val)))))
- (define XM_CONVERT_CALLBACK XM_TRANSFER_CALLBACK)
- (define XM_SEARCH_CALLBACK XM_CALLBACK)
- (define XM_ORDER_CALLBACK XM_CALLBACK)
- (define XM_QUALIFY_CALLBACK XM_CALLBACK)
- (define XM_ALLOC_COLOR_CALLBACK XM_CALLBACK)
- (define XM_POPUP_CALLBACK XM_CALLBACK)
- (define XM_SCREEN_COLOR_CALLBACK XM_CALLBACK)
- (define XM_DROP_CALLBACK XM_CALLBACK)
- (define XM_PARSE_CALLBACK XM_CALLBACK)
-
- ;; check some resource stuff first
- (let ((hgt (cadr (XtVaGetValues (cadr (main-widgets)) (list XmNheight 0))))
- (wid (cadr (XtVaGetValues (cadr (main-widgets)) (list XmNwidth 0)))))
- (if (or (<= wid 0) (<= hgt 0) (> wid 65535) (> hgt 65535))
- (snd-display "Dimension miscast: ~A ~A" wid hgt)))
-
- ;; ---------------- X tests ----------------
- (let ((scr (current-screen))
- (dpy (XtDisplay (cadr (main-widgets)))))
- (if (not (member (.height scr) '(1200 1600) =))
- (snd-display "screen height: ~A" (.height scr)))
- (if (not (member (.width scr) '(1600 2560) =))
- (snd-display "screen width: ~A" (.width scr)))
- (if (not (= (.ndepths scr) 7))
- (snd-display "screen ndepths: ~A" (.ndepths scr)))
- (let* ((dps (.depths scr))
- (cdp (car dps)))
- (if (not (and (= (length dps) (.ndepths scr))
- (Depth? cdp)))
- (snd-display "depths: ~A" (.depths scr)))
- (if (not (= (.depth cdp) 24)) (snd-display ".depths val: ~A" (map .depth dps)))
- (if (pair? (.visuals cdp))
- (if (not (Visual? (car (.visuals cdp))))
- (snd-display "visuals: ~A" (map .visuals dps))
- (if (not (= (.bits_per_rgb (car (.visuals cdp))) 8))
- (snd-display "bits/visuals: ~A" (map .bits_per_rgb (.visuals cdp)))))
- (if (and (cadr dps)
- (pair? (.visuals (cadr dps))))
- (if (not (Visual? (car (.visuals (cadr dps)))))
- (snd-display "visuals: ~A" (map .visuals dps))
- (if (not (= (.bits_per_rgb (car (.visuals (cadr dps)))) 8))
- (snd-display "bits/visuals: ~A" (map .bits_per_rgb (.visuals (cadr dps)))))))))
- (if (not (= (cadr (.white_pixel scr)) 16777215))
- (snd-display "screen white_pixel: ~A" (.white_pixel scr)))
- (if (not (= (cadr (.black_pixel scr)) 0))
- (snd-display "screen black_pixel: ~A" (.black_pixel scr)))
- (if (.backing_store scr)
- (snd-display "screen backing_store: ~A" (.backing_store scr)))
- (if (not (= (.min_maps scr) 1))
- (snd-display "screen min_maps: ~A" (.min_maps scr)))
- (if (not (= (.max_maps scr) 1))
- (snd-display "screen max_maps: ~A" (.max_maps scr)))
- (if (.save_unders scr)
- (snd-display "screen save_unders: ~A" (.save_unders scr)))
- (if (not (GC? (.default_gc scr)))
- (snd-display "screen default_gc: ~A" (.default_gc scr)))
- (if (not (Window? (.root scr)))
- (snd-display "screen root: ~A" (.root scr)))
- (if (not (Colormap? (.cmap scr)))
- (snd-display "screen colormap: ~A" (.cmap scr)))
-
- (if (not (equal? (DisplayOfScreen scr) (.display scr)))
- (snd-display "DisplayOfScreen: ~A ~A" (DisplayOfScreen scr) (.display scr)))
- (if (not (equal? (RootWindowOfScreen scr) (.root scr)))
- (snd-display "RootWindowOfScreen: ~A ~A" (RootWindowOfScreen scr) (.root scr)))
- (if (not (equal? (BlackPixelOfScreen scr) (.black_pixel scr)))
- (snd-display "BlackPixelOfScreen: ~A ~A" (BlackPixelOfScreen scr) (.black_pixel scr)))
- (if (not (equal? (WhitePixelOfScreen scr) (.white_pixel scr)))
- (snd-display "WhitePixelOfScreen: ~A ~A" (WhitePixelOfScreen scr) (.white_pixel scr)))
- (if (not (equal? (DefaultColormapOfScreen scr) (.cmap scr)))
- (snd-display "DefaultColormapOfScreen: ~A ~A" (DefaultColormapOfScreen scr) (.cmap scr)))
- (if (not (equal? (DefaultDepthOfScreen scr) (.root_depth scr)))
- (snd-display "DefaultDepthOfScreen: ~A ~A" (DefaultDepthOfScreen scr) (.root_depth scr)))
- (if (not (equal? (DefaultGCOfScreen scr) (.default_gc scr)))
- (snd-display "DefaultGCOfScreen: ~A ~A" (DefaultGCOfScreen scr) (.default_gc scr)))
- (if (not (equal? (DefaultVisualOfScreen scr) (.root_visual scr)))
- (snd-display "DefaultVisualOfScreen: ~A ~A" (DefaultVisualOfScreen scr) (.root_visual scr)))
- (if (not (equal? (WidthOfScreen scr) (.width scr)))
- (snd-display "WidthOfScreen: ~A ~A" (WidthOfScreen scr) (.width scr)))
- (if (not (equal? (HeightOfScreen scr) (.height scr)))
- (snd-display "HeightOfScreen: ~A ~A" (HeightOfScreen scr) (.height scr)))
- (if (not (equal? (WidthMMOfScreen scr) (.mwidth scr)))
- (snd-display "WidthMMOfScreen: ~A ~A" (WidthMMOfScreen scr) (.mwidth scr)))
- (if (not (equal? (HeightMMOfScreen scr) (.mheight scr)))
- (snd-display "HeightMMOfScreen: ~A ~A" (HeightMMOfScreen scr) (.mheight scr)))
- (if (not (equal? (PlanesOfScreen scr) (.root_depth scr)))
- (snd-display "PlanesOfScreen: ~A ~A" (PlanesOfScreen scr) (.root_depth scr)))
- (if (not (equal? (MinCmapsOfScreen scr) (.min_maps scr)))
- (snd-display "MinCmapsOfScreen: ~A ~A" (MinCmapsOfScreen scr) (.min_maps scr)))
- (if (not (equal? (MaxCmapsOfScreen scr) (.max_maps scr)))
- (snd-display "MaxCmapsOfScreen: ~A ~A" (MaxCmapsOfScreen scr) (.max_maps scr)))
- (if (not (equal? (DoesSaveUnders scr) (.save_unders scr)))
- (snd-display "DoesSaveUnders: ~A ~A" (DoesSaveUnders scr) (.save_unders scr)))
- (if (not (equal? (DoesBackingStore scr) (.backing_store scr)))
- (snd-display "DoesBackingStore: ~A ~A" (DoesBackingStore scr) (.backing_store scr)))
- (if (not (equal? (EventMaskOfScreen scr) (.root_input_mask scr)))
- (snd-display "EventMaskOfScreen: ~A ~A" (EventMaskOfScreen scr) (.root_input_mask scr)))
-
- (if (not (equal? (XDisplayOfScreen scr) (.display scr)))
- (snd-display "XDisplayOfScreen: ~A ~A" (XDisplayOfScreen scr) (.display scr)))
- (if (not (equal? (XDisplayOfScreen (XScreenOfDisplay dpy 0)) dpy))
- (snd-display "XScreenOfDisplay ~A ~A" (XDisplayOfScreen (XScreenOfDisplay dpy 0)) dpy))
- (if (not (equal? (XDefaultScreenOfDisplay dpy) scr))
- (snd-display "XDefaultScreenOfDisplay ~A ~A" (XDefaultScreenOfDisplay dpy) scr))
- (if (not (equal? (XRootWindowOfScreen scr) (.root scr)))
- (snd-display "XRootWindowOfScreen: ~A ~A" (XRootWindowOfScreen scr) (.root scr)))
- (if (not (equal? (XBlackPixelOfScreen scr) (.black_pixel scr)))
- (snd-display "XBlackPixelOfScreen: ~A ~A" (XBlackPixelOfScreen scr) (.black_pixel scr)))
- (if (not (equal? (XWhitePixelOfScreen scr) (.white_pixel scr)))
- (snd-display "XWhitePixelOfScreen: ~A ~A" (XWhitePixelOfScreen scr) (.white_pixel scr)))
- (if (not (equal? (XDefaultColormapOfScreen scr) (.cmap scr)))
- (snd-display "XDefaultColormapOfScreen: ~A ~A" (XDefaultColormapOfScreen scr) (.cmap scr)))
- (if (not (equal? (XDefaultDepthOfScreen scr) (.root_depth scr)))
- (snd-display "XDefaultDepthOfScreen: ~A ~A" (XDefaultDepthOfScreen scr) (.root_depth scr)))
- (if (not (equal? (XDefaultGCOfScreen scr) (.default_gc scr)))
- (snd-display "XDefaultGCOfScreen: ~A ~A" (XDefaultGCOfScreen scr) (.default_gc scr)))
- (if (not (equal? (XDefaultVisualOfScreen scr) (.root_visual scr)))
- (snd-display "XDefaultVisualOfScreen: ~A ~A" (XDefaultVisualOfScreen scr) (.root_visual scr)))
- (if (not (equal? (XWidthOfScreen scr) (.width scr)))
- (snd-display "XWidthOfScreen: ~A ~A" (XWidthOfScreen scr) (.width scr)))
- (if (not (equal? (XHeightOfScreen scr) (.height scr)))
- (snd-display "XHeightOfScreen: ~A ~A" (XHeightOfScreen scr) (.height scr)))
- (if (not (equal? (XWidthMMOfScreen scr) (.mwidth scr)))
- (snd-display "XWidthMMOfScreen: ~A ~A" (XWidthMMOfScreen scr) (.mwidth scr)))
- (if (not (equal? (XHeightMMOfScreen scr) (.mheight scr)))
- (snd-display "XHeightMMOfScreen: ~A ~A" (XHeightMMOfScreen scr) (.mheight scr)))
- (if (not (equal? (XPlanesOfScreen scr) (.root_depth scr)))
- (snd-display "XPlanesOfScreen: ~A ~A" (XPlanesOfScreen scr) (.root_depth scr)))
- (if (not (equal? (XMinCmapsOfScreen scr) (.min_maps scr)))
- (snd-display "XMinCmapsOfScreen: ~A ~A" (XMinCmapsOfScreen scr) (.min_maps scr)))
- (if (not (equal? (XMaxCmapsOfScreen scr) (.max_maps scr)))
- (snd-display "XMaxCmapsOfScreen: ~A ~A" (XMaxCmapsOfScreen scr) (.max_maps scr)))
- (if (not (equal? (XDoesSaveUnders scr) (.save_unders scr)))
- (snd-display "XDoesSaveUnders: ~A ~A" (XDoesSaveUnders scr) (.save_unders scr)))
- (if (not (equal? (XDoesBackingStore scr) (.backing_store scr)))
- (snd-display "XDoesBackingStore: ~A ~A" (XDoesBackingStore scr) (.backing_store scr)))
- (if (not (equal? (XEventMaskOfScreen scr) (.root_input_mask scr)))
- (snd-display "XEventMaskOfScreen: ~A ~A" (XEventMaskOfScreen scr) (.root_input_mask scr)))
- )
-
- (let* ((scr (current-screen))
- (scrn (XScreenNumberOfScreen scr))
- (dpy (XtDisplay (cadr (main-widgets))))
- (vis (DefaultVisual dpy scrn))
- (win (XtWindow (cadr (main-widgets)))))
-
- (if (not (equal? (RootWindow dpy scrn) (.root scr)))
- (snd-display "RootWindow: ~A ~A" (RootWindow dpy scrn) (.root scr)))
- (if (not (equal? (DefaultRootWindow dpy) (.root (ScreenOfDisplay dpy (DefaultScreen dpy)))))
- (snd-display "DefaultRootWindow: ~A ~A" (DefaultRootWindow dpy) (.root (ScreenOfDisplay dpy (DefaultScreen dpy)))))
- (if (not (equal? (DefaultVisual dpy scrn) (.root_visual scr)))
- (snd-display "DefaultVisual: ~A ~A" (DefaultVisual dpy scrn) (.root_visual scr)))
- (if (not (equal? (DefaultGC dpy scrn) (.default_gc scr)))
- (snd-display "DefaultGC: ~A ~A" (DefaultGC dpy scrn) (.default_gc scr)))
- (if (not (equal? (BlackPixel dpy scrn) (.black_pixel scr)))
- (snd-display "BlackPixel: ~A ~A" (BlackPixel dpy scrn) (.black_pixel scr)))
- (if (not (equal? (WhitePixel dpy scrn) (.white_pixel scr)))
- (snd-display "WhitePixel ~A ~A" (WhitePixel dpy scrn) (.white_pixel scr)))
- (if (not (equal? (DisplayWidth dpy scrn) (.width scr)))
- (snd-display "DisplayWidth: ~A ~A" (DisplayWidth dpy scrn) (.width scr)))
- (if (not (equal? (DisplayHeight dpy scrn) (.height scr)))
- (snd-display "DisplayHeight: ~A ~A" (DisplayHeight dpy scrn) (.height scr)))
- (if (not (equal? (DisplayWidthMM dpy scrn) (.mwidth scr)))
- (snd-display "DisplayWidthMM: ~A ~A" (DisplayWidthMM dpy scrn) (.mwidth scr)))
- (if (not (equal? (DisplayHeightMM dpy scrn) (.mheight scr)))
- (snd-display "DisplayHeightMM: ~A ~A" (DisplayHeightMM dpy scrn) (.mheight scr)))
- (if (not (equal? (DisplayPlanes dpy scrn) (.root_depth scr)))
- (snd-display "DisplayPlanes: ~A ~A" (DisplayPlanes dpy scrn) (.root_depth scr)))
- (if (not (equal? (DefaultDepth dpy scrn) (.root_depth scr)))
- (snd-display "DefaultDepth: ~A ~A" (DefaultDepth dpy scrn) (.root_depth scr)))
- (if (not (equal? (DefaultColormap dpy scrn) (.cmap scr)))
- (snd-display "DefaultColormap: ~A ~A" (DefaultColormap dpy scrn) (.cmap scr)))
-
- (if (not (equal? (XRootWindow dpy scrn) (.root scr)))
- (snd-display "XRootWindow: ~A ~A" (XRootWindow dpy scrn) (.root scr)))
- (if (not (equal? (XDefaultRootWindow dpy) (.root (ScreenOfDisplay dpy (DefaultScreen dpy)))))
- (snd-display "XDefaultRootWindow: ~A ~A" (XDefaultRootWindow dpy) (.root (ScreenOfDisplay dpy (DefaultScreen dpy)))))
- (if (not (equal? (XDefaultVisual dpy scrn) (.root_visual scr)))
- (snd-display "XDefaultVisual: ~A ~A" (XDefaultVisual dpy scrn) (.root_visual scr)))
- (if (not (equal? (XDefaultGC dpy scrn) (.default_gc scr)))
- (snd-display "XDefaultGC: ~A ~A" (XDefaultGC dpy scrn) (.default_gc scr)))
- (if (not (equal? (XBlackPixel dpy scrn) (.black_pixel scr)))
- (snd-display "XBlackPixel: ~A ~A" (XBlackPixel dpy scrn) (.black_pixel scr)))
- (if (not (equal? (XWhitePixel dpy scrn) (.white_pixel scr)))
- (snd-display "XWhitePixel ~A ~A" (XWhitePixel dpy scrn) (.white_pixel scr)))
- (if (not (equal? (XDisplayWidth dpy scrn) (.width scr)))
- (snd-display "XDisplayWidth: ~A ~A" (XDisplayWidth dpy scrn) (.width scr)))
- (if (not (equal? (XDisplayHeight dpy scrn) (.height scr)))
- (snd-display "XDisplayHeight: ~A ~A" (XDisplayHeight dpy scrn) (.height scr)))
- (if (not (equal? (XDisplayWidthMM dpy scrn) (.mwidth scr)))
- (snd-display "XDisplayWidthMM: ~A ~A" (XDisplayWidthMM dpy scrn) (.mwidth scr)))
- (if (not (equal? (XDisplayHeightMM dpy scrn) (.mheight scr)))
- (snd-display "XDisplayHeightMM: ~A ~A" (XDisplayHeightMM dpy scrn) (.mheight scr)))
- (if (not (equal? (XDisplayPlanes dpy scrn) (.root_depth scr)))
- (snd-display "XDisplayPlanes: ~A ~A" (XDisplayPlanes dpy scrn) (.root_depth scr)))
- (if (not (equal? (XDefaultDepth dpy scrn) (.root_depth scr)))
- (snd-display "XDefaultDepth: ~A ~A" (XDefaultDepth dpy scrn) (.root_depth scr)))
- (if (not (equal? (XDefaultColormap dpy scrn) (.cmap scr)))
- (snd-display "XDefaultColormap: ~A ~A" (XDefaultColormap dpy scrn) (.cmap scr)))
-
- (if (not (equal? (XDefaultVisual dpy scrn) vis))
- (snd-display "XDefaultVisual: ~A ~A" (XDefaultVisual dpy scrn) vis))
- (if (not (equal? (DisplayCells dpy scrn) (.map_entries vis)))
- (snd-display "DisplayCells: ~A ~A" (DisplayCells dpy scrn) (.map_entries vis)))
- (if (not (equal? (CellsOfScreen scr) (.map_entries (DefaultVisualOfScreen scr))))
- (snd-display "CellsOfScreen: ~A ~A" (CellsOfScreen scr) (.map_entries (DefaultVisualOfScreen scr))))
- (if (not (equal? (XDisplayCells dpy scrn) (.map_entries vis)))
- (snd-display "XDisplayCells: ~A ~A" (XDisplayCells dpy scrn) (.map_entries vis)))
- (if (not (equal? (XCellsOfScreen scr) (.map_entries (DefaultVisualOfScreen scr))))
- (snd-display "XCellsOfScreen: ~A ~A" (XCellsOfScreen scr) (.map_entries (DefaultVisualOfScreen scr))))
- (if (< (XNextRequest dpy) (XLastKnownRequestProcessed dpy))
- (snd-display "XRequests: ~A ~A" (XNextRequest dpy) (XLastKnownRequestProcessed dpy)))
- (if (< (NextRequest dpy) (LastKnownRequestProcessed dpy))
- (snd-display "Requests: ~A ~A" (NextRequest dpy) (LastKnownRequestProcessed dpy)))
- (if (not (= (XDisplayMotionBufferSize dpy) 256))
- (snd-display "XDisplayMotionBufferSize: ~A" (XDisplayMotionBufferSize dpy)))
- (XGetMotionEvents dpy win (list 'Time 100) (list 'Time CurrentTime))
-
- (let ((lmapk (XNewModifiermap 2))
- (kcd (list 'KeyCode 50)))
- (if (not (XModifierKeymap? lmapk))
- (snd-display "xNewModifiermap: ~A" lmapk)
- (set! lmapk (XDeleteModifiermapEntry (XInsertModifiermapEntry lmapk kcd ShiftMapIndex) kcd ShiftMapIndex))))
-
- (if (not (= (XExtendedMaxRequestSize dpy) 4194303))
- (snd-display "XExtendedMaxRequestSize ~A" (XExtendedMaxRequestSize dpy)))
- (if (not (= (XMaxRequestSize dpy) 65535))
- (snd-display "XMaxRequestSize ~A" (XMaxRequestSize dpy)))
- (if (not (member '(Atom 40) (XListProperties dpy win)))
- (snd-display "XListProperties: ~A" (XListProperties dpy win)))
- (if (not (member "SHAPE" (XListExtensions dpy)))
- (snd-display "XListExtensions: ~A" (XListExtensions dpy)))
- (let ((val (XListInstalledColormaps dpy win)))
- (if (or (memq val '(#f ()))
- (not (Colormap? (car val))))
- (snd-display "XListInstalledColormaps: ~A" (XListInstalledColormaps dpy win))))
- (if (not (string=? (XKeysymToString (list 'KeySym 80)) "P"))
- (snd-display "XKeysymToString: ~A" (XKeysymToString (list 'KeySym 80))))
- (if (not (string=? (XGetAtomName dpy (list 'Atom 40)) "WM_NORMAL_HINTS"))
- (snd-display "XGetAtomName: ~A" (XGetAtomName dpy (list 'Atom 40))))
-
- (if (not (= (.bits_per_rgb vis) 8)) (snd-display "bits_per_rgb: ~A" (.bits_per_rgb vis)))
- (if (not (= (.blue_mask vis) 255)) (snd-display "blue_mask: ~A" (.blue_mask vis)))
- (if (not (= (.green_mask vis) 65280)) (snd-display "green_mask: ~A" (.green_mask vis)))
- (if (not (= (.red_mask vis) 16711680)) (snd-display "red_mask: ~A" (.red_mask vis)))
- (if (not (= AllPlanes 4294967295)) (snd-display "AllPlanes: ~A" AllPlanes))
-
- (if (< (QLength dpy) 0) (snd-display "QLength: ~A" (QLength dpy)))
- (if (not (= (ScreenCount dpy) 1)) (snd-display "ScreenCount: ~A" (ScreenCount dpy)))
- (if (not (string=? (ServerVendor dpy) "The X.Org Foundation")) (snd-display "ServerVendor: ~A" (ServerVendor dpy)))
- (if (not (= (ProtocolRevision dpy) 0)) (snd-display "ProtocolRevision: ~A" (ProtocolRevision dpy)))
- (if (not (= (ProtocolVersion dpy) 11)) (snd-display "ProtocolVersion: ~A" (ProtocolVersion dpy)))
- (if (not (number? (VendorRelease dpy))) (snd-display "VendorRelease: ~A" (VendorRelease dpy)))
- (if (not (string=? (DisplayString dpy) ":0.0")) (snd-display "DisplayString: ~A" (DisplayString dpy)))
- (if (not (= (BitmapUnit dpy) 32)) (snd-display "BitmapUnit: ~A" (BitmapUnit dpy)))
- (if (not (= (BitmapPad dpy) 32)) (snd-display "BitmapPad: ~A" (BitmapPad dpy)))
- (if (not (= (BitmapBitOrder dpy) 0)) (snd-display "BitmapBitOrder: ~A" (BitmapBitOrder dpy)))
- (if (not (= (ImageByteOrder dpy) 0)) (snd-display "ImageByteOrder: ~A" (ImageByteOrder dpy)))
- (if (not (= (DefaultScreen dpy) 0)) (snd-display "DefaultScreen: ~A" (DefaultScreen dpy)))
-
- (let* ((col (XColor))
- (col1 (XColor))
- (dpy (XtDisplay (cadr (main-widgets))))
- (cmap (DefaultColormap dpy (DefaultScreen dpy))))
- (if (= (XAllocNamedColor dpy cmap "blue" col col) 0) (snd-display "XAllocNamedColor blue ~A?" col))
- (if (not (= (.red col) 0)) (snd-display "XAllocNamedColor: ~A" (.red col)))
- (if (= (XAllocColor dpy cmap col) 0) (snd-display "XAllocColor?"))
- (if (not (= (.red col) 0)) (snd-display "XAllocColor: ~A" (.red col)))
- (if (= (XParseColor dpy cmap "blue" col) 0) (snd-display "XParseColor?"))
- (if (not (= (.red col) 0)) (snd-display "XParseColor: ~A" (.red col)))
- (if (= (XAllocNamedColor dpy cmap "green" col1 col1) 0) (snd-display "XAllocNamedColor green ~A?" col1))
- (XQueryColor dpy cmap col)
- (XQueryColors dpy cmap (list col col1)))
-
- (XSetAfterFunction dpy (lambda (n) 0))
- (XSetAfterFunction dpy #f)
- (if (not (equal? (XDisplayKeycodes dpy) '(1 8 255)))
- (snd-display "XDisplayKeycodes: ~A" (XDisplayKeycodes dpy)))
- (let ((str (XFetchName dpy win)))
- (if (not (string=? (substring str 0 3) "snd"))
- (snd-display "XFetchName: ~A" str)))
- (XStoreName dpy win "hiho")
- (let ((str (XFetchName dpy win)))
- (if (not (string=? str "hiho"))
- (snd-display "XStoreName: ~A" str)))
- (XStoreName dpy win "snd")
- (let ((str (XGetIconName dpy win)))
- (if (not (string=? str "snd"))
- (snd-display "XGetIconName: ~A" str)))
- (XSetIconName dpy win "hiho")
- (let ((str (XGetIconName dpy win)))
- (if (not (string=? str "hiho"))
- (snd-display "XSetIconName: ~A" str)))
- (let ((geo (XGetGeometry dpy win)))
- (if (not (and (= (window-width) (geo 4))
- (= (window-height) (geo 5))))
- (snd-display "XGetGeometry: ~A (~A ~A)" geo (window-width) (window-height))))
- (let ((focus (XGetInputFocus dpy)))
- (if (not (and (= (car focus) 1)
- (Window? (cadr focus))))
- (snd-display "XGetInputFocus: ~A" focus)))
- (let ((vals (XGetPointerControl dpy)))
- (if (not (equal? vals '(1 2 1 4))) (snd-display "pointer state: ~A" vals))
- (XChangePointerControl dpy #f #t 2 1 8)
- (set! vals (XGetPointerControl dpy))
- (if (not (equal? vals '(1 2 1 8))) (snd-display "set pointer state: ~A" vals))
- (XChangePointerControl dpy #f #t 2 1 4))
- (XAutoRepeatOff dpy)
- (if (not (= ((XGetKeyboardControl dpy) 5) 0)) (snd-display "AutoRepeatOff?"))
- (XAutoRepeatOn dpy)
- (if (not (= ((XGetKeyboardControl dpy) 5) 1)) (snd-display "AutoRepeatOn?"))
- (let ((vals (XGetPointerMapping dpy 0 3)))
- (if (not (equal? vals '(1 2 3))) (snd-display "XGetPointerMapping: ~A" vals)))
- (XGetScreenSaver dpy)
- (XMoveWindow dpy win 100 10)
- (XSync dpy #f)
- (XResizeWindow dpy win 400 400)
- (XSync dpy #f)
- (XMoveResizeWindow dpy win 120 20 500 500)
- (XSync dpy #f)
- (let ((attr (XGetWindowAttributes dpy win)))
- (if (> (abs (- (.x attr) 120)) 200) (snd-display "XMoveWindow x etc: ~A" (.x attr)))
- (if (> (abs (- (.y attr) 20)) 200) (snd-display "XMoveWindow y etc: ~A" (.y attr)))
- (if (> (abs (- (.width attr) 500)) 20) (snd-display "XMoveWindow width etc: ~A" (.width attr)))
- (if (> (abs (- (.height attr) 500)) 20) (snd-display "XMoveWindow height etc: ~A" (.height attr)))
- (if (not (= (.border_width attr) 0)) (snd-display "XGetWindowAttributes border_width: ~A" (.border_width attr)))
- (if (not (= (.depth attr) 24)) (snd-display "XGetWindowAttributes depth: ~A" (.depth attr)))
- (if (not (= (.bit_gravity attr) 0)) (snd-display "XGetWindowAttributes bit_gravity: ~A" (.bit_gravity attr)))
- (if (not (= (.win_gravity attr) 1)) (snd-display "XGetWindowAttributes win_gravity: ~A" (.win_gravity attr)))
- (if (.backing_store attr) (snd-display "XGetWindowAttributes backing_store: ~A" (.backing_store attr)))
- (if (.override_redirect attr) (snd-display "XGetWindowAttributes override_redirect: ~A" (.override_redirect attr)))
- (if (.save_under attr) (snd-display "XGetWindowAttributes save_under: ~A" (.save_under attr)))
- (if (not (equal? (.backing_pixel attr) '(Pixel 0))) (snd-display "XGetWindowAttributes backing_pixel: ~A" (.backing_pixel attr)))
- (if (not (= (.map_state attr) 2)) (snd-display "XGetWindowAttributes map_state: ~A" (.map_state attr)))
- (if (not (= (.your_event_mask attr) #x628033)) (snd-display "your_event_mask: ~X" (.your_event_mask attr)))
- (if (not (member (.all_event_masks attr) '(#x628033 #xe28033 #xea8033) =))
- (snd-display "all_event_masks: ~X" (.all_event_masks attr)))
- (if (not (Screen? (.screen attr))) (snd-display "XGetWindowAttributes screen: ~A" (.screen attr)))
- (if (not (member (.do_not_propagate_mask attr) '(0 8204) =))
- (snd-display "XGetWindowAttributes do_not_propagate_mask: ~A" (.do_not_propagate_mask attr)))
- (if (not (= (.backing_planes attr) AllPlanes)) (snd-display "XGetWindowAttributes backing_planes: ~A" (.backing_planes attr)))
- (if (not (= (.win_gravity attr) 1)) (snd-display "XGetWindowAttributes win_gravity: ~A" (.win_gravity attr)))
- (if (not (= (.bit_gravity attr) 0)) (snd-display "XGetWindowAttributes bit_gravity: ~A" (.bit_gravity attr)))
- ;(segfault) (XFree (cadr attr))
- )
- (XResetScreenSaver dpy)
- (if (< (XPending dpy) 0) (snd-display "XPending: ~A" (XPending dpy)))
- (XNoOp dpy)
- (XQueryBestStipple dpy win 100 100)
- (XQueryBestTile dpy win 100 100)
- (XQueryBestSize dpy 0 win 100 100)
- (let ((ext (XQueryExtension dpy "SHAPE")))
- (if (not (eq? (car ext) #t))
- (snd-display "XQueryExtension: ~A" ext)))
- (XQueryKeymap dpy)
- (let ((tree (XQueryTree dpy win)))
- (if (not (and (= (car tree) 1)
- (equal? (XRootWindow dpy 0) (cadr tree))))
- (snd-display "XQueryTree: ~A (~A)" tree (XRootWindow dpy 0))))
-
- (if (< (XQLength dpy) 0) (snd-display "XQLength: ~A" (XQLength dpy)))
- (if (not (= (XScreenCount dpy) 1)) (snd-display "XScreenCount: ~A" (XScreenCount dpy)))
- (if (not (string=? (XServerVendor dpy) "The X.Org Foundation")) (snd-display "XServerVendor: ~A" (XServerVendor dpy)))
- (if (not (= (XProtocolRevision dpy) 0)) (snd-display "XProtocolRevision: ~A" (XProtocolRevision dpy)))
- (if (not (= (XProtocolVersion dpy) 11)) (snd-display "XProtocolVersion: ~A" (XProtocolVersion dpy)))
- (if (not (number? (XVendorRelease dpy))) (snd-display "XVendorRelease: ~A" (XVendorRelease dpy)))
- (if (not (string=? (XDisplayString dpy) ":0.0")) (snd-display "XDisplayString: ~A" (XDisplayString dpy)))
- (if (not (= (XBitmapUnit dpy) 32)) (snd-display "XBitmapUnit: ~A" (XBitmapUnit dpy)))
- (if (not (= (XBitmapPad dpy) 32)) (snd-display "XBitmapPad: ~A" (XBitmapPad dpy)))
- (if (not (= (XBitmapBitOrder dpy) 0)) (snd-display "XBitmapBitOrder: ~A" (XBitmapBitOrder dpy)))
- (if (not (= (XImageByteOrder dpy) 0)) (snd-display "XImageByteOrder: ~A" (XImageByteOrder dpy)))
- (if (not (= (XDefaultScreen dpy) 0)) (snd-display "XDefaultScreen: ~A" (XDefaultScreen dpy)))
- (if (XGetIconSizes dpy win) (snd-display "XGetIconSizes: ~A" (XGetIconSizes dpy win)))
- (if (XGetRGBColormaps dpy win XA_RGB_DEFAULT_MAP)
- (snd-display "XGetRGBColormaps: ~A!" (XGetRGBColormaps dpy win XA_RGB_DEFAULT_MAP)))
- (let ((cmap (XAllocStandardColormap)))
- (for-each
- (lambda (func name)
- (if (not (= (func cmap) 0)) (snd-display "standardcolormap ~A: ~A" name (func cmap))))
- (list .visualid .red_max .red_mult .green_max .green_mult .blue_max .blue_mult)
- '(visualid red_max red_mult green_max green_mult blue_max blue_mult))
- (if (.colormap cmap) (snd-display "colormap: ~A" (.colormap cmap)))
- (XtFree (cadr cmap))
- )
- (let ((icon (XAllocIconSize)))
- (for-each
- (lambda (func name)
- (if (not (= (func icon) 0)) (snd-display "iconsize ~A: ~A" name (func icon))))
- (list .min_width .min_height .max_width .max_height .width_inc .height_inc)
- '(min_width min_height max_width max_height width_inc height_inc))
- (XFree icon))
-
- (let ((fs (XCreateFontSet dpy "*-*-*-*-Normal-*-*-*-*-*-*")))
- (if (or (not (XFontSet? fs))
- (= (cadr fs) 0))
- (snd-display "XCreateFontSet: ~A" fs)
- (let* ((fnts (XFontsOfFontSet fs))
- (fnt (caar fnts)))
- (if (not (XFontStruct? fnt))
- (snd-display "XFontsOfFontSet: ~A" fnts))
- (if (XContextualDrawing fs)
- (snd-display "XContextualDrawing: ~A" (XContextualDrawing fs)))
- (if (XContextDependentDrawing fs)
- (snd-display "XContextDependentDrawing: ~A" (XContextDependentDrawing fs)))
- (if (XDirectionalDependentDrawing fs)
- (snd-display "XDirectionalDependentDrawing: ~A" (XDirectionalDependentDrawing fs)))
- (if (not (string=? (XLocaleOfFontSet fs) "en_US"))
- (snd-display "XLocaleOfFontSet: ~A" (XLocaleOfFontSet fs)))
- (if (not (string=? (XBaseFontNameListOfFontSet fs) "*-*-*-*-Normal-*-*-*-*-*-*"))
- (snd-display "XBaseFontNameListOfFontSet: ~A" (XBaseFontNameListOfFontSet fs)))
- (when fnt
- (let ((wgt (XGetFontProperty fnt XA_WEIGHT))
- (siz (XGetFontProperty fnt XA_POINT_SIZE)))
- (if (not (and (= (cadr wgt) 10)
- (= (cadr siz) 120)))
- (snd-display "XGetFontProperty: ~A ~A" wgt siz)))
- (if (not (= (.descent fnt) 2)) (snd-display "descent: ~A" (.descent fnt)))
- (if (not (= (.ascent fnt) 11)) (snd-display "ascent: ~A" (.ascent fnt)))
- (if (not (XCharStruct? (.per_char fnt))) (snd-display "per_char: ~A" (.per_char fnt)))
- (if (not (XCharStruct? (.max_bounds fnt))) (snd-display "max_bounds: ~A" (.max_bounds fnt)))
- (if (not (XCharStruct? (.min_bounds fnt))) (snd-display "min_bounds: ~A" (.min_bounds fnt)))
- (if (not (XFontProp? (car (.properties fnt)))) (snd-display "properties ~A" (.properties fnt)))
- (if (not (= (.card32 (car (.properties fnt))) 7)) (snd-display "card32: ~A" (.card32 (car (.properties fnt))))))
- (XFreeFontSet dpy fs))))
- (XBell dpy 10)
- (let ((cmd (XGetCommand dpy win)))
- (if (or (null? cmd)
- (not (string=? (substring (car cmd) (- (length (car cmd)) 3)) "snd")))
- (snd-display "XGetCommand: ~A" cmd)))
- (XSetCommand dpy win (list "hiho" "away") 2)
- (if (not (equal? (XGetCommand dpy win) '("hiho" "away")))
- (snd-display "XSetCommand: ~A" (XGetCommand dpy win)))
- (let ((wmp (map (lambda (w) (XGetAtomName dpy w)) (XGetWMProtocols dpy win))))
- (if (not (equal? wmp '("_MOTIF_WM_MESSAGES" "WM_DELETE_WINDOW")))
- (snd-display "XGetWMProtocols: ~A" wmp)))
- (if (not (equal? (XListDepths dpy 0) '(24 1 4 8 15 16 32)))
- (snd-display "XListDepths: ~A" (XListDepths dpy 0)))
- (if (not (equal? (XListPixmapFormats dpy) '((1 1 32) (4 8 32) (8 8 32) (15 16 32) (16 16 32) (24 32 32) (32 32 32))))
- (snd-display "XListPixmapFormats: ~A" (XListPixmapFormats dpy)))
-
- (XWarpPointer dpy (list 'Window None) (list 'Window None) 0 0 10 10 100 100)
- (let ((cs (XQueryBestCursor dpy win 10 10)))
- (if (not (equal? cs '(1 10 10))) (snd-display "XQueryBestCursor: ~A" cs)))
- (let ((pt (XQueryPointer dpy win)))
- (if (not (Window? (cadr pt))) (snd-display "XQueryPointer: ~A" pt)))
- (XRaiseWindow dpy win)
- (XRotateBuffers dpy 1)
- (XSetWindowBorderWidth dpy win 10)
- (XSetWindowBorder dpy win (black-pixel))
- (XSetWindowBackground dpy win *basic-color*)
- (let ((depth (.depth (car (XGetVisualInfo dpy 0 (list 'XVisualInfo 0))))))
- (XSetWindowBorderPixmap dpy win (XCreatePixmap dpy win 10 10 depth))
- (XSetWindowBackgroundPixmap dpy win (XCreatePixmap dpy win 10 10 depth)))
- (XSetWindowBorderPixmap dpy win CopyFromParent)
- (XSetWindowBackgroundPixmap dpy win ParentRelative)
-
- (let ((hints (XGetWMHints dpy win)))
- (if (not (and hints (XWMHints? hints))) (snd-display "XGetWMHints?"))
- (if (not (= (.flags hints) 7)) (snd-display "flags wmhints: ~A" (.flags hints)))
- (if (not (= (.initial_state hints) 1)) (snd-display "initial_state wmhints: ~A" (.initial_state hints)))
- (if (not (.input hints)) (snd-display "input wmhints: ~A" (.input hints)))
- (if (not (Pixmap? (.icon_pixmap hints))) (snd-display "icon_pixmap wmhints: ~A" (.icon_pixmap hints)))
- (if (.icon_window hints) (snd-display "icon_window: ~A" (.icon_window hints)))
- (if (not (equal? (.icon_mask hints) '(Pixmap 0))) (snd-display "icon_mask: ~A" (.icon_mask hints)))
- (if (not (number? (.window_group hints))) (snd-display "window_group: ~A" (.window_group hints)))
- (XtFree (cadr hints))
- (let ((st (XAllocWMHints)))
- (if (not (XWMHints? st)) (snd-display "XAllocWMHints: ~A" st))
- (XFree st))))
-
- (if (not (IsKeypadKey (list 'KeySym XK_KP_Space))) (snd-display "IsKeypadKey kp-space"))
- (if (IsKeypadKey (list 'KeySym XK_A)) (snd-display "IsKeypadKey A"))
- (if (IsPrivateKeypadKey (list 'KeySym XK_A)) (snd-display "IsPrivateKeypadKey A"))
- (if (not (IsCursorKey (list 'KeySym XK_Home))) (snd-display "IsCursorKey Home"))
- (if (IsCursorKey (list 'KeySym XK_S)) (snd-display "IsCursorKey S"))
- (if (not (IsPFKey (list 'KeySym XK_KP_F1))) (snd-display "IsPFKey F1"))
- (if (IsPFKey (list 'KeySym XK_S)) (snd-display "IsPFKey S"))
- (if (not (IsFunctionKey (list 'KeySym XK_F1))) (snd-display "IsFunctionKey F1"))
- (if (IsFunctionKey (list 'KeySym XK_S)) (snd-display "IsFunctionKey S"))
- (if (not (IsMiscFunctionKey (list 'KeySym XK_Select))) (snd-display "IsMiscFunctionKey Select"))
- (if (IsMiscFunctionKey (list 'KeySym XK_S)) (snd-display "IsMiscFunctionKey S"))
- (if (not (IsModifierKey (list 'KeySym XK_Shift_L))) (snd-display "IsModifierKey Shift"))
- (if (IsModifierKey (list 'KeySym XK_S)) (snd-display "IsModifierKey S"))
-
- (let (;(scr (current-screen))
- (dpy (XtDisplay (cadr (main-widgets))))
- (val (XGCValues))
- (wn (XtWindow (cadr (main-widgets)))))
- (set! (.function val) GXclear)
- (if (not (equal? (.function val) GXclear))
- (snd-display "function: ~A ~A" (.function val) GXclear))
- (set! (.line_width val) 10)
- (if (not (eqv? (.line_width val) 10))
- (snd-display "line_width: ~A ~A" (.line_width val) 10))
- (set! (.line_style val) LineSolid)
- (if (not (equal? (.line_style val) LineSolid))
- (snd-display "line_style: ~A ~A" (.line_style val) LineSolid))
- (set! (.background val) (WhitePixelOfScreen (current-screen)))
- (if (not (equal? (.background val) (WhitePixelOfScreen (current-screen))))
- (snd-display "background: ~A ~A" (.background val) (WhitePixelOfScreen (current-screen))))
- (set! (.foreground val) (BlackPixelOfScreen (current-screen)))
- (if (not (equal? (.foreground val) (BlackPixelOfScreen (current-screen))))
- (snd-display "foreground: ~A ~A" (.foreground val) (BlackPixelOfScreen (current-screen))))
- ;; plane_mask?
- (set! (.cap_style val) CapRound)
- (if (not (equal? (.cap_style val) CapRound))
- (snd-display "cap_style: ~A ~A" (.cap_style val) CapRound))
- (set! (.join_style val) JoinMiter)
- (if (not (equal? (.join_style val) JoinMiter))
- (snd-display "join_style: ~A ~A" (.join_style val) JoinMiter))
- (set! (.fill_style val) FillSolid)
- (if (not (equal? (.fill_style val) FillSolid))
- (snd-display "fill_style: ~A ~A" (.fill_style val) FillSolid))
- (set! (.fill_rule val) EvenOddRule)
- (if (not (equal? (.fill_rule val) EvenOddRule))
- (snd-display "fill_rule: ~A ~A" (.fill_rule val) EvenOddRule))
- (set! (.arc_mode val) ArcChord)
- (if (not (equal? (.arc_mode val) ArcChord))
- (snd-display "arc_mode: ~A ~A" (.arc_mode val) ArcChord))
- ;; tile stipple clip_mask are Pixmaps
- (set! (.ts_x_origin val) 1)
- (if (not (eqv? (.ts_x_origin val) 1))
- (snd-display "ts_x_origin: ~A ~A" (.ts_x_origin val) 1))
- (set! (.ts_y_origin val) 1)
- (if (not (eqv? (.ts_y_origin val) 1))
- (snd-display "ts_y_origin: ~A ~A" (.ts_y_origin val) 1))
- ;; font is Font
- (set! (.subwindow_mode val) ClipByChildren)
- (if (not (equal? (.subwindow_mode val) ClipByChildren))
- (snd-display "subwindow_mode: ~A ~A" (.subwindow_mode val) ClipByChildren))
- (set! (.graphics_exposures val) #f)
- (if (.graphics_exposures val)
- (snd-display "graphics_exposures: ~A ~A" (.graphics_exposures val) #f))
- (set! (.clip_x_origin val) 0)
- (if (not (eqv? (.clip_x_origin val) 0))
- (snd-display "clip_x_origin: ~A ~A" (.clip_x_origin val) 0))
- (set! (.clip_y_origin val) 0)
- (if (not (eqv? (.clip_y_origin val) 0))
- (snd-display "clip_y_origin: ~A ~A" (.clip_y_origin val) 0))
- (set! (.dash_offset val) 1)
- (if (not (eqv? (.dash_offset val) 1))
- (snd-display "dash_offset: ~A ~A" (.dash_offset val) 1))
- (if (not (number? (XConnectionNumber dpy)))
- (snd-display "XConnectionNumber: ~A" (XConnectionNumber dpy)))
-
- (let ((sgc (XCreateGC dpy wn (+ GCFunction GCForeground GCBackground GCLineWidth GCLineStyle
- GCCapStyle GCJoinStyle GCFillStyle GCFillRule GCTileStipXOrigin
- GCTileStipYOrigin GCSubwindowMode GCGraphicsExposures GCClipXOrigin
- GCClipYOrigin GCDashOffset GCArcMode)
- val)))
-
- (if (not (GC? sgc)) (snd-display "XCreateGC returned ~A" sgc))
- (XSetArcMode dpy sgc ArcPieSlice)
- (XSetFunction dpy sgc GXcopy)
- (XSetLineAttributes dpy sgc 3 LineDoubleDash CapButt JoinMiter)
- (XSetClipOrigin dpy sgc 1 1)
- (XSetTSOrigin dpy sgc 0 0)
- (XSetFillRule dpy sgc WindingRule)
- (XSetFillStyle dpy sgc FillStippled)
- (XSetForeground dpy sgc (WhitePixelOfScreen (current-screen)))
- (XSetBackground dpy sgc (BlackPixelOfScreen (current-screen)))
- (XSetGraphicsExposures dpy sgc #t)
- (XSetSubwindowMode dpy sgc IncludeInferiors)
- (let ((owner (XGetSelectionOwner dpy XA_PRIMARY)))
- (if (and owner (not (Window? owner)))
- (snd-display "XGetSelectionOwner: ~A" owner)))
- (let ((mods (XGetModifierMapping dpy)))
- (if (not (XModifierKeymap? mods))
- (snd-display "XGetModifierMapping: ~A" mods)))
- (let* ((vis (XGetVisualInfo dpy 0 (list 'XVisualInfo 0)))
- (vi (car vis)))
- (if (not (and vis (XVisualInfo? vi)))
- (snd-display "XGetVisualInfo: ~A" vis))
- (if (not (= (.depth vi) 24)) (snd-display "depth vis: ~A" (.depth vi)))
- (if (not (= (.screen vi) 0)) (snd-display "screen vis: ~A" (.screen vi)))
- (catch #t ; in c++ no class field
- (lambda ()
- (if (not (= (.class vi) TrueColor)) (snd-display "class vis: ~A (~A)" (.class vi) TrueColor)))
- (lambda args args))
- (if (not (= (.colormap_size vi) 256)) (snd-display "colormap_size vis: ~A" (.colormap_size vi)))
- (if (not (or (XVisualInfo? (XMatchVisualInfo dpy 0 24 TrueColor))
- (XVisualInfo? (XMatchVisualInfo dpy 0 16 TrueColor))))
- (snd-display "XMatchVisualInfo: ~A" (XMatchVisualInfo dpy 0 24 TrueColor))))
- (XCheckMaskEvent dpy KeyPressMask)
-
- (let* ((vals (XGetGCValues dpy sgc (+ GCFunction GCForeground GCBackground GCLineWidth GCLineStyle
- GCCapStyle GCJoinStyle GCFillStyle GCFillRule GCTileStipXOrigin
- GCTileStipYOrigin GCSubwindowMode GCGraphicsExposures GCClipXOrigin
- GCClipYOrigin GCDashOffset GCArcMode)))
- (val1 (cadr vals)))
- (if (= (car vals) 0)
- (snd-display "XGetGCValues failed"))
-
- (if (not (equal? (.function val1) GXcopy))
- (snd-display "function: ~A ~A" (.function val1) GXcopy))
- (if (not (eqv? (.line_width val1) 3))
- (snd-display "line_width: ~A ~A" (.line_width val1) 3))
- (if (not (equal? (.line_style val1) LineDoubleDash))
- (snd-display "line_style: ~A ~A" (.line_style val1) LineDoubleDash))
- (if (not (equal? (.background val1) (BlackPixelOfScreen (current-screen))))
- (snd-display "background: ~A ~A" (.background val1) (BlackPixelOfScreen (current-screen))))
- (if (not (equal? (.foreground val1) (WhitePixelOfScreen (current-screen))))
- (snd-display "foreground: ~A ~A" (.foreground val1) (WhitePixelOfScreen (current-screen))))
- (if (not (equal? (.cap_style val1) CapButt))
- (snd-display "cap_style: ~A ~A" (.cap_style val1) CapButt))
- (if (not (equal? (.join_style val1) JoinMiter))
- (snd-display "join_style: ~A ~A" (.join_style val1) JoinMiter))
- (if (not (equal? (.fill_style val1) FillStippled))
- (snd-display "fill_style: ~A ~A" (.fill_style val1) FillStippled))
- (if (not (equal? (.fill_rule val1) WindingRule))
- (snd-display "fill_rule: ~A ~A" (.fill_rule val1) WindingRule))
- (if (not (equal? (.arc_mode val1) ArcPieSlice))
- (snd-display "arc_mode: ~A ~A" (.arc_mode val1) ArcPieSlice))
- (if (not (eqv? (.ts_x_origin val1) 0))
- (snd-display "ts_x_origin: ~A ~A" (.ts_x_origin val1) 0))
- (if (not (eqv? (.ts_y_origin val1) 0))
- (snd-display "ts_y_origin: ~A ~A" (.ts_y_origin val1) 0))
- (if (not (equal? (.subwindow_mode val1) IncludeInferiors))
- (snd-display "subwindow_mode: ~A ~A" (.subwindow_mode val1) IncludeInferiors))
- (if (not (.graphics_exposures val1))
- (snd-display "graphics_exposures: ~A ~A" (.graphics_exposures val1) #t))
- (if (not (eqv? (.clip_x_origin val1) 1))
- (snd-display "clip_x_origin: ~A ~A" (.clip_x_origin val1) 1))
- (if (not (eqv? (.clip_y_origin val1) 1))
- (snd-display "clip_y_origin: ~A ~A" (.clip_y_origin val1) 1))
- (if (not (eqv? (.dash_offset val1) 1))
- (snd-display "dash_offset: ~A ~A" (.dash_offset val1) 1))
-
- (set! (.plane_mask val) 0)
- (if (not (eqv? (.plane_mask val) 0))
- (snd-display "plane_mask: ~A ~A" (.plane_mask val) 0))
- (set! (.tile val) (list 'Pixmap 0))
- (if (not (equal? (.tile val) '(Pixmap 0)))
- (snd-display "tile: ~A" (.tile val)))
- (set! (.stipple val) (list 'Pixmap 0))
- (if (not (equal? (.stipple val) '(Pixmap 0)))
- (snd-display "stipple: ~A" (.stipple val)))
-
- (let* ((dpy (XtDisplay (cadr (main-widgets))))
- (win (XtWindow (cadr (main-widgets))))
- (attr (XSetWindowAttributes #f *basic-color* #f *highlight-color*))
- (newwin (XCreateWindow dpy win 10 10 100 100 3
- CopyFromParent InputOutput (list 'Visual CopyFromParent)
- (logior CWBackPixel CWBorderPixel)
- attr)))
- (if (not (= (.do_not_propagate_mask attr) 0)) (snd-display "do_not_propagate_mask: ~A" (.do_not_propagate_mask attr)))
- (if (not (= (.event_mask attr) 0)) (snd-display "event_mask: ~A" (.event_mask attr)))
- (if (not (Pixel? (.backing_pixel attr))) (snd-display "backing_pixel: ~A" (.backing_pixel attr)))
- (if (not (Pixel? (.border_pixel attr))) (snd-display "border_pixel: ~A" (.border_pixel attr)))
- (if (not (= (cadr (.border_pixmap attr)) 0)) (snd-display "border_pixmap: ~A" (.border_pixmap attr)))
- (if (not (Pixel? (.background_pixel attr))) (snd-display "background_pixel: ~A" (.background_pixel attr)))
- (if (not (= (cadr (.background_pixmap attr)) 0)) (snd-display "background_pixmap: ~A" (.background_pixmap attr)))
- (if (not (= (.backing_planes attr) 0)) (snd-display "backing_planes: ~A" (.backing_planes attr)))
- (if (.save_under attr) (snd-display "save_under: ~A" (.save_under attr)))
- (if (not (= (cadr (.cursor attr)) 0)) (snd-display "cursor: ~A" (.cursor attr)))
- (if (not (Window? newwin)) (snd-display "XCreateWindow: ~A" newwin))
- (if (not (= (.bit_gravity attr) 0)) (snd-display "bit_gravity: ~A" (.bit_gravity attr)))
- (XChangeWindowAttributes dpy newwin CWBackPixel (XSetWindowAttributes #f *basic-color*))
- (XDestroyWindow dpy newwin)
- (set! newwin (XCreateSimpleWindow dpy win 10 10 100 100 3 *basic-color* *highlight-color*))
- (XDestroyWindow dpy newwin))
-
- (XSetRegion dpy sgc (XPolygonRegion (list (XPoint 0 0) (XPoint 10 0) (XPoint 10 10) (XPoint 0 10)) 4 WindingRule))
- (let ((pix (make-pixmap (cadr (main-widgets)) arrow-strs)))
- (if (not (Pixmap? pix))
- (snd-display "make-pixmap?")
- (begin
- (XSetTile dpy sgc pix)
- (XSetStipple dpy sgc (XCreateBitmapFromData dpy wn right-arrow 16 12))
- (XSetClipMask dpy sgc None)
- (XSetState dpy sgc *basic-color* *mark-color* GXcopy 0)
- (XSetPlaneMask dpy sgc 0)
- (XSetDashes dpy sgc 0 '(3 4 3 1))
- (XSetClipRectangles dpy sgc 0 0 (list (XRectangle 0 0 10 10) (XRectangle 10 10 100 100)) 2 Unsorted)
- (let ((err (XWriteBitmapFile dpy "testx.data" pix 16 12 -1 -1)))
- (if (not (= BitmapSuccess err)) (snd-display "XWriteBitmapFile: ~A" err)))
- ;(let ((vals (XReadBitmapFile dpy (XtWindow (cadr (main-widgets))) "testx.data")))
- ; (if (not (= (car vals BitmapSuccess))) (snd-display "XReadBitmapFile: ~A" vals)))
- ;(let ((vals (XReadBitmapFileData "testx.data")))
- ; (if (not (= (car vals BitmapSuccess))) (snd-display "XReadBitmapFileData: ~A" vals)))
-
- (let ((fid (XLoadFont dpy "cursor"))
- (col (XColor))
- (col1 (XColor))
- (cmap (DefaultColormap dpy (DefaultScreen dpy))))
- (XAllocNamedColor dpy cmap "blue" col col)
- (XAllocNamedColor dpy cmap "green" col1 col1)
- (let ((vals (XCreateGlyphCursor dpy fid None XC_dot 0 col col1)))
- (if (not (Cursor? vals)) (snd-display "XCreateGlyphCursor: ~A" vals)))
- (let ((vals (XCreatePixmapCursor dpy pix None col col1 5 5)))
- (if (not (Cursor? vals)) (snd-display "XCreatePixmapCursor: ~A" vals))
- (XRecolorCursor dpy vals col1 col))
- (XAllocColorPlanes dpy cmap #f 2 1 1 1)
- (XAllocColorCells dpy cmap #f 1 1)))))
-
- (let* ((fid (XLoadFont dpy "-*-times-medium-r-*-*-14-*-*-*-*-*-*-*"))
- (fnt (XLoadQueryFont dpy "-*-times-medium-r-*-*-14-*-*-*-*-*-*-*"))
- (chs (XQueryTextExtents dpy fid "hiho"))
- (struct (chs 4)))
- (let ((fnt1 (XQueryFont dpy fid)))
- (if (not (Font? fid)) (snd-display "XLoadFont: ~A" fid))
- (if (not (XFontStruct? fnt)) (snd-display "XLoadQueryFont: ~A" fnt))
- (if (not (XFontStruct? fnt1)) (snd-display "XQueryFont: ~A" fnt1)))
- (if (not (XCharStruct? struct)) (snd-display "XQueryTextExtents: ~A" chs))
- (if (not (= (chs 2) 12)) (snd-display "XQueryTextExtents max ascent: ~A" (chs 2)))
- (if (not (= (chs 3) 3)) (snd-display "XQueryTextExtents max descent: ~A" (chs 3)))
- (if (not (= (.lbearing struct) 0)) (snd-display "lbearing: ~A" (.lbearing struct)))
- (if (not (= (.rbearing struct) 23)) (snd-display "rbearing: ~A" (.rbearing struct)))
- (if (not (= (.width struct) 24)) (snd-display "width: ~A" (.width struct)))
- (if (not (= (.ascent struct) 10)) (snd-display "ascent: ~A" (.ascent struct)))
- (if (not (= (.descent struct) 0)) (snd-display "descent: ~A" (.descent struct)))
- (if (not (= (.attributes struct) 0)) (snd-display "attributes: ~A" (.attributes struct)))
- (let ((fid (load-font "-*-helvetica-bold-r-*-*-14-*-*-*-*-*-*-*")))
- (if (not (Font? fid)) (snd-display "load-font -> ~A" fid))))
- (XFreeGC (XtDisplay (cadr (main-widgets))) sgc))))
-
- (for-each
- (lambda (name)
- (if (not (Atom? (symbol->value name)))
- (snd-display "Atom: ~A -> ~A" name (Atom? (symbol->value name)))))
- '(XA_PRIMARY XA_SECONDARY XA_ARC XA_ATOM XA_BITMAP XA_CARDINAL XA_COLORMAP XA_CURSOR XA_CUT_BUFFER0
- XA_CUT_BUFFER1 XA_CUT_BUFFER2 XA_CUT_BUFFER3 XA_CUT_BUFFER4 XA_CUT_BUFFER5 XA_CUT_BUFFER6
- XA_CUT_BUFFER7 XA_DRAWABLE XA_FONT XA_INTEGER XA_PIXMAP XA_POINT XA_RECTANGLE XA_RESOURCE_MANAGER
- XA_RGB_COLOR_MAP XA_RGB_BEST_MAP XA_RGB_BLUE_MAP XA_RGB_DEFAULT_MAP XA_RGB_GRAY_MAP XA_RGB_GREEN_MAP
- XA_RGB_RED_MAP XA_STRING XA_VISUALID XA_WINDOW XA_WM_COMMAND XA_WM_HINTS XA_WM_CLIENT_MACHINE
- XA_WM_ICON_NAME XA_WM_ICON_SIZE XA_WM_NAME XA_WM_NORMAL_HINTS XA_WM_SIZE_HINTS XA_WM_ZOOM_HINTS
- XA_MIN_SPACE XA_NORM_SPACE XA_MAX_SPACE XA_END_SPACE XA_SUPERSCRIPT_X XA_SUPERSCRIPT_Y
- XA_SUBSCRIPT_X XA_SUBSCRIPT_Y XA_UNDERLINE_POSITION XA_UNDERLINE_THICKNESS XA_STRIKEOUT_ASCENT
- XA_STRIKEOUT_DESCENT XA_ITALIC_ANGLE XA_X_HEIGHT XA_QUAD_WIDTH XA_WEIGHT XA_POINT_SIZE
- XA_RESOLUTION XA_COPYRIGHT XA_NOTICE XA_FONT_NAME XA_FAMILY_NAME XA_FULL_NAME XA_CAP_HEIGHT
- XA_WM_CLASS XA_WM_TRANSIENT_FOR))
-
- (let ((r (XRectangle 10 20 100 110)))
- (if (not (= (.width r) 100))
- (snd-display "XRectangle width: ~A" (.width r)))
- (if (not (= (.height r) 110))
- (snd-display "XRectangle height: ~A" (.height r)))
- (if (not (= (.x r) 10))
- (snd-display "XRectangle x: ~A" (.x r)))
- (if (not (= (.y r) 20))
- (snd-display "XRectangle y: ~A" (.y r)))
- (set! (.width r) 10)
- (if (not (= (.width r) 10))
- (snd-display "set XRectangle width: ~A" (.width r)))
- (set! (.height r) 11)
- (if (not (= (.height r) 11))
- (snd-display "set XRectangle height: ~A" (.height r)))
- (set! (.x r) 1)
- (if (not (= (.x r) 1))
- (snd-display "set XRectangle x: ~A" (.x r)))
- (set! (.y r) 2)
- (if (not (= (.y r) 2))
- (snd-display "XRectangle y: ~A" (.y r))))
-
- (let ((r (XArc 10 20 100 110 0 235)))
- (if (not (= (.width r) 100))
- (snd-display "XArc width: ~A" (.width r)))
- (if (not (= (.height r) 110))
- (snd-display "XArc height: ~A" (.height r)))
- (if (not (= (.x r) 10))
- (snd-display "XArc x: ~A" (.x r)))
- (if (not (= (.y r) 20))
- (snd-display "XArc y: ~A" (.y r)))
- (if (not (= (.angle1 r) 0))
- (snd-display "XArc angle1: ~A" (.angle1 r)))
- (if (not (= (.angle2 r) 235))
- (snd-display "XArc angle2: ~A" (.angle2 r)))
- (set! (.width r) 10)
- (if (not (= (.width r) 10))
- (snd-display "set XArc width: ~A" (.width r)))
- (set! (.height r) 11)
- (if (not (= (.height r) 11))
- (snd-display "set XArc height: ~A" (.height r)))
- (set! (.x r) 1)
- (if (not (= (.x r) 1))
- (snd-display "set XArc x: ~A" (.x r)))
- (set! (.y r) 2)
- (if (not (= (.y r) 2))
- (snd-display "set XArc y: ~A" (.y r)))
- (set! (.angle1 r) 123)
- (if (not (= (.angle1 r) 123))
- (snd-display "set XArc angle1: ~A" (.angle1 r)))
- (set! (.angle2 r) 321)
- (if (not (= (.angle2 r) 321))
- (snd-display "set XArc angle2: ~A" (.angle2 r))))
-
- (let ((r (XPoint 10 20)))
- (if (not (= (.x r) 10))
- (snd-display "XPoint x: ~A" (.x r)))
- (if (not (= (.y r) 20))
- (snd-display "XPoint y: ~A" (.y r)))
- (set! (.x r) 1)
- (if (not (= (.x r) 1))
- (snd-display "set XPoint x: ~A" (.x r)))
- (set! (.y r) 2)
- (if (not (= (.y r) 2))
- (snd-display "set XPoint y: ~A" (.y r))))
-
- (let ((r (XSegment 10 20 100 110)))
- (if (not (= (.x1 r) 10))
- (snd-display "XSegment x1: ~A" (.x1 r)))
- (if (not (= (.y1 r) 20))
- (snd-display "XSegment y1: ~A" (.y1 r)))
- (if (not (= (.x2 r) 100))
- (snd-display "XSegment x2: ~A" (.x2 r)))
- (if (not (= (.y2 r) 110))
- (snd-display "XSegment y2: ~A" (.y2 r)))
- (set! (.x1 r) 1)
- (if (not (= (.x1 r) 1))
- (snd-display "set XSegment x1: ~A" (.x1 r)))
- (set! (.y1 r) 2)
- (if (not (= (.y1 r) 2))
- (snd-display "set XSegment y1: ~A" (.y1 r)))
- (set! (.x2 r) 10)
- (if (not (= (.x2 r) 10))
- (snd-display "set XSegment x2: ~A" (.x2 r)))
- (set! (.y2 r) 11)
- (if (not (= (.y2 r) 11))
- (snd-display "set XSegment y2: ~A" (.y2 r))))
-
- (let ((c (XColor)))
- (set! (.red c) 1)
- (if (not (= (.red c) 1)) (snd-display "Xcolor red: ~A" (.red c)))
- (set! (.green c) 1)
- (if (not (= (.green c) 1)) (snd-display "Xcolor green: ~A" (.green c)))
- (set! (.blue c) 1)
- (if (not (= (.blue c) 1)) (snd-display "Xcolor blue: ~A" (.blue c)))
- (set! (.flags c) DoRed)
- (if (not (= (.flags c) DoRed)) (snd-display "Xcolor flags: ~A" (.flags c)))
- (if (not (= (.pad c) 0)) (snd-display "pad: ~A" (.pad c)))
- (set! (.pixel c) *basic-color*)
- (if (not (equal? (.pixel c) *basic-color*)) (snd-display "Xcolor pixel: ~A" (.pixel c))))
-
- (let ((obj (XTextItem "hiho" 4 3 (list 'Font 1))))
- (if (not (XTextItem? obj)) (snd-display "XTextItem -> ~A" obj))
- (if (not (equal? (.font obj) '(Font 1))) (snd-display "font ~A" (.font obj)))
- (set! (.font obj) (list 'Font 2))
- (if (not (equal? (.font obj) '(Font 2))) (snd-display "set font ~A" (.font obj)))
- (if (not (string=? (.chars obj) "hiho")) (snd-display "chars: ~A" (.chars obj)))
- (if (not (= (.nchars obj) 4)) (snd-display "chars: ~A" (.nchars obj)))
- (set! (.chars obj) "away!")
- (set! (.nchars obj) 5)
- (if (not (string=? (.chars obj) "away!")) (snd-display "set chars: ~A" (.chars obj)))
- (if (not (= (.nchars obj) 5)) (snd-display "set chars: ~A" (.nchars obj)))
- (if (not (= (.delta obj) 3)) (snd-display "delta ~A" (.delta obj)))
- (set! (.delta obj) 4)
- (if (not (= (.delta obj) 4)) (snd-display "set delta ~A" (.delta obj)))
- )
-
- (let ((reg (XPolygonRegion (list (XPoint 0 0) (XPoint 10 0) (XPoint 10 10) (XPoint 0 10)) 4 WindingRule)))
- (if (not (XPointInRegion reg 4 4)) (snd-display "XPointInRegion"))
- (XShrinkRegion reg 1 2)
- (if (not (XPointInRegion reg 4 7)) (snd-display "t XShrinkRegion"))
- (if (XPointInRegion reg 4 9) (snd-display "f XShrinkRegion"))
- (XOffsetRegion reg 1 2)
- (if (not (XPointInRegion reg 4 9)) (snd-display "t XOffsetRegion"))
- (if (XPointInRegion reg 1 9) (snd-display "f XOffsetRegion"))
- (let ((reg2 (XCreateRegion))
- (reg1 (XPolygonRegion (list (XPoint 2 2) (XPoint 10 2) (XPoint 10 10) (XPoint 2 10)) 4 WindingRule)))
- (if (XEqualRegion reg reg1) (snd-display "f XEqualRegion"))
- (if (XEmptyRegion reg) (snd-display "f XEmptyRegion"))
- (XXorRegion reg reg1 reg2)
- (let ((box (cadr (XClipBox reg2))))
- (if (not (and (= (.x box) (.y box) (.height box) 2)
- (= (.width box) 8)))
- (snd-display "XXorRegion: ~A ~A ~A ~A" (.x box) (.y box) (.width box) (.height box))))
- (XUnionRegion reg reg1 reg2)
- (let ((box (cadr (XClipBox reg2))))
- (if (not (and (= (.x box) (.y box) 2)
- (= (.width box) (.height box) 8)))
- (snd-display "XUnionRegion: ~A ~A ~A ~A" (.x box) (.y box) (.width box) (.height box))))
- (XSubtractRegion reg reg1 reg2)
- (let ((box (cadr (XClipBox reg2))))
- (if (not (= (.x box) (.y box) (.width box) (.height box) 0))
- (snd-display "XSubtractRegion: ~A ~A ~A ~A" (.x box) (.y box) (.width box) (.height box))))
- (XIntersectRegion reg reg1 reg2)
- (let ((box (cadr (XClipBox reg2))))
- (if (not (and (= (.x box) 2)
- (= (.y box) 4)
- (= (.width box) 8)
- (= (.height box) 6)))
- (snd-display "XIntersectRegion: ~A ~A ~A ~A" (.x box) (.y box) (.width box) (.height box))))
- (XUnionRectWithRegion (XRectangle 1 3 100 100) reg1 reg2)
- (let ((box (cadr (XClipBox reg2))))
- (if (not (and (= (.x box) 1)
- (= (.y box) 2)
- (= (.width box) 100)
- (= (.height box) 101)))
- (snd-display "XUnionRectWithRegion: ~A ~A ~A ~A" (.x box) (.y box) (.width box) (.height box))))
- (XRectInRegion reg 0 0 100 100)
- (let ((box (cadr (XClipBox reg1))))
- (if (not (and (= (.x box) (.y box) 2)
- (= (.width box) (.height box) 8)))
- (snd-display "XClipBox: ~A ~A ~A ~A" (.x box) (.y box) (.width box) (.height box))))
- (XDestroyRegion reg1)
- ))
-
- (let ((xid (XUniqueContext))
- (dpy (XtDisplay (cadr (main-widgets)))))
- (if (not (eq? (car xid) 'XContext))
- (snd-display "XUniqueContext: ~A" xid))
- (XSaveContext dpy 123 xid "hiho")
- (let ((val (XFindContext dpy 123 xid)))
- (if (not (and (= 0 (car val))
- (string=? (cadr val) "hiho")))
- (snd-display "XFindContext: ~A" val)))
- (XDeleteContext dpy 123 xid)
- (XStoreBytes dpy "hiho" 4)
- (if (not (string=? (XFetchBytes dpy) "hiho")) (snd-display "XStoreBytes: ~A" (XFetchBytes dpy)))
- (XStoreBuffer dpy "hiho" 4 1)
- (if (not (string=? (XFetchBuffer dpy 1) "hiho")) (snd-display "XStoreBuffer: ~A" (XFetchBuffer dpy 1)))
- )
-
-
- ;; ---------------- Xt tests ----------------
- (let ((name (XtGetApplicationNameAndClass (XtDisplay (cadr (main-widgets))))))
- (if (not (equal? name '("snd" "Snd")))
- (snd-display "XtGetApplicationNameAndClass: ~A?" name)))
- (let ((dpys (XtGetDisplays (car (main-widgets)))))
- (if (not (Display? (car dpys)))
- (snd-display "XtGetDisplays: ~A?" dpys)))
- (let ((app (XtDisplayToApplicationContext (XtDisplay (cadr (main-widgets)))))
- (orig (car (main-widgets)))
- (wid (XtWidgetToApplicationContext (cadr (main-widgets)))))
- (if (not (equal? app orig))
- (snd-display "XtDisplayToApplicationContext: ~A ~A?" app orig))
- (if (not (equal? app wid))
- (snd-display "XtWidgetToApplicationContext: ~A ~A?" app wid)))
- (if (not (string=? (XtName (caddr (main-widgets))) "mainpane"))
- (snd-display "XtName main pane: ~A" (XtName (caddr (main-widgets)))))
- (if (not (= (XtGetMultiClickTime (XtDisplay (cadr (main-widgets)))) 200))
- (snd-display "XtGetMultiClickTime: ~A" (XtGetMultiClickTime (XtDisplay (cadr (main-widgets))))))
- (XtSetMultiClickTime (XtDisplay (cadr (main-widgets))) 250)
- (if (not (= (XtGetMultiClickTime (XtDisplay (cadr (main-widgets)))) 250))
- (snd-display "XtSetMultiClickTime: ~A" (XtGetMultiClickTime (XtDisplay (cadr (main-widgets))))))
- (XtGetResourceList xmListWidgetClass)
- (XtDestroyWidget (XtCreateWidget "wid1" xmPushButtonWidgetClass (cadr (main-widgets)) ()))
- (XtRemoveActionHook (XtAppAddActionHook
- (car (main-widgets))
- (lambda (w data name e p)
- (format () "~A ~A ~A ~A ~A~%" w data name e p))
- #f))
-
- (let* ((shell (cadr (main-widgets)))
- (wid (XtCreateWidget "wid" xmFormWidgetClass shell ()))
- (wid1 (XtCreateWidget "wid1" xmPushButtonWidgetClass wid ()))
- (wid2 (XtVaCreateWidget "wid" xmFormWidgetClass shell ())))
- (if (XtIsApplicationShell wid) (snd-display "XtIsApplicationShell"))
- (if (not (XtIsApplicationShell shell)) (snd-display "XtIsApplicationShell of appshell"))
- (if (not (XtIsComposite wid)) (snd-display "XtIsComposite"))
- (if (not (XtIsConstraint wid)) (snd-display "XtIsConstraint"))
- (if (XtIsManaged wid) (snd-display "XtIsManaged"))
- (if (not (XtIsObject wid)) (snd-display "XtIsObject"))
- (if (XtIsOverrideShell wid) (snd-display "XtIsOverrideShell"))
- (if (XtIsRealized wid) (snd-display "XtIsRealized"))
- (if (not (XtIsRealized shell)) (snd-display "XtIsRealized main shell"))
- (if (not (XtIsRectObj wid)) (snd-display "XtIsRectObj"))
- (if (not (XtIsSensitive wid)) (snd-display "XtIsSensitive"))
- (if (not (XtIsSensitive shell)) (snd-display "XtIsSensitive of main shell"))
- (XtSetSensitive wid1 #t)
- (if (not (XtIsSensitive wid1)) (snd-display "XtIsSensitive of button"))
- (if (XtIsSessionShell wid) (snd-display "XtIsSessionShell"))
- (if (XtIsShell wid) (snd-display "XtIsShell"))
- (if (not (XtIsShell shell)) (snd-display "XtIsShell of main shell"))
- (if (XtIsTopLevelShell wid) (snd-display "XtIsTopLevelShell"))
- (if (not (XtIsTopLevelShell shell)) (snd-display "XtIsTopLevelShell of main shell"))
- (if (XtIsTransientShell wid) (snd-display "XtIsTransientShell"))
- (if (XtIsVendorShell wid) (snd-display "XtIsVendorShell"))
- (if (not (XtIsVendorShell shell)) (snd-display "XtIsVendorShell of main shell"))
- (if (XtIsWMShell wid) (snd-display "XtIsWMShell"))
- (if (not (XtIsWidget wid)) (snd-display "XtIsWidget"))
- (if (not (XtIsWidget wid2)) (snd-display "XtIsWidget 2"))
- (XtRealizeWidget wid)
- (if (not (XtIsRealized wid)) (snd-display "XtRealizeWidget?"))
- (XtAddGrab shell #f #f)
- (XtRemoveGrab shell)
- (XtMakeResizeRequest wid 200 200)
- (XtMapWidget wid)
- (XtUnmapWidget wid)
- (XtUnrealizeWidget wid))
-
- (XtSetLanguageProc
- (car (main-widgets))
- (lambda (dpy str data)
- (snd-display "YOW: language proc: got ~A ~A" str data))
- "who called us?")
- (XtSetLanguageProc (car (main-widgets)) #f "oops")
- (XtSetLanguageProc #f #f "oops")
- (XtMergeArgLists (list 1 2) 2 (list 1) 1)
-
- (let* ((shell (cadr (main-widgets)))
- (dpy (XtDisplay shell)))
- (if (not (equal? (XtClass shell) applicationShellWidgetClass))
- (snd-display "XtClass shell: ~A" (XtClass shell)))
- (if (not (equal? (XtSuperclass shell) topLevelShellWidgetClass))
- (snd-display "XtSuperclass shell: ~A" (XtClass shell)))
- (if (not (string=? (XtName shell) "snd"))
- (snd-display "XtName: ~A" (XtName shell)))
- (if (not (equal? (XtWindow shell) (XtWindowOfObject shell)))
- (snd-display "XtWindow: ~A ~A" (XtWindow shell) (XtWindowOfObject shell)))
- (if (not (equal? (XtScreen shell) (XtScreenOfObject shell)))
- (snd-display "XtScreen: ~A ~A" (XtScreen shell) (XtScreenOfObject shell)))
- (if (not (equal? (XtDisplay shell) (XtDisplayOfObject shell)))
- (snd-display "XtDisplay: ~A ~A" (XtDisplay shell) (XtDisplayOfObject shell)))
- (if (not (Time? (XtLastTimestampProcessed dpy)))
- (snd-display "XtLastTimestampProcessed: ~A" (XtLastTimestampProcessed dpy)))
- (if (not (XEvent? (XtLastEventProcessed dpy)))
- (snd-display "XtLastEventProcessed: ~A" (XtLastEventProcessed dpy)))
- (XtBuildEventMask shell)
- (let ((val 0))
- (XtRegisterCaseConverter
- dpy
- (lambda (dp key)
- (set! val 123)
- (list (list 'KeySym 65)
- (list 'KeySym 97)))
- (list 'KeySym 65)
- (list 'KeySym 65))
- (XtConvertCase dpy (list 'KeySym 65))
- (if (not (= val 123)) (snd-display "XtRegisterCaseConverter: ~A" val)))
- (XtRegisterGrabAction (lambda (a b c) #f) #f ColormapChangeMask GrabModeSync GrabModeAsync)
- (let ((vals (XtTranslateKeycode dpy (list 'KeyCode XK_B) 0)))
- (if (not (and (= (car vals) 0)
- (KeySym? (cadr vals))))
- (snd-display "XtTranslateKeycode: ~A" vals))
- (if (not (equal? vals (XtTranslateKey dpy (list 'KeyCode XK_B) 0)))
- (snd-display "XtTranslateKey: ~A ~A" vals (XtTranslateKey dpy (list 'KeyCode XK_B) 0)))
- (XtSetKeyTranslator dpy #f)
- (if (not (equal? vals (XtTranslateKeycode dpy (list 'KeyCode XK_B) 0)))
- (snd-display "XtSetKeyTranslator #f: ~A ~A" vals (XtTranslateKeycode dpy (list 'KeyCode XK_B) 0)))
- (XtSetKeyTranslator dpy (lambda (d k m)
- (if (not (equal? d dpy)) (snd-display "d in keyproc: ~A ~A" d dpy))
- (XtTranslateKey d k m)))
- (let ((newvals (XtTranslateKeycode dpy (list 'KeyCode XK_B) 0)))
- (if (not (equal? vals newvals)) (snd-display "XtSetKeyTranslator: ~A ~A" vals newvals)))
- (XtSetKeyTranslator dpy #f))
- (if (not (KeySym? (cadr (XmTranslateKey dpy (list 'KeyCode XK_B) 0))))
- (snd-display "XmTranslateKey: ~A" (XmTranslateKey dpy XK_B 0)))
- (let ((kv (XtKeysymToKeycodeList dpy (list 'KeySym 65509))))
- (if (not (equal? (car kv) '(KeyCode 66)))
- (snd-display "XtKeysymToKeycodeList: ~A ~A" kv (XtKeysymToKeycodeList dpy (list 'KeySym 65509)))))
- (XtInstallAllAccelerators (cadr (main-widgets)) (caddr (main-widgets)))
- (XtInstallAccelerators (cadr (main-widgets)) (caddr (main-widgets)))
- (if (not (equal? '(0 1 2) (XtSetArg 0 1 2))) (snd-display "XtSetArg: ~A" (XtSetArg 0 1 2)))
- (if (not (Widget? (XtGetKeyboardFocusWidget (cadr (main-widgets)))))
- (snd-display "XtGetKeyboardFocusWidget: ~A" (XtGetKeyboardFocusWidget (cadr (main-widgets)))))
- (XtRemoveInput (XtAppAddInput (car (main-widgets)) 1 XtInputReadMask (lambda (a b c) #f) #f))
-
- (XtRemoveWorkProc (XtAppAddWorkProc (car (main-widgets)) (lambda (me) #f) #f))
- (if (not (equal? (caddr (main-widgets)) (XtNameToWidget (cadr (main-widgets)) "mainpane")))
- (snd-display "XtNameToWidget: ~A ~A" (caddr (main-widgets)) (XtNameToWidget (cadr (main-widgets)) "mainpane")))
- (XtVaCreatePopupShell "hiho" vendorShellWidgetClass (cadr (main-widgets)) ())
- (XtResolvePathname (XtDisplay (cadr (main-widgets))) "app-defaults" #f #f #f #f 0 #f)
- (XtFindFile ".snd" #f 0 #f)
-
- (XtAppLock (car (main-widgets)))
- (XtAppUnlock (car (main-widgets)))
- (let ((acts (XtGetActionList xmLabelWidgetClass)))
- (if (not (and (= (length acts) 4)
- (string=? (caar acts) "Enter")))
- (snd-display "XtGetActionList: ~A" acts))))
-
- (let ((pop (XtCreatePopupShell "hiho" xmGrabShellWidgetClass (cadr (main-widgets))
- (list XmNiconNameEncoding XA_STRING))))
- (XtPopup pop XtGrabNone)
- (XtPopdown pop))
- (XtAppSetWarningHandler (car (main-widgets))
- (lambda (n)
- (if (not (string=? n "hiho"))
- (snd-display "XtWarning: ~A" n))))
- (XtAppSetWarningMsgHandler (car (main-widgets))
- (lambda (name type klass def pars num)
- (snd-display "ignore: ~A ~A ~A~%" name def pars)))
-
- (let ((listener ((main-widgets) 4)))
- (for-each (lambda (arg)
- (XtCallActionProc listener arg (XEvent) #f 0))
- '("text-transpose" "begin-of-line" "kill-line" "yank" "listener-completion"
- "no-op" "delete-region" "listener-g" "listener-clear" "b1-press" "delete-to-previous-command"))
- (let ((BEvent (XEvent ButtonPress)))
- (set! (.x BEvent) 10)
- (set! (.y BEvent) 10)
- (XtCallActionProc listener "b1-press" BEvent #f 0)
- (XtCallActionProc listener "b1-release" BEvent #f 0))
- (XtCallActionProc listener "word-upper" (XEvent) (list "u") 1))
-
- (let ((ind (open-sound "oboe.snd")))
- (set! (show-controls ind) #t)
- (let* ((sctrls ((sound-widgets ind) 2))
- (wh (widget-size sctrls)))
- (XtUnmanageChild sctrls)
- (set! (widget-size sctrls) (list (car wh) (* (cadr wh) 3)))
- (XtManageChild sctrls)
-
- (let ((tag (catch #t (lambda () (XtVaGetValues (car (sound-widgets)) (list "XmNpaneMaximum" 0)))
- (lambda args (car args)))))
- (if (not (eq? tag 'no-such-resource))
- (snd-display "XtVaGetValues of incorrectly quoted resource name: ~A" tag))))
-
- (close-sound ind))
-
-
- ;; ---------------- XM tests ----------------
- (let* ((renditions (let ((label-render-table (cadr (XtVaGetValues (cadr (main-widgets)) (list XmNlabelRenderTable 0)))))
- (and label-render-table
- (XmRenderTableGetRenditions label-render-table (XmRenderTableGetTags label-render-table)))))
- (default-font-name (and renditions
- (cadr (XmRenditionRetrieve (car renditions) (list XmNfontName 0)))))
- (default-font-info (and (pair? renditions)
- (XmRenditionRetrieve (car renditions) (list XmNfont 0 XmNfontType 0)))))
- (if (not (string=? default-font-name "fixed")) (snd-display "XmRenderTableGetRenditions name: ~A" default-font-name))
- (if (not (XFontStruct? (default-font-info 1))) (snd-display "XmRenderTableGetRenditions font struct: ~A" default-font-info))
- (if (not (= (default-font-info 3) XmFONT_IS_FONT)) (snd-display "XmRenderTableGetRenditions font type: ~A" default-font-info)))
-
-
- (let ((default-font-info
- (let ((default-rendition
- (let ((button-render-table (cadr (XtVaGetValues (cadr (main-widgets)) (list XmNbuttonRenderTable 0)))))
- (and button-render-table
- (XmRenderTableGetRendition button-render-table XmFONTLIST_DEFAULT_TAG)))))
- (and default-rendition
- (XmRenditionRetrieve default-rendition (list XmNfont 0 XmNfontType 0))))))
- (if (and (pair? default-font-info)
- (= (default-font-info 3) XmFONT_IS_FONT))
- (let ((font (cadr default-font-info))
- (dpy (XtDisplay (cadr (main-widgets))))
- (data ()))
- (for-each (lambda (name atom?)
- (let ((val (XGetFontProperty font name)))
- (if (car val)
- (set! data (cons (list (XGetAtomName (XtDisplay (cadr (main-widgets))) name)
- (if atom?
- (XGetAtomName (XtDisplay (cadr (main-widgets))) (list 'Atom (cadr val)))
- (cadr val)))
- data)))))
- (list XA_POINT_SIZE XA_FONT XA_FULL_NAME
- (XInternAtom dpy "XA_SLANT" #f)
- (XInternAtom dpy "XA_WEIGHT_NAME" #f)
- XA_FAMILY_NAME
- (XInternAtom dpy "XA_FOUNDRY" #f)
- XA_CAP_HEIGHT)
- '(#f #t #t #t #t #t #t #f))
- (if (not (string=? "Fixed" (cadr (data 1)))) (snd-display "XmRenderTableGetRendition: ~A" data)))))
-
- (let* ((tabs (let ((ctr 0))
- (map
- (lambda (n)
- (set! ctr (+ ctr 1))
- (XmTabCreate n XmINCHES (if (= ctr 1) XmABSOLUTE XmRELATIVE) XmALIGNMENT_BEGINNING "."))
- '(1.5 1.5 1.5 1.5))))
- (tablist (XmTabListInsertTabs #f tabs (length tabs) 0)))
- (if (not (= (XmTabListTabCount tablist) (length tabs)))
- (snd-display "tablist len: ~A ~A~%" (XmTabListTabCount tablist) (length tabs)))
- (if (not (equal? (XmTabGetValues (XmTabListGetTab tablist 0)) '(1.5 5 0 0 ".")))
- (snd-display "XmTabs 0: ~A" (XmTabGetValues (XmTabListGetTab tablist 0))))
- (if (not (equal? (XmTabGetValues (XmTabListGetTab tablist 2)) '(1.5 5 1 0 ".")))
- (snd-display "XmTabs 2: ~A" (XmTabGetValues (XmTabListGetTab tablist 2))))
- (let ((copytab (XmTabListCopy tablist 0 0)))
- (if (not (equal? (XmTabGetValues (XmTabListGetTab copytab 0)) '(1.5 5 0 0 ".")))
- (snd-display "XmTabListCopy 0: ~A" (XmTabGetValues (XmTabListGetTab copytab 0))))
- (let ((another (XmTabListRemoveTabs copytab (list 0 1)))
- (atab (XmTabCreate 3.0 XmINCHES XmABSOLUTE XmALIGNMENT_BEGINNING ".")))
- (if (not (equal? (XmTabGetValues (XmTabListGetTab another 0)) '(1.5 5 1 0 ".")))
- (snd-display "XmTabListRemoveTabs: ~A" (XmTabGetValues (XmTabListGetTab another 0))))
- (XmTabListReplacePositions (XmTabListCopy tablist 0 0) (list 1) (list atab))
- ;; this (replacepositions) is very prone to segfaults -- *very* poorly implemented!
- (XmTabSetValue atab 6.0)
- (XmTabFree atab)
- (XmTabListFree another))
- (let ((tabl (XmStringTableProposeTablist
- (list (XmStringCreateLocalized "a-string") (XmStringCreateLocalized "another")) 2
- (cadr (main-widgets))
- 1.0
- XmABSOLUTE)))
- (if (not (XmTabList? tabl)) (snd-display "XmStringTableProposeTabList: ~A" tabl))
- (XmTabListFree tabl)))
-
- (let ((hname (host-name))) ; from snd-motif.scm
- (if (not (equal? hname (getenv "HOSTNAME")))
- (snd-display "host name appears to be ~A or maybe ~A" hname (getenv "HOSTNAME"))))
- (let ((blu (x->snd-color "blue")))
- (if (not (Pixel? blu)) (snd-display "x->snd-color can't find blue! ~A" blu))
- (if (not (equal? (color->list blu) '(0.0 0.0 1.0)))
- (snd-display "x->snd-color blue: ~A" (color->list blu))))
-
- (let* ((tmp (XmStringCreateLocalized "h"))
- (pm (XmParseMappingCreate (list XmNincludeStatus XmINSERT
- XmNsubstitute tmp
- XmNpattern "i"
- XmNpatternType XmCHARSET_TEXT))))
- (XmStringFree tmp)
- (XmParseMappingFree pm)
- (set! pm (XmParseMappingCreate (list XmNinvokeParseProc
- (lambda (txt end type tag entry pattern str call)
- #f))))
- (XmParseMappingFree pm)
- (let ((tag (catch #t (lambda ()
- (set! pm (XmParseMappingCreate (list XmNinvokeParseProc
- (lambda (txt end type tag entry pattern)
- #f)))))
- (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XmNinvokeParseProc wrong arity: ~A" tag))))
-
- (let* ((tags (list "one" "two" "three" "four"))
- (pixels
- (let* ((dpy (XtDisplay (cadr (main-widgets))))
- (cmap (DefaultColormap dpy (DefaultScreen dpy))))
- (let ((col (XColor)))
- (XParseColor dpy cmap "blue" col)
- (if (not (and (= (.red col) 0)
- (= (.green col) 0)
- (= (.blue col) 65535)))
- (snd-display "XParseColor: ~A ~A ~A ~A" col (.red col) (.blue col) (.green col)))
- (XLookupColor dpy cmap "red" col (XColor))
- (if (not (and (= (.red col) 65535)
- (= (.green col) 0)
- (= (.blue col) 0)))
- (snd-display "XLookupColor: ~A ~A ~A ~A" col (.red col) (.blue col) (.green col))))
- (map
- (lambda (color)
- (let ((col (XColor)))
- (if (= (XAllocNamedColor dpy cmap color col col) 0)
- (snd-error (format #f "can't allocate ~A" color))
- (.pixel col))))
- '("red" "green" "blue" "orange"))))
- (rendertable (let ((taglist (let ((ctr 0)
- (fonts (list "fixed"
- "-*-times-bold-r-*-*-14-*-*-*-*-*-*-*"
- "-*-*-medium-i-*-*-18-*-*-*-*-*-*-*"
- "-*-helvetica-*-*-*-*-18-*-*-*-*-*-*-*")))
- (map (lambda (r)
- (set! ctr (+ ctr 1))
- (XmRenditionCreate (cadr (main-widgets))
- r
- (append
- (if (= ctr 1)
- (list XmNtabList tablist)
- ())
- (list XmNrenditionForeground (pixels (- ctr 1))
- XmNfontName (fonts (- ctr 1))
- XmNfontType XmFONT_IS_FONT))))
- tags))))
- (XmRenderTableAddRenditions #f taglist (length tags) XmMERGE_NEW))))
-
- (if (file-exists? "hiho") (delete-file "hiho"))
- (let* ((dpy (XtDisplay (cadr (main-widgets))))
- (scr (DefaultScreenOfDisplay dpy))
- (p1 (XmGetPixmap scr "hiho" (car pixels) (cadr pixels))))
- (if (not (Pixmap? p1)) (snd-display "XmGetPixmap: ~A" p1))
- (set! p1 (XmGetPixmapByDepth scr "hoho" (car pixels) (cadr pixels) (XDefaultDepth dpy (XScreenNumberOfScreen scr))))
- (if (not (Pixmap? p1)) (snd-display "XmGetPixmapByDepth: ~A" p1))
- (XmDestroyPixmap scr p1))
-
- (let ((tabl (XmStringTableParseStringArray (list "hi" "ho") 2 "hiho" XmCHARSET_TEXT #f 0 #f)))
- (if (not (XmString? (car tabl))) (snd-display "XmStringTableParseStringArray: ~A" tabl))
- (let ((strs (XmStringTableUnparse tabl 2 "hiho" XmCHARSET_TEXT XmCHARSET_TEXT #f 0 XmOUTPUT_ALL)))
- (if (not (equal? strs '("hi" "ho"))) (snd-display "XmStringTableUnparse: ~A" strs)))
- (let ((str (XmStringTableToXmString tabl 2 #f)))
- (if (not (XmString? str)) (snd-display "XmStringTableToXmString: ~A" str))
- (XmStringToXmStringTable str #f)
- (let ((val (XmStringUnparse str "hiho" XmCHARSET_TEXT XmCHARSET_TEXT #f 0 XmOUTPUT_ALL)))
- (if (not (string=? val "hiho")) (snd-display "XmStringUnparse: ~A" val))
- (set! val (XmStringUnparse (XmStringCreateLocalized "hi") #f XmCHARSET_TEXT XmCHARSET_TEXT #f 0 XmOUTPUT_ALL))
- (if (not (string=? val "hi")) (snd-display "XmStringUnparse null tag: ~A" val)))
- ;; XmCvtXmStringToByteStream test deleted because it seems to be buggy in memory handling
- (let* ((ind (open-sound "oboe.snd"))
- (grf1 (car (channel-widgets)))
- (dpy (XtDisplay grf1))
- (win (XtWindow grf1))
- (scrn (XScreenNumberOfScreen (DefaultScreenOfDisplay dpy)))
- (gv (XGCValues)))
- (if (not (Font? (current-font ind))) (snd-display "current-font: ~A" (current-font ind)))
- (let ((old-font (current-font))
- (a-font (load-font "6x12")))
- (set! (current-font) a-font)
- (if (not (equal? a-font (current-font)))
- (snd-display "set current-font: ~A ~A" a-font (current-font)))
- (set! (current-font ind) old-font)
- (if (not (equal? old-font (current-font ind)))
- (snd-display "set current-font with ind: ~A ~A" old-font (current-font ind)))
- (set! (current-font) a-font)
- (set! (current-font ind 0) old-font)
- (if (not (equal? old-font (current-font ind 0)))
- (snd-display "set current-font with ind/0: ~A ~A" old-font (current-font ind 0)))
- (set! (current-font) old-font))
-
- (set! (.foreground gv) *data-color*)
- (set! (.background gv) *basic-color*)
- (set! (.function gv) GXcopy)
- (let ((sgc (XtAllocateGC grf1
- (XDefaultDepth dpy scrn)
- (logior GCForeground GCBackground GCFunction)
- gv
- (logior GCFont GCDashList)
- 0)))
- (let ((str2 (XmStringCreateLocalized "hiho")))
- (XmStringDraw dpy win rendertable str2 sgc 10 10 100
- XmALIGNMENT_END XmSTRING_DIRECTION_L_TO_R (XRectangle 0 0 100 100))
- (XmStringDrawImage dpy win rendertable str2 sgc 10 10 100
- XmALIGNMENT_END XmSTRING_DIRECTION_L_TO_R (XRectangle 0 0 100 100))
- (XmStringDrawUnderline dpy win rendertable str2 sgc 10 10 100
- XmALIGNMENT_END XmSTRING_DIRECTION_L_TO_R (XRectangle 0 0 100 100) str2))
- (XtGetGC (cadr (main-widgets)) GCForeground gv)
- (XCopyGC dpy sgc GCFunction sgc)
- (XCopyArea dpy win win sgc 0 0 100 100 0 0)
- (XCopyPlane dpy win win sgc 0 0 100 100 0 0 1)
- (XtReleaseGC grf1 sgc))
- (close-sound ind))
- (let ((lc (XmStringLineCount (XmStringCreateLocalized "hiho"))))
- (if (not (= lc 1)) (snd-display "XmStringLineCount: ~A" lc)))
- (if (not (XmStringHasSubstring str (XmStringCreateLocalized "hi"))) (snd-display "XmStringHasSubstring?"))))
-
-
- (if (not (equal? (XmRenderTableGetTags rendertable) '("one" "two" "three" "four")))
- (snd-display "tags: ~A~%" (XmRenderTableGetTags rendertable)))
- (let* ((rend (XmRenderTableGetRendition rendertable "one"))
- (r (and rend (XmRenditionRetrieve rend
- (list XmNrenditionForeground 0
- XmNfontName 0
- XmNfontType 0
- XmNtag 0)))))
- (if (and rend r)
- (begin
- (if (not (and (string=? (r 7) "one")
- (string=? (r 3) "fixed")))
- (snd-display "rendertable: ~A" r))
- (XmRenditionUpdate rend (list XmNstrikethruType XmSINGLE_LINE))
- (if (not (= (cadr (XmRenditionRetrieve rend (list XmNstrikethruType 0))) XmSINGLE_LINE))
- (snd-display "XmRenditionUpdate: ~A ~A" (cadr (XtGetValues rend (list XmNstrikethruType 0))) XmSINGLE_LINE)))
- (snd-display "r and rend: ~A ~A~%" r rend)))
- (XmRenditionFree (XmRenditionCreate (cadr (main-widgets)) "r1" (list XmNfontName "fixed")))
-
- (if (not (equal? (XmDropSiteQueryStackingOrder ((main-widgets) 4)) '(#f)))
- (snd-display "XmDropSiteQueryStackingOrder: ~A" (XmDropSiteQueryStackingOrder ((main-widgets) 4))))
- (let ((tab (XmStringComponentCreate XmSTRING_COMPONENT_TAB 0 #f))
- (row #f)
- (table ())
- (our-tags tags))
- (for-each
- (lambda (word)
- (let ((entry (XmStringGenerate word
- #f
- XmCHARSET_TEXT
- (car our-tags))))
- (if (XmStringIsVoid entry) (snd-display "~A is void?" entry))
- (if (XmStringEmpty entry) (snd-display "~A is empty?" entry))
-
- (if row
- (let ((tmp (XmStringConcat row tab)))
- (XmStringFree row)
- (set! row (XmStringConcatAndFree tmp entry)))
- (set! row entry)))
- (set! our-tags (cdr our-tags))
- (when (null? our-tags)
- (set! our-tags tags)
- (set! table (cons row table))
- (set! row #f)))
- '("this" "is" "a" "test" "of" "the" "renditions" "and" "rendertables"
- "perhaps" "all" "will" "go" "well" "and" "then" "again" "perhaps" "not"))
- (let ((c (cadr (XmStringInitContext (car table))))
- (happy #t))
- (do ((i 0 (+ i 1)))
- ((not happy))
- (let ((type (XmStringGetNextTriple c)))
- (if (= (car type) XmSTRING_COMPONENT_TEXT)
- (if (not (and (= (cadr type) (#i(0 0 2 0 0 0 4 0 0 0 3 0 0 0 4) i))
- (string=? (caddr type)
- (#("o" "o" "go" "o" "o" "o" "well" "o" "o" "o" "and" "o" "o" "o" "then") i))))
- (snd-display "component ~A -> ~A" i (cdr type)))
- (if (and (not (= (car type) XmSTRING_COMPONENT_TAB))
- (= (car type) XmSTRING_COMPONENT_END))
- (set! happy #f)))))
- (XmStringFreeContext c)))))
-
- (XtAppAddActions (car (main-widgets))
- (list (list "try1" (lambda (w e strs)
- (snd-display "try1: ~A~%" strs)))
- (list "try2" (lambda (w e strs)
- (snd-display "try2: ~A~%" strs)))))
- (XtOverrideTranslations (add-main-pane "hiho" xmTextWidgetClass ())
- (XtParseTranslationTable
- (format #f "Ctrl <Key>osfLeft: try1()~%Ctrl <Key>osfRight: try2()~%Ctrl <Key>osfUp: try1(hiho)~%Ctrl <Key>osfDown: try2(down, up)~%")))
-
- (let ((XmNhiho (add-resource "hiho" 0)))
- (if (not (string=? XmNhiho "hiho")) (snd-display "add-resource XmNhiho: ~A" XmNhiho)))
-
- (open-sound "cardinal.snd")
- (let ((iconw ((sound-widgets) 8)))
- (let ((mouse_width 32)
- (mouse_height 32)
- (mouse_bits (list
- #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
- #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
- #x80 #xff #xff #x01 #x80 #x00 #x01 #x01 #x80 #x00 #x01 #x01
- #x80 #x00 #x01 #x01 #x80 #x00 #x01 #x01 #x80 #x00 #x01 #x01
- #x80 #x00 #x01 #x01 #x80 #xff #xff #x01 #x80 #x00 #x00 #x01
- #x80 #x00 #x00 #x01 #x80 #x00 #x00 #x01 #x80 #x00 #x00 #x01
- #x80 #x00 #x00 #x01 #x80 #x00 #x00 #x01 #x80 #x00 #x00 #x01
- #x80 #x00 #x00 #x01 #x00 #x01 #x80 #x00 #x00 #x01 #x80 #x00
- #x00 #x06 #x60 #x00 #x00 #xf8 #x1f #x00 #x00 #x00 #x00 #x00
- #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
- #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00))
- (rb (list
- #x00 #x04 #x10 #x08 #x00 #x10 #x04 #x20 #x00 #x40 #xa5 #xbf
- #x00 #x40 #x04 #x20 #x00 #x10 #x10 #x08 #x00 #x04 #x00 #x00))
- (dpy (XtDisplay iconw))
- (win (XtWindow iconw)))
- (XCreateBitmapFromData dpy win rb 16 12)
- (XCreateBitmapFromData dpy win mouse_bits mouse_width mouse_height)
- (XCreatePixmapFromBitmapData dpy win mouse_bits 32 32 (white-pixel) (black-pixel) 8)))
-
- (let* ((grf1 (car (channel-widgets)))
- (dpy (XtDisplay grf1))
- (win (XtWindow grf1))
- (shell (cadr (main-widgets))))
- (let ((vis (DefaultVisual dpy (DefaultScreen dpy))))
- (XDrawText dpy win (car (snd-gcs)) 50 50 (list (XTextItem "hi" 2 2 '(Font 0))
- (XTextItem "ho" 2 3 '(Font 0))))
- (XFreeColormap dpy (XCopyColormapAndFree dpy (XCreateColormap dpy win vis AllocNone)))
- (if (XCheckTypedWindowEvent dpy win ExposureMask)
- (snd-display "XCheckTypedWindowEvent: ~A" (XCheckTypedWindowEvent dpy win ExposureMask)))
- (if (XCheckTypedEvent dpy ExposureMask)
- (snd-display "XCheckTypedEvent: ~A" (XCheckTypedEvent dpy ExposureMask)))
- (XCheckWindowEvent dpy win ExposureMask)
- (XCirculateSubwindows dpy win RaiseLowest)
- (XCirculateSubwindowsUp dpy win)
- (XCirculateSubwindowsDown dpy win)
- (let ((wc (XWindowChanges 10 10 100 100 10 win 0)))
- (if (not (= (.stack_mode wc) 0)) (snd-display "stack_mode wc: ~A" (.stack_mode wc)))
- (if (not (equal? (.sibling wc) win)) (snd-display "sibling wc: ~A" (.sibling wc)))
- (if (not (= (.x wc) 10)) (snd-display "x wc: ~A" (.x wc)))
- (if (not (= (.y wc) 10)) (snd-display "y wc: ~A" (.y wc)))
- (if (not (= (.width wc) 100)) (snd-display "width wc: ~A" (.width wc)))
- (if (not (= (.height wc) 100)) (snd-display "height wc: ~A" (.height wc)))
- (if (not (= (.border_width wc) 10)) (snd-display "border_width wc: ~A" (.border_width wc))))
- (if (defined? 'XpmImage)
- (let ((xp (XpmImage 10 10 0 1 0)))
- (if (not (= (.cpp xp) 0)) (snd-display "cpp xp: ~A" (.cpp xp)))
- (if (not (= (.ncolors xp) 1)) (snd-display "ncolors xp: ~A" (.ncolors xp)))))
-
- (XmObjectAtPoint shell 100 100)
- (if (not (string=? (XmGetAtomName dpy XA_STRING) "STRING")) (snd-display "XmGetAtomName: ~A" (XmGetAtomName dpy XA_STRING)))
- (if (not (XmTargetsAreCompatible dpy (list XA_STRING) 1 (list XA_STRING) 1)) (snd-display "XmTargetsAreCompatible"))
- (XmUpdateDisplay grf1)
- (let ((lines (XmWidgetGetBaselines ((main-widgets) 4))))
- (if (not lines) (snd-display "XmWidgetGetBaselines?"))
- (if (< (length lines) 4) (snd-display "no listener text?? ~A" lines)))
- (let ((r (XmWidgetGetDisplayRect ((sound-widgets) 8))))
- (if (not (XRectangle? r)) (snd-display "XmWidgetGetDisplayRect: ~A" r)))
-
- (let ((depth (cadr (XtGetValues grf1 (list XmNdepth 0)))))
- (let ((pix (XCreatePixmap dpy win 10 10 depth)))
- (XDrawImageString dpy (list 'Window (cadr pix)) (car (snd-gcs)) 0 10 "hiho" 4)
- (let ((before (XCreateImage dpy vis depth XYPixmap 0 (XtCalloc (* 121 depth) 1) 10 10 8 0)))
- (let ((newimage (XGetSubImage dpy (list 'Window (cadr pix)) 0 0 10 10 AllPlanes XYPixmap before 0 0)))
- (XSubImage newimage 0 0 3 3)
- (if (not (= (.bytes_per_line newimage) 2)) (snd-display "bytes_per_line: ~A" (.bytes_per_line newimage)))
- (if (not (= (.byte_order newimage) 0)) (snd-display "byte_order: ~A" (.byte_order newimage)))
- (if (not (= (.bitmap_pad newimage) 8)) (snd-display "bitmap_pad: ~A" (.bitmap_pad newimage)))
- (if (not (= (.bitmap_bit_order newimage) 0)) (snd-display "bitmap_bit_order: ~A" (.bitmap_bit_order newimage)))
- (if (not (= (.bitmap_unit newimage) 32)) (snd-display "bitmap_unit: ~A" (.bitmap_unit newimage)))
- (if (not (= (.xoffset newimage) 0)) (snd-display "xoffset: ~A" (.xoffset newimage))))
- (XPutPixel before 1 1 *basic-color*)
- (XGetPixel before 1 1)
- (let ((rotpix (XCreatePixmap dpy win 10 10 depth)))
- (XPutImage dpy (list 'Window (cadr rotpix)) (car (snd-gcs)) before 0 0 0 0 10 10))
- (XAddPixel before 1)
- (if (> (.bits_per_pixel before) 123) (snd-display "bits_per_pixel: ~A" (.bits_per_pixel before)))
- (XmInstallImage before "before_image")
- (XmUninstallImage before)
- (XDestroyImage before))
- (when (defined? 'XpmAttributes)
- (let ((i11 (XGetImage dpy (list 'Window (cadr pix)) 0 0 10 10 AllPlanes XYPixmap))
- (attr (XpmAttributes))
- (vals (XtGetValues (cadr (main-widgets)) (list XmNcolormap 0 XmNdepth 0))))
- (let ((sym (XpmColorSymbol "basiccolor" #f *basic-color*)))
- (if (not (string=? (.name sym) "basiccolor")) (snd-display ".name colorsymbol: ~A" (.name sym)))
- (set! (.name sym) "hiho")
- (if (not (string=? (.name sym) "hiho")) (snd-display "set .name colorsymbol: ~A" (.name sym)))
- (set! (.visual attr) vis)
- (if (not (equal? vis (.visual attr))) (snd-display "visual xpm attr: ~A" (.visual attr)))
- (if (not (list? (.colorsymbols attr))) (snd-display ".colorsymbols attr: ~A" (.colorsymbols attr)))
- (set! (.colorsymbols attr) (list sym))
- (set! (.pixel sym) *basic-color*))
- (set! (.numsymbols attr) 1)
- (if (not (eqv? 1 (.numsymbols attr))) (snd-display "numsymbols xpm attr: ~A" (.numsymbols attr)))
- (set! (.depth attr) (vals 3))
- (if (not (equal? (vals 3) (.depth attr))) (snd-display "depth xpm attr: ~A" (.depth attr)))
- (set! (.colormap attr) (vals 1))
- (if (not (equal? (vals 1) (.colormap attr))) (snd-display "colormap xpm attr: ~A" (.colormap attr)))
- (set! (.valuemask attr) (logior XpmColorSymbols XpmDepth XpmColormap XpmVisual))
- (if (not (= (.valuemask attr) (logior XpmColorSymbols XpmDepth XpmColormap XpmVisual)))
- (snd-display "valuemask: ~A" (.valuemask attr)))
- (if (not (= (.x_hotspot attr) 0)) (snd-display "x_hotspot: ~A" (.x_hotspot attr)))
- (if (not (= (.y_hotspot attr) 0)) (snd-display "y_hotspot: ~A" (.y_hotspot attr)))
- (if (not (= (.npixels attr) 0)) (snd-display "npixels: ~A" (.npixels attr)))
- (let ((err (XpmCreatePixmapFromData dpy win
- (list "16 14 6 1"
- " c None s None"
- ". c gray50"
- "X c black"
- "o c white"
- "O c yellow"
- "- c ivory2 s basiccolor"
- "------.XXX.-----"
- "-----X.ooo.X----"
- "----..oXXXo..---"
- "----XoX...XoX---"
- "----XoX.--XoX.--"
- "----XoX.--XoX.--"
- "---XXXXXXXXXXX--"
- "---XOOOOOOOOOX.-"
- "---XO.......OX.-"
- "---XOOOOOOOOOX.-"
- "---XO.......OX.-"
- "---XOOOOOOOOOX.-"
- "---XXXXXXXXXXX.-"
- "----...........-")
- attr)))
- (if (not (and (= (car err) XpmSuccess)
- (Pixmap? (cadr err))))
- (snd-display "XpmCreatePixmapFromData: ~A" err)))
-
- (let* ((shell (cadr (main-widgets)))
- (dpy (XtDisplay shell))
- (status-and-whatnot (XpmReadFileToPixmap dpy (XRootWindowOfScreen (XtScreen shell)) "bullet.xpm" #f)))
- (let ((button (XmCreatePushButton shell "button" ()))
- (status (car status-and-whatnot))
- (pixmap (cadr status-and-whatnot))
- (pixmap1 (caddr status-and-whatnot)))
- (if (not (string=? (XpmGetErrorString XpmSuccess) "XpmSuccess"))
- (snd-display "XpmGetErrorString: ~A" (XpmGetErrorString XpmSuccess)))
- (if (not (= status XpmSuccess))
- (snd-display " XpmError ReadFileToPixmap: ~A" (XpmGetErrorString status)))
- (XtVaSetValues button (list XmNlabelType XmPIXMAP
- XmNlabelPixmap pixmap))
- (XpmWriteFileFromPixmap dpy "test.xpm" pixmap pixmap1 #f)
- (XpmCreateDataFromPixmap dpy pixmap pixmap1 #f)
- (let ((status (XpmReadFileToXpmImage "bullet.xpm"))
- (attr (XpmAttributes)))
- (let ((symb (XpmColorSymbol "Foreground" "green" *basic-color*)))
- (if (not (XpmImage? status))
- (snd-display " XpmError ReadFileToXpmImage: ~A ~A" symb (XpmGetErrorString status))))
- (set! (.valuemask attr) XpmColorSymbols)
- (XpmCreatePixmapFromXpmImage dpy (XRootWindowOfScreen (XtScreen shell)) status attr)
- (XpmCreateXpmImageFromPixmap dpy pixmap pixmap1 attr)
- (for-each
- (lambda (func val name)
- (set! (func attr) val)
- (if (not (equal? (func attr) val)) (snd-display "attr ~A ~A" name (func attr))))
- (list .valuemask .depth .width .x_hotspot .y_hotspot .cpp .npixels .ncolors)
- '(0 0 0 0 0 0 0 0)
- '(valuemask depth width x_hotspot y_hotspot cpp npixels ncolors))))
- (XDestroyImage i11))))
- (XFreePixmap dpy pix))
- (XVisualIDFromVisual vis)))
- (XGrabServer dpy)
- (XUngrabServer dpy)
- (XGrabPointer dpy win #t ButtonPressMask GrabModeSync GrabModeSync (list 'Window None) (list 'Cursor None) (list 'Time CurrentTime))
- (XUngrabPointer dpy (list 'Time CurrentTime))
- (XGrabKeyboard dpy win #t GrabModeSync GrabModeSync (list 'Time CurrentTime))
- (XUngrabKeyboard dpy (list 'Time CurrentTime))
- (XGrabKey dpy AnyKey AnyModifier win #t GrabModeSync GrabModeSync)
- (XUngrabKey dpy AnyKey AnyModifier win)
- (XGrabButton dpy AnyButton AnyModifier win #t ButtonPressMask GrabModeSync GrabModeSync (list 'Window None) (list 'Cursor None))
- (XUngrabButton dpy AnyButton AnyModifier win)
- (XtGrabPointer shell #t ButtonPressMask GrabModeSync GrabModeSync (list 'Window None) (list 'Cursor None) (list 'Time CurrentTime))
- (XtUngrabPointer shell (list 'Time CurrentTime))
- (XtGrabKeyboard shell #t GrabModeSync GrabModeSync (list 'Time CurrentTime))
- (XtUngrabKeyboard shell (list 'Time CurrentTime))
- (XtGrabKey shell (list 'KeyCode AnyKey) AnyModifier #t GrabModeSync GrabModeSync)
- (XtUngrabKey shell (list 'KeyCode AnyKey) AnyModifier)
- (XtGrabButton shell AnyButton AnyModifier #t ButtonPressMask GrabModeSync GrabModeSync (list 'Window None) (list 'Cursor None))
- (XtUngrabButton shell AnyButton AnyModifier))
-
- (let ((dpy (XtDisplay (car (channel-widgets))))
- (win (XtWindow (car (channel-widgets)))))
- (let ((wid (XtWindowToWidget dpy win)))
- (if (not (equal? wid (car (channel-widgets))))
- (snd-display "XtWindowToWidget: ~A ~A" (car (channel-widgets)) win)))
- ; these are causing: X Error of failed request: BadAccess (attempt to access private resource denied)
- ; (if (not (equal? (XGetTransientForHint dpy win) (list 0 #f)))
- ; (snd-display "XGetTransientForHint: ~A" (XGetTransientForHint dpy win)))
- (if (not (equal? (XGetErrorText dpy BadColor #f 9) '(0 "BadColor")))
- (snd-display "XGetErrorText: ~A" (XGetErrorText dpy BadColor #f 9)))
- (if (not (equal? (XGeometry dpy 0 "500x400" "500x400+10+10" 4 7 14 2 2) '(12 10 10 500 400)))
- (snd-display "XGeometry: ~A" (XGeometry dpy 0 "500x400" "500x400+10+10" 4 7 14 2 2)))
- (if (< (XEventsQueued dpy QueuedAlready) 0)
- (snd-display "XEventsQueued: ~A" (XEventsQueued dpy QueuedAlready)))
-
- (let ((shl (cadr (main-widgets))))
- (let ((coords (XtTranslateCoords shl 10 10)))
- (if (not (number? (car coords)))
- (snd-display "XtTranslateCoords: ~A" coords)))
- (if (not (XmIsVendorShell shl)) (snd-display "XmIsVendorShell?"))
- (if (XmIsPrimitive shl) (snd-display "XmIsPrimitive?"))
- (if (XmIsManager shl) (snd-display "XmIsManager?"))
- (if (XmIsIconGadget shl) (snd-display "XmIsIconGadget?"))
- (if (XmIsGadget shl) (snd-display "XmIsGadget?"))
- (if (XmIsIconHeader shl) (snd-display "XmIsHeader?"))
- (if (XmIsDropTransfer shl) (snd-display "XmIsDropTransfer?"))
- (if (XmIsDropSiteManager shl) (snd-display "XmIsDropSiteManager?"))
- (if (XmIsDragContext shl) (snd-display "XmIsDragContext?"))
- (if (XmIsDragIconObjectClass shl) (snd-display "XmIsDragIconObjectClass?"))
- (if (XmIsMessageBox shl) (snd-display "XmIsMessageBox?"))
- (if (XmIsScreen shl) (snd-display "XmIsScreen?"))
- (if (XmIsDisplay shl) (snd-display "XmIsDisplay?")))
-
- (let ((val 0))
- (XSetErrorHandler (lambda (dpy e)
- (set! val (.error_code e))))
- (XGetAtomName dpy '(Atom 0))
- (if (not (= val 5)) (snd-display "XSetErrorHandler: ~A" val)))
-
- (let ((sgc (car (snd-gcs))))
- (XDrawImageString dpy win sgc 10 10 "hiho" 4)
- (XDrawRectangle dpy win sgc 0 0 10 10)
- (XDrawString dpy win sgc 10 10 "hi" 2)
- (XDrawSegments dpy win sgc (list (XSegment 1 1 2 20) (XSegment 3 3 40 4)) 2)
- (XDrawRectangles dpy win sgc (list (XRectangle 0 0 10 10) (XRectangle 20 20 30 30)) 2)
- (XFillRectangles dpy win sgc (list (XRectangle 0 0 10 10) (XRectangle 20 20 30 30)) 2)
- (XDrawRectangle dpy win sgc 10 10 10 10)
- (XFillRectangle dpy win sgc 10 10 10 10)
- (XDrawPoints dpy win sgc (list (XPoint 23 23) (XPoint 109 10)) 2 CoordModeOrigin)
- (XDrawPoint dpy win sgc 10 10)
- (XDrawLines dpy win sgc (list (XPoint 23 23) (XPoint 109 10)) 2 CoordModeOrigin)
- (XDrawLine dpy win sgc 10 10 20 20)
- (XDrawArcs dpy win sgc (list (XArc 10 10 4 4 0 360) (XArc 20 20 1 23 0 123)) 2)
- (XFillArcs dpy win sgc (list (XArc 10 10 4 4 0 360) (XArc 20 20 1 23 0 123)) 2)
- (XDrawArc dpy win sgc 0 0 10 10 45 90)
- (XFillArc dpy win sgc 0 0 10 10 45 90)
- (XFillPolygon dpy win sgc (list (XPoint 0 0) (XPoint 0 10) (XPoint 10 10) (XPoint 10 0) (XPoint 0 0)) 5 Convex CoordModeOrigin)
- (XClearArea dpy win 10 10 20 20 #f)
- (XClearWindow dpy win)))
-
- (close-sound)
-
- (let ((button (XtCreateManagedWidget "button" xmPushButtonWidgetClass (cadr (main-widgets)) () 0))
- (val1 0))
- (define (call1 w c i)
- (set! val1 (+ 1 val1)))
- (let ((descr (XtAddCallback button XmNactivateCallback call1 #f)))
- (XtCallCallbacks button XmNactivateCallback #f)
- (if (not (= val1 1))
- (snd-display "XtCallCallbacks val1: ~A" val1))
- (XtRemoveCallback button XmNactivateCallback descr)
- (let ((calls (XtHasCallbacks button XmNactivateCallback)))
- (if (not (= calls XtCallbackHasNone))
- (snd-display "XtRemoveCallbacks: ~A" calls))))
- (XtUnmanageChild button))
-
- (let ((button (XtCreateManagedWidget "button" xmPushButtonWidgetClass (cadr (main-widgets)) () 0))
- (val1 0)
- (val2 0))
- (define (call1 w c i)
- (set! val1 (+ 1 val1)))
- (define (call2 w c i)
- (set! val2 (+ 1 val2)))
- (let ((descr1 (XtAddCallback button XmNactivateCallback call1 #f))
- (descr2 (XtAddCallback button XmNactivateCallback call2 #f)))
- (XtCallCallbacks button XmNactivateCallback #f)
- (if (not (or (= val1 1) (= val2 1)))
- (snd-display "XtCallCallbacks val12: ~A ~A" val1 val2))
- (XtRemoveCallbacks button XmNactivateCallback (list descr1 descr2))
- (let ((calls (XtHasCallbacks button XmNactivateCallback)))
- (if (not (= calls XtCallbackHasNone))
- (snd-display "XtRemoveCallbacks: ~A" calls))))
- (XtUnmanageChild button))
-
- (let ((button (XtCreateManagedWidget "button" xmPushButtonWidgetClass (cadr (main-widgets)) () 0))
- (val1 0)
- (val2 0))
- (define (call1 w c i)
- (set! val1 (+ 1 val1)))
- (define (call2 w c i)
- (set! val2 (+ 1 val2)))
- (let ((descrs (XtAddCallbacks button XmNactivateCallback (list (list call1 #f) (list call2 #f)))))
- (XtCallCallbacks button XmNactivateCallback #f)
- (if (not (or (= val1 1) (= val2 1)))
- (snd-display "XtCallCallbacks add val12: ~A ~A" val1 val2))
- (XtRemoveCallbacks button XmNactivateCallback descrs)
- (let ((calls (XtHasCallbacks button XmNactivateCallback)))
- (if (not (= calls XtCallbackHasNone))
- (snd-display "XtRemoveCallbacks (add): ~A" calls))))
- (XtUnmanageChild button))
-
- (let* ((frm (add-main-pane "hi" xmFormWidgetClass (list XmNpaneMinimum 120)))
- (browsed 0)
- (lst (XtCreateManagedWidget "lst" xmListWidgetClass frm
- (list XmNleftAttachment XmATTACH_FORM
- XmNrightAttachment XmATTACH_FORM
- XmNtopAttachment XmATTACH_FORM
- XmNbottomAttachment XmATTACH_FORM
- XmNautomaticSelection XmNO_AUTO_SELECT
- XmNdoubleClickInterval 100
- XmNitemCount 3
- XmNitems (list (XmStringCreate "one" XmFONTLIST_DEFAULT_TAG)
- (XmStringCreate "two" XmFONTLIST_DEFAULT_TAG)
- (XmStringCreate "three" XmFONTLIST_DEFAULT_TAG))
- XmNlistMarginHeight 4
- XmNlistMarginWidth 1
- XmNlistSizePolicy XmVARIABLE
- XmNlistSpacing 2
- XmNmatchBehavior XmQUICK_NAVIGATE
- XmNprimaryOwnership XmOWN_NEVER
- XmNscrollBarDisplayPolicy XmAS_NEEDED
- XmNselectColor *basic-color*
- XmNselectedPositions (list 0 1)
- XmNselectionMode XmNORMAL_MODE
- XmNselectionPolicy XmBROWSE_SELECT))))
- (XtAddCallback lst XmNbrowseSelectionCallback (lambda (w c i) (set! browsed 123)))
- (let ((vals (XtVaGetValues lst
- (list XmNautomaticSelection 0 XmNdoubleClickInterval 0 XmNitemCount 0 XmNitems 0 XmNlistMarginHeight 0
- XmNlistMarginWidth 0 XmNlistSizePolicy 0 XmNlistSpacing 0 XmNmatchBehavior 0
- XmNprimaryOwnership 0 XmNscrollBarDisplayPolicy 0 XmNselectColor 0 XmNselectionMode 0
- XmNselectionPolicy 0 XmNhorizontalScrollBar 0 XmNselectedItemCount 0 XmNtopItemPosition 0))))
- (if (not (= (vals 1) XmNO_AUTO_SELECT)) (snd-display "XmNautomaticSelection: ~A" (vals 1)))
- (if (not (= (vals 3) 100)) (snd-display "XmNdoubleClickInterval: ~A" (vals 3)))
- (if (not (= (vals 5) 3)) (snd-display "XmNitemCount: ~A" (vals 5)))
- (if (or (null? (vals 7)) (not (XmString? (car (vals 7))))) (snd-display "XmNitems: ~A" (vals 7)))
- (if (not (= (vals 9) 4)) (snd-display "XmNlistMarginHeight: ~A" (vals 9)))
- (if (not (= (vals 11) 1)) (snd-display "XmNlistMarginWidth: ~A" (vals 11)))
- (if (not (= (vals 13) XmVARIABLE)) (snd-display "XmNlistSizePolicy: ~A" (vals 13)))
- (if (not (= (vals 15) 2)) (snd-display "XmNlistSpacing: ~A" (vals 15)))
- (if (not (= (vals 17) XmQUICK_NAVIGATE)) (snd-display "XmNmatchBehavior: ~A" (vals 17)))
- (if (not (= (vals 19) XmOWN_NEVER)) (snd-display "XmNprimaryOwnership : ~A" (vals 19)))
- (if (not (= (vals 21) XmAS_NEEDED)) (snd-display "XmNscrollBarDisplayPolicy: ~A" (vals 21)))
- (if (not (Pixel? (vals 23))) (snd-display "XmNselectColor: ~A" (vals 23)))
- (if (not (= (vals 25) XmNORMAL_MODE)) (snd-display "XmNselectionMode: ~A" (vals 25)))
- (if (not (= (vals 27) XmBROWSE_SELECT)) (snd-display "XmNselectionPolicy: ~A" (vals 27)))
- (if (vals 29) (snd-display "XmNhorizontalScrollBar: ~A" (vals 29)))
- (if (not (= (vals 31) 0)) (snd-display "XmNselectedItemCount : ~A" (vals 31)))
- (if (not (= (vals 33) 1)) (snd-display "XmNtopItemPosition: ~A" (vals 33)))
-
- (let ((tag (catch #t
- (lambda ()
- (XmListAddItem frm (XmStringCreate "four" XmFONTLIST_DEFAULT_TAG) 0))
- (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg))
- (snd-display "list type check: ~A" tag)))
-
- (XmListAddItem lst (XmStringCreate "four" XmFONTLIST_DEFAULT_TAG) 0) ; 0 -> last position
- (set! vals (XtGetValues lst (list XmNitemCount 0 XmNitems 0)))
- (if (not (= (vals 1) 4)) (snd-display "XmAddItem len: ~A" (vals 1)))
- (XmListAddItems lst (list (XmStringCreateLocalized "five") (XmStringCreateLocalized "six")) 2 0)
- (let ((tag (catch #t
- (lambda () (XmListAddItems lst (list (XmStringCreateLocalized "seven") 123) 2 0))
- (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg))
- (snd-display "xstrings->list add: ~A" tag)))
- (set! vals (XtGetValues lst (list XmNitemCount 0 XmNitems 0)))
- (if (not (= (vals 1) 6)) (snd-display "XmAddItems len: ~A" (vals 1)))
-
- (XmListDeletePos lst 1)
- (set! vals (XtGetValues lst (list XmNitemCount 0 XmNitems 0)))
- (if (not (= (vals 1) 5)) (snd-display "XmListDeletePos len: ~A" (vals 1)))
- (XmListDeletePositions lst (list 2 4))
- (set! vals (XtGetValues lst (list XmNitemCount 0 XmNitems 0)))
- (if (not (= (vals 1) 3)) (snd-display "XmListDeletePositions len: ~A" (vals 1)))
-
- (XmListAddItemUnselected lst (XmStringCreate "seven" XmFONTLIST_DEFAULT_TAG) 0) ; 0 -> last position
- (set! vals (XtGetValues lst (list XmNitemCount 0 XmNitems 0)))
- (if (not (= (vals 1) 4)) (snd-display "XmListAddItemUnselected len: ~A" (vals 1)))
- (XmListAddItemsUnselected lst (list (XmStringCreateLocalized "eight") (XmStringCreateLocalized "nine")) 2 0)
- (set! vals (XtGetValues lst (list XmNitemCount 0 XmNitems 0)))
- (if (not (= (vals 1) 6)) (snd-display "XmListAddItemsUnselected len: ~A" (vals 1)))
-
- (XmListDeleteAllItems lst)
- (set! vals (XtGetValues lst (list XmNitemCount 0 XmNitems 0)))
- (if (not (= (vals 1) 0)) (snd-display "XmListDeleteAllItems len: ~A" (vals 1)))
- (if (pair? (vals 3))
- (snd-display "deleted all items: ~A" (vals 3)))
-
- (let ((item1 (XmStringCreate "one" XmFONTLIST_DEFAULT_TAG))
- (item2 (XmStringCreate "two" XmFONTLIST_DEFAULT_TAG))
- (item3 (XmStringCreate "three" XmFONTLIST_DEFAULT_TAG))
- (item4 (XmStringCreate "four" XmFONTLIST_DEFAULT_TAG))
- (item5 (XmStringCreate "five" XmFONTLIST_DEFAULT_TAG)))
- (XtVaSetValues lst
- (list XmNitemCount 5
- XmNitems (list item1 item2 item3 item4 item5)))
- (set! vals (XtGetValues lst (list XmNitemCount 0 XmNitems 0)))
- (if (not (= (vals 1) 5)) (snd-display "Xt set items len: ~A" (vals 1)))
-
- (XmListSelectItem lst item3 #t)
- (if (not (= browsed 123)) (snd-display "XmListSelectItem callback: ~A" browsed))
- (if (XmListPosSelected lst 1) (snd-display "XmList selected pos 1?"))
- (if (not (XmListPosSelected lst 3)) (snd-display "XmList didn't select pos 3?"))
- (set! vals (XtVaGetValues lst (list XmNselectedItemCount 0 XmNselectedItems 0)))
- (if (not (= (vals 1) 1)) (snd-display "selected count: ~A" (vals 1)))
- (set! vals (XmListGetSelectedPos lst))
- (if (not (and (pair? vals) (null? (cdr vals))))
- (snd-display "XmListGetSelectedPos: ~A" vals))
- (if (not (= (car vals) 3)) (snd-display "XmListGetSelectedPos: ~A" vals))
- (set! browsed 0)
- (XmListSelectPos lst 1 #f)
- (if (not (= browsed 0)) (snd-display "XmListSelectPos callback: ~A" browsed))
- (if (not (XmListPosSelected lst 1)) (snd-display "XmList select pos?"))
- (if (not (= (XmListItemPos lst item3) 3)) (snd-display "XmListItemPos: ~A" (XmListItemPos lst item3)))
- (if (not (= (car (XmListGetMatchPos lst item3)) 3)) (snd-display "XmListGetMatchPos: ~A" (XmListGetMatchPos lst item3)))
- (if (not (XmListItemExists lst item3)) (snd-display "XmListItemExists?"))
-
- (if (not (= (XmListYToPos lst 40) 2)) (snd-display "XmListYToPos: ~A" (XmListYToPos lst 40)))
- (let ((box (XmListPosToBounds lst 2)))
- (if (not (memv (cadr box) '(3 2)))
- (snd-display "XmListPosToBounds: ~A" box)))
- (XmListDeselectPos lst 1)
- (if (XmListPosSelected lst 1) (snd-display "XmList deselected pos?"))
- (XmListSelectItem lst item3 #t)
- (XmListDeselectAllItems lst)
- (if (XmListPosSelected lst 3) (snd-display "XmList deselect all pos?"))
- (XmListSelectItem lst item3 #f)
- (XmListDeselectItem lst item3)
- (if (XmListPosSelected lst 3) (snd-display "XmList deselect item?"))
-
- (XmListDeleteItem lst item2)
- (set! vals (XtGetValues lst (list XmNitemCount 0 XmNitems 0)))
- (if (not (= (vals 1) 4)) (snd-display "XmDeleteItem len: ~A" (vals 1)))
- (XmListDeleteItems lst (list item1 item4))
- (set! vals (XtGetValues lst (list XmNitemCount 0 XmNitems 0)))
- (if (not (= (vals 1) 2)) (snd-display "XmDeleteItems len: ~A" (vals 1)))
- (XmListDeleteAllItems lst)
- (XtVaSetValues lst
- (list XmNitemCount 5
- XmNitems (list item1 item2 item3 item4 item5)))
-
- (XtUnmanageChild frm))))
-
- (let* ((frm (add-main-pane "hi" xmFormWidgetClass (list XmNpaneMinimum 120)))
- (current-time (list 'Time CurrentTime))
- (calls (make-vector 10 "none"))
- (txt (XtCreateManagedWidget "text" xmTextWidgetClass frm
- (list XmNeditable #t
- XmNleftAttachment XmATTACH_FORM
- XmNrightAttachment XmATTACH_FORM
- XmNtopAttachment XmATTACH_FORM
- XmNbottomAttachment XmATTACH_NONE
- XmNdestinationCallback
- (list (lambda (w c i)
- (set! (calls c) "dest")
- (if (< (.location_data i) 0) (snd-display "location_data: ~A" (.location_data i))))
- 1)
- XmNactivateCallback (list (lambda (w c i) (set! (calls c) "act")) 2)
- XmNfocusCallback (list (lambda (w c i) (set! (calls c) "focus")) 3)
- XmNlosingFocusCallback (list (lambda (w c i) (set! (calls c) "losingfocus")) 4)
- XmNgainPrimaryCallback (list (lambda (w c i) (set! (calls c) "gain")) 5)
- XmNlosePrimaryCallback (list (lambda (w c i) (set! (calls c) "lose")) 6)
- XmNmodifyVerifyCallback
- (list (lambda (w c i)
- (set! (calls c) "modify")
- (if (< (.currInsert i) 0) (snd-display "currInsert: ~A" (.currInsert i)))
- (if (< (.newInsert i) 0) (snd-display "newInsert: ~A" (.newInsert i)))
- (if (string? (.doit i)) (snd-display "doit: ~A" (.doit i)))
- (if (< (.startPos i) 0) (snd-display "startPos: ~A" (.startPos i)))
- (if (< (.endPos i) 0) (snd-display "endPos: ~A" (.endPos i))))
- 7)
- XmNmotionVerifyCallback (list (lambda (w c i) (set! (calls c) "motion")) 8)
- XmNvalueChangedCallback (list (lambda (w c i) (set! (calls c) "value")) 9)))))
- (letrec ((transfer-proc
- (lambda (w c info)
- (let* ((dpy (XtDisplay w))
- (TARGETS (XmInternAtom dpy "TARGETS" #f))
- (CB_TARGETS (XmInternAtom dpy "_MOTIF_CLIPBOARD_TARGETS" #f)))
- (if (equal? (.target info) XA_STRING)
- (XmTransferDone (.transfer_id info) XmTRANSFER_DONE_SUCCEED)
- (if (and (or (equal? (.target info) TARGETS)
- (equal? (.target info) CB_TARGETS))
- (equal? (.type info) XA_ATOM))
- (let ((targets (->Atoms (.value info) (.length info)))
- (happy #f))
- (for-each
- (lambda (targ)
- (if (equal? targ XA_STRING)
- (set! happy #t)))
- targets)
- (if happy
- (XmTransferValue (.transfer_id info)
- XA_STRING
- transfer-proc
- #f
- (XtLastTimestampProcessed dpy)))))))))
- (txtf (XtVaCreateManagedWidget "textfield" xmTextFieldWidgetClass frm
- (list XmNeditable #t
- XmNleftAttachment XmATTACH_FORM
- XmNrightAttachment XmATTACH_FORM
- XmNtopAttachment XmATTACH_WIDGET
- XmNtopWidget txt
- XmNbottomAttachment XmATTACH_FORM))))
-
- (let ((vals (XtVaGetValues txt (list XmNrenderTable 0 XmNselectionArray 0))))
- (if (not (XmRenderTable? (vals 1))) (snd-display "XmNrenderTable: ~A" (vals 1)))
- (if (not (pair? (vals 3))) (snd-display "XmNselectionArray: ~A" (vals 3))))
- (if (not (XmTextGetEditable txt)) (snd-display "XmTextGetEditable?"))
- (if (not (XmTextFieldGetEditable txtf)) (snd-display "XmTextFieldGetEditable?"))
- (XmTextSetEditable txt #f)
- (XmTextFieldSetEditable txtf #f)
- (if (XmTextGetEditable txt) (snd-display "XmTextSetEditable?"))
- (if (XmTextFieldGetEditable txtf) (snd-display "XmTextFieldSetEditable?"))
- (XmTextSetEditable txt #t)
- (XmTextFieldSetEditable txtf #t)
- (XmTextSetString txt "0123456789")
- (XmTextFieldSetString txtf "0123456789")
- (XmTextFieldCopyLink txtf (list 'Time CurrentTime))
- (let ((val (XmTextGetString txt))
- (valf (XmTextFieldGetString txtf))
- (val1 (cadr (XtVaGetValues txt (list XmNvalue 0))))
- (val1f (cadr (XtVaGetValues txtf (list XmNvalue 0)))))
- (if (not (string=? val "0123456789")) (snd-display "XmTextSetString: ~A" val))
- (if (not (string=? valf "0123456789")) (snd-display "XmTextFieldSetString: ~A" valf))
- (if (not (string=? val1 "0123456789")) (snd-display "text value: ~A" val1))
- (if (not (string=? val1f "0123456789")) (snd-display "text field value: ~A" val)))
- (let ((untext (XtCreateWidget "untext" xmTextWidgetClass frm ())))
- (let ((source (XmTextGetSource txt)))
- (XmTextSetSource untext source 0 3)
- (if (not (XmTextSource? source))
- (snd-display "XmTextSource? ~A" source))
- (if (not (equal? (XmTextGetSource untext) source))
- (snd-display "XmTextSetSource: ~A ~A" source (XmTextGetSource untext))))
- (if (XtIsSubclass untext xmFormWidgetClass)
- (snd-display "XtIsSubclass thinks untext is a form?"))
- (if (not (XtIsSubclass untext coreWidgetClass))
- (snd-display "XtIsSubclass thinks untext is not a core widget"))
- (XmTextCopyLink untext (list 'Time CurrentTime))
- (XmTextPasteLink untext))
- (let ((val (XmTextGetSubstring txt 2 3))
- (valf (XmTextFieldGetSubstring txtf 2 3)))
- (if (not (equal? val "234")) (snd-display "XmTextGetSubstring: ~A" val))
- (if (not (equal? valf "234")) (snd-display "XmTextFieldGetSubstring: ~A" valf)))
- (XmTextSetSelection txt 2 5 current-time)
- (let ((val (XmTextGetSelection txt)))
- (if (not (equal? val "234")) (snd-display "XmTextGetSelection: ~A" val)))
- (XmTextClearSelection txt current-time)
- (let ((val (XmTextGetSelection txt)))
- (if val (snd-display "XmTextClearSelection: ~A" val)))
- (XmTextFieldSetSelection txtf 2 5 current-time)
- (let ((tag (catch #t
- (lambda ()
- (XmTextFieldSetSelection txt 2 3 current-time))
- (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg))
- (snd-display "text field type check: ~A" tag)))
- (let ((tag (catch #t
- (lambda ()
- (XmTextSetSelection frm 2 3 current-time))
- (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg))
- (snd-display "text type check: ~A" tag)))
- (let ((dpy (XtDisplay (cadr (main-widgets))))
- (win (XtWindow (cadr (main-widgets)))))
- (let ((tag (catch #t (lambda () (XtDisplayInitialize (car (main-widgets)) dpy "hi" "ho" 1 1)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XtDisplayInitialize type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XmTransferSetParameters 123 123 123 123 "hiho")) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XmTransferSetParameters type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XmDropSiteConfigureStackingOrder txtf txtf "hiho")) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XmDropSiteConfigureStackingOrder type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XmScrollVisible txtf txtf 5 "hiho")) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XmScrollVisible type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XmDragStart txtf (XEvent KeyPress) (list 0 1) "hiho")) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XmDragStart type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XmClipboardStartRetrieve dpy win 1)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XmClipboardStartRetrieve type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XmClipboardCopyByName dpy win 1 "hi" "hi" 1)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XmClipboardCopyByName type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XmClipboardBeginCopy dpy win "hi" txtf #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XmClipboardBeginCopy type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XmRemoveProtocolCallback txtf XA_STRING XA_STRING #f 1)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XmRemoveProtocolCallback type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XSetRGBColormaps dpy win (list 'XStandardColormap 0) 1 #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XSetRGBColormap type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XSetWMHints dpy win 1)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XSetWMHints type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XWindowEvent dpy win #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XWindowEvent type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XStoreNamedColor dpy (list 'Colormap 0) "hi" 0 #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XStoreNamedColor type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XStoreColors dpy (list 'Colormap 0) (list 1 2) #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XStoreColors type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XStoreColor dpy (list 'Colormap 0) (list 1 2))) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XStoreColor type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XtOwnSelectionIncremental txtf '(Atom 0) '(Time 0) #f #f #f #f #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XtOwnSelectionIncremental type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XtOwnSelection txtf '(Atom 0) '(Time 0) #f #f #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XtOwnSelection type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XtGetSelectionValue txtf '(Atom 0) '(Atom 0) #f #f #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XtGetSelectionValue type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XtGetSelectionValues txtf '(Atom 0) (list (list 'Atom 0)) #f #f #f #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XtGetSelectionValues type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XtDisownSelection txtf '(Atom 0) #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XtDisownSelection type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XtGetSelectionRequest txtf '(Atom 0) #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XtGetSelectionRequest type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XtGetSelectionValueIncremental txtf '(Atom 0) (list (list 'Atom 0)) 1 #f #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XtGetSelectionValueIncremental type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XtGetSelectionValuesIncremental txtf '(Atom 0) '(Atom 0) 1 #f #f #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XtGetSelectionValuesIncremental type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XtSendSelectionRequest txtf '(Atom 0) #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XtSendSelectionRequest type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XReconfigureWMWindow dpy win 1 1 #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XReconfigureWMWindow type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XSetWMProtocols dpy win 1 1)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XSetWMProtocols type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XIconifyWindow dpy win #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XIconifyWindow type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XWithdrawWindow dpy win #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XWithdrawWindow type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XSetWMColormapWindows dpy win #f 1)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XSetWMColormapWindows type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XSetTransientForHint dpy win #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XSetTransientForHint type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XAllowEvents dpy 1 #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XAllowEvents type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XChangeActivePointerGrab dpy 1 '(Cursor 0) #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XChangeActivePointerGrab type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XChangeGC dpy '(GC 0) 1 #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XChangeGC type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XChangeKeyboardMapping dpy 1 1 (list 1 1) #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XChangeKeyboardMapping type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XConfigureWindow dpy win 1 #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XConfigureWindow type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XConvertSelection dpy '(Atom 0) '(Atom 0) '(Atom 0) win #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XConvertSelection type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XReparentWindow dpy win win 1 #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XReparentWindow type check: ~A" tag)))
-
- (let ((tag (catch #t (lambda () (XFreeColors dpy '(Colormap 0) (list 0) 1 #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XFreeColors type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XReadBitmapFile dpy win #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XReadBitmapFile type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XRebindKeysym dpy '(KeySym 0) (list 0) 1 "hi" #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XRebindKeysym type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XRestackWindows dpy (list 0) #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XRestackWindows type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XRotateWindowProperties dpy win (list 0) 1 #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XRotateWindowProperties type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XSelectInput dpy win #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XSelectInput type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XSetFontPath dpy (list 0) #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XSetFontPath type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XSetInputFocus dpy win 1 #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XSetInputFocus type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XSetSelectionOwner dpy '(Atom 0) win #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XSetSelectionOwner type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XSetWindowColormap dpy win #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XSetWindowColormap type check: ~A" tag)))
- (let ((tag (catch #t (lambda () (XmClipboardCancelCopy dpy win #f)) (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg)) (snd-display "XmClipboardCancelCopy type check: ~A" tag)))
-
- )
-
- (let ((valf (XmTextFieldGetSelection txtf)))
- (if (not (string=? valf "234")) (snd-display "XmTextFieldGetSelection: ~A" valf)))
- (XmTextFieldClearSelection txtf current-time)
- (let ((valf (XmTextFieldGetSelection txtf)))
- (if valf (snd-display "XmTextFieldClearSelection: ~A" valf)))
- (let ((val (XmTextGetInsertionPosition txt))
- (valf (XmTextFieldGetInsertionPosition txtf)))
- (if (not (= val 5)) (snd-display "XmTextGetInsertionPosition: ~A" val))
- (if (not (= valf 5)) (snd-display "XmTextFieldGetInsertionPosition: ~A" val)))
-
- (XmTextScroll txt 1)
- (XmTextScroll txt -1)
- (let ((pos (XmTextGetTopCharacter txt)))
- (if (not (= pos 0)) (snd-display "XmTextGetTopCharacter after scroll: ~A" pos)))
- (XmTextShowPosition txt 0)
- (XmTextFieldShowPosition txtf 0)
- (XmTextSetTopCharacter txt 0)
- (XmTextXYToPos txt 10 10)
- (XmTextFieldXYToPos txtf 10 10)
-
- (XmTextSetHighlight txt 3 6 XmHIGHLIGHT_SELECTED)
- (XmTextFieldSetHighlight txtf 3 6 XmHIGHLIGHT_SELECTED)
- (XmTextFieldGetBaseline txtf)
- (XmTextSetAddMode txt #t)
- (if (not (XmTextGetAddMode txt)) (snd-display "XmTextSetAddMode?"))
- (XmTextFieldSetAddMode txtf #t)
- (if (not (XmTextFieldGetAddMode txtf)) (snd-display "XmTextFieldSetAddMode?"))
-
- (if (not (string=? (vector-ref calls 5) "gain")) (snd-display "gain callback: ~A" (vector-ref calls 5)))
- (if (not (string=? (vector-ref calls 7) "modify")) (snd-display "modify callback: ~A" (vector-ref calls 7)))
- (if (not (string=? (vector-ref calls 8) "motion")) (snd-display "motion callback: ~A" (vector-ref calls 8)))
- (if (not (string=? (vector-ref calls 9) "value")) (snd-display "value callback: ~A" (vector-ref calls 9)))
-
- (let ((txtf1 (XtVaCreateManagedWidget "textfield" xmTextFieldWidgetClass frm
- (list XmNeditable #t
- XmNleftAttachment XmATTACH_FORM
- XmNrightAttachment XmATTACH_FORM
- XmNtopAttachment XmATTACH_WIDGET
- XmNtopWidget txt
- XmNbottomAttachment XmATTACH_FORM
- XmNdestinationCallback
- (list (lambda (w c info)
- (let* ((dpy (XtDisplay w))
- (TARGETS (XmInternAtom dpy "TARGETS" #f)))
- (XmTransferValue (.transfer_id info)
- TARGETS
- transfer-proc
- #f
- (XtLastTimestampProcessed dpy))))
- #f)))))
- (focus-widget txtf1)
- (XmTextFieldPaste txtf1)
- (XmTextFieldPasteLink txtf1)
- (if (not (Widget? (XmGetTabGroup txtf1))) (snd-display "XmGetTabGroup: ~A " (XmGetTabGroup txtf1)))
- (let ((fw (XmGetFocusWidget (cadr (main-widgets)))))
- (if (not (equal? fw txtf1))
- (snd-display "XmGetFocusWidget: ~A" fw)))
- (let ((callback (lambda (w context ev flag)
- (XtSetValues w (list XmNbackground (white-pixel))))))
- (XtAddEventHandler txtf1 EnterWindowMask #f callback #f)
- (XtRemoveEventHandler txtf1 EnterWindowMask #f callback #f)
- (XtAddRawEventHandler txtf1 EnterWindowMask #f callback #f)
- (XtRemoveRawEventHandler txtf1 EnterWindowMask #f callback #f)
- (XtInsertEventHandler txtf1 EnterWindowMask #f callback #f XtListHead)
- (XtRemoveEventHandler txtf1 EnterWindowMask #f callback #f)
- (XtInsertRawEventHandler txtf1 EnterWindowMask #f callback #f XtListTail)
- (XtRemoveRawEventHandler txtf1 EnterWindowMask #f callback #f))
- (XtRemoveAllCallbacks txtf1 XmNdestinationCallback))
- (XtAppAddActions (car (main-widgets)) (list (list "hiho" (lambda args (snd-print "hiho")))))
- (XtAugmentTranslations txt (XtParseTranslationTable "Ctrl <Key>i: hiho()\n"))
- (XtCallActionProc txt "hiho" (XEvent) #f 0)
- (XtUninstallTranslations txt)
- (XtUnmanageChild frm)))
-
- (let* ((shell (cadr (main-widgets)))
- (dpy (XtDisplay shell))
- (win (XtWindow shell))
- (err (XmClipboardRegisterFormat dpy "SND_DATA" 8)))
- (if (not (= err ClipboardSuccess))
- (snd-display "XmClipboardRegisterFormat: ~A" err)
- (let ((vals (XmClipboardStartCopy dpy win
- (XmStringCreateLocalized "SND_DATA")
- (list 'Time CurrentTime)
- shell
- (lambda (w id pid reason)
- (XmClipboardCopyByName dpy win id "copy this" 10 123)))))
- (if (not (= (car vals) ClipboardSuccess))
- (snd-display "XmClipboardStartCopy: ~A" vals)
- (let ((data-id (cadr vals)))
- (set! err (XmClipboardCopy dpy win data-id "SND_DATA" "copy this" 10 0))
- (if (not (= (car err) ClipboardSuccess)) (snd-display "XmClipboardCopy: ~A" err))
- (let ((item-id (cadr err)))
- (set! err (XmClipboardEndCopy dpy win data-id))
- (if (not (= err ClipboardSuccess)) (snd-display "copy ~A" err))
- (if (not (= (cadr (XmClipboardInquireLength dpy win "SND_DATA")) 10))
- (snd-display "clip len: ~A" (XmClipboardInquireLength dpy win "SND_DATA")))
- (let ((pend (XmClipboardInquirePendingItems dpy win "SND_DATA")))
- (if (not (= (car pend) ClipboardSuccess)) (snd-display "XmClipboardInquirePendingItems: ~A" pend)))
- (let ((formats1 (XmClipboardInquireCount dpy win)))
- (if (= (cadr formats1) 0) (snd-display "XmClipboardInquireCount: ~A" formats1))
- (XmClipboardInquireFormat dpy win 1 10)
- (let ((clip (XmClipboardRetrieve dpy win "SND_DATA" 10)))
- (if (not (string=? (cadr clip) "copy this")) (snd-display "XmClipboardRetrieve: ~A" clip))
- (XmClipboardWithdrawFormat dpy win item-id))))))))
- (let ((val (XmClipboardLock dpy win)))
- (if (not (= val ClipboardLocked))
- (XmClipboardUnlock dpy win #t)))
- (XmSelectionBoxGetChild (XmCreateSelectionBox shell "selbox" () 0) XmDIALOG_APPLY_BUTTON))
-
- (let* ((frm (add-main-pane "hi" xmFormWidgetClass (list XmNpaneMinimum 120)))
- (box (XtCreateManagedWidget "box" xmContainerWidgetClass frm ()))
- (tgl (XtCreateManagedWidget "tgl" xmToggleButtonWidgetClass frm
- (list XmNleftAttachment XmATTACH_FORM
- XmNrightAttachment XmATTACH_FORM
- XmNtopAttachment XmATTACH_FORM
- XmNbottomAttachment XmATTACH_NONE)))
- (tgg (XtCreateManagedWidget "tgg" xmToggleButtonGadgetClass frm
- (list XmNleftAttachment XmATTACH_FORM
- XmNrightAttachment XmATTACH_FORM
- XmNtopAttachment XmATTACH_WIDGET
- XmNtopWidget tgl
- XmNbottomAttachment XmATTACH_NONE)))
- (spn (XtCreateManagedWidget "spn" xmSimpleSpinBoxWidgetClass frm
- (list XmNleftAttachment XmATTACH_FORM
- XmNrightAttachment XmATTACH_FORM
- XmNtopAttachment XmATTACH_WIDGET
- XmNtopWidget tgg
- XmNbottomAttachment XmATTACH_NONE)))
- (cmd (XtCreateManagedWidget "cmd" xmCommandWidgetClass frm
- (list XmNleftAttachment XmATTACH_FORM
- XmNrightAttachment XmATTACH_FORM
- XmNtopAttachment XmATTACH_WIDGET
- XmNtopWidget spn
- XmNbottomAttachment XmATTACH_NONE)))
- (scl (XtCreateManagedWidget "scl" xmScaleWidgetClass frm
- (list XmNleftAttachment XmATTACH_FORM
- XmNrightAttachment XmATTACH_FORM
- XmNtopAttachment XmATTACH_WIDGET
- XmNtopWidget cmd
- XmNbottomAttachment XmATTACH_NONE)))
- (notes (XtCreateManagedWidget "notes" xmNotebookWidgetClass frm
- (list XmNleftAttachment XmATTACH_FORM
- XmNrightAttachment XmATTACH_FORM
- XmNtopAttachment XmATTACH_WIDGET
- XmNtopWidget scl
- XmNbottomAttachment XmATTACH_NONE)))
-
- (cmb (XtCreateManagedWidget "cmb" xmComboBoxWidgetClass frm
- (list XmNleftAttachment XmATTACH_FORM
- XmNrightAttachment XmATTACH_FORM
- XmNtopAttachment XmATTACH_WIDGET
- XmNtopWidget notes
- XmNbottomAttachment XmATTACH_FORM))))
- (let ((current-time (list 'Time CurrentTime))
- (toggled 0))
- (XtCreateManagedWidget "one" xmPushButtonWidgetClass notes ())
- (XtCreateManagedWidget "two" xmPushButtonWidgetClass notes ())
- (let ((info (cadr (XmNotebookGetPageInfo notes 1))))
- (if (not (= (.page_number info) 1)) (snd-display "page_number: ~A" (.page_number info)))
- (if (.page_widget info) (snd-display "page_widget: ~A" (.page_widget info)))
- (if (.status_area_widget info) (snd-display "status_area_widget: ~A" (.status_area_widget info)))
- (if (not (Widget? (.major_tab_widget info))) (snd-display "major_tab_widget: ~A" (.major_tab_widget info)))
- (if (.minor_tab_widget info) (snd-display "minor_tab_widget: ~A" (.minor_tab_widget info))))
-
- (XmSimpleSpinBoxAddItem spn (XmStringCreateLocalized "hiho") 0)
- (XmSimpleSpinBoxAddItem spn (XmStringCreateLocalized "away") 0)
- (XmSimpleSpinBoxDeletePos spn 0)
- (XmSimpleSpinBoxSetItem spn (caadr (XtVaGetValues spn (list XmNvalues 0))))
- (XmSimpleSpinBoxAddItem spn (XmStringCreateLocalized "another") 0)
- (let ((vals (XtGetValues spn (list XmNeditable 0 XmNtextField 0))))
- (if (not (vals 1)) (snd-display "XmNeditable spin box"))
- (if (not (Widget? (vals 3))) (snd-display "XmNtextField: ~A" (vals 3))))
-
- (XtAddCallback tgl XmNvalueChangedCallback (lambda (w c i) (set! toggled 123)) #f)
- (XmToggleButtonSetState tgl #f #f)
- (XmToggleButtonGadgetSetState tgg #f #f)
- (if (not (= toggled 0)) (snd-display "toggle calledback: ~A?" toggled))
- (if (XmToggleButtonGetState tgl) (snd-display "XmToggleButtonSetState #f"))
- (if (XmToggleButtonGadgetGetState tgg) (snd-display "XmToggleButtonGadgetSetState #f"))
- (XtVaSetValues tgl (list XmNtoggleMode XmTOGGLE_INDETERMINATE))
- (XmToggleButtonSetValue tgl XmINDETERMINATE #t)
- (XmToggleButtonGadgetSetValue tgg XmINDETERMINATE #t)
- (if (not (= toggled 123)) (snd-display "toggle not calledback: ~A?" toggled))
-
- (XmCommandAppendValue cmd (XmStringCreateLocalized "hiho"))
- (XmCommandError cmd (XmStringCreateLocalized "hiho"))
- (if (not (Widget? (XmCommandGetChild cmd XmDIALOG_COMMAND_TEXT)))
- (snd-display "XmCommandGetChild: ~A" (XmCommandGetChild cmd XmDIALOG_COMMAND_TEXT)))
- (XmCommandSetValue cmd (XmStringCreateLocalized "hiho"))
- (XmComboBoxAddItem cmb (XmStringCreateLocalized "one") 0 #f)
- (let ((two1 (XmStringCreateLocalized "two"))
- (three1 (XmStringCreateLocalized "three")))
- (XmComboBoxAddItem cmb two1 0 #f)
- (XmComboBoxAddItem cmb three1 0 #f)
- (XmComboBoxDeletePos cmb 1)
- (XmComboBoxSelectItem cmb three1)
- (XmComboBoxSetItem cmb three1) ; hunh??
- (XmComboBoxUpdate cmb)
- (let ((vals (cadr (XtGetValues cmb (list XmNitems 0)))))
- (if (not (equal? vals (list two1 three1))) (snd-display "XmComboBox: ~A" vals))))
-
- (XmContainerCut box current-time)
- (XmContainerCopy box current-time)
- (XmContainerPaste box)
- (XmContainerCopyLink box (list 'Time CurrentTime))
- (XmContainerPasteLink box)
- (let ((vals (XtVaGetValues box (list XmNlargeIconX 0 XmNlargeIconY 0))))
- (if (or (null? (cdr vals))
- (not (real? (cadr vals)))
- (fneq (cadr vals) 0.0)
- (null? (cdddr vals))
- (not (real? (cadddr vals)))
- (fneq (cadddr vals) 0.0))
- (snd-display "xm-float resource vals: ~A" vals)))
-
- (XtAddCallback scl XmNvalueChangedCallback (lambda (w c i) #f))
- (XmScaleSetValue scl 25)
- (if (not (= (XmScaleGetValue scl) 25)) (snd-display "XmScaleSetValue: ~A" (XmScaleGetValue scl)))
- (if (XmGetTearOffControl (car (menu-widgets))) (snd-display "XmGetTearOffControl: ~A" (XmGetTearOffControl (car (menu-widgets)))))
- (let ((children (cadr (XtGetValues scl (list XmNchildren 0)))))
- (for-each
- (lambda (w)
- (let ((name (XtName w)))
- (if (and (XmIsSeparatorGadget w)
- (member name '("BigTic" "MedTic" "SmallTic") string=?))
- (XtDestroyWidget w))))
- children))
- (XmScaleSetTicks scl 5 2 0 10 5 0)))
-
- (XmSetColorCalculation #f)
- (let* ((dpy (XtDisplay (cadr (main-widgets))))
- (cmap (DefaultColormap dpy (DefaultScreen dpy)))
- (screen (XDefaultScreenOfDisplay dpy))
- (scr (XmGetXmScreen (XDefaultScreenOfDisplay dpy)))
- ;(old-h (cadr (XtVaGetValues scr (list XmNhorizontalFontUnit 0))))
- ;(old-v (cadr (XtVaGetValues scr (list XmNverticalFontUnit 0))))
- )
- (if (not (XmIsScreen scr)) (snd-display "XmIsScreen: ~A" scr))
- (let ((colors (XmGetColors screen cmap *basic-color*)))
- (if (not (Pixel? (car colors)))
- (snd-display "colors: ~A " colors))
- (let ((color-proc (lambda (bg)
- (list (white-pixel) (black-pixel) (white-pixel) (black-pixel)))))
- (XmSetColorCalculation color-proc)
- (if (not (equal? (XmGetColorCalculation) color-proc))
- (snd-display "XmSetColorcalulcation ~A" (XmGetColorCalculation)))))
- (let ((vals (XtVaGetValues scr
- (list XmNbitmapConversionModel 0 XmNdarkThreshold 0 XmNfont 0 XmNunpostBehavior 0))))
- (if (not (= (vals 1) XmMATCH_DEPTH)) (snd-display "XmNbitmapConversionModel: ~A" (vals 1)))
- (if (not (= (vals 3) 0)) (snd-display "XmNdarkThreshold: ~A" (vals 3)))
- (if (not (XFontStruct? (vals 5))) (snd-display "XmNfont: ~A" (vals 5)))
- (if (not (= (vals 7) XmUNPOST_AND_REPLAY)) (snd-display "XmNunpostBehavior: ~A" (vals 7)))
- (XSetScreenSaver dpy -1 5 DefaultBlanking DefaultExposures)
- ))
- (let ((dpy (XtDisplay (cadr (main-widgets)))))
- (let* ((dp (XmGetXmDisplay dpy))
- (vals (XtVaGetValues dp
- (list XmNdragInitiatorProtocolStyle 0 XmNenableThinThickness 0 XmNmotifVersion 0))))
- (if (not (XmIsDisplay dp)) (snd-display "XmIsDisplay: ~A" dp))
- (if (not (= (vals 1) XmDRAG_PREFER_RECEIVER)) (snd-display "XmNdragInitiatorProtocolStyle: ~A" (vals 1)))
- (if (not (vals 3)) (snd-display "XmNenableThinThickness?"))
- (if (not (= (vals 5) 2002)) (snd-display "XmGetXmDisplay motif version: ~A" (vals 5)))
- (XtAddCallback dp XmNdragStartCallback (lambda (w c i) #f)))
-
- (if (not (string=? (XmCvtXmStringToCT (XmStringCreateLocalized "hiho")) "hiho"))
- (snd-display "XmCvtXmStringToCT: ~A" (XmCvtXmStringToCT (XmStringCreateLocalized "hiho"))))
- (let ((val (XmConvertStringToUnits (XDefaultScreenOfDisplay dpy) "3.14 in" XmHORIZONTAL XmINCHES)))
- (if (not (= val 3)) (snd-display "XmConvertStringToUnits in->in ~A" val)))
- (let ((val (XmConvertStringToUnits (XDefaultScreenOfDisplay dpy) "3.14 in" XmHORIZONTAL XmPOINTS)))
- (if (not (= val 225)) (snd-display "XmConvertStringToUnits in->pts ~A" val)))
- (let ((val (XmConvertStringToUnits (XDefaultScreenOfDisplay dpy) "3.14 in" XmHORIZONTAL XmCENTIMETERS)))
- (if (not (= val 7)) (snd-display "XmConvertStringToUnits in->cm ~A" val)))
- (let ((val (XmConvertUnits (cadr (main-widgets)) XmHORIZONTAL XmCENTIMETERS 7 XmMILLIMETERS)))
- (if (not (= val 70)) (snd-display "XmConvertUnits cm->mm ~A" val))))
- (let ((val (XmConvertUnits (cadr (main-widgets)) XmHORIZONTAL XmCENTIMETERS 7 XmPIXELS)))
- (if (not (memv val '(278 273))) (snd-display "XmConvertUnits cm->pix ~A" val)))
- (XmVaCreateSimpleRadioBox (caddr (main-widgets)) "hiho" 0 (lambda (w c i) #f) ())
- (XmVaCreateSimpleCheckBox (caddr (main-widgets)) "hiho" (lambda (w c i) #f) ())
- (XmVaCreateSimplePulldownMenu (caddr (main-widgets)) "hiho" 0 (lambda (w c i) #f) ())
- (XmVaCreateSimplePopupMenu (caddr (main-widgets)) "hiho" (lambda (w c i) #f) ())
- (XmVaCreateSimpleMenuBar (caddr (main-widgets)) "hiho" ())
- (zync)
- (make-pixmap (cadr (main-widgets)) arrow-strs)
- ;(display-scanned-synthesis) -- needs updating
- (add-mark-pane)
- (let ((ind (open-sound "oboe.snd")))
- (snd-clock-icon ind 6)
- (add-tooltip (cadr (channel-widgets)) "the w button")
- (with-minmax-button ind)
- (make-channel-drop-site ind 0)
- (set-channel-drop (lambda (file s c) (snd-print file)) ind 0)
- (let ((drop-site (find-child (XtParent (XtParent ((channel-widgets ind 0) 7))) "drop here")))
- (if (not drop-site)
- (snd-display "no drop site?")
- (begin
- (XtVaGetValues drop-site (list XmNdropRectangles 0))
- (let ((val (XmDropSiteRetrieve drop-site (list XmNnumImportTargets 0))))
- (if (not (= (cadr val) 1)) (snd-display "XmDropSiteRetrieve num: ~A" val)))
- (XmDropSiteRetrieve drop-site (list XmNimportTargets 0))
- (if (not (XmDropSiteRegistered drop-site))
- (snd-display "XmDropSiteRegistered?"))
- (XmDropSiteUnregister drop-site)))))
-
- (add-mark 123)
- (let ((container
- (make-sound-box "sounds"
- ((main-widgets) 3)
- mix
- (lambda (file chn)
- (format #f "~~/peaks/~A-peaks-~D"
- (snd-test-clean-string (mus-expand-filename file))
- chn))
- (list "oboe.snd" "pistol.snd" "cardinal.snd" "storm.snd")
- ())))
- (XmContainerRelayout container)
- (let ((vals (XtVaGetValues container
- (list XmNlargeCellHeight 0 XmNcollapsedStatePixmap 0 XmNdetailOrder 0 XmNdetailTabList 0
- XmNselectedObjects 0 XmNconvertCallback 0 XmNdestinationCallback 0 XmNselectionCallback 0))))
- (if (not (= (vals 1) 0)) (snd-display "XmNlargeCellHeight: ~A" (vals 1)))
- (if (not (Pixmap? (vals 3))) (snd-display "XmNcollapsedStatePixmap: ~A" (vals 3))))
- (let ((children ()))
- (for-each-child container
- (lambda (w)
- (if (XmIsIconGadget w)
- (set! children (cons w children)))))
- (XmContainerReorder container children (length children)))
- (let ((func (lambda (w) 0)))
- (XtSetValues container (list XmNinsertPosition func))
- (let ((func1 (cadr (XtGetValues container (list XmNinsertPosition 0)))))
- (if (not (equal? func func1)) (snd-display "XmNinsertPosition: ~A ~A" func func1)))))
- (close-sound)
-
- ;; qualify proc is causing a segfault somehow
- ; (let ((box (XmCreateFileSelectionBox (cadr (main-widgets)) "box"
- ; (list XmNfileSearchProc (lambda (w c) #f)
- ; XmNqualifySearchDataProc (lambda (w c i)
- ; (display "qualifier was called!")
- ; )))))
- ; (XtUnmanageChild box))
- (let ((hi (XtCreateManagedWidget "hi" xmTextWidgetClass (cadr (main-widgets))
- (list XmNqualifySearchDataProc (lambda (w c i) (copy "hi"))
- XmNtransferProc (lambda (a b c d e f g) (copy "ho"))
- XmNcolorAllocationProc (lambda (a b c) #f)
- XmNcolorCalculationProc (lambda (a b) #f)
- XmNcreatePopupChildProc (lambda (a) #f)
- XmNlargeIconX 0.5
- ))))
- (XtVaSetValues hi (list XmNqualifySearchDataProc (lambda (w c i) (copy "hi"))
- XmNtransferProc (lambda (a b c d e f g) (copy "ho"))
- XmNcolorAllocationProc (lambda (a b c) #f)
- XmNcolorCalculationProc (lambda (a b) #f)
- XmNcreatePopupChildProc (lambda (a) #f)))
- (XtVaSetValues hi (list XmNqualifySearchDataProc #f
- XmNcolorAllocationProc #f
- XmNcolorCalculationProc #f
- XmNcreatePopupChildProc #f
- XmNx 10
- XmNsource (XmTextGetSource hi)
- ))
- (XtUnmanageChild hi))
-
- (when (and (defined? 'XmCreateFontSelector)
- (defined? 'XmCreateColorSelector))
- (let ((fonts-dialog #f)
- (colors-dialog #f))
- (for-each
- (lambda (make-dialog)
- (let* ((xdismiss (XmStringCreate "Dismiss" XmFONTLIST_DEFAULT_TAG))
- (xhelp (XmStringCreate "Help" XmFONTLIST_DEFAULT_TAG))
- (xok (XmStringCreate "DoIt" XmFONTLIST_DEFAULT_TAG))
- (titlestr (XmStringCreate "Fonts" XmFONTLIST_DEFAULT_TAG))
- (new-dialog (XmCreateTemplateDialog
- (cadr (main-widgets)) "Fonts"
- (list XmNcancelLabelString xdismiss
- XmNhelpLabelString xhelp
- XmNokLabelString xok
- XmNautoUnmanage #f
- XmNdialogTitle titlestr
- XmNresizePolicy XmRESIZE_GROW
- XmNnoResize #f
- XmNbackground *basic-color*
- XmNtransient #f))))
- (XtAddCallback new-dialog XmNcancelCallback (lambda (w c i) (XtUnmanageChild w)))
- (XtAddCallback new-dialog XmNhelpCallback (lambda (w c i) (help-dialog "Fonts" "no help yet")))
- (XtAddCallback new-dialog XmNokCallback (lambda (w c i) (XtUnmanageChild w)))
- (for-each XmStringFree (vector xhelp xok xdismiss titlestr))
- (if (not fonts-dialog)
- (set! fonts-dialog new-dialog)
- (set! colors-dialog new-dialog))
- (XtManageChild
- (make-dialog
- (XtCreateManagedWidget "mainform" xmFormWidgetClass new-dialog
- (list XmNleftAttachment XmATTACH_FORM
- XmNrightAttachment XmATTACH_FORM
- XmNtopAttachment XmATTACH_FORM
- XmNbottomAttachment XmATTACH_WIDGET
- XmNbottomWidget (XmMessageBoxGetChild new-dialog XmDIALOG_SEPARATOR)
- XmNbackground *basic-color*))))
- (XtManageChild (or colors-dialog fonts-dialog))))
-
- (list
- (lambda (mainform)
- (XmCreateFontSelector mainform "Fonts"
- (list XmNbackground *basic-color*
- XmNcurrentFont "-*-times-bold-r-*-*-14-140-*-*-*-*-*-*"
- XmNleftAttachment XmATTACH_FORM
- XmNrightAttachment XmATTACH_FORM
- XmNtopAttachment XmATTACH_FORM
- XmNbottomAttachment XmATTACH_NONE)))
-
- (lambda (mainform)
- (XmCreateColorSelector mainform "Colors"
- (list XmNbackground *basic-color*
- XmNleftAttachment XmATTACH_FORM
- XmNrightAttachment XmATTACH_FORM
- XmNtopAttachment XmATTACH_FORM
- XmNbottomAttachment XmATTACH_NONE)))))
- (XtUnmanageChild fonts-dialog)
- (XtUnmanageChild colors-dialog)))
-
- (let* ((xdismiss (XmStringCreate "Dismiss" XmFONTLIST_DEFAULT_TAG))
- (xhelp (XmStringCreate "Help" XmFONTLIST_DEFAULT_TAG))
- (xok (XmStringCreate "DoIt" XmFONTLIST_DEFAULT_TAG))
- (titlestr (XmStringCreate "Fonts" XmFONTLIST_DEFAULT_TAG))
- (new-dialog (XmCreateTemplateDialog
- (cadr (main-widgets)) "Fonts"
- (list XmNcancelLabelString xdismiss
- XmNhelpLabelString xhelp
- XmNokLabelString xok
- XmNautoUnmanage #f
- XmNdialogTitle titlestr
- XmNresizePolicy XmRESIZE_GROW
- XmNnoResize #f
- XmNbackground *basic-color*
- XmNtransient #f))))
- (for-each XmStringFree (vector xhelp xok xdismiss titlestr))
- (let* ((mainform (XtCreateManagedWidget "mainform" xmFormWidgetClass new-dialog
- (list XmNleftAttachment XmATTACH_FORM
- XmNrightAttachment XmATTACH_FORM
- XmNtopAttachment XmATTACH_FORM
- XmNbottomAttachment XmATTACH_WIDGET
- XmNbottomWidget (XmMessageBoxGetChild new-dialog XmDIALOG_SEPARATOR)
- XmNbackground *basic-color*)))
- (fnts
- (and (defined? 'XmIsColumn)
- (let* ((w1 (XmCreateColumn mainform "column" ()))
- (w1-child (XtCreateManagedWidget "hihi" xmLabelWidgetClass w1 () 0)))
- (let ((w2 (XtCreateManagedWidget "column1" xmColumnWidgetClass mainform () 0)))
- (if (not (and (XmIsColumn w1)
- (XmIsColumn w2)
- (XmColumn? w1)))
- (snd-display "XmIsColumn: ~A ~A" w1 w2)))
- (if (defined? 'XmColumnGetChildLabel)
- (let ((child (XmColumnGetChildLabel w1)))
- (if (not (and (child)
- (equal? child w1-child)))
- (snd-display "XmColumn child: ~A ~A" child w1-child))))
- (XtManageChild w1)
- w1)))
- (fntt
- (and (defined? 'XmIsButtonBox)
- (let ((w1 (XmCreateButtonBox mainform "box" (list XmNfillOption XmFillMajor))))
- (if (not (and (XmIsButtonBox w1)
- (XmButtonBox? w1)))
- (snd-display "XmIsButtonBox: ~A ~A ~A" w1 (XmIsButtonBox w1) (XmButtonBox? w1)))
- (XtManageChild w1)
- w1)))
- (fntd
- (and (defined? 'XmIsDropDown)
- (let ((w1 (XmCreateDropDown mainform "drop" ())))
- (if (not (and (XmIsDropDown w1)
- (XmDropDown? w1)))
- (snd-display "XmIsDropDown: ~A ~A ~A" w1 (XmIsDropDown w1) (XmDropDown? w1)))
- (XtManageChild w1)
- (XmDropDownGetValue w1)
- (let ((text (XmDropDownGetText w1)))
- (if (not (XmTextField? text)) (snd-display "dropdown text: ~A" text)))
- (let ((label (XmDropDownGetLabel w1)))
- (if (not (XmLabel? label)) (snd-display "dropdown label: ~A" label)))
- (let ((arrow (XmDropDownGetArrow w1)))
- (if (not (XmArrowButton? arrow)) (snd-display "dropdown arrow: ~A" arrow)))
- (let ((lst (XmDropDownGetList w1)))
- (if (not (XmList? lst)) (snd-display "dropdown lst: ~A" text)))
- w1)))
- (fntda
- (and (defined? 'XmIsDataField)
- (let ((w1 (XmCreateDataField mainform "data" ())))
- (if (not (and (XmIsDataField w1)
- (XmDataField? w1)))
- (snd-display "XmIsDataField: ~A ~A ~A" w1 (XmIsDataField w1) (XmDataField? w1)))
- (XmDataFieldGetString w1)
- (XmDataFieldGetSelection w1)
- (XmDataFieldSetString w1 "hiho")
- (XmDataFieldSetEditable w1 #t)
- (XmDataFieldSetAddMode w1 #f)
- (XmDataFieldShowPosition w1 0)
- (XmDataFieldXYToPos w1 0 0)
- (XmDataFieldSetHighlight w1 0 0 0)
- (XmDataFieldGetSelectionPosition w1)
- (XmDataFieldSetSelection w1 0 0 '(Time 0))
- (XmDataFieldCopy w1 '(Time 0))
- (XmDataFieldCut w1 '(Time 0))
- w1)))
- (fnttab
- (and (defined? 'XmIsTabStack)
- (let ((w1 (XmCreateTabStack mainform "hi" ())))
- (if (not (and (XmIsTabStack w1)
- (XmTabStack? w1)))
- (snd-display "XmIsTabStack: ~A ~A ~A" w1 (XmIsTabStack w1) (XmTabStack? w1)))
- (XmTabStackGetSelectedTab w1)
- (XmTabStackSelectTab w1 #f)
- w1))))
-
- (if (and (defined? 'XmToolTipGetLabel)
- (defined? 'XmNtoolTipString))
- (let ((tip (XmToolTipGetLabel
- (XtCreateManagedWidget "wid1" xmPushButtonWidgetClass mainform
- (list XmNtoolTipString (XmStringCreateLocalized "tooltip")
- XmNtoolTipPostDelay 100
- XmNtoolTipPostDuration 500
- XmNtoolTipEnable #t
- XmNanimate #f)))))
- (if (not (Widget? tip))
- (snd-display "tooltip label: ~A ~A ~A ~A ~A ~A" tip fnttab fntda fntd fntt fnts))))
-
- (XtManageChild new-dialog)
- (XtUnmanageChild new-dialog)))
-
- (let* ((shell (cadr (main-widgets)))
- (dpy (XtDisplay shell))
- (prop (XmInternAtom dpy "TESTING" #f))
- (proto1 (XmInternAtom dpy "TEST1" #f))
- (proto2 (XmInternAtom dpy "TEST2" #f))
- (val 0))
- (if (not (Atom? prop)) (snd-display "XmInternAtom: ~A" prop))
- (if (not (string=? (XmGetAtomName dpy prop) "TESTING")) (snd-display "XmGetAtomName: ~A" (XmGetAtomName dpy prop)))
- (XmAddProtocols shell prop (list proto1 proto2))
- (XmSetProtocolHooks shell
- (XmInternAtom dpy "WM_PROTOCOLS" #f)
- prop
- (lambda (w c i)
- (snd-display "prehook: ~A ~A ~A" w c i))
- 12345
- (lambda (w c i)
- (snd-display "posthook: ~A ~A ~A" w c i))
- 54321)
- (XmDeactivateProtocol shell prop proto2)
- (XmRemoveProtocols shell prop (list proto2))
- (XmAddProtocolCallback shell prop proto1 (lambda (w c i) (set! val c)) 123)
- (XmActivateProtocol shell prop proto1)
- (let ((e (XEvent ClientMessage))
- (window (XtWindow shell)))
- (set! (.window e) window)
- (set! (.display e) dpy)
- (set! (.format e) (if val 8))
- (set! (.message_type e) XA_STRING)
- (set! (.data e) "hiho")
- (XSendEvent dpy window #f 0 e))
- (XmRemoveProtocols shell prop (list proto1)))
- (XmCascadeButtonHighlight (XmCreateCascadeButton (cadr (main-widgets)) "cascade" ()) #f)
- ;(XmCascadeButtonGadgetHighlight (XmCreateCascadeButtonGadget (cadr (main-widgets)) "gadget" ()) #f)
-
- (let ((callbacks
- (list
- (list XmAnyCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event))
- (list XmArrowButtonCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event) (list .click_count 'int '.click_count))
- (list XmCommandCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event)
- (list .value 'XmString '.value) (list .length 'int '.length #f))
- (list XmDragDropFinishCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event)
- (list .timeStamp 'Time '.timeStamp))
- (list XmDragMotionCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event)
- (list .timeStamp 'Time '.timeStamp) (list .operation 'uchar '.operation)
- (list .operations 'uchar '.operations #f) (list .dropSiteStatus 'uchar '.dropSiteStatus)
- (list .x 'Position '.x #f) (list .y 'Position '.y #f))
- (list XmDragProcCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event)
- (list .timeStamp 'Time '.timeStamp) (list .dragContext 'Widget '.dragContext #f)
- (list .x 'Position '.x #f) (list .y 'Position '.y #f) (list .dropSiteStatus 'uchar '.dropSiteStatus)
- (list .operation 'uchar '.operation) (list .operations 'uchar '.operations #f) (list .animate 'Boolean '.animate #f))
- (list XmDrawingAreaCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event) (list .window 'Window '.window))
- (list XmDrawnButtonCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event)
- (list .window 'Window '.window) (list .click_count 'int '.click_count))
- (list XmDropFinishCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event)
- (list .timeStamp 'Time '.timeStamp) (list .operation 'uchar '.operation)
- (list .operations 'uchar '.operations #f) (list .dropSiteStatus 'uchar '.dropSiteStatus)
- (list .dropAction 'uchar '.dropAction #f) (list .completionStatus 'uchar '.completionStatus #f))
- (list XmDropProcCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event)
- (list .timeStamp 'Time '.timeStamp) (list .dragContext 'Widget '.dragContext #f)
- (list .x 'Position '.x #f) (list .y 'Position '.y #f) (list .dropSiteStatus 'uchar '.dropSiteStatus)
- (list .operation 'uchar '.operation) (list .operations 'uchar '.operations #f) (list .dropAction 'uchar '.dropAction #f))
- (list XmDropSiteEnterCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event)
- (list .timeStamp 'Time '.timeStamp) (list .operation 'uchar '.operation)
- (list .operations 'uchar '.operations #f) (list .dropSiteStatus 'uchar '.dropSiteStatus)
- (list .x 'Position '.x #f) (list .y 'Position '.y #f))
- (list XmDropSiteLeaveCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event)
- (list .timeStamp 'Time '.timeStamp))
- (list XmDropStartCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event)
- (list .timeStamp 'Time '.timeStamp) (list .operation 'uchar '.operation)
- (list .operations 'uchar '.operations #f) (list .dropSiteStatus 'uchar '.dropSiteStatus)
- (list .dropAction 'uchar '.dropAction #f))
- (list XmFileSelectionBoxCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event)
- (list .value 'XmString '.value) (list .length 'int '.length #f) (list .mask 'XmString '.mask #f)
- (list .mask_length 'int '.mask_length #f) (list .dir 'XmString '.dir #f) (list .dir_length 'int '.dir_length #f)
- (list .pattern 'XmString '.pattern #f) (list .pattern_length 'int '.pattern_length #f))
- (list XmListCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event)
- (list .item 'XmString '.item #f) (list .item_length 'int '.item_length #f) (list .item_position 'int '.item_position #f)
- (list .selected_items 'XmString* '.selected_items) (list .selected_item_count 'int '.selected_item_count #f)
- (list .selected_item_positions 'int* '.selected_item_positions) (list .selection_type 'char '.selection_type #f)
- (list .auto_selection_type 'char '.auto_selection_type #f))
- (list XmOperationChangedCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event)
- (list .timeStamp 'Time '.timeStamp) (list .operation 'uchar '.operation) (list .operations 'uchar '.operations #f)
- (list .dropSiteStatus 'uchar '.dropSiteStatus))
- (list XmPushButtonCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event) (list .click_count 'int '.click_count))
- (list XmRowColumnCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event)
- (list .widget 'Widget '.widget #f) (list .data 'char* '.data #f) (list .callbackstruct 'char* '.callbackstruct #f))
- (list XmScaleCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event) (list .value 'int '.value))
- (list XmScrollBarCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event)
- (list .value 'int '.value) (list .pixel 'int '.pixel #f))
- (list XmSelectionBoxCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event)
- (list .value 'XmString '.value) (list .length 'int '.length #f))
- (list XmTextVerifyCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event)
- (list .doit 'Boolean '.doit) (list .currInsert 'int '.currInsert #f) (list .newInsert 'int '.newInsert #f)
- (list .startPos 'int '.startPos #f) (list .endPos 'int '.endPos #f)
- (list .text 'XmTextBlock '.text #f))
- (list XmToggleButtonCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event) (list .set 'int '.set))
- (list XmDestinationCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event)
- (list .selection 'Atom '.selection #f) (list .operation 'uchar '.operation) (list .flags 'int '.flags #f)
- (list .transfer_id 'XtPointer '.transfer_id #f) (list .destination_data 'XtPointer '.destination_data #f)
- (list .location_data 'XtPointer '.location_data #f) (list .time 'Time '.time))
- (list XmConvertCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event) (list .selection 'Atom '.selection #f)
- (list .target 'Atom '.target #f) (list .source_data 'XtPointer '.source_data #f)
- (list .location_data 'XtPointer '.location_data #f) (list .flags 'int '.flags #f) (list .parm 'XtPointer '.parm #f)
- (list .parm_format 'int '.parm_format #f) (list .parm_length 'int '.parm_length #f)
- (list .parm_type 'Atom '.parm_type #f) (list .status 'int '.status #f) (list .value 'XtPointer '.value #f)
- (list .type 'Atom '.type #f) (list .format 'int '.format #f) (list .length 'int '.length #f))
- (list XmComboBoxCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event)
- (list .item_or_text 'XmString '.item_or_text #f) (list .item_position 'int '.item_position #f))
- (list XmContainerOutlineCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event)
- (list .item 'Widget '.item #f) (list .new_outline_state 'uchar '.new_outline_state #f))
- (list XmContainerSelectCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event)
- (list .selected_items 'Widget* '.selected_items) (list .selected_item_count 'int '.selected_item_count #f)
- (list .auto_selection_type 'uchar '.auto_selection_type #f))
- (list XmNotebookCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event)
- (list .page_number 'int '.page_number #f) (list .page_widget 'Widget '.page_widget #f)
- (list .prev_page_number 'int '.prev_page_number #f) (list .prev_page_widget 'Widget '.prev_page_widget #f))
- (list XmSpinBoxCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event)
- (list .widget 'Widget '.widget #f) (list .doit 'Boolean '.doit) (list .position 'int '.position #f)
- (list .value 'XmString '.value #f) (list .crossed_boundary 'Boolean '.crossed-boundary #f))
- (list XmTraverseObscuredCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event)
- (list .traversal_destination 'Widget '.traversal_destination #f))
- (list XmTopLevelLeaveCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event)
- (list .timeStamp 'Time '.timeStamp) (list .screen 'Screen '.screen) (list .window 'Window '.window))
- (list XmTopLevelEnterCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event)
- (list .timeStamp 'Time '.timeStamp) (list .screen 'Screen '.screen) (list .window 'Window '.window)
- (list .x 'Position '.x #f) (list .y 'Position '.y #f) (list .dragProtocolStyle 'uchar '.dragProtocolStyle #f))
- (list XmPopupHandlerCallbackStruct (list .reason 'int '.reason)
- (list .event 'XEvent '.event) (list .menuToPost 'Widget '.menuToPost) (list .postIt 'Boolean '.postIt)
- (list .target 'Widget '.target #f))
- (list XmSelectionCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event)
- (list .selection 'Atom '.selection #f) (list .target 'Atom '.target #f) (list .type 'Atom '.type #f)
- (list .transfer_id 'XtPointer '.transfer_id #f) (list .flags 'int '.flags #f) (list .remaining 'int '.remaining #f)
- (list .value 'XtPointer '.value #f) (list .length 'int '.length #f) (list .format 'int '.format #f))
- (list XmTransferDoneCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event)
- (list .selection 'Atom '.selection #f) (list .transfer_id 'XtPointer '.transfer_id #f) (list .status 'int '.status #f)
- (list .client_data 'XtPointer '.client_data #f))
- (list XmDisplayCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event)
- (list .font_name 'char* '.font_name #f) (list .tag 'int '.tag #f)
- (list .render_table 'XmRenderTable '.render_table #f)
- (list .rendition 'XmRendition '.rendition #f))
- (list XmDragStartCallbackStruct (list .reason 'int '.reason) (list .event 'XEvent '.event)
- (list .widget 'Widget '.widget #f) (list .doit 'Boolean '.doit)))))
-
-
- (for-each
- (lambda (call)
- (let ((struct ((car call)))
- (val #f))
- (set! (.event struct) (XEvent))
- (for-each
- (lambda (field)
- (if (not (pair? field)) (snd-display "~A: ~A" struct field))
- (set! val ((car field) struct))
- (if (< (length field) 4)
- (case (cadr field)
- ((int Position XtPointer char) (set! ((car field) struct) 0))
- ((Atom) (set! ((car field) struct) XA_STRING))
- ((uchar) (set! ((car field) struct) val))
- ((Widget) (set! ((car field) struct) (list 'Widget 0)))
- ((XmString) (set! ((car field) struct) (list 'XmString 0)))
- ((char*) (set! ((car field) struct) (copy "hi")))
- ((XEvent Boolean XmString* int* Time Window Widget* Screen) #f)
- )))
- (cdr call))))
- callbacks))
-
- (let ((shell (cadr (main-widgets)))
- (resource-list
- (list
- (list XmNaccelerator XM_STRING) (list XmNacceleratorText XM_XMSTRING) (list XmNaccelerators XM_ULONG)
- (list XmNactivateCallback XM_CALLBACK) (list XmNadjustLast XM_BOOLEAN) (list XmNadjustMargin XM_BOOLEAN)
- (list XmNalignment XM_UCHAR) (list XmNallowOverlap XM_BOOLEAN) (list XmNallowResize XM_BOOLEAN)
- (list XmNallowShellResize XM_BOOLEAN) (list XmNancestorSensitive XM_BOOLEAN) (list XmNanimationMask XM_PIXMAP)
- (list XmNanimationPixmap XM_PIXMAP) (list XmNanimationPixmapDepth XM_INT) (list XmNanimationStyle XM_UCHAR)
- (list XmNapplyCallback XM_CALLBACK) (list XmNapplyLabelString XM_XMSTRING) (list XmNargc XM_INT)
- (list XmNargv XM_STRING_LIST) (list XmNarmCallback XM_CALLBACK) (list XmNarmColor XM_PIXEL)
- (list XmNarmPixmap XM_PIXMAP) (list XmNarrowDirection XM_UCHAR) (list XmNattachment XM_UCHAR)
- (list XmNaudibleWarning XM_UCHAR) (list XmNautoShowCursorPosition XM_BOOLEAN) (list XmNautoUnmanage XM_BOOLEAN)
- (list XmNautomaticSelection XM_UCHAR) (list XmNbackground XM_PIXEL) (list XmNbackgroundPixmap XM_PIXMAP)
- (list XmNbaseHeight XM_INT) (list XmNbaseWidth XM_INT) (list XmNbitmap XM_PIXMAP)
- (list XmNblendModel XM_ULONG) (list XmNblinkRate XM_INT) (list XmNborderColor XM_PIXEL)
- (list XmNborderPixmap XM_PIXMAP) (list XmNborderWidth XM_DIMENSION) (list XmNbottomAttachment XM_UCHAR)
- (list XmNbottomOffset XM_INT) (list XmNbottomPosition XM_INT) (list XmNbottomShadowColor XM_PIXEL)
- (list XmNbottomShadowPixmap XM_PIXMAP) (list XmNbottomWidget XM_WIDGET) (list XmNbrowseSelectionCallback XM_CALLBACK)
- (list XmNbuttonAcceleratorText XM_STRING_TABLE) (list XmNbuttonAccelerators XM_STRING_TABLE) (list XmNbuttonCount XM_INT)
- (list XmNbuttonMnemonicCharSets XM_CHARSET_TABLE) (list XmNbuttonMnemonics XM_KEYSYM_TABLE) (list XmNbuttonSet XM_INT)
- (list XmNbuttonType XM_ULONG) (list XmNbuttons XM_STRING_TABLE) (list XmNcancelButton XM_WIDGET)
- (list XmNcancelCallback XM_CALLBACK) (list XmNcancelLabelString XM_XMSTRING) (list XmNcascadePixmap XM_PIXMAP)
- (list XmNcascadingCallback XM_CALLBACK) (list XmNchildHorizontalAlignment XM_UCHAR) (list XmNchildHorizontalSpacing XM_DIMENSION)
- (list XmNchildPlacement XM_UCHAR) (list XmNchildVerticalAlignment XM_UCHAR) (list XmNchildren XM_WIDGET_LIST)
- (list XmNclientData XM_ULONG) (list XmNclipWindow XM_WIDGET) (list XmNcolormap XM_COLORMAP)
- (list XmNcolumns XM_SHORT) (list XmNcommand XM_XMSTRING) (list XmNcommandChangedCallback XM_CALLBACK)
- (list XmNcommandEnteredCallback XM_CALLBACK) (list XmNcommandWindow XM_WIDGET) (list XmNcommandWindowLocation XM_UCHAR)
- (list XmNconvertProc XM_CONVERT_CALLBACK) (list XmNcreatePopupChildProc XM_POPUP_CALLBACK) (list XmNcursorBackground XM_PIXEL)
- (list XmNcursorForeground XM_PIXEL) (list XmNcursorPosition XM_INT) (list XmNcursorPositionVisible XM_BOOLEAN)
- (list XmNdarkThreshold XM_INT) (list XmNdecimalPoints XM_SHORT) (list XmNdecrementCallback XM_CALLBACK)
- (list XmNdefaultActionCallback XM_CALLBACK) (list XmNdefaultButton XM_WIDGET) (list XmNdefaultButtonShadowThickness XM_DIMENSION)
- (list XmNdefaultButtonType XM_UCHAR) (list XmNdefaultCopyCursorIcon XM_WIDGET) (list XmNdefaultInvalidCursorIcon XM_WIDGET)
- (list XmNdefaultLinkCursorIcon XM_WIDGET) (list XmNdefaultMoveCursorIcon XM_WIDGET) (list XmNdefaultNoneCursorIcon XM_WIDGET)
- (list XmNdefaultPosition XM_BOOLEAN) (list XmNdefaultSourceCursorIcon XM_WIDGET) (list XmNdefaultValidCursorIcon XM_WIDGET)
- (list XmNdeleteResponse XM_UCHAR) (list XmNdepth XM_INT) (list XmNdestroyCallback XM_CALLBACK)
- (list XmNdialogStyle XM_UCHAR) (list XmNdialogTitle XM_XMSTRING) (list XmNdialogType XM_UCHAR)
- (list XmNdirListItemCount XM_INT) (list XmNdirListItems XM_STRING_TABLE) (list XmNdirListLabelString XM_XMSTRING)
- (list XmNdirMask XM_XMSTRING) (list XmNdirSearchProc XM_SEARCH_CALLBACK) (list XmNdirSpec XM_XMSTRING)
- (list XmNdirectory XM_XMSTRING) (list XmNdirectoryValid XM_BOOLEAN) (list XmNdisarmCallback XM_CALLBACK)
- (list XmNdoubleClickInterval XM_INT) (list XmNdragDropFinishCallback XM_CALLBACK) (list XmNdragInitiatorProtocolStyle XM_UCHAR)
- (list XmNdragMotionCallback XM_CALLBACK) (list XmNdragOperations XM_UCHAR) (list XmNdragReceiverProtocolStyle XM_UCHAR)
- (list XmNdropFinishCallback XM_CALLBACK) (list XmNdropProc XM_DROP_CALLBACK) (list XmNdropRectangles XM_RECTANGLE_LIST)
- (list XmNdropSiteActivity XM_UCHAR) (list XmNdropSiteEnterCallback XM_CALLBACK) (list XmNdropSiteLeaveCallback XM_CALLBACK)
- (list XmNdropSiteOperations XM_UCHAR) (list XmNdropSiteType XM_UCHAR) (list XmNdropStartCallback XM_CALLBACK)
- (list XmNdropTransfers XM_TRANSFER_ENTRY_LIST) (list XmNeditMode XM_INT) (list XmNeditable XM_BOOLEAN)
- (list XmNentryAlignment XM_UCHAR) (list XmNentryBorder XM_DIMENSION) (list XmNentryCallback XM_CALLBACK)
- (list XmNentryClass XM_WIDGET_CLASS) (list XmNentryVerticalAlignment XM_UCHAR) (list XmNexportTargets XM_ATOM_LIST)
- (list XmNexposeCallback XM_CALLBACK) (list XmNextendedSelectionCallback XM_CALLBACK) (list XmNfileListItemCount XM_INT)
- (list XmNfileListItems XM_STRING_TABLE) (list XmNfileListLabelString XM_XMSTRING) (list XmNfileSearchProc XM_SEARCH_CALLBACK)
- (list XmNfileTypeMask XM_UCHAR) (list XmNfillOnArm XM_BOOLEAN) (list XmNfillOnSelect XM_BOOLEAN)
- (list XmNfilterLabelString XM_XMSTRING) (list XmNfocusCallback XM_CALLBACK) (list XmNfont XM_XFONTSTRUCT)
- (list XmNforeground XM_PIXEL) (list XmNforegroundThreshold XM_INT) (list XmNfractionBase XM_INT)
- (list XmNgainPrimaryCallback XM_CALLBACK) (list XmNgeometry XM_STRING) (list XmNheight XM_DIMENSION)
- (list XmNheightInc XM_INT) (list XmNhelpCallback XM_CALLBACK) (list XmNhelpLabelString XM_XMSTRING)
- (list XmNhighlightColor XM_PIXEL) (list XmNhighlightOnEnter XM_BOOLEAN) (list XmNhighlightPixmap XM_PIXMAP)
- (list XmNhighlightThickness XM_DIMENSION) (list XmNhistoryItemCount XM_INT) (list XmNhistoryItems XM_STRING_TABLE)
- (list XmNhistoryMaxItems XM_INT) (list XmNhistoryVisibleItemCount XM_INT) (list XmNhorizontalFontUnit XM_INT)
- (list XmNhorizontalScrollBar XM_WIDGET) (list XmNhorizontalSpacing XM_DIMENSION) (list XmNhotX XM_POSITION)
- (list XmNhotY XM_POSITION) (list XmNiconMask XM_PIXMAP) (list XmNiconName XM_STRING)
- (list XmNiconNameEncoding XM_ATOM) (list XmNiconPixmap XM_PIXMAP) (list XmNiconWindow XM_WIDGET)
- (list XmNiconX XM_INT) (list XmNiconY XM_INT) (list XmNiconic XM_BOOLEAN)
- (list XmNimportTargets XM_ATOM_LIST) (list XmNincrement XM_INT) (list XmNincrementCallback XM_CALLBACK)
- (list XmNincremental XM_BOOLEAN) (list XmNindicatorOn XM_INT) (list XmNindicatorSize XM_DIMENSION)
- (list XmNindicatorType XM_UCHAR) (list XmNinitialDelay XM_INT) (list XmNinitialFocus XM_WIDGET)
- (list XmNinitialResourcesPersistent XM_BOOLEAN) (list XmNinitialState XM_INT) (list XmNinput XM_BOOLEAN)
- (list XmNinputCallback XM_CALLBACK) (list XmNinputMethod XM_STRING) (list XmNinsertPosition XM_ORDER_CALLBACK)
- (list XmNinvalidCursorForeground XM_PIXEL) (list XmNisAligned XM_BOOLEAN) (list XmNisHomogeneous XM_BOOLEAN)
- (list XmNitemCount XM_INT) (list XmNitems XM_STRING_TABLE) (list XmNkeyboardFocusPolicy XM_UCHAR)
- (list XmNlabelInsensitivePixmap XM_PIXMAP) (list XmNlabelPixmap XM_PIXMAP) (list XmNlabelString XM_XMSTRING)
- (list XmNlabelType XM_UCHAR) (list XmNleftAttachment XM_UCHAR) (list XmNleftOffset XM_INT)
- (list XmNleftPosition XM_INT) (list XmNleftWidget XM_WIDGET) (list XmNlightThreshold XM_INT)
- (list XmNlistItemCount XM_INT) (list XmNlistItems XM_STRING_TABLE) (list XmNlistLabelString XM_XMSTRING)
- (list XmNlistMarginHeight XM_DIMENSION) (list XmNlistMarginWidth XM_DIMENSION) (list XmNlistSizePolicy XM_UCHAR)
- (list XmNlistSpacing XM_DIMENSION) (list XmNlistUpdated XM_BOOLEAN) (list XmNlistVisibleItemCount XM_INT)
- (list XmNlosePrimaryCallback XM_CALLBACK) (list XmNlosingFocusCallback XM_CALLBACK) (list XmNmainWindowMarginHeight XM_DIMENSION)
- (list XmNmainWindowMarginWidth XM_DIMENSION) (list XmNmapCallback XM_CALLBACK) (list XmNmappedWhenManaged XM_BOOLEAN)
- (list XmNmappingDelay XM_INT) (list XmNmargin XM_DIMENSION) (list XmNmarginBottom XM_DIMENSION)
- (list XmNmarginHeight XM_DIMENSION) (list XmNmarginLeft XM_DIMENSION) (list XmNmarginRight XM_DIMENSION)
- (list XmNmarginTop XM_DIMENSION) (list XmNmarginWidth XM_DIMENSION) (list XmNmask XM_PIXMAP)
- (list XmNmaxAspectX XM_INT) (list XmNmaxAspectY XM_INT) (list XmNmaxHeight XM_INT)
- (list XmNmaxLength XM_INT) (list XmNmaxWidth XM_INT) (list XmNmaximum XM_INT)
- (list XmNmenuAccelerator XM_STRING) (list XmNmenuBar XM_WIDGET) (list XmNmenuCursor XM_STRING)
- (list XmNmenuHelpWidget XM_WIDGET) (list XmNmenuHistory XM_WIDGET) (list XmNmenuPost XM_STRING)
- (list XmNmessageAlignment XM_UCHAR) (list XmNmessageString XM_XMSTRING) (list XmNmessageWindow XM_WIDGET)
- (list XmNminAspectX XM_INT) (list XmNminAspectY XM_INT) (list XmNminHeight XM_INT)
- (list XmNminWidth XM_INT) (list XmNminimizeButtons XM_BOOLEAN) (list XmNminimum XM_INT)
- (list XmNmnemonic XM_KEYSYM) (list XmNmnemonicCharSet XM_STRING) (list XmNmodifyVerifyCallback XM_CALLBACK)
- (list XmNmotionVerifyCallback XM_CALLBACK) (list XmNmoveOpaque XM_BOOLEAN) (list XmNmultiClick XM_UCHAR)
- (list XmNmultipleSelectionCallback XM_CALLBACK) (list XmNmustMatch XM_BOOLEAN) (list XmNmwmDecorations XM_INT)
- (list XmNmwmFunctions XM_INT) (list XmNmwmInputMode XM_INT) (list XmNmwmMenu XM_STRING)
- (list XmNnavigationType XM_UCHAR) (list XmNnoMatchCallback XM_CALLBACK) (list XmNnoMatchString XM_XMSTRING)
- (list XmNnoResize XM_BOOLEAN) (list XmNnoneCursorForeground XM_PIXEL) (list XmNnumChildren XM_INT)
- (list XmNnumColumns XM_SHORT) (list XmNnumDropRectangles XM_INT) (list XmNnumDropTransfers XM_INT)
- (list XmNnumExportTargets XM_INT) (list XmNnumImportTargets XM_INT) (list XmNoffsetX XM_POSITION)
- (list XmNoffsetY XM_POSITION) (list XmNokCallback XM_CALLBACK) (list XmNokLabelString XM_XMSTRING)
- (list XmNoperationChangedCallback XM_CALLBACK) (list XmNoperationCursorIcon XM_WIDGET) (list XmNoptionLabel XM_XMSTRING)
- (list XmNoptionMnemonic XM_KEYSYM) (list XmNorientation XM_UCHAR) (list XmNoverrideRedirect XM_BOOLEAN)
- (list XmNpacking XM_UCHAR) (list XmNpageDecrementCallback XM_CALLBACK) (list XmNpageIncrement XM_INT)
- (list XmNpageIncrementCallback XM_CALLBACK) (list XmNpaneMaximum XM_DIMENSION) (list XmNpaneMinimum XM_DIMENSION)
- (list XmNpattern XM_STRING_OR_XMSTRING) (list XmNpendingDelete XM_BOOLEAN) (list XmNpixmap XM_PIXMAP)
- (list XmNpopdownCallback XM_CALLBACK) (list XmNpopupCallback XM_CALLBACK) (list XmNpopupEnabled XM_INT)
- (list XmNpositionIndex XM_SHORT) (list XmNpostFromButton XM_INT) (list XmNpreeditType XM_STRING)
- (list XmNprocessingDirection XM_UCHAR) (list XmNpromptString XM_XMSTRING) (list XmNpushButtonEnabled XM_BOOLEAN)
- (list XmNqualifySearchDataProc XM_QUALIFY_CALLBACK) (list XmNradioAlwaysOne XM_BOOLEAN) (list XmNradioBehavior XM_BOOLEAN)
- (list XmNrecomputeSize XM_BOOLEAN) (list XmNrefigureMode XM_BOOLEAN) (list XmNrepeatDelay XM_INT)
- (list XmNresizable XM_BOOLEAN) (list XmNresizeCallback XM_CALLBACK) (list XmNresizeHeight XM_BOOLEAN)
- (list XmNresizePolicy XM_UCHAR) (list XmNresizeWidth XM_BOOLEAN) (list XmNrightAttachment XM_UCHAR)
- (list XmNrightOffset XM_INT) (list XmNrightPosition XM_INT) (list XmNrightWidget XM_WIDGET)
- (list XmNrowColumnType XM_UCHAR) (list XmNrows XM_SHORT) (list XmNrubberPositioning XM_BOOLEAN)
- (list XmNsashHeight XM_DIMENSION) (list XmNsashIndent XM_POSITION) (list XmNsashShadowThickness XM_DIMENSION)
- (list XmNsashWidth XM_DIMENSION) (list XmNsaveUnder XM_BOOLEAN) (list XmNscaleHeight XM_DIMENSION)
- (list XmNscaleMultiple XM_INT) (list XmNscaleWidth XM_DIMENSION) (list XmNscreen XM_SCREEN)
- (list XmNscrollBarDisplayPolicy XM_UCHAR) (list XmNscrollBarPlacement XM_UCHAR) (list XmNscrollHorizontal XM_BOOLEAN)
- (list XmNscrollLeftSide XM_BOOLEAN) (list XmNscrollTopSide XM_BOOLEAN) (list XmNscrollVertical XM_BOOLEAN)
- (list XmNscrolledWindowMarginHeight XM_DIMENSION) (list XmNscrolledWindowMarginWidth XM_DIMENSION) (list XmNscrollingPolicy XM_UCHAR)
- (list XmNselectColor XM_PIXEL) (list XmNselectInsensitivePixmap XM_PIXMAP) (list XmNselectPixmap XM_PIXMAP)
- (list XmNselectThreshold XM_INT) (list XmNselectedItemCount XM_INT) (list XmNselectedItems XM_STRING_TABLE)
- (list XmNselectionArray XM_INT_TABLE) (list XmNselectionArrayCount XM_INT) (list XmNselectionLabelString XM_XMSTRING)
- (list XmNselectionPolicy XM_UCHAR) (list XmNsensitive XM_BOOLEAN) (list XmNseparatorOn XM_BOOLEAN)
- (list XmNseparatorType XM_UCHAR) (list XmNset XM_UCHAR) (list XmNshadowThickness XM_DIMENSION)
- (list XmNshadowType XM_UCHAR) (list XmNshowArrows XM_BOOLEAN) (list XmNshowAsDefault XM_DIMENSION)
- (list XmNshowSeparator XM_BOOLEAN) (list XmNsimpleCallback XM_CALLBACK) (list XmNsingleSelectionCallback XM_CALLBACK)
- (list XmNskipAdjust XM_BOOLEAN) (list XmNsliderSize XM_INT) (list XmNsliderVisual XM_INT)
- (list XmNslidingMode XM_INT) (list XmNsource XM_TEXT_SOURCE) (list XmNsourceCursorIcon XM_WIDGET)
- (list XmNsourcePixmapIcon XM_WIDGET) (list XmNspacing XM_DIMENSION) (list XmNspotLocation XM_INT)
- (list XmNstateCursorIcon XM_WIDGET) (list XmNsubMenuId XM_WIDGET) (list XmNsymbolPixmap XM_PIXMAP)
- (list XmNtearOffMenuActivateCallback XM_CALLBACK) (list XmNtearOffMenuDeactivateCallback XM_CALLBACK) (list XmNtearOffModel XM_UCHAR)
- (list XmNtextAccelerators XM_ULONG) (list XmNtextColumns XM_SHORT) (list XmNtextString XM_XMSTRING)
- (list XmNtextTranslations XM_CALLBACK) (list XmNtitle XM_STRING) (list XmNtitleEncoding XM_ATOM)
- (list XmNtitleString XM_XMSTRING) (list XmNtoBottomCallback XM_CALLBACK) (list XmNtoTopCallback XM_CALLBACK)
- (list XmNtopAttachment XM_UCHAR) (list XmNtopCharacter XM_INT) (list XmNtopItemPosition XM_INT)
- (list XmNtopLevelEnterCallback XM_CALLBACK) (list XmNtopLevelLeaveCallback XM_CALLBACK) (list XmNtopOffset XM_INT)
- (list XmNtopPosition XM_INT) (list XmNtopShadowColor XM_PIXEL) (list XmNtopShadowPixmap XM_PIXMAP)
- (list XmNtopWidget XM_WIDGET) (list XmNtransferProc XM_TRANSFER_CALLBACK) (list XmNtransferStatus XM_UCHAR)
- (list XmNtransient XM_BOOLEAN) (list XmNtransientFor XM_WIDGET) (list XmNtranslations XM_CALLBACK)
- (list XmNtraversalOn XM_BOOLEAN) (list XmNtraverseObscuredCallback XM_CALLBACK) (list XmNtroughColor XM_PIXEL)
- (list XmNunitType XM_UCHAR) (list XmNunmapCallback XM_CALLBACK) (list XmNunpostBehavior XM_UCHAR)
- (list XmNuseAsyncGeometry XM_BOOLEAN) (list XmNuserData XM_ULONG) (list XmNvalidCursorForeground XM_PIXEL)
- (list XmNvalue XM_STRING_OR_INT) (list XmNvalueChangedCallback XM_CALLBACK) (list XmNverifyBell XM_BOOLEAN)
- (list XmNverticalFontUnit XM_INT) (list XmNverticalScrollBar XM_WIDGET) (list XmNverticalSpacing XM_DIMENSION)
- (list XmNvisibleItemCount XM_INT) (list XmNvisibleWhenOff XM_BOOLEAN) (list XmNvisual XM_VISUAL)
- (list XmNvisualPolicy XM_UCHAR) (list XmNwidth XM_DIMENSION) (list XmNwidthInc XM_INT)
- (list XmNwinGravity XM_INT) (list XmNwindow XM_WIDGET) (list XmNwindowGroup XM_WINDOW)
- (list XmNwmTimeout XM_INT) (list XmNwordWrap XM_BOOLEAN) (list XmNworkWindow XM_WIDGET)
- (list XmNx XM_POSITION) (list XmNy XM_POSITION) (list XmNarrowLayout XM_UCHAR)
- (list XmNarrowOrientation XM_UCHAR) (list XmNarrowSensitivity XM_UCHAR) (list XmNarrowSize XM_INT)
- (list XmNarrowSpacing XM_INT) (list XmNautoDragModel XM_INT) (list XmNbackPageBackground XM_PIXEL)
- (list XmNbackPageForeground XM_PIXEL) (list XmNbackPageNumber XM_INT) (list XmNbackPagePlacement XM_UCHAR)
- (list XmNbackPageSize XM_DIMENSION) (list XmNbindingPixmap XM_PIXMAP) (list XmNbindingType XM_UCHAR)
- (list XmNbindingWidth XM_INT) (list XmNbitmapConversionModel XM_INT) (list XmNbuttonRenderTable XM_RENDER_TABLE)
- (list XmNcollapsedStatePixmap XM_PIXMAP) (list XmNcolorAllocationProc XM_ALLOC_COLOR_CALLBACK)
- (list XmNcolorCalculationProc XM_SCREEN_COLOR_CALLBACK)
- (list XmNcomboBoxType XM_UCHAR) (list XmNconvertCallback XM_CALLBACK) (list XmNcurrentPageNumber XM_INT)
- (list XmNdecimal XM_STRING) (list XmNdefaultArrowSensitivity XM_UCHAR) (list XmNdefaultButtonEmphasis XM_INT)
- (list XmNdefaultVirtualBindings XM_STRING) (list XmNdestinationCallback XM_CALLBACK) (list XmNdetail XM_STRING_TABLE)
- (list XmNdetailColumnHeading XM_INT) (list XmNdetailColumnHeadingCount XM_INT) (list XmNdetailCount XM_INT)
- (list XmNdetailOrder XM_INT_TABLE) (list XmNdetailOrderCount XM_INT) (list XmNdetailShadowThickness XM_INT)
- (list XmNdetailTabList XM_TAB_LIST) (list XmNdirTextLabelString XM_XMSTRING) (list XmNdragStartCallback XM_CALLBACK)
- (list XmNenableBtn1Transfer XM_INT) (list XmNenableButtonTab XM_BOOLEAN) (list XmNenableDragIcon XM_BOOLEAN)
- (list XmNenableEtchedInMenu XM_BOOLEAN) (list XmNenableMultiKeyBindings XM_BOOLEAN) (list XmNenableThinThickness XM_BOOLEAN)
- (list XmNenableToggleColor XM_BOOLEAN) (list XmNenableToggleVisual XM_BOOLEAN) (list XmNenableUnselectableDrag XM_BOOLEAN)
- (list XmNenableWarp XM_INT) (list XmNentryParent XM_WIDGET) (list XmNentryViewType XM_UCHAR)
- (list XmNexpandedStatePixmap XM_PIXMAP) (list XmNfileFilterStyle XM_INT) (list XmNfirstPageNumber XM_INT)
- (list XmNfontName XM_STRING) (list XmNfontType XM_UCHAR) (list XmNframeBackground XM_PIXEL)
- (list XmNframeChildType XM_UCHAR) (list XmNframeShadowThickness XM_DIMENSION) (list XmNgrabStyle XM_INT)
- (list XmNincludeStatus XM_INT) (list XmNincrementValue XM_INT) (list XmNindeterminateInsensitivePixmap XM_PIXMAP)
- (list XmNindeterminatePixmap XM_PIXMAP) (list XmNinnerMarginHeight XM_DIMENSION) (list XmNinnerMarginWidth XM_DIMENSION)
- (list XmNinputPolicy XM_ULONG) (list XmNinsensitiveStippleBitmap XM_PIXMAP) (list XmNinvokeParseProc XM_PARSE_CALLBACK)
- (list XmNlabelRenderTable XM_RENDER_TABLE) (list XmNlargeCellHeight XM_DIMENSION) (list XmNlargeCellWidth XM_DIMENSION)
- (list XmNlargeIconMask XM_PIXMAP) (list XmNlargeIconPixmap XM_PIXMAP) (list XmNlargeIconX XM_FLOAT)
- (list XmNlargeIconY XM_FLOAT) (list XmNlastPageNumber XM_INT) (list XmNlayoutDirection XM_UCHAR)
- (list XmNlayoutType XM_UCHAR) (list XmNlist XM_WIDGET) (list XmNloadModel XM_UCHAR)
- (list XmNmajorTabSpacing XM_DIMENSION) (list XmNmatchBehavior XM_UCHAR) (list XmNmaximumValue XM_INT)
- (list XmNminimumValue XM_INT) (list XmNminorTabSpacing XM_DIMENSION) (list XmNmotifVersion XM_INT)
- (list XmNnoFontCallback XM_CALLBACK) (list XmNnoRenditionCallback XM_CALLBACK) (list XmNnotebookChildType XM_UCHAR)
- (list XmNnumValues XM_INT) (list XmNoutlineButtonPolicy XM_UCHAR) (list XmNoutlineChangedCallback XM_CALLBACK)
- (list XmNoutlineColumnWidth XM_DIMENSION) (list XmNoutlineIndentation XM_DIMENSION) (list XmNoutlineLineStyle XM_UCHAR)
- (list XmNoutlineState XM_UCHAR) (list XmNpageChangedCallback XM_CALLBACK) (list XmNpageNumber XM_INT)
- (list XmNpathMode XM_INT) (list XmNpatternType XM_UCHAR) (list XmNpopupHandlerCallback XM_CALLBACK)
- (list XmNposition XM_INT) (list XmNpositionMode XM_INT) (list XmNpositionType XM_UCHAR)
- (list XmNprimaryOwnership XM_UCHAR) (list XmNrenderTable XM_RENDER_TABLE) (list XmNrenditionBackground XM_PIXEL)
- (list XmNrenditionForeground XM_PIXEL) (list XmNscrolledWindowChildType XM_UCHAR) (list XmNselectedItem XM_XMSTRING)
- (list XmNselectedObjectCount XM_INT) (list XmNselectedObjects XM_WIDGET_LIST) (list XmNselectedPosition XM_INT)
- (list XmNselectedPositionCount XM_INT) (list XmNselectedPositions XM_INT_TABLE) (list XmNselectionCallback XM_CALLBACK)
- (list XmNselectionMode XM_UCHAR) (list XmNselectionTechnique XM_UCHAR) (list XmNsliderMark XM_INT)
- (list XmNsmallCellHeight XM_DIMENSION) (list XmNsmallCellWidth XM_DIMENSION) (list XmNsmallIconMask XM_PIXMAP)
- (list XmNsmallIconPixmap XM_PIXMAP) (list XmNsmallIconX XM_FLOAT) (list XmNsmallIconY XM_FLOAT)
- (list XmNsnapBackMultiple XM_SHORT) (list XmNspatialIncludeModel XM_UCHAR) (list XmNspatialResizeModel XM_UCHAR)
- (list XmNspatialSnapModel XM_UCHAR) (list XmNspatialStyle XM_UCHAR) (list XmNspinBoxChildType XM_UCHAR)
- (list XmNstrikethruType XM_UCHAR) (list XmNsubstitute XM_XMSTRING) (list XmNtabList XM_TAB_LIST)
- (list XmNtag XM_STRING) (list XmNtearOffTitle XM_XMSTRING) (list XmNtextField XM_WIDGET)
- (list XmNtextRenderTable XM_RENDER_TABLE) (list XmNtoggleMode XM_UCHAR) (list XmNunderlineType XM_UCHAR)
- (list XmNunselectColor XM_PIXEL) (list XmNtabValue XM_FLOAT) (list XmNoffsetModel XM_INT)
- (list XmNcallback XM_CALLBACK) (list XmNwaitForWm XM_BOOLEAN) (list XmNuseColorObj XM_BOOLEAN)
- (list XmNvalues XM_STRING_TABLE) (list XmNviewType XM_UCHAR) (list XmNvisualEmphasis XM_UCHAR)
- (list XmNwrap XM_BOOLEAN)
- )))
-
- (for-each
- (lambda (n)
- (if (not (string? (car n))) (snd-display "resource ~A is not a string?" (car n)))
- (XtVaGetValues shell (list (car n) 0)))
- resource-list)
- )
-
- (if (not (XEvent? (XEvent)))
- (snd-display "xevent type trouble! ~A -> ~A" (XEvent) (XEvent? (XEvent))))
- (if (not (XGCValues? (XGCValues)))
- (snd-display "xgcvalues type trouble! ~A -> ~A" (XGCValues) (XGCValues? (XGCValues))))
- (if (not (= (.direction (XmTraverseObscuredCallbackStruct)) 0))
- (snd-display ".direction: ~A" (.direction (XmTraverseObscuredCallbackStruct))))
- (if (.ptr (XmTextBlock))
- (snd-display ".ptr block: ~A" (.ptr (XmTextBlock))))
- (let ((hi (XmTextBlock)))
- (set! (.ptr hi) "hi")
- (if (not (string=? (.ptr hi) "hi"))
- (snd-display ".ptr set block: ~A" (.ptr hi)))
- (if (not (= (.length hi) 0)) (snd-display ".length block: ~A" (.length hi)))
- (set! (.length hi) 3)
- (if (not (= (.length hi) 3)) (snd-display "set .length block: ~A" (.length hi))))
- (if (not (= (.dashes (XGCValues)) 0)) (snd-display "dashes: ~A" (.dashes (XGCValues))))
- (set! (.dashes (XGCValues)) 1)
- (set! (.clip_mask (XGCValues)) (list 'Pixmap 0))
- (set! (.resourceid (XEvent -1)) 0)
- (set! (.error_code (XEvent -1)) 0)
- (set! (.request_code (XEvent -1)) 0)
- (if (not (= (.resourceid (XEvent -1)) 0)) (snd-display "error resourceid: ~A" (.resourceid (XEvent -1))))
- (if (not (= (.request_code (XEvent -1)) 0)) (snd-display "error request_code: ~A" (.request_code (XEvent -1))))
- (set! (.pad (XColor)) 1)
- ;;)
-
- (when (defined? 'XShapeQueryExtents)
- (let* ((dpy (XtDisplay (cadr (main-widgets))))
- (win (XtWindow (cadr (main-widgets))))
- (vals (XShapeQueryExtents dpy win)))
- (if (not (= (car vals) 1))
- (snd-display "XShapeQueryExtents: ~A" vals))
- (set! vals (XShapeGetRectangles dpy win 0))
- (if (not (list? vals)) (snd-display "XShapeGetRectangles: ~A" vals))
- ;(segfault) (XtFree (cadr vals))
- (set! vals (XShapeQueryExtension dpy))
- (if (not (equal? vals '(#t 64 0))) (snd-display "XShapeQueryExtension: ~A" vals))
- (set! vals (XShapeQueryVersion dpy))
- (if (not (member vals '((#t 1 0) (#t 1 1))))
- (snd-display "XShapeQueryVersion: ~A" vals))
- (if (XShapeOffsetShape dpy win 0 0 0) (snd-display "XShapeOffsetShape?"))
-
- (let* ((attr (XSetWindowAttributes #f *basic-color* #f *highlight-color*))
- (newwin (XCreateWindow dpy win 10 10 100 100 3
- CopyFromParent InputOutput (list 'Visual CopyFromParent)
- (logior CWBackPixel CWBorderPixel)
- attr)))
- (XShapeCombineMask dpy newwin ShapeClip 0 0
- (XCreateBitmapFromData dpy win right-arrow 16 12) ; right-arrow is in snd-motif.scm
- ShapeSet)
- (XShapeCombineRectangles dpy newwin ShapeUnion 0 0
- (list (XRectangle 0 0 10 10) (XRectangle 0 0 10 30)) 2
- ShapeSet ShapeBounding)
- (let ((newerwin (XCreateWindow dpy win 10 10 100 100 3
- CopyFromParent InputOutput (list 'Visual CopyFromParent)
- (logior CWBackPixel CWBorderPixel)
- attr)))
- (XShapeCombineShape dpy newerwin ShapeIntersect 0 0 newwin ShapeSet ShapeClip))
- (let ((reg1 (XPolygonRegion (list (XPoint 2 2) (XPoint 10 2) (XPoint 10 10) (XPoint 2 10)) 4 WindingRule)))
- (XShapeCombineRegion dpy newwin ShapeUnion 0 0 reg1 ShapeSet)))))
-
- (let ((classes (list xmArrowButtonWidgetClass xmBulletinBoardWidgetClass xmCascadeButtonWidgetClass xmCommandWidgetClass
- xmDrawingAreaWidgetClass xmDrawnButtonWidgetClass xmFileSelectionBoxWidgetClass xmFormWidgetClass
- xmFrameWidgetClass xmLabelWidgetClass xmListWidgetClass xmMainWindowWidgetClass xmManagerWidgetClass
- xmMessageBoxWidgetClass xmPanedWindowWidgetClass xmPrimitiveWidgetClass xmPushButtonWidgetClass
- xmRowColumnWidgetClass xmScaleWidgetClass xmScrollBarWidgetClass xmScrolledWindowWidgetClass
- xmSelectionBoxWidgetClass xmSeparatorWidgetClass xmTextFieldWidgetClass xmTextWidgetClass
- xmToggleButtonWidgetClass xmContainerWidgetClass xmComboBoxWidgetClass xmNotebookWidgetClass))
- (wids ()))
- (for-each
- (lambda (class)
- (let ((wid (XtCreateWidget "hiho" class (cadr (main-widgets)) ())))
- (set! wids (cons wid wids))
- (XtAddCallback wid XmNhelpCallback (lambda (w c i) (copy "help!")))))
- classes)
- (for-each
- (lambda (w)
- (XtCallCallbacks w XmNhelpCallback #f))
- wids))
-
- (let ((key (XStringToKeysym "Cancel")))
- (if (not (= (cadr key) XK_Cancel))
- (snd-display "XStringToKeysym ~A ~A" key XK_Cancel)))
-
- (let* ((win (XtWindow (cadr (main-widgets))))
- (xm-procs
- (let ((xm-procs-1
- (list
- XPutBackEvent XNextEvent
- XtAppProcessEvent XtAppMainLoop XtAppAddActions XtAppNextEvent XtAppPeekEvent
-
- XtSetArg XtManageChildren XtManageChild XtUnmanageChildren XtUnmanageChild
- XtDispatchEvent XtCallAcceptFocus XtIsSubclass XtIsObject XtIsManaged XtIsRealized
- XtIsSensitive XtOwnSelection XtOwnSelectionIncremental XtMakeResizeRequest XtTranslateCoords
- XtKeysymToKeycodeList XtParseTranslationTable XtParseAcceleratorTable XtOverrideTranslations XtAugmentTranslations
- XtInstallAccelerators XtInstallAllAccelerators XtUninstallTranslations XtAppAddActionHook
- XtRemoveActionHook XtGetActionList XtCallActionProc XtRegisterGrabAction XtSetMultiClickTime
- XtGetMultiClickTime XtGetActionKeysym XtTranslateKeycode XtTranslateKey XtSetKeyTranslator
- XtRegisterCaseConverter XtConvertCase XtAddEventHandler XtRemoveEventHandler XtAddRawEventHandler
- XtRemoveRawEventHandler XtInsertEventHandler XtInsertRawEventHandler XtDispatchEventToWidget
- XtBuildEventMask XtAddGrab XtRemoveGrab XtAddExposureToRegion XtSetKeyboardFocus
- XtGetKeyboardFocusWidget XtLastEventProcessed XtLastTimestampProcessed
- XtAppAddTimeOut XtRemoveTimeOut XtAppAddInput XtRemoveInput XtAppPending
- XtRealizeWidget XtUnrealizeWidget XtSetSensitive XtNameToWidget XtWindowToWidget
- XtMergeArgLists XtVaCreateArgsList XtDisplay XtDisplayOfObject XtScreen XtScreenOfObject
- XtWindow XtWindowOfObject XtName XtSuperclass XtClass XtParent XtAddCallback XtRemoveCallback
- XtAddCallbacks XtRemoveCallbacks XtRemoveAllCallbacks XtCallCallbacks
- XtHasCallbacks XtCreatePopupShell XtVaCreatePopupShell XtPopup XtPopupSpringLoaded
- XtCallbackNone XtCallbackNonexclusive XtCallbackExclusive XtPopdown XtCallbackPopdown
- XtCreateWidget XtCreateManagedWidget XtVaCreateWidget XtVaCreateManagedWidget
- XtAppCreateShell XtVaAppCreateShell
- XtDisplayToApplicationContext
- XtSetValues XtVaSetValues XtGetValues XtVaGetValues
- XtAppSetErrorMsgHandler XtAppSetWarningMsgHandler
- XtAppErrorMsg XtAppWarningMsg XtAppSetErrorHandler
- XtAppSetWarningHandler XtAppError
- XtAppAddWorkProc XtGetGC XtAllocateGC XtDestroyGC XtReleaseGC
- XtFindFile XtResolvePathname XtDisownSelection XtGetSelectionValue
- XtGetSelectionValues XtAppSetSelectionTimeout XtAppGetSelectionTimeout
- XtGetSelectionRequest XtGetSelectionValueIncremental
- XtGetSelectionValuesIncremental XtCreateSelectionRequest XtSendSelectionRequest
- XtCancelSelectionRequest XtGrabKey XtUngrabKey
- XtGrabKeyboard XtUngrabKeyboard XtGrabButton XtUngrabButton XtGrabPointer XtUngrabPointer
- XtGetApplicationNameAndClass XtGetDisplays XtToolkitThreadInitialize XtAppLock XtAppUnlock XtIsRectObj XtIsWidget
- XtIsComposite XtIsConstraint XtIsShell XtIsOverrideShell XtIsWMShell XtIsVendorShell
- XtIsTransientShell XtIsTopLevelShell XtIsApplicationShell XtIsSessionShell XtMapWidget
- XtUnmapWidget XLoadQueryFont XQueryFont XGetMotionEvents XDeleteModifiermapEntry
- XGetModifierMapping XInsertModifiermapEntry XNewModifiermap XCreateImage XGetImage
- XGetSubImage XOpenDisplay XFetchBytes XFetchBuffer XGetAtomName XDisplayName XUniqueContext
- XKeysymToString XSynchronize XSetAfterFunction XInternAtom XCopyColormapAndFree XCreateColormap
- XCreatePixmapCursor XCreateGlyphCursor XCreateFontCursor XLoadFont XCreateGC XFlushGC
- XCreatePixmap XCreateBitmapFromData XCreatePixmapFromBitmapData XCreateSimpleWindow
- XGetSelectionOwner XCreateWindow XListInstalledColormaps XListFonts XListFontsWithInfo
- XListExtensions XListProperties ;XKeycodeToKeysym
- XLookupKeysym
- XGetKeyboardMapping ;XStringToKeysym
- XDisplayMotionBufferSize XVisualIDFromVisual XMaxRequestSize XExtendedMaxRequestSize
- XRootWindow XDefaultRootWindow XRootWindowOfScreen
- XDefaultVisual XDefaultVisualOfScreen XDefaultGC XDefaultGCOfScreen XBlackPixel XWhitePixel
- XAllPlanes XBlackPixelOfScreen XWhitePixelOfScreen XNextRequest XLastKnownRequestProcessed
- XServerVendor XDisplayString XDefaultColormap XDefaultColormapOfScreen XDisplayOfScreen
- XScreenOfDisplay XDefaultScreenOfDisplay XEventMaskOfScreen XScreenNumberOfScreen
- XSetErrorHandler XSetIOErrorHandler XListPixmapFormats XListDepths XReconfigureWMWindow
- XGetWMProtocols XSetWMProtocols XIconifyWindow XWithdrawWindow XGetCommand XGetWMColormapWindows
- XSetTransientForHint XActivateScreenSaver
- XAllocColor XAllocColorCells XAllocColorPlanes XAllocNamedColor
- XAllowEvents XAutoRepeatOff XAutoRepeatOn XBell XBitmapBitOrder XBitmapPad XBitmapUnit
- XCellsOfScreen XChangeActivePointerGrab XChangeGC XChangeKeyboardControl XChangeKeyboardMapping
- XChangePointerControl XChangeProperty XChangeWindowAttributes ; XCheckIfEvent
- XCheckMaskEvent XCheckTypedEvent XCheckTypedWindowEvent XCheckWindowEvent XCirculateSubwindows
- XCirculateSubwindowsDown XCirculateSubwindowsUp XClearArea XClearWindow XCloseDisplay
- XConfigureWindow XConnectionNumber XConvertSelection XCopyArea XCopyGC XCopyPlane XDefaultDepth
- XDefaultDepthOfScreen XDefaultScreen XDefineCursor XDeleteProperty XDestroyWindow
- XDestroySubwindows XDoesBackingStore XDoesSaveUnders XDisableAccessControl XDisplayCells
- XDisplayHeight XDisplayHeightMM XDisplayKeycodes XDisplayPlanes XDisplayWidth XDisplayWidthMM
- XDrawArc XDrawArcs XDrawImageString XDrawLine XDrawLines XDrawLinesDirect XDrawPoint
- XDrawPoints XDrawRectangle XDrawRectangles XDrawSegments XDrawString XDrawText
- XEnableAccessControl XEventsQueued XFetchName XFillArc XFillArcs XFillPolygon XFillRectangle
- XFillRectangles XFlush XForceScreenSaver XFreeColormap XFreeColors XFreeCursor
- XFreeExtensionList XFreeFont XFreeFontInfo XFreeFontNames XFreeFontPath XFreeGC
- XFreeModifiermap XFreePixmap XGeometry XGetErrorText XGetFontProperty
- XGetGCValues XGCValues XEvent XGetGeometry XGetIconName XGetInputFocus XGetKeyboardControl
- XGetPointerControl XGetPointerMapping XGetScreenSaver XGetTransientForHint XGetWindowProperty
- XGetWindowAttributes XGrabButton XGrabKey XGrabKeyboard XGrabPointer XGrabServer
- XHeightMMOfScreen XHeightOfScreen XIfEvent XImageByteOrder XInstallColormap XKeysymToKeycode
- XKillClient XLookupColor XLowerWindow XMapRaised XMapSubwindows XMapWindow XMaskEvent
- XMaxCmapsOfScreen XMinCmapsOfScreen XMoveResizeWindow XMoveWindow XNoOp XParseColor
- XParseGeometry XPeekEvent XPeekIfEvent XPending XPlanesOfScreen XProtocolRevision
- XProtocolVersion XPutImage XQLength XQueryBestCursor XQueryBestSize XQueryBestStipple
- XQueryBestTile XQueryColor XQueryColors XQueryExtension XQueryKeymap XQueryPointer
- XQueryTextExtents XQueryTree XRaiseWindow XRebindKeysym XRecolorCursor XRefreshKeyboardMapping
- XReparentWindow XResetScreenSaver XResizeWindow
- XRestackWindows XRotateBuffers XRotateWindowProperties XScreenCount XSelectInput XSendEvent
- XSetAccessControl XSetArcMode XSetBackground XSetClipMask XSetClipOrigin XSetClipRectangles
- XSetCloseDownMode XSetCommand XSetDashes XSetFillRule XSetFillStyle XSetFont XSetFontPath
- XSetForeground XSetFunction XSetGraphicsExposures XSetIconName XSetInputFocus XSetLineAttributes
- XSetModifierMapping XSetPlaneMask XSetPointerMapping XSetScreenSaver XSetSelectionOwner
- XSetState XSetStipple XSetSubwindowMode XSetTSOrigin XSetTile XSetWindowBackground
- XSetWindowBackgroundPixmap XSetWindowBorder XSetWindowBorderPixmap XSetWindowBorderWidth
- XSetWindowColormap XStoreBuffer XStoreBytes XStoreColor XStoreColors XStoreName
- XStoreNamedColor XSync XTextExtents XTextWidth XTranslateCoordinates XUndefineCursor
- XUngrabButton XUngrabKey XUngrabKeyboard XUngrabPointer XUngrabServer XUninstallColormap
- XUnloadFont XUnmapSubwindows XUnmapWindow XVendorRelease XWarpPointer XWidthMMOfScreen
- XWidthOfScreen XWindowEvent XWriteBitmapFile XSupportsLocale XSetLocaleModifiers XCreateFontSet
- XFreeFontSet XFontsOfFontSet XBaseFontNameListOfFontSet XLocaleOfFontSet XContextDependentDrawing
- XDirectionalDependentDrawing XContextualDrawing XFilterEvent XAllocIconSize
- XAllocStandardColormap XAllocWMHints XClipBox XCreateRegion XDefaultString XDeleteContext
- XDestroyRegion XEmptyRegion XEqualRegion ;XFindContext
- XGetIconSizes XGetRGBColormaps
- XGetVisualInfo XGetWMHints XIntersectRegion XConvertCase XLookupString
- XMatchVisualInfo XOffsetRegion XPointInRegion XPolygonRegion XRectInRegion XSaveContext
- XSetRGBColormaps XSetWMHints XSetRegion XShrinkRegion XSubtractRegion
- XUnionRectWithRegion XUnionRegion XXorRegion DefaultScreen DefaultRootWindow QLength
- ScreenCount ServerVendor ProtocolVersion ProtocolRevision VendorRelease DisplayString
- BitmapUnit BitmapBitOrder BitmapPad ImageByteOrder NextRequest LastKnownRequestProcessed
- DefaultScreenOfDisplay DisplayOfScreen RootWindowOfScreen BlackPixelOfScreen WhitePixelOfScreen
- DefaultColormapOfScreen DefaultDepthOfScreen DefaultGCOfScreen DefaultVisualOfScreen
- WidthOfScreen HeightOfScreen WidthMMOfScreen HeightMMOfScreen PlanesOfScreen CellsOfScreen
- MinCmapsOfScreen MaxCmapsOfScreen DoesSaveUnders DoesBackingStore EventMaskOfScreen RootWindow
- DefaultVisual DefaultGC BlackPixel WhitePixel DisplayWidth DisplayHeight DisplayWidthMM
- DisplayHeightMM DisplayPlanes DisplayCells DefaultColormap ScreenOfDisplay DefaultDepth
- IsKeypadKey IsPrivateKeypadKey IsCursorKey IsPFKey IsFunctionKey IsMiscFunctionKey
- IsModifierKey XmCreateMessageBox XmCreateMessageDialog XmCreateErrorDialog
- XmCreateInformationDialog XmCreateQuestionDialog XmCreateWarningDialog XmCreateWorkingDialog
- XmCreateTemplateDialog XmMessageBoxGetChild XmCreateArrowButtonGadget XmCreateArrowButton
- XmCreateNotebook XmNotebookGetPageInfo
- XmTransferSetParameters XmTransferValue XmCreateComboBox
- XmCreateDropDownComboBox XmCreateDropDownList XmComboBoxAddItem XmComboBoxDeletePos
- XmComboBoxSelectItem XmComboBoxSetItem XmComboBoxUpdate XmCreateContainer
- XmContainerGetItemChildren XmContainerRelayout XmContainerReorder XmContainerCut XmContainerCopy
- XmContainerPaste XmContainerCopyLink XmContainerPasteLink XmCreateSpinBox
- XmSpinBoxValidatePosition XmCreateSimpleSpinBox XmSimpleSpinBoxAddItem XmSimpleSpinBoxDeletePos
- XmSimpleSpinBoxSetItem XmDropSiteRegistered XmTextFieldCopyLink XmTextFieldPasteLink
- XmTextGetCenterline XmToggleButtonGadgetSetValue XmCreateIconGadget
- XmCreateIconHeader XmObjectAtPoint XmConvertStringToUnits XmCreateGrabShell
- XmToggleButtonSetValue XmTextPasteLink XmTextCopyLink XmScaleSetTicks XmInternAtom XmGetAtomName
- XmCreatePanedWindow XmCreateBulletinBoard XmCreateBulletinBoardDialog XmCreateCascadeButtonGadget
- XmCascadeButtonGadgetHighlight XmAddProtocols XmRemoveProtocols XmAddProtocolCallback
- XmRemoveProtocolCallback XmActivateProtocol XmDeactivateProtocol XmSetProtocolHooks
- XmCreateCascadeButton XmCascadeButtonHighlight XmCreatePushButtonGadget XmCreatePushButton
- XmCreateCommand XmCommandGetChild XmCommandSetValue XmCommandAppendValue XmCommandError
- XmCreateCommandDialog XmMenuPosition XmCreateRowColumn XmCreateWorkArea XmCreateRadioBox
- XmCreateOptionMenu XmOptionLabelGadget XmOptionButtonGadget XmCreateMenuBar XmCreatePopupMenu
- XmCreatePulldownMenu XmGetPostedFromWidget XmGetTearOffControl
- XmScaleSetValue XmScaleGetValue XmCreateScale
- XmClipboardStartCopy XmClipboardCopy XmClipboardEndCopy XmClipboardCancelCopy
- XmClipboardWithdrawFormat XmClipboardCopyByName XmClipboardUndoCopy XmClipboardLock
- XmClipboardUnlock XmClipboardStartRetrieve XmClipboardEndRetrieve XmClipboardRetrieve
- XmClipboardInquireCount XmClipboardInquireFormat XmClipboardInquireLength
- XmClipboardInquirePendingItems XmClipboardRegisterFormat XmGetXmScreen XmCreateScrollBar
- XmScrollBarGetValues XmScrollBarSetValues XmCreateDialogShell
- XmCreateScrolledWindow XmScrollVisible XmGetDragContext XmGetXmDisplay XmSelectionBoxGetChild
- XmCreateSelectionBox XmCreateSelectionDialog XmCreatePromptDialog XmDragStart XmDragCancel
- XmTargetsAreCompatible XmCreateSeparatorGadget XmCreateDragIcon XmCreateSeparator
- XmCreateDrawingArea XmCreateDrawnButton XmDropSiteRegister XmDropSiteUnregister
- XmDropSiteStartUpdate XmDropSiteUpdate XmDropSiteEndUpdate XmDropSiteRetrieve
- XmDropSiteQueryStackingOrder XmDropSiteConfigureStackingOrder XmDropTransferStart
- XmDropTransferAdd XmTextFieldGetString XmTextFieldGetSubstring XmTextFieldGetLastPosition
- XmTextFieldSetString XmTextFieldReplace XmTextFieldInsert XmTextFieldSetAddMode
- XmTextFieldGetAddMode XmTextFieldGetEditable XmTextFieldSetEditable XmTextFieldGetMaxLength
- XmTextFieldSetMaxLength XmTextFieldGetCursorPosition XmTextFieldGetInsertionPosition
- XmTextFieldSetCursorPosition XmTextFieldSetInsertionPosition XmTextFieldGetSelectionPosition
- XmTextFieldGetSelection XmTextFieldRemove XmTextFieldCopy XmTextFieldCut XmTextFieldPaste
- XmTextFieldClearSelection XmTextFieldSetSelection XmTextFieldXYToPos XmTextFieldPosToXY
- XmTextFieldShowPosition XmTextFieldSetHighlight XmTextFieldGetBaseline XmCreateTextField
- XmFileSelectionBoxGetChild XmFileSelectionDoSearch XmCreateFileSelectionBox
- XmCreateFileSelectionDialog XmTextSetHighlight XmCreateScrolledText XmCreateText
- XmTextGetSubstring XmTextGetString XmTextGetLastPosition XmTextSetString XmTextReplace
- XmTextInsert XmTextSetAddMode XmTextGetAddMode XmTextGetEditable XmTextSetEditable
- XmTextGetMaxLength XmTextSetMaxLength XmTextGetTopCharacter XmTextSetTopCharacter
- XmTextGetCursorPosition XmTextGetInsertionPosition XmTextSetInsertionPosition
- XmTextSetCursorPosition XmTextRemove XmTextCopy XmTextCut XmTextPaste XmTextGetSelection
- XmTextSetSelection XmTextClearSelection XmTextGetSelectionPosition XmTextXYToPos XmTextPosToXY
- XmTextGetSource XmTextSetSource XmTextShowPosition XmTextScroll XmTextGetBaseline
- XmTextDisableRedisplay XmTextEnableRedisplay XmTextFindString XmCreateForm XmCreateFormDialog
- XmCreateFrame XmToggleButtonGadgetGetState XmToggleButtonGadgetSetState XmCreateToggleButtonGadget
- XmToggleButtonGetState XmToggleButtonSetState XmCreateToggleButton XmCreateLabelGadget
- XmCreateLabel XmIsMotifWMRunning XmListAddItem XmListAddItems XmListAddItemsUnselected
- XmListAddItemUnselected XmListDeleteItem XmListDeleteItems XmListDeletePositions XmListDeletePos
- XmListDeleteItemsPos XmListDeleteAllItems XmListReplaceItems XmListReplaceItemsPos
- XmListReplaceItemsUnselected XmListReplaceItemsPosUnselected XmListReplacePositions
- XmListSelectItem XmListSelectPos XmListDeselectItem XmListDeselectPos XmListDeselectAllItems
- XmListSetPos XmListSetBottomPos XmListSetItem XmListSetBottomItem XmListSetAddMode
- XmListItemExists XmListItemPos XmListGetKbdItemPos XmListSetKbdItemPos XmListYToPos
- XmListPosToBounds XmListGetMatchPos XmListGetSelectedPos XmListSetHorizPos
- XmListUpdateSelectedList XmListPosSelected XmCreateList XmCreateScrolledList XmTranslateKey
- XmInstallImage XmUninstallImage XmGetPixmap XmGetPixmapByDepth XmDestroyPixmap XmUpdateDisplay
- XmWidgetGetBaselines XmRegisterSegmentEncoding XmMapSegmentEncoding
- XmCvtCTToXmString XmCvtXmStringToCT XmConvertUnits
- XmCreateSimpleMenuBar XmCreateSimplePopupMenu XmCreateSimplePulldownMenu
- XmCreateSimpleOptionMenu XmCreateSimpleRadioBox XmCreateSimpleCheckBox XmVaCreateSimpleMenuBar
- XmVaCreateSimplePopupMenu XmVaCreateSimplePulldownMenu XmVaCreateSimpleOptionMenu
- XmVaCreateSimpleRadioBox XmVaCreateSimpleCheckBox XmTrackingEvent
- XmSetColorCalculation XmGetColorCalculation XmGetColors XmChangeColor XmStringCreate
- XmStringCreateLocalized XmStringDirectionCreate XmStringSeparatorCreate
- XmStringInitContext
- XmStringFreeContext
- XmStringConcatAndFree XmStringIsVoid XmStringPeekNextTriple XmStringGetNextTriple
- XmStringComponentCreate XmStringUnparse XmStringParseText XmStringToXmStringTable
- XmStringTableToXmString XmStringTableUnparse XmStringTableParseStringArray
- XmDirectionToStringDirection XmStringDirectionToDirection XmStringGenerate XmStringPutRendition
- XmParseMappingGetValues XmParseMappingFree XmParseTableFree XmStringTableProposeTablist
- XmTabSetValue XmTabGetValues XmTabFree XmTabCreate XmTabListTabCount XmTabListRemoveTabs
- XmTabListReplacePositions XmTabListGetTab XmTabListCopy XmTabListInsertTabs
- ; XmRenderTableCvtFromProp XmRenderTableCvtToProp XmRenditionUpdate XmRenditionRetrieve
- XmRenditionFree XmRenditionCreate XmRenderTableGetRenditions XmRenderTableGetRendition
- XmRenderTableGetTags XmRenderTableFree XmRenderTableCopy XmRenderTableRemoveRenditions
- XmRenderTableAddRenditions
- XmStringEmpty XmStringHasSubstring XmStringFree XmStringBaseline XmStringWidth XmStringHeight
- XmStringExtent XmStringLineCount XmStringDraw XmStringDrawImage XmStringDrawUnderline
- XmGetDestination XmIsTraversable XmGetVisibility XmGetTabGroup XmGetFocusWidget
- XmProcessTraversal XmCreateMenuShell XmIsMessageBox
- XmIsArrowButtonGadget XmIsArrowButton XmIsNotebook XmIsComboBox XmIsContainer
- XmIsGrabShell XmIsIconGadget XmIsIconHeader XmIsPanedWindow XmIsBulletinBoard XmIsPrimitive
- XmIsCascadeButtonGadget XmIsCascadeButton XmIsPushButtonGadget XmIsPushButton XmIsCommand
- XmIsRowColumn XmIsScale XmIsScreen XmIsScrollBar XmIsDialogShell XmIsScrolledWindow XmIsDisplay
- XmIsSelectionBox XmIsDragContext XmIsSeparatorGadget XmIsDragIconObjectClass
- XmIsSeparator XmIsDrawingArea XmIsDrawnButton XmIsDropSiteManager XmIsDropTransfer XmIsTextField
- XmIsFileSelectionBox XmIsText XmIsForm XmIsFrame XmIsGadget XmIsToggleButtonGadget
- XmIsToggleButton XmIsLabelGadget XmIsLabel XmIsVendorShell XmIsList XmIsManager
- XmIsMenuShell XGetPixel XDestroyImage XPutPixel XSubImage XAddPixel
- XtAppContext? XtRequestId? XtWorkProcId? XtInputId? XtIntervalId? Screen? XEvent?
- XRectangle? XArc? XPoint? XSegment? XColor? Atom? Colormap?
- XModifierKeymap? Depth? Display? Drawable? Font? GC? KeySym? Pixel? Pixmap? Region?
- Time? Visual? Window? XFontProp? XFontSet? XFontStruct? XGCValues? XImage? XVisualInfo?
- XWMHints? XWindowAttributes? XWindowChanges? KeyCode? XContext? XCharStruct? XTextItem?
- Widget? XmStringContext? WidgetClass? XmString?
- XmToggleButton? XmDrawingArea? XmPushButton? XmTextField? XmFileSelectionBox? XmText?
- XmFrame? XmLabel? XmList? XmArrowButton? XmScrollBar? XmCommand? XmScale? XmRowColumn?
- XmTab? XmNotebook? XmComboBox? XmContainer? XmIconHeader?
- XmGrabShell? XmRendition? XmRenderTable? XmIconGadget? XmTabList? XmParseMapping?
- XmPanedWindow? XmScrolledWindow? XmCascadeButton? XmForm? XmBulletinBoard? XmScreen?
- XmDialogShell? XmDisplay? XmSelectionBox? XmDragContext? XmDragIconObjectClass? XmSeparator?
- XmDropSiteManager? XmDropTransfer? XmVendorShell? XmMessageBox? XmManager?
- XmMenuShell? XmLabelGadget? XmPushButtonGadget? XmSeparatorGadget? XmArrowButtonGadget?
- XmCascadeButtonGadget? XmToggleButtonGadget? XmDrawnButton? XmPrimitive?
- XmTextSource?
-
- XButtonEvent? XCirculateEvent? XCirculateRequestEvent? XClientMessageEvent? XColormapEvent?
- XConfigureEvent? XConfigureRequestEvent? XCreateWindowEvent? XCrossingEvent? XDeleteProperty
- XDestroyWindowEvent? XErrorEvent? XExposeEvent? XFocusChangeEvent? XGraphicsExposeEvent? XGravityEvent?
- XIconSize? XKeyEvent? XKeymapEvent? XMapEvent? XMapRequestEvent? XMappingEvent? XMotionEvent?
- XNoExposeEvent? XPropertyEvent? XReparentEvent? XResizeRequestEvent? XSelectionClearEvent?
- XSelectionEvent? XSelectionRequestEvent? XSetWindowAttributes? XStandardColormap? XUnmapEvent? XVisibilityEvent?)))
- (if (not (defined? 'XpmImage?))
- xm-procs-1
- (append xm-procs-1
- (list
- XpmCreatePixmapFromData XpmCreateDataFromPixmap XpmReadFileToPixmap
- XpmReadPixmapFile XpmWriteFileFromPixmap XpmWritePixmapFile XpmCreatePixmapFromXpmImage
- XpmCreateXpmImageFromPixmap XpmAttributes? XpmImage? XpmColorSymbol?)))))
-
- (xm-procs0 (test-remove-if (lambda (n) (not (aritable? n 0))) xm-procs))
- (xm-procs1 (test-remove-if (lambda (n) (not (aritable? n 1))) xm-procs))
- (xm-procs2 (test-remove-if (lambda (n) (not (aritable? n 2))) xm-procs))
- (xm-procs3 (test-remove-if (lambda (n) (not (aritable? n 3))) xm-procs))
- )
-
- ;; ---------------- 0 Args
- (for-each
- (lambda (n)
- (catch #t
- n
- (lambda args (car args))))
- xm-procs0)
-
- ;; ---------------- 1 Arg
- (for-each
- (lambda (arg)
- (for-each
- (lambda (n)
- (catch #t
- (lambda () (n arg))
- (lambda args (car args))))
- xm-procs1))
- (list win 1.5 "/hiho" (list 0 1) 1234 (make-float-vector 3) (vector 0 1) (make-color-with-catch .95 .95 .95) #i(0 1) 3/4 'mus-error 0+i (make-delay 32)
- (lambda () #t) (curlet) (make-float-vector '(2 3)) :order 0 1 -1 #f #t () #()))
-
- ;; ---------------- 2 Args
- (for-each
- (lambda (arg1)
- (for-each
- (lambda (arg2)
- (for-each
- (lambda (n)
- (catch #t
- (lambda () (n arg1 arg2))
- (lambda args (car args))))
- xm-procs2))
- (list win 1.5 "/hiho" (list 0 1) 1234 (make-float-vector 3) (make-color-with-catch .95 .95 .95) #i(0 1) 3/4 (vector 0 1)
- 0+i (make-delay 32) :feedback -1 0 #f #t () #())))
- (list win 1.5 "/hiho" (list 0 1) 1234 (make-float-vector 3) (make-color-with-catch .95 .95 .95) #i(0 1) 3/4 (vector 0 1)
- 0+i (make-delay 32) :frequency -1 0 #f #t () #()))
-
- (when all-args
- ;; ---------------- 3 Args
- (let ((a1 (list win 1.5 "/hiho" (list 0 1) 1234 (make-float-vector 3) #i(0 1) 0+i (make-delay 32) (vector 0 1)
- :start -1 0 #f #t () #()))
- (a2 (list win 1.5 "/hiho" (list 0 1) 1234 (make-float-vector 3) #i(0 1) 0+i (make-delay 32) (vector 0 1)
- :phase -1 0 #f #t () #()))
- (a3 (list win 1.5 "/hiho" (list 0 1) 1234 (make-float-vector 3) #i(0 1) 0+i (make-delay 32) (vector 0 1)
- :channels -1 0 #f #t () #())))
- (for-each
- (lambda (arg1)
- (for-each
- (lambda (arg2)
- (for-each
- (lambda (arg3)
- (for-each
- (lambda (n)
- (catch #t
- (lambda () (n arg1 arg2 arg3))
- (lambda args (car args))))
- xm-procs3))
- a1))
- a2))
- a3)))
-
- (let ((struct-accessors #(.pixel .red .green .blue .flags .pad .x .y .width .height .angle1 .angle2 .ptr
- .x1 .y1 .x2 .y2 .dashes .dash_offset .clip_mask .clip_y_origin .clip_x_origin .graphics_exposures
- .subwindow_mode .font .ts_y_origin .ts_x_origin .stipple .tile .arc_mode .fill_rule .fill_style
- .join_style .cap_style .line_style .line_width .background .foreground .plane_mask .function .delta
- .nchars .chars .name .depth .visual .mwidth .mheight .ndepths .depths .root_depth .root_visual
- .default_gc .cmap .white_pixel .black_pixel .max_maps .min_maps .backing_store .save_unders .root_input_mask
- .lbearing .rbearing .ascent .descent .attributes .card32 .fid .properties .min_bounds .max_bounds .per_char
- .input .initial_state .icon_pixmap .icon_window .icon_x .icon_y .icon_mask .window_group .visualid
- .class .red_mask .green_mask .blue_mask .bits_per_rgb .map_entries .nvisuals .visuals .bits_per_pixel
- .background_pixmap .background_pixel .border_pixmap .border_pixel .bit_gravity .win_gravity .backing_planes
- .backing_pixel .save_under .event_mask .do_not_propagate_mask .cursor .map_installed .map_state .all_event_masks
- .your_event_mask .screen .xoffset .byte_order .bitmap_unit .bitmap_bit_order .bitmap_pad .bytes_per_line
- .obdata .sibling .stack_mode .red_max .red_mult .green_max .green_mult .blue_max .blue_mult .base_pixel
- .killid .data .min_height .max_height .min_width .max_width .height_inc .width_inc .page_number
- .page_widget .status_area_widget .major_tab_widget .minor_tab_widget .source_data .location_data .parm
- .parm_format .parm_length .parm_type .transfer_id .destination_data .remaining .item_or_text .auto_selection_type
- .new_outline_state .prev_page_number .prev_page_widget .rendition .render_table
- .crossed_boundary
- .client_data .status .font_name .tag .traversal_destination .dragProtocolStyle .direction .reason
- .timeStamp .operation .operations .dropSiteStatus .dropAction .iccHandle .completionStatus .dragContext
- .animate .length .click_count .widget .item_position .callbackstruct
- .set .item .item_length .selected_items .selected_item_count .selected_item_positions .selection_type
- .mask .mask_length .dir .dir_length .pattern .pattern_length .position .currInsert .newInsert .startPos
- .endPos .text .request_code .error_code .first_keycode .request .resourceid .format .message_type .new
- .property .display .target .requestor .owner .selection .atom .place .value_mask .above .from_configure
- .event .override_redirect .border_width .parent .minor_code .major_code .drawable .count .key_vector .focus
- .detail .mode .is_hint .button .same_screen .keycode .state .y_root .x_root .root .time .subwindow .window
- .send_event .serial .type .value .doit .colormap .menuToPost .postIt))
- (dpy (XtDisplay (cadr (main-widgets))))
- (win (XtWindow (cadr (main-widgets)))))
-
- ;; ---------------- 0 Args
- (for-each
- (lambda (name)
- (let ((n (symbol->value name)))
- (let ((tag
- (catch #t
- n
- (lambda args (car args)))))
- (if (not (memq tag '(wrong-type-arg wrong-number-of-args)))
- (snd-display "(~A) -> ~A" name tag)))
- (if (dilambda? n)
- (let ((tag
- (catch #t
- (lambda ()
- (set! (n) 0))
- (lambda args (car args)))))
- (if (not (eq? tag 'wrong-number-of-args))
- (snd-display "(~A) -> ~A" name tag))))))
- struct-accessors)
-
- ;; ---------------- 1 Arg
- (for-each
- (lambda (arg)
- (for-each
- (lambda (name)
- (let ((n (symbol->value name)))
- (let ((tag
- (catch #t
- (lambda () (n arg))
- (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg))
- (snd-display "(~A ~A) -> ~A" name arg tag)))
- (when (dilambda? n)
- (let ((tag
- (catch #t
- (lambda () (set! (n arg) 0))
- (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg))
- (snd-display "(~A ~A) -> ~A" name arg tag)))
- (let ((tag
- (catch #t
- (lambda () (set! (n 0) arg))
- (lambda args (car args)))))
- (if (not (eq? tag 'wrong-type-arg))
- (snd-display "(set ~A ~A) -> ~A" name arg tag))))))
- struct-accessors))
- (list dpy win 1.5 "/hiho" 1234 #f #\c #()))))
+;;; ---------------- test 23: errors ----------------
- (show-sounds-in-directory))))
-
-
-
-;;; ---------------- test 24: GL --------------------
-
-(define (snd_test_24)
- (when (and (provided? 'snd-motif)
- (provided? 'gl)
- (provided? 'xm))
-
- (with-let (sublet *gl*)
- (require snd-snd-gl.scm)
- (gl-info)
- (if all-args (gl-dump-state))
- (let ((gl-procs
- (vector
- glXChooseVisual glXCopyContext glXCreateContext glXCreateGLXPixmap glXDestroyContext glXDestroyGLXPixmap glXGetConfig
- glXGetCurrentContext glXGetCurrentDrawable glXIsDirect glXMakeCurrent glXQueryExtension glXQueryVersion glXSwapBuffers
- glXUseXFont glXWaitGL glXWaitX glXGetClientString glXQueryServerString glXQueryExtensionsString glClearIndex glClearColor
- glClear glIndexMask glColorMask glAlphaFunc glBlendFunc glLogicOp glCullFace glFrontFace glPointSize glLineWidth glLineStipple
- glPolygonMode glPolygonOffset glPolygonStipple glEdgeFlag glScissor glClipPlane glGetClipPlane
- glDrawBuffer glReadBuffer glEnable glDisable glIsEnabled glEnableClientState glDisableClientState glGetBooleanv
- glGetDoublev glGetFloatv glGetIntegerv glPushAttrib glPopAttrib glPushClientAttrib glPopClientAttrib glRenderMode
- glGetError glGetString glFinish glFlush glHint glClearDepth glDepthFunc glDepthMask glDepthRange glClearAccum glAccum
- glMatrixMode glOrtho glFrustum glViewport glPushMatrix glPopMatrix glLoadIdentity glLoadMatrixd glLoadMatrixf
- glMultMatrixd glMultMatrixf glRotated glRotatef glScaled glScalef glTranslated glTranslatef glIsList glDeleteLists
- glGenLists glNewList glEndList glCallList glCallLists glListBase glBegin glEnd glVertex2d glVertex2f glVertex2i glVertex2s
- glVertex3d glVertex3f glVertex3i glVertex3s glVertex4d glVertex4f glVertex4i glVertex4s glNormal3b glNormal3d glNormal3f
- glNormal3i glNormal3s glIndexd glIndexf glIndexi glIndexs glIndexub glColor3b glColor3d glColor3f glColor3i glColor3s
- glColor3ub glColor3ui glColor3us glColor4b glColor4d glColor4f glColor4i glColor4s glColor4ub glColor4ui glColor4us glTexCoord1d
- glTexCoord1f glTexCoord1i glTexCoord1s glTexCoord2d glTexCoord2f glTexCoord2i glTexCoord2s glTexCoord3d glTexCoord3f glTexCoord3i
- glTexCoord3s glTexCoord4d glTexCoord4f glTexCoord4i glTexCoord4s glRasterPos2d glRasterPos2f glRasterPos2i glRasterPos2s
- glRasterPos3d glRasterPos3f glRasterPos3i glRasterPos3s glRasterPos4d glRasterPos4f glRasterPos4i glRasterPos4s glRectd
- glRectf glRecti glRects glVertexPointer glNormalPointer glColorPointer glIndexPointer glTexCoordPointer glEdgeFlagPointer
- glGetPointerv glArrayElement glDrawArrays glDrawElements glInterleavedArrays glShadeModel glLightf glLighti glGetLightfv
- glGetLightiv glLightModelf glLightModeli glMaterialf glMateriali glGetMaterialfv glGetMaterialiv glColorMaterial glPixelZoom
- glPixelStoref glPixelStorei glPixelTransferf glPixelTransferi glGetPixelMapfv glGetPixelMapuiv glGetPixelMapusv glBitmap
- glReadPixels glDrawPixels glCopyPixels glStencilFunc glStencilMask glStencilOp glClearStencil glTexGend glTexGenf glTexGeni
- glGetTexGendv glGetTexGenfv glGetTexGeniv glTexEnvf glTexEnvi glGetTexEnvfv glGetTexEnviv glTexParameterf glTexParameteri
- glGetTexParameterfv glGetTexParameteriv glGetTexLevelParameterfv glGetTexLevelParameteriv glTexImage1D glTexImage2D
- glGenTextures glDeleteTextures glBindTexture glAreTexturesResident glIsTexture glTexSubImage1D glTexSubImage2D glCopyTexImage1D
- glCopyTexImage2D glCopyTexSubImage1D glCopyTexSubImage2D glMap1d glMap1f glMap2d glMap2f glGetMapdv glGetMapfv glGetMapiv
- glEvalCoord1d glEvalCoord1f glEvalCoord2d glEvalCoord2f glMapGrid1d glMapGrid1f glMapGrid2d glMapGrid2f glEvalPoint1
- glEvalPoint2 glEvalMesh1 glEvalMesh2 glFogf glFogi glFeedbackBuffer glPassThrough glSelectBuffer glInitNames glLoadName
- glPushName glPopName glDrawRangeElements glTexImage3D glTexSubImage3D glCopyTexSubImage3D glColorTable glColorSubTable
- glCopyColorSubTable glCopyColorTable glGetColorTableParameterfv glGetColorTableParameteriv glBlendEquation glBlendColor
- glHistogram glResetHistogram glGetHistogram glGetHistogramParameterfv glGetHistogramParameteriv glMinmax glResetMinmax
- glGetMinmax glGetMinmaxParameterfv glGetMinmaxParameteriv glConvolutionFilter1D glConvolutionFilter2D glConvolutionParameterf
- glConvolutionParameteri glCopyConvolutionFilter1D glCopyConvolutionFilter2D glSeparableFilter2D ))
- (glu-procs
- (if (not (defined? 'gluBeginPolygon))
- ()
- (list
- gluBeginPolygon gluBuild1DMipmaps gluLookAt gluNewTess gluNextContour gluTessEndContour
- gluBuild2DMipmaps gluDeleteTess gluEndPolygon gluErrorString gluGetString gluGetTessProperty
- gluOrtho2D gluPerspective gluPickMatrix gluProject gluScaleImage gluTessBeginContour gluTessBeginPolygon
- gluTessEndPolygon gluTessNormal gluTessProperty gluTessVertex gluUnProject))))
-
- ;; ---------------- 1 Arg
- (for-each
- (lambda (arg)
- (for-each
- (lambda (n)
- (catch #t
- (lambda () (n arg))
- (lambda args (car args))))
- gl-procs))
- '((0 1) 0+i))
-
- (when (pair? glu-procs)
- (for-each
- (lambda (arg)
- (for-each
- (lambda (n)
- (catch #t
- (lambda () (n arg))
- (lambda args (car args))))
- gl-procs))
- '((0 1) 0+i))
-
- (let ((ind (open-sound "oboe.snd")))
- (glXMakeCurrent ((*motif* 'XtDisplay) (cadr (main-widgets)))
- ((*motif* 'XtWindow) (car (channel-widgets)))
- (snd-gl-context))
- (glEnable GL_DEPTH_TEST)
- (glDepthFunc GL_LEQUAL)
- (glClearDepth 1.0)
- (glClearColor 0.0 0.0 0.0 0.0)
- (glLoadIdentity)
- (gluPerspective 40.0 1.0 10.0 200.0)
- (glTranslatef 0.0 0.0 -50.0)
- (glRotatef -58.0 0.0 1.0 0.0)
- (let ((vals ((*motif* 'XtVaGetValues) (car (channel-widgets)) (list (*motif* 'XmNwidth) 0 (*motif* 'XmNheight) 0))))
- (glViewport 0 0 (vals 1) (vals 3)))
- (glClear (logior GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT))
- (glBegin GL_POLYGON)
- (glColor3f 0.0 0.0 0.0) (glVertex3f -10.0 -10.0 0.0)
- (glColor3f 0.7 0.7 0.7) (glVertex3f 10.0 -10.0 0.0)
- (glColor3f 1.0 1.0 1.0) (glVertex3f -10.0 10.0 0.0)
- (glEnd)
- (glBegin GL_POLYGON)
- (glColor3f 1.0 1.0 0.0) (glVertex3f 0.0 -10.0 -10.0)
- (glColor3f 0.0 1.0 0.7) (glVertex3f 0.0 -10.0 10.0)
- (glColor3f 0.0 0.0 1.0) (glVertex3f 0.0 5.0 -10.0)
- (glEnd)
- (glBegin GL_POLYGON)
- (glColor3f 1.0 1.0 0.0) (glVertex3f -10.0 6.0 4.0)
- (glColor3f 1.0 0.0 1.0) (glVertex3f -10.0 3.0 4.0)
- (glColor3f 0.0 0.0 1.0) (glVertex3f 4.0 -9.0 -10.0)
- (glColor3f 1.0 0.0 1.0) (glVertex3f 4.0 -6.0 -10.0)
- (glEnd)
- (glXSwapBuffers ((*motif* 'XtDisplay) (cadr (main-widgets)))
- ((*motif* 'XtWindow) (car (channel-widgets))))
- (glFlush)
- (close-sound ind)))))))
-
-(if (and with-gui
- (provided? 'xm)
- (= snd-test 25)
- (file-exists? "misc.scm"))
- (load "misc.scm"))
-
-
-
-;;; ---------------- test 25: errors ----------------
-
-(define snd_test_25
+(define snd_test_23
(let ((check-error-tag
(lambda (expected-tag thunk)
(let ((tag
@@ -45068,9 +41455,9 @@ EDITS: 1
(set-arity-ok
(lambda (func args)
(let ((arit (if (dilambda? func)
- (arity (procedure-setter func))
- (and (procedure? (procedure-setter func))
- (arity (procedure-setter func))))))
+ (arity (setter func))
+ (and (procedure? (setter func))
+ (arity (setter func))))))
(and (pair? arit)
(<= (car arit) args (cdr arit)))))))
@@ -46329,7 +42716,7 @@ EDITS: 1
n
(lambda args (car args)))))
(if (eq? err 'wrong-number-of-args)
- (snd-display "procs0: ~A ~A" err (procedure-documentation n)))))
+ (snd-display "procs0: ~A ~A" err (documentation n)))))
procs0)
(dismiss-all-dialogs)
(for-each close-sound (sounds))
@@ -46358,7 +42745,7 @@ EDITS: 1
(lambda () (n arg))
(lambda args
(if (eq? (car args) 'wrong-number-of-args)
- (snd-display "procs1 wna: ~A ~A ~A" arg args (procedure-documentation n))))))
+ (snd-display "procs1 wna: ~A ~A ~A" arg args (documentation n))))))
procs1))
main-args)
(for-each close-sound (sounds))
@@ -46374,7 +42761,7 @@ EDITS: 1
(lambda () (n arg1 arg2))
(lambda args
(if (eq? (car args) 'wrong-number-of-args)
- (snd-display "procs2: ~A ~A ~A ~A" arg1 arg2 args (procedure-documentation n))))))
+ (snd-display "procs2: ~A ~A ~A ~A" arg1 arg2 args (documentation n))))))
procs2))
main-args))
main-args)
@@ -46389,7 +42776,7 @@ EDITS: 1
(lambda () (set! (n) arg))
(lambda args
(if (eq? (car args) 'wrong-number-of-args)
- (snd-display "set-procs0: ~A" (procedure-documentation n))))))
+ (snd-display "set-procs0: ~A" (documentation n))))))
set-procs0))
main-args)
(for-each close-sound (sounds))
@@ -46405,7 +42792,7 @@ EDITS: 1
(lambda () (set! (n arg1) arg2))
(lambda args
(if (eq? (car args) 'wrong-number-of-args)
- (snd-display "set-procs1: ~A" (procedure-documentation n))))))
+ (snd-display "set-procs1: ~A" (documentation n))))))
set-procs1))
main-args))
main-args)
@@ -46425,7 +42812,7 @@ EDITS: 1
(lambda () (set! (n arg1 arg2) arg3))
(lambda args
(if (eq? (car args) 'wrong-number-of-args)
- (snd-display "set-procs2: ~A" (procedure-documentation n))))))
+ (snd-display "set-procs2: ~A" (documentation n))))))
set-procs2))
less-args))
less-args))
@@ -46446,10 +42833,10 @@ EDITS: 1
))))))))
-;;; ---------------- test 26: s7 ----------------
+;;; ---------------- test 24: s7 ----------------
(define s7test-exits #f)
-(define (snd_test_26)
+(define (snd_test_24)
(load "s7test.scm"))
(define test-funcs (make-vector (+ 1 total-tests)))
@@ -46487,8 +42874,6 @@ EDITS: 1
(set! (test-funcs 22) snd_test_22)
(set! (test-funcs 23) snd_test_23)
(set! (test-funcs 24) snd_test_24)
-(set! (test-funcs 25) snd_test_25)
-(set! (test-funcs 26) snd_test_26)
(define all-hooks
@@ -46565,9 +42950,8 @@ EDITS: 1
(else
(do ((i 0 (+ i 1)))
((> i total-tests))
- (when (and (not (<= 23 i 24))
- (or full-test
- (and keep-going (<= snd-test i))))
+ (when (or full-test
+ (and keep-going (<= snd-test i)))
(before-test-hook i)
(if hooked (set-all-hooks))
((vector-ref test-funcs i))
@@ -46733,7 +43117,7 @@ EDITS: 1
(if (defined? sym)
(let ((val (symbol->value sym)))
(if (and (procedure? val)
- (string=? "" (procedure-documentation val)))
+ (string=? "" (documentation val)))
(snd-display "~A " sym)))))
st))
|#
diff --git a/snd-trans.c b/snd-trans.c
index e75a517..d3663ae 100644
--- a/snd-trans.c
+++ b/snd-trans.c
@@ -141,7 +141,7 @@ static int read_midi_sample_dump(const char *oldname, const char *newname, char
STARTUP(oldname, newname, TRANS_BUF_SIZE, unsigned char);
totalin = read(fd, buf, TRANS_BUF_SIZE);
bits = buf[6];
- srate = (int)(1.0e9 / (float)((buf[7] + (buf[8] << 7) + (buf[9] << 14))));
+ srate = (int)(1.0e9 / (double)((buf[7] + (buf[8] << 7) + (buf[9] << 14))));
samples = (buf[10] + (buf[11] << 7) + (buf[12] << 14));
mus_bint_to_char((unsigned char *)(hdr + 16), srate);
mus_bint_to_char((unsigned char *)(hdr + 20), chans);
@@ -397,7 +397,7 @@ static int read_mus10(const char *oldname, const char *newname, char *hdr)
ssize_t totalin;
bool happy;
int osp;
- float fsrate, fraction;
+ double fsrate, fraction;
int srateH, srateL, sign, exponent, chans, mode;
STARTUP(oldname, newname, PDP_BUF_SIZE, unsigned char);
totalin = read(fd, buf, PDP_BUF_SIZE);
diff --git a/snd-x0.h b/snd-x0.h
index eb11e51..4a39776 100644
--- a/snd-x0.h
+++ b/snd-x0.h
@@ -69,7 +69,7 @@ typedef enum {NOT_ACTIVATABLE, ACTIVATABLE, ACTIVATABLE_BUT_NOT_FOCUSED} text_cr
#define rgb_t unsigned short
#define RGB_MAX 65535
#define float_to_rgb(Val) (rgb_t)(RGB_MAX * (Val))
-#define rgb_to_float(Val) (float)((float)(Val) / (float)RGB_MAX)
+#define rgb_to_float(Val) ((double)(Val) / (double)RGB_MAX)
typedef struct {
diff --git a/snd-xen.c b/snd-xen.c
index 014fcba..8123a4e 100644
--- a/snd-xen.c
+++ b/snd-xen.c
@@ -2967,7 +2967,7 @@ be written, or rely on the default (-1.0 or 1.0 depending on the sign of 'val').
}
#if HAVE_SCHEME
- Xen_define_typed_procedure("_snd_s7_error_handler_", g_snd_s7_error_handler_w, 0, 1, 0, "internal error redirection for snd/s7",
+ Xen_define_typed_procedure("_snd_s7_error_handler_", g_snd_s7_error_handler_w, 1, 0, 0, "internal error redirection for snd/s7",
s7_make_signature(s7, 2, b, s));
Xen_eval_C_string("(define redo-edit redo)"); /* consistency with Ruby */
@@ -2998,7 +2998,7 @@ be written, or rely on the default (-1.0 or 1.0 depending on the sign of 'val').
(format ap-port \"~%~A: ~A\" \
(car binding) \
(if (procedure? (cdr binding)) \
- (procedure-documentation (cdr binding)) \
+ (documentation (cdr binding)) \
(cdr binding)))))) \
ap-env) \
#f))");
diff --git a/snd-xref.c b/snd-xref.c
index 742d01f..426b8a8 100644
--- a/snd-xref.c
+++ b/snd-xref.c
@@ -1,5 +1,5 @@
/* Snd help index (generated by make-index.scm) */
-#define HELP_NAMES_SIZE 1576
+#define HELP_NAMES_SIZE 1578
#if HAVE_SCHEME || HAVE_FORTH
static const char *help_names[HELP_NAMES_SIZE] = {
"*#readers*", "abcos", "abcos?", "abort", "absin", "absin?",
@@ -44,151 +44,151 @@ static const char *help_names[HELP_NAMES_SIZE] = {
"delete-file-sorter", "delete-mark", "delete-marks", "delete-sample", "delete-samples", "delete-samples-and-smooth",
"delete-selection", "delete-selection-and-smooth", "delete-transform", "describe-hook", "describe-mark", "dht",
"dialog-widgets", "dilambda", "disable-control-panel", "display-bark-fft", "display-correlation", "display-db",
- "display-edits", "display-energy", "dissolve-fade", "dither-channel", "dither-sound", "dolph",
- "dot-product", "dot-size", "down-oct", "draw-axes", "draw-dot", "draw-dots",
- "draw-line", "draw-lines", "draw-mark-hook", "draw-mix-hook", "draw-string", "drone",
- "drop sites", "drop-hook", "during-open-hook", "edit-fragment", "edit-header-dialog", "edit-hook",
- "edit-list->function", "edit-position", "edit-properties", "edit-property", "edit-tree", "edits",
- "edot-product", "effects-hook", "elliptic filters", "env", "env-any", "env-channel",
- "env-channel-with-base", "env-expt-channel", "env-interp", "env-mixes", "env-selection", "env-sound",
- "env-sound-interp", "env-squared-channel", "env?", "enved-base", "enved-clip?", "enved-dialog",
- "enved-envelope", "enved-filter", "enved-filter-order", "enved-hook", "enved-in-dB", "enved-power",
- "enved-style", "enved-target", "enved-wave?", "enved-waveform-color", "envelope-interp", "enveloped-mix",
- "eoddcos", "eoddcos?", "eps-bottom-margin", "eps-file", "eps-left-margin", "eps-size",
- "ercos", "ercos?", "*error-hook*", "erssb", "erssb?", "even-multiple",
- "even-weight", "every-sample?", "exit", "exit-hook", "expand-control", "expand-control-bounds",
- "expand-control-hop", "expand-control-jitter", "expand-control-length", "expand-control-ramp", "expand-control?", "explode-sf2",
- "exponentially-weighted-moving-average", "expsnd", "expsrc", "*features*", "feedback fm", "fft",
- "fft-cancel", "fft-edit", "fft-env-edit", "fft-env-interp", "fft-log-frequency", "fft-log-magnitude",
- "fft-smoother", "fft-squelch", "fft-window", "fft-window-alpha", "fft-window-beta", "fft-with-phases",
- "file database", "file->array", "file->frample", "file->frample?", "file->sample", "file->sample?",
- "file-name", "fill!", "fill-polygon", "fill-rectangle", "filter", "filter-channel",
- "filter-control-coeffs", "filter-control-envelope", "filter-control-in-dB", "filter-control-in-hz", "filter-control-order", "filter-control-waveform-color",
- "filter-control?", "filter-fft", "filter-selection", "filter-selection-and-smooth", "filter-sound", "filter?",
- "filtered-comb", "filtered-comb-bank", "filtered-comb-bank?", "filtered-comb?", "find-dialog", "find-mark",
- "find-mix", "find-sound", "finfo", "finish-progress-report", "fir-filter", "fir-filter?",
- "firmant", "firmant?", "fit-selection-between-marks", "flatten-partials", "float-vector", "float-vector*",
- "float-vector+", "float-vector->channel", "float-vector->list", "float-vector->string", "float-vector-abs!", "float-vector-add!",
- "float-vector-equal?", "float-vector-fill!", "float-vector-length", "float-vector-max", "float-vector-min", "float-vector-move!",
- "float-vector-multiply!", "float-vector-offset!", "float-vector-peak", "float-vector-polynomial", "float-vector-ref", "float-vector-reverse!",
- "float-vector-scale!", "float-vector-set!", "float-vector-subseq", "float-vector-subtract!", "float-vector?", "flocsig",
- "flocsig?", "flute model", "fm-bell", "fm-drum", "fm-noise", "fm-parallel-component",
- "fm-talker", "fm-trumpet", "fm-violin", "fm-voice", "fmssb", "fmssb?",
- "focus-widget", "FOF synthesis", "fofins", "for-each-child", "for-each-sound-file", "Forbidden Planet",
- "foreground-color", "forget-region", "formant", "formant-bank", "formant-bank?", "formant?",
- "format", "fp", "fractional-fourier-transform", "frample->file", "frample->file?", "frample->frample",
- "framples", "free-player", "free-sampler", "freeverb", "fullmix", "funclet",
- "gaussian-distribution", "gc-off", "gc-on", "gensym", "gensym?", "gl-graph->ps",
- "glSpectrogram", "goertzel", "goto-listener-end", "grani", "granulate", "granulate?",
- "granulated-sound-interp", "graph", "graph->ps", "graph-color", "graph-cursor", "graph-data",
- "graph-hook", "graph-style", "graphic equalizer", "graphs-horizontal", "green-noise", "green-noise-interp",
- "green-noise-interp?", "green-noise?", "grid-density", "harmonicizer", "Hartley transform", "hash-table",
- "hash-table*", "hash-table-entries", "hash-table-ref", "hash-table-set!", "hash-table?", "header-type",
- "hello-dentist", "help-dialog", "help-hook", "hide-widget", "highlight-color", "hilbert-transform",
- "hook-functions", "hook-member", "html", "html-dir", "html-program", "hz->radians",
- "iir-filter", "iir-filter?", "in", "in-any", "ina", "inb",
- "info-dialog", "init-ladspa", "initial-beg", "initial-dur", "initial-graph-hook", "inlet",
- "insert-channel", "insert-file-dialog", "insert-region", "insert-sample", "insert-samples", "insert-selection",
- "insert-silence", "insert-sound", "int-vector", "int-vector-ref", "int-vector-set!", "int-vector?",
- "integer->colormap", "integer->mark", "integer->mix", "integer->region", "integer->sound", "integer->transform",
- "integrate-envelope", "invert-filter", "iterate", "iterator-at-end?", "iterator-sequence", "iterator?",
- "izcos", "izcos?", "j0evencos", "j0evencos?", "j0j1cos", "j0j1cos?",
- "j2cos", "j2cos?", "jc-reverb", "jjcos", "jjcos?", "jncos",
- "jncos?", "jpcos", "jpcos?", "just-sounds", "jycos", "jycos?",
- "k2cos", "k2cos?", "k2sin", "k2sin?", "k2ssb", "k2ssb?",
- "k3sin", "k3sin?", "kalman-filter-channel", "key", "key-binding", "key-press-hook",
- "krksin", "krksin?", "ladspa-descriptor", "ladspa-dir", "lambda*", "lbj-piano",
- "left-sample", "let->list", "let-ref", "let-set!", "let-temporarily", "let?",
- "linear->db", "linear-src-channel", "lint for scheme", "lisp-graph-hook", "lisp-graph-style", "lisp-graph?",
- "list->float-vector", "list-ladspa", "listener-click-hook", "listener-color", "listener-colorized", "listener-font",
- "listener-prompt", "listener-selection", "listener-text-color", "little-endian?", "*load-hook*", "*load-path*",
- "locate-zero", "locsig", "locsig-ref", "locsig-reverb-ref", "locsig-reverb-set!", "locsig-set!",
- "locsig-type", "locsig?", "log-freq-start", "lpc-coeffs", "lpc-predict", "macro?",
- "macroexpand", "main-menu", "main-widgets", "make-abcos", "make-absin", "make-adjustable-sawtooth-wave",
- "make-adjustable-square-wave", "make-adjustable-triangle-wave", "make-all-pass", "make-all-pass-bank", "make-asyfm", "make-asymmetric-fm",
- "make-bandpass", "make-bandstop", "make-bess", "make-biquad", "make-birds", "make-blackman",
- "make-brown-noise", "make-byte-vector", "make-channel-drop-site", "make-color", "make-comb", "make-comb-bank",
- "make-convolve", "make-delay", "make-differentiator", "make-env", "make-eoddcos", "make-ercos",
- "make-erssb", "make-fft-window", "make-file->frample", "make-file->sample", "make-filter", "make-filtered-comb",
- "make-filtered-comb-bank", "make-fir-coeffs", "make-fir-filter", "make-firmant", "make-float-vector", "make-flocsig",
- "make-fmssb", "make-formant", "make-formant-bank", "make-frample->file", "make-granulate", "make-graph-data",
- "make-green-noise", "make-green-noise-interp", "make-hash-table", "make-highpass", "make-hilbert-transform", "make-hook",
- "make-iir-filter", "make-int-vector", "make-iterator", "make-izcos", "make-j0evencos", "make-j0j1cos",
- "make-j2cos", "make-jjcos", "make-jncos", "make-jpcos", "make-jycos", "make-k2cos",
- "make-k2sin", "make-k2ssb", "make-k3sin", "make-krksin", "make-locsig", "make-lowpass",
- "make-mix-sampler", "make-move-sound", "make-moving-autocorrelation", "make-moving-average", "make-moving-fft", "make-moving-max",
- "make-moving-norm", "make-moving-pitch", "make-moving-scentroid", "make-moving-spectrum", "make-n1cos", "make-nchoosekcos",
- "make-ncos", "make-nkssb", "make-noddcos", "make-noddsin", "make-noddssb", "make-noid",
- "make-notch", "make-nrcos", "make-nrsin", "make-nrssb", "make-nrxycos", "make-nrxysin",
- "make-nsin", "make-nsincos", "make-nssb", "make-nxy1cos", "make-nxy1sin", "make-nxycos",
- "make-nxysin", "make-one-pole", "make-one-pole-all-pass", "make-one-zero", "make-oscil", "make-oscil-bank",
- "make-phase-vocoder", "make-pink-noise", "make-pixmap", "make-player", "make-polyoid", "make-polyshape",
- "make-polywave", "make-pulse-train", "make-pulsed-env", "make-r2k!cos", "make-r2k2cos", "make-ramp",
- "make-rand", "make-rand-interp", "make-rcos", "make-readin", "make-region", "make-region-sampler",
- "make-rk!cos", "make-rk!ssb", "make-rkcos", "make-rkoddssb", "make-rksin", "make-rkssb",
- "make-round-interp", "make-rssb", "make-rxycos", "make-rxyk!cos", "make-rxyk!sin", "make-rxysin",
- "make-sample->file", "make-sampler", "make-sawtooth-wave", "make-selection", "make-sinc-train", "make-snd->sample",
- "make-sound-box", "make-spencer-filter", "make-square-wave", "make-src", "make-ssb-am", "make-table-lookup",
- "make-table-lookup-with-env", "make-tanhsin", "make-triangle-wave", "make-two-pole", "make-two-zero", "make-variable-display",
- "make-variable-graph", "make-wave-train", "make-wave-train-with-env", "map-channel", "map-sound-files", "maracas",
- "mark->integer", "mark-click-hook", "mark-click-info", "mark-color", "mark-context", "mark-drag-hook",
- "mark-explode", "mark-home", "mark-hook", "mark-loops", "mark-name", "mark-name->id",
- "mark-properties", "mark-property", "mark-sample", "mark-sync", "mark-sync-color", "mark-sync-max",
- "mark-tag-height", "mark-tag-width", "mark?", "marks", "match-sound-files", "max-envelope",
- "max-regions", "max-transform-peaks", "maxamp", "maxamp-position", "menu-widgets", "menus, optional",
- "min-dB", "mix", "mix->float-vector", "mix->integer", "mix-amp", "mix-amp-env",
- "mix-channel", "mix-click-hook", "mix-click-info", "mix-click-sets-amp", "mix-color", "mix-dialog-mix",
- "mix-drag-hook", "mix-file-dialog", "mix-float-vector", "mix-home", "mix-length", "mix-maxamp",
- "mix-name", "mix-name->id", "mix-position", "mix-properties", "mix-property", "mix-region",
- "mix-release-hook", "mix-sampler?", "mix-selection", "mix-sound", "mix-speed", "mix-sync",
- "mix-sync-max", "mix-tag-height", "mix-tag-width", "mix-tag-y", "mix-waveform-height", "mix?",
- "mixes", "mono->stereo", "moog-filter", "morally-equal?", "mouse-click-hook", "mouse-drag-hook",
- "mouse-enter-graph-hook", "mouse-enter-label-hook", "mouse-enter-listener-hook", "mouse-enter-text-hook", "mouse-leave-graph-hook", "mouse-leave-label-hook",
- "mouse-leave-listener-hook", "mouse-leave-text-hook", "mouse-press-hook", "move-locsig", "move-mixes", "move-sound",
- "move-sound?", "move-syncd-marks", "moving-autocorrelation", "moving-autocorrelation?", "moving-average", "moving-average?",
- "moving-fft", "moving-fft?", "moving-length", "moving-max", "moving-max?", "moving-norm",
- "moving-norm?", "moving-pitch", "moving-pitch?", "moving-rms", "moving-scentroid", "moving-scentroid?",
- "moving-spectrum", "moving-spectrum?", "moving-sum", "mpg", "mus-alsa-buffer-size", "mus-alsa-buffers",
- "mus-alsa-capture-device", "mus-alsa-device", "mus-alsa-playback-device", "mus-alsa-squelch-warning", "mus-array-print-length", "mus-bytes-per-sample",
- "mus-channel", "mus-channels", "mus-chebyshev-tu-sum", "mus-clipping", "mus-close", "mus-copy",
- "mus-data", "mus-describe", "mus-error-hook", "mus-error-type->string", "mus-expand-filename", "mus-feedback",
- "mus-feedforward", "mus-fft", "mus-file-buffer-size", "mus-file-clipping", "mus-file-mix", "mus-file-name",
- "mus-float-equal-fudge-factor", "mus-frequency", "mus-generator?", "mus-header-raw-defaults", "mus-header-type->string", "mus-header-type-name",
- "mus-hop", "mus-increment", "mus-input?", "mus-interp-type", "mus-interpolate", "mus-length",
- "mus-location", "mus-max-malloc", "mus-max-table-size", "mus-name", "mus-offset", "mus-order",
- "mus-oss-set-buffers", "mus-output?", "mus-phase", "mus-ramp", "mus-rand-seed", "mus-random",
- "mus-reset", "mus-run", "mus-sample-type->string", "mus-sample-type-name", "mus-scaler", "mus-sound-chans",
- "mus-sound-comment", "mus-sound-data-location", "mus-sound-datum-size", "mus-sound-duration", "mus-sound-forget", "mus-sound-framples",
- "mus-sound-header-type", "mus-sound-length", "mus-sound-loop-info", "mus-sound-mark-info", "mus-sound-maxamp", "mus-sound-maxamp-exists?",
- "mus-sound-path", "mus-sound-preload", "mus-sound-prune", "mus-sound-report-cache", "mus-sound-sample-type", "mus-sound-samples",
- "mus-sound-srate", "mus-sound-type-specifier", "mus-sound-write-date", "mus-srate", "mus-width", "mus-xcoeff",
- "mus-xcoeffs", "mus-ycoeff", "mus-ycoeffs", "n1cos", "n1cos?", "name-click-hook",
- "nchoosekcos", "nchoosekcos?", "ncos", "ncos2?", "ncos4?", "ncos?",
- "new-sound", "new-sound-dialog", "new-sound-hook", "new-widget-hook", "next-sample", "nkssb",
- "nkssb-interp", "nkssb?", "noddcos", "noddcos?", "noddsin", "noddsin?",
- "noddssb", "noddssb?", "noid", "normalize-channel", "normalize-envelope", "normalize-partials",
- "normalize-sound", "normalized-mix", "notch", "notch-channel", "notch-selection", "notch-sound",
- "notch?", "npcos?", "nrcos", "nrcos?", "nrev", "nrsin",
- "nrsin?", "nrssb", "nrssb-interp", "nrssb?", "nrxycos", "nrxycos?",
- "nrxysin", "nrxysin?", "nsin", "nsin?", "nsincos", "nsincos?",
- "nssb", "nssb?", "nxy1cos", "nxy1cos?", "nxy1sin", "nxy1sin?",
- "nxycos", "nxycos?", "nxysin", "nxysin?", "object->let", "object->string",
- "odd-multiple", "odd-weight", "offset-channel", "offset-sound", "one-pole", "one-pole-all-pass",
- "one-pole-all-pass?", "one-pole?", "one-zero", "one-zero?", "open-file-dialog", "open-file-dialog-directory",
- "open-hook", "open-next-file-in-directory", "open-raw-sound", "open-raw-sound-hook", "open-sound", "openlet",
- "openlet?", "orientation-hook", "oscil", "oscil-bank", "oscil-bank?", "oscil?",
- "out-any", "out-bank", "outa", "outlet", "*output*", "output-comment-hook",
- "overlay-rms-env", "owlet", "pad-channel", "pad-marks", "pad-sound", "pair-filename",
- "pair-line-number", "pan-mix", "pan-mix-float-vector", "partials->polynomial", "partials->wave", "pausing",
- "peak-env-dir", "peaks", "peaks-font", "phase-partials->wave", "phase-vocoder", "phase-vocoder?",
- "piano model", "pink-noise", "pink-noise?", "pins", "place-sound", "play",
- "play-arrow-size", "play-between-marks", "play-hook", "play-mixes", "play-often", "play-region-forever",
- "play-sine", "play-sines", "play-syncd-marks", "play-until-c-g", "play-with-envs", "player-home",
- "player?", "players", "playing", "pluck", "polar->rectangular", "polynomial",
- "polynomial operations", "polyoid", "polyoid-env", "polyoid?", "polyshape", "polyshape?",
- "polywave", "polywave?", "port-filename", "port-line-number", "position->x", "position->y",
- "position-color", "power-env", "pqw", "pqw-vox", "preferences-dialog", "previous-sample",
- "print-dialog", "print-length", "procedure-documentation", "procedure-setter", "procedure-signature", "procedure-source",
+ "display-edits", "display-energy", "dissolve-fade", "dither-channel", "dither-sound", "documentation",
+ "dolph", "dot-product", "dot-size", "down-oct", "draw-axes", "draw-dot",
+ "draw-dots", "draw-line", "draw-lines", "draw-mark-hook", "draw-mix-hook", "draw-string",
+ "drone", "drop sites", "drop-hook", "during-open-hook", "edit-fragment", "edit-header-dialog",
+ "edit-hook", "edit-list->function", "edit-position", "edit-properties", "edit-property", "edit-tree",
+ "edits", "edot-product", "effects-hook", "elliptic filters", "env", "env-any",
+ "env-channel", "env-channel-with-base", "env-expt-channel", "env-interp", "env-mixes", "env-selection",
+ "env-sound", "env-sound-interp", "env-squared-channel", "env?", "enved-base", "enved-clip?",
+ "enved-dialog", "enved-envelope", "enved-filter", "enved-filter-order", "enved-hook", "enved-in-dB",
+ "enved-power", "enved-style", "enved-target", "enved-wave?", "enved-waveform-color", "envelope-interp",
+ "enveloped-mix", "eoddcos", "eoddcos?", "eps-bottom-margin", "eps-file", "eps-left-margin",
+ "eps-size", "ercos", "ercos?", "*error-hook*", "erssb", "erssb?",
+ "even-multiple", "even-weight", "every-sample?", "exit", "exit-hook", "expand-control",
+ "expand-control-bounds", "expand-control-hop", "expand-control-jitter", "expand-control-length", "expand-control-ramp", "expand-control?",
+ "explode-sf2", "exponentially-weighted-moving-average", "expsnd", "expsrc", "*features*", "feedback fm",
+ "fft", "fft-cancel", "fft-edit", "fft-env-edit", "fft-env-interp", "fft-log-frequency",
+ "fft-log-magnitude", "fft-smoother", "fft-squelch", "fft-window", "fft-window-alpha", "fft-window-beta",
+ "fft-with-phases", "file database", "file->array", "file->frample", "file->frample?", "file->sample",
+ "file->sample?", "file-name", "fill!", "fill-polygon", "fill-rectangle", "filter",
+ "filter-channel", "filter-control-coeffs", "filter-control-envelope", "filter-control-in-dB", "filter-control-in-hz", "filter-control-order",
+ "filter-control-waveform-color", "filter-control?", "filter-fft", "filter-selection", "filter-selection-and-smooth", "filter-sound",
+ "filter?", "filtered-comb", "filtered-comb-bank", "filtered-comb-bank?", "filtered-comb?", "find-dialog",
+ "find-mark", "find-mix", "find-sound", "finfo", "finish-progress-report", "fir-filter",
+ "fir-filter?", "firmant", "firmant?", "fit-selection-between-marks", "flatten-partials", "float-vector",
+ "float-vector*", "float-vector+", "float-vector->channel", "float-vector->list", "float-vector->string", "float-vector-abs!",
+ "float-vector-add!", "float-vector-equal?", "float-vector-fill!", "float-vector-length", "float-vector-max", "float-vector-min",
+ "float-vector-move!", "float-vector-multiply!", "float-vector-offset!", "float-vector-peak", "float-vector-polynomial", "float-vector-ref",
+ "float-vector-reverse!", "float-vector-scale!", "float-vector-set!", "float-vector-subseq", "float-vector-subtract!", "float-vector?",
+ "flocsig", "flocsig?", "flute model", "fm-bell", "fm-drum", "fm-noise",
+ "fm-parallel-component", "fm-talker", "fm-trumpet", "fm-violin", "fm-voice", "fmssb",
+ "fmssb?", "focus-widget", "FOF synthesis", "fofins", "for-each-child", "for-each-sound-file",
+ "Forbidden Planet", "foreground-color", "forget-region", "formant", "formant-bank", "formant-bank?",
+ "formant?", "format", "fp", "fractional-fourier-transform", "frample->file", "frample->file?",
+ "frample->frample", "framples", "free-player", "free-sampler", "freeverb", "fullmix",
+ "funclet", "gaussian-distribution", "gc-off", "gc-on", "gensym", "gensym?",
+ "gl-graph->ps", "glSpectrogram", "goertzel", "goto-listener-end", "grani", "granulate",
+ "granulate?", "granulated-sound-interp", "graph", "graph->ps", "graph-color", "graph-cursor",
+ "graph-data", "graph-hook", "graph-style", "graphic equalizer", "graphs-horizontal", "green-noise",
+ "green-noise-interp", "green-noise-interp?", "green-noise?", "grid-density", "harmonicizer", "Hartley transform",
+ "hash-table", "hash-table*", "hash-table-entries", "hash-table-ref", "hash-table-set!", "hash-table?",
+ "header-type", "hello-dentist", "help-dialog", "help-hook", "hide-widget", "highlight-color",
+ "hilbert-transform", "hook-functions", "hook-member", "html", "html-dir", "html-program",
+ "hz->radians", "iir-filter", "iir-filter?", "immutable!", "immutable?", "in",
+ "in-any", "ina", "inb", "info-dialog", "init-ladspa", "initial-beg",
+ "initial-dur", "initial-graph-hook", "inlet", "insert-channel", "insert-file-dialog", "insert-region",
+ "insert-sample", "insert-samples", "insert-selection", "insert-silence", "insert-sound", "int-vector",
+ "int-vector-ref", "int-vector-set!", "int-vector?", "integer->colormap", "integer->mark", "integer->mix",
+ "integer->region", "integer->sound", "integer->transform", "integrate-envelope", "invert-filter", "iterate",
+ "iterator-at-end?", "iterator-sequence", "iterator?", "izcos", "izcos?", "j0evencos",
+ "j0evencos?", "j0j1cos", "j0j1cos?", "j2cos", "j2cos?", "jc-reverb",
+ "jjcos", "jjcos?", "jncos", "jncos?", "jpcos", "jpcos?",
+ "just-sounds", "jycos", "jycos?", "k2cos", "k2cos?", "k2sin",
+ "k2sin?", "k2ssb", "k2ssb?", "k3sin", "k3sin?", "kalman-filter-channel",
+ "key", "key-binding", "key-press-hook", "krksin", "krksin?", "ladspa-descriptor",
+ "ladspa-dir", "lambda*", "lbj-piano", "left-sample", "let->list", "let-ref",
+ "let-set!", "let-temporarily", "let?", "linear->db", "linear-src-channel", "lint for scheme",
+ "lisp-graph-hook", "lisp-graph-style", "lisp-graph?", "list->float-vector", "list-ladspa", "listener-click-hook",
+ "listener-color", "listener-colorized", "listener-font", "listener-prompt", "listener-selection", "listener-text-color",
+ "little-endian?", "*load-hook*", "*load-path*", "locate-zero", "locsig", "locsig-ref",
+ "locsig-reverb-ref", "locsig-reverb-set!", "locsig-set!", "locsig-type", "locsig?", "log-freq-start",
+ "lpc-coeffs", "lpc-predict", "macro?", "macroexpand", "main-menu", "main-widgets",
+ "make-abcos", "make-absin", "make-adjustable-sawtooth-wave", "make-adjustable-square-wave", "make-adjustable-triangle-wave", "make-all-pass",
+ "make-all-pass-bank", "make-asyfm", "make-asymmetric-fm", "make-bandpass", "make-bandstop", "make-bess",
+ "make-biquad", "make-birds", "make-blackman", "make-brown-noise", "make-byte-vector", "make-channel-drop-site",
+ "make-color", "make-comb", "make-comb-bank", "make-convolve", "make-delay", "make-differentiator",
+ "make-env", "make-eoddcos", "make-ercos", "make-erssb", "make-fft-window", "make-file->frample",
+ "make-file->sample", "make-filter", "make-filtered-comb", "make-filtered-comb-bank", "make-fir-coeffs", "make-fir-filter",
+ "make-firmant", "make-float-vector", "make-flocsig", "make-fmssb", "make-formant", "make-formant-bank",
+ "make-frample->file", "make-granulate", "make-graph-data", "make-green-noise", "make-green-noise-interp", "make-hash-table",
+ "make-highpass", "make-hilbert-transform", "make-hook", "make-iir-filter", "make-int-vector", "make-iterator",
+ "make-izcos", "make-j0evencos", "make-j0j1cos", "make-j2cos", "make-jjcos", "make-jncos",
+ "make-jpcos", "make-jycos", "make-k2cos", "make-k2sin", "make-k2ssb", "make-k3sin",
+ "make-krksin", "make-locsig", "make-lowpass", "make-mix-sampler", "make-move-sound", "make-moving-autocorrelation",
+ "make-moving-average", "make-moving-fft", "make-moving-max", "make-moving-norm", "make-moving-pitch", "make-moving-scentroid",
+ "make-moving-spectrum", "make-n1cos", "make-nchoosekcos", "make-ncos", "make-nkssb", "make-noddcos",
+ "make-noddsin", "make-noddssb", "make-noid", "make-notch", "make-nrcos", "make-nrsin",
+ "make-nrssb", "make-nrxycos", "make-nrxysin", "make-nsin", "make-nsincos", "make-nssb",
+ "make-nxy1cos", "make-nxy1sin", "make-nxycos", "make-nxysin", "make-one-pole", "make-one-pole-all-pass",
+ "make-one-zero", "make-oscil", "make-oscil-bank", "make-phase-vocoder", "make-pink-noise", "make-pixmap",
+ "make-player", "make-polyoid", "make-polyshape", "make-polywave", "make-pulse-train", "make-pulsed-env",
+ "make-r2k!cos", "make-r2k2cos", "make-ramp", "make-rand", "make-rand-interp", "make-rcos",
+ "make-readin", "make-region", "make-region-sampler", "make-rk!cos", "make-rk!ssb", "make-rkcos",
+ "make-rkoddssb", "make-rksin", "make-rkssb", "make-round-interp", "make-rssb", "make-rxycos",
+ "make-rxyk!cos", "make-rxyk!sin", "make-rxysin", "make-sample->file", "make-sampler", "make-sawtooth-wave",
+ "make-selection", "make-sinc-train", "make-snd->sample", "make-sound-box", "make-spencer-filter", "make-square-wave",
+ "make-src", "make-ssb-am", "make-table-lookup", "make-table-lookup-with-env", "make-tanhsin", "make-triangle-wave",
+ "make-two-pole", "make-two-zero", "make-variable-display", "make-variable-graph", "make-wave-train", "make-wave-train-with-env",
+ "map-channel", "map-sound-files", "maracas", "mark->integer", "mark-click-hook", "mark-click-info",
+ "mark-color", "mark-context", "mark-drag-hook", "mark-explode", "mark-home", "mark-hook",
+ "mark-loops", "mark-name", "mark-name->id", "mark-properties", "mark-property", "mark-sample",
+ "mark-sync", "mark-sync-color", "mark-sync-max", "mark-tag-height", "mark-tag-width", "mark?",
+ "marks", "match-sound-files", "max-envelope", "max-regions", "max-transform-peaks", "maxamp",
+ "maxamp-position", "menu-widgets", "menus, optional", "min-dB", "mix", "mix->float-vector",
+ "mix->integer", "mix-amp", "mix-amp-env", "mix-channel", "mix-click-hook", "mix-click-info",
+ "mix-click-sets-amp", "mix-color", "mix-dialog-mix", "mix-drag-hook", "mix-file-dialog", "mix-float-vector",
+ "mix-home", "mix-length", "mix-maxamp", "mix-name", "mix-name->id", "mix-position",
+ "mix-properties", "mix-property", "mix-region", "mix-release-hook", "mix-sampler?", "mix-selection",
+ "mix-sound", "mix-speed", "mix-sync", "mix-sync-max", "mix-tag-height", "mix-tag-width",
+ "mix-tag-y", "mix-waveform-height", "mix?", "mixes", "mono->stereo", "moog-filter",
+ "morally-equal?", "mouse-click-hook", "mouse-drag-hook", "mouse-enter-graph-hook", "mouse-enter-label-hook", "mouse-enter-listener-hook",
+ "mouse-enter-text-hook", "mouse-leave-graph-hook", "mouse-leave-label-hook", "mouse-leave-listener-hook", "mouse-leave-text-hook", "mouse-press-hook",
+ "move-locsig", "move-mixes", "move-sound", "move-sound?", "move-syncd-marks", "moving-autocorrelation",
+ "moving-autocorrelation?", "moving-average", "moving-average?", "moving-fft", "moving-fft?", "moving-length",
+ "moving-max", "moving-max?", "moving-norm", "moving-norm?", "moving-pitch", "moving-pitch?",
+ "moving-rms", "moving-scentroid", "moving-scentroid?", "moving-spectrum", "moving-spectrum?", "moving-sum",
+ "mpg", "mus-alsa-buffer-size", "mus-alsa-buffers", "mus-alsa-capture-device", "mus-alsa-device", "mus-alsa-playback-device",
+ "mus-alsa-squelch-warning", "mus-array-print-length", "mus-bytes-per-sample", "mus-channel", "mus-channels", "mus-chebyshev-tu-sum",
+ "mus-clipping", "mus-close", "mus-copy", "mus-data", "mus-describe", "mus-error-hook",
+ "mus-error-type->string", "mus-expand-filename", "mus-feedback", "mus-feedforward", "mus-fft", "mus-file-buffer-size",
+ "mus-file-clipping", "mus-file-mix", "mus-file-name", "mus-float-equal-fudge-factor", "mus-frequency", "mus-generator?",
+ "mus-header-raw-defaults", "mus-header-type->string", "mus-header-type-name", "mus-hop", "mus-increment", "mus-input?",
+ "mus-interp-type", "mus-interpolate", "mus-length", "mus-location", "mus-max-malloc", "mus-max-table-size",
+ "mus-name", "mus-offset", "mus-order", "mus-oss-set-buffers", "mus-output?", "mus-phase",
+ "mus-ramp", "mus-rand-seed", "mus-random", "mus-reset", "mus-run", "mus-sample-type->string",
+ "mus-sample-type-name", "mus-scaler", "mus-sound-chans", "mus-sound-comment", "mus-sound-data-location", "mus-sound-datum-size",
+ "mus-sound-duration", "mus-sound-forget", "mus-sound-framples", "mus-sound-header-type", "mus-sound-length", "mus-sound-loop-info",
+ "mus-sound-mark-info", "mus-sound-maxamp", "mus-sound-maxamp-exists?", "mus-sound-path", "mus-sound-preload", "mus-sound-prune",
+ "mus-sound-report-cache", "mus-sound-sample-type", "mus-sound-samples", "mus-sound-srate", "mus-sound-type-specifier", "mus-sound-write-date",
+ "mus-srate", "mus-width", "mus-xcoeff", "mus-xcoeffs", "mus-ycoeff", "mus-ycoeffs",
+ "n1cos", "n1cos?", "name-click-hook", "nchoosekcos", "nchoosekcos?", "ncos",
+ "ncos2?", "ncos4?", "ncos?", "new-sound", "new-sound-dialog", "new-sound-hook",
+ "new-widget-hook", "next-sample", "nkssb", "nkssb-interp", "nkssb?", "noddcos",
+ "noddcos?", "noddsin", "noddsin?", "noddssb", "noddssb?", "noid",
+ "normalize-channel", "normalize-envelope", "normalize-partials", "normalize-sound", "normalized-mix", "notch",
+ "notch-channel", "notch-selection", "notch-sound", "notch?", "npcos?", "nrcos",
+ "nrcos?", "nrev", "nrsin", "nrsin?", "nrssb", "nrssb-interp",
+ "nrssb?", "nrxycos", "nrxycos?", "nrxysin", "nrxysin?", "nsin",
+ "nsin?", "nsincos", "nsincos?", "nssb", "nssb?", "nxy1cos",
+ "nxy1cos?", "nxy1sin", "nxy1sin?", "nxycos", "nxycos?", "nxysin",
+ "nxysin?", "object->let", "object->string", "odd-multiple", "odd-weight", "offset-channel",
+ "offset-sound", "one-pole", "one-pole-all-pass", "one-pole-all-pass?", "one-pole?", "one-zero",
+ "one-zero?", "open-file-dialog", "open-file-dialog-directory", "open-hook", "open-next-file-in-directory", "open-raw-sound",
+ "open-raw-sound-hook", "open-sound", "openlet", "openlet?", "orientation-hook", "oscil",
+ "oscil-bank", "oscil-bank?", "oscil?", "out-any", "out-bank", "outa",
+ "outlet", "*output*", "output-comment-hook", "overlay-rms-env", "owlet", "pad-channel",
+ "pad-marks", "pad-sound", "pair-filename", "pair-line-number", "pan-mix", "pan-mix-float-vector",
+ "partials->polynomial", "partials->wave", "pausing", "peak-env-dir", "peaks", "peaks-font",
+ "phase-partials->wave", "phase-vocoder", "phase-vocoder?", "piano model", "pink-noise", "pink-noise?",
+ "pins", "place-sound", "play", "play-arrow-size", "play-between-marks", "play-hook",
+ "play-mixes", "play-often", "play-region-forever", "play-sine", "play-sines", "play-syncd-marks",
+ "play-until-c-g", "play-with-envs", "player-home", "player?", "players", "playing",
+ "pluck", "polar->rectangular", "polynomial", "polynomial operations", "polyoid", "polyoid-env",
+ "polyoid?", "polyshape", "polyshape?", "polywave", "polywave?", "port-filename",
+ "port-line-number", "position->x", "position->y", "position-color", "power-env", "pqw",
+ "pqw-vox", "preferences-dialog", "previous-sample", "print-dialog", "print-length", "procedure-source",
"progress-report", "pulse-train", "pulse-train?", "pulsed-env", "pulsed-env?", "r2k!cos",
"r2k!cos?", "r2k2cos", "r2k2cos?", "radians->degrees", "radians->hz", "ramp-channel",
"rand", "rand-interp", "rand-interp?", "rand?", "random", "random-state",
@@ -220,51 +220,51 @@ static const char *help_names[HELP_NAMES_SIZE] = {
"selected-channel", "selected-data-color", "selected-graph-color", "selected-sound", "selection", "selection->mix",
"selection-chans", "selection-color", "selection-context", "selection-creates-region", "selection-framples", "selection-maxamp",
"selection-maxamp-position", "selection-member?", "selection-members", "selection-position", "selection-rms", "selection-srate",
- "selection?", "set-samples", "short-file-name", "show-axes", "show-controls", "show-disk-space",
- "show-full-duration", "show-full-range", "show-grid", "show-indices", "show-listener", "show-marks",
- "show-mix-waveforms", "show-selection", "show-selection-transform", "show-sonogram-cursor", "show-transform-peaks", "show-widget",
- "show-y-zero", "silence-all-mixes", "silence-mixes", "sinc-train", "sinc-train?", "sinc-width",
- "sine-env-channel", "sine-ramp", "singer", "smooth-channel", "smooth-selection", "smooth-sound",
- "SMS synthesis", "snap-mark-to-beat", "snap-marks", "snap-mix-to-beat", "snd->sample", "snd->sample?",
- "snd-color", "snd-error", "snd-error-hook", "snd-font", "snd-gcs", "snd-help",
- "snd-hooks", "*snd-opened-sound*", "snd-print", "snd-spectrum", "snd-tempnam", "snd-url",
- "snd-urls", "snd-version", "snd-warning", "snd-warning-hook", "sndwarp", "sort!",
- "sound->amp-env", "sound->integer", "sound-file-extensions", "sound-file?", "sound-files-in-directory", "sound-interp",
- "sound-loop-info", "sound-properties", "sound-property", "sound-widgets", "sound?", "soundfont-info",
- "sounds", "sounds->segment-data", "spectra", "spectral interpolation", "spectral-polynomial", "spectro-hop",
- "spectro-x-angle", "spectro-x-scale", "spectro-y-angle", "spectro-y-scale", "spectro-z-angle", "spectro-z-scale",
- "spectrum", "spectrum->coeffs", "spectrum-end", "spectrum-start", "speed-control", "speed-control-bounds",
- "speed-control-style", "speed-control-tones", "spot-freq", "square-wave", "square-wave?", "squelch-update",
- "squelch-vowels", "srate", "src", "src-channel", "src-duration", "src-fit-envelope",
- "src-mixes", "src-selection", "src-sound", "src?", "ssb-am", "ssb-am?",
- "ssb-bank", "ssb-bank-env", "ssb-fm", "start-dac", "start-playing", "start-playing-hook",
- "start-playing-selection-hook", "start-progress-report", "status-report", "stdin-prompt", "stereo->mono", "stereo-flute",
- "stop-player", "stop-playing", "stop-playing-hook", "stop-playing-selection-hook", "stretch-envelope", "stretch-sound-via-dft",
- "string->byte-vector", "string-position", "sublet", "superimpose-ffts", "swap-channels", "swap-selection-channels",
- "symbol->dynamic-value", "symbol->value", "symbol-access", "symbol-table", "sync", "sync-everything",
- "sync-max", "sync-style", "syncd-marks", "syncd-mixes", "syncup", "table-lookup",
- "table-lookup?", "tanhsin", "tanhsin?", "tap", "tap?", "telephone",
- "temp-dir", "text-focus-color", "time-graph-style", "time-graph-type", "time-graph?", "times->samples",
- "tiny-font", "touch-tone", "trace", "tracking-cursor-style", "transform->float-vector", "transform->integer",
- "transform-dialog", "transform-framples", "transform-graph-style", "transform-graph-type", "transform-graph?", "transform-normalization",
- "transform-sample", "transform-size", "transform-type", "transform?", "transpose-mixes", "triangle-wave",
- "triangle-wave?", "tubebell", "tubular bell", "two-pole", "two-pole?", "two-tab",
- "two-zero", "two-zero?", "type-of", "unbind-key", "*unbound-variable-hook*", "unclip-channel",
- "undo", "undo-hook", "unlet", "unselect-all", "update-graphs", "update-hook",
- "update-lisp-graph", "update-sound", "update-time-graph", "update-transform-graph", "upon-save-yourself", "user interface extensions",
- "variable-display", "variable-graph?", "varlet", "vibrating-uniform-circular-string", "view-files-amp", "view-files-amp-env",
- "view-files-dialog", "view-files-files", "view-files-select-hook", "view-files-selected-files", "view-files-sort", "view-files-speed",
- "view-files-speed-style", "view-mixes-dialog", "view-regions-dialog", "view-sound", "voice physical model", "voiced->unvoiced",
- "volterra-filter", "vox", "wave-train", "wave-train?", "wavelet-type", "waveshaping voice",
- "wavo-hop", "wavo-trace", "weighted-moving-average", "widget-position", "widget-size", "widget-text",
- "window-height", "window-samples", "window-width", "window-x", "window-y", "with-background-processes",
- "with-baffle", "with-file-monitor", "with-gl", "with-inset-graph", "with-interrupts", "with-let",
- "with-local-hook", "with-menu-icons", "with-mix-tags", "with-pointer-focus", "with-relative-panes", "with-smpte-label",
- "with-sound", "with-temporary-selection", "with-toolbar", "with-tooltips", "with-tracking-cursor", "with-verbose-cursor",
- "x->position", "x-axis-label", "x-axis-style", "x-bounds", "x-position-slider", "x-zoom-slider",
- "xb-open", "xramp-channel", "y->position", "y-axis-label", "y-bounds", "y-position-slider",
- "y-zoom-slider", "z-transform", "zecho", "zero+", "zero-pad", "zero-phase",
- "zip-sound", "zipper", "zoom-color", "zoom-focus-style"};
+ "selection?", "set-samples", "setter", "short-file-name", "show-axes", "show-controls",
+ "show-disk-space", "show-full-duration", "show-full-range", "show-grid", "show-indices", "show-listener",
+ "show-marks", "show-mix-waveforms", "show-selection", "show-selection-transform", "show-sonogram-cursor", "show-transform-peaks",
+ "show-widget", "show-y-zero", "signature", "silence-all-mixes", "silence-mixes", "sinc-train",
+ "sinc-train?", "sinc-width", "sine-env-channel", "sine-ramp", "singer", "smooth-channel",
+ "smooth-selection", "smooth-sound", "SMS synthesis", "snap-mark-to-beat", "snap-marks", "snap-mix-to-beat",
+ "snd->sample", "snd->sample?", "snd-color", "snd-error", "snd-error-hook", "snd-font",
+ "snd-gcs", "snd-help", "snd-hooks", "*snd-opened-sound*", "snd-print", "snd-spectrum",
+ "snd-tempnam", "snd-url", "snd-urls", "snd-version", "snd-warning", "snd-warning-hook",
+ "sndwarp", "sort!", "sound->amp-env", "sound->integer", "sound-file-extensions", "sound-file?",
+ "sound-files-in-directory", "sound-interp", "sound-loop-info", "sound-properties", "sound-property", "sound-widgets",
+ "sound?", "soundfont-info", "sounds", "sounds->segment-data", "spectra", "spectral interpolation",
+ "spectral-polynomial", "spectro-hop", "spectro-x-angle", "spectro-x-scale", "spectro-y-angle", "spectro-y-scale",
+ "spectro-z-angle", "spectro-z-scale", "spectrum", "spectrum->coeffs", "spectrum-end", "spectrum-start",
+ "speed-control", "speed-control-bounds", "speed-control-style", "speed-control-tones", "spot-freq", "square-wave",
+ "square-wave?", "squelch-update", "squelch-vowels", "srate", "src", "src-channel",
+ "src-duration", "src-fit-envelope", "src-mixes", "src-selection", "src-sound", "src?",
+ "ssb-am", "ssb-am?", "ssb-bank", "ssb-bank-env", "ssb-fm", "start-dac",
+ "start-playing", "start-playing-hook", "start-playing-selection-hook", "start-progress-report", "status-report", "stdin-prompt",
+ "stereo->mono", "stereo-flute", "stop-player", "stop-playing", "stop-playing-hook", "stop-playing-selection-hook",
+ "stretch-envelope", "stretch-sound-via-dft", "string->byte-vector", "string-position", "sublet", "superimpose-ffts",
+ "swap-channels", "swap-selection-channels", "symbol->dynamic-value", "symbol->value", "symbol-setter", "symbol-table",
+ "sync", "sync-everything", "sync-max", "sync-style", "syncd-marks", "syncd-mixes",
+ "syncup", "table-lookup", "table-lookup?", "tanhsin", "tanhsin?", "tap",
+ "tap?", "telephone", "temp-dir", "text-focus-color", "time-graph-style", "time-graph-type",
+ "time-graph?", "times->samples", "tiny-font", "touch-tone", "trace", "tracking-cursor-style",
+ "transform->float-vector", "transform->integer", "transform-dialog", "transform-framples", "transform-graph-style", "transform-graph-type",
+ "transform-graph?", "transform-normalization", "transform-sample", "transform-size", "transform-type", "transform?",
+ "transpose-mixes", "triangle-wave", "triangle-wave?", "tubebell", "tubular bell", "two-pole",
+ "two-pole?", "two-tab", "two-zero", "two-zero?", "type-of", "unbind-key",
+ "*unbound-variable-hook*", "unclip-channel", "undo", "undo-hook", "unlet", "unselect-all",
+ "update-graphs", "update-hook", "update-lisp-graph", "update-sound", "update-time-graph", "update-transform-graph",
+ "upon-save-yourself", "user interface extensions", "variable-display", "variable-graph?", "varlet", "vibrating-uniform-circular-string",
+ "view-files-amp", "view-files-amp-env", "view-files-dialog", "view-files-files", "view-files-select-hook", "view-files-selected-files",
+ "view-files-sort", "view-files-speed", "view-files-speed-style", "view-mixes-dialog", "view-regions-dialog", "view-sound",
+ "voice physical model", "voiced->unvoiced", "volterra-filter", "vox", "wave-train", "wave-train?",
+ "wavelet-type", "waveshaping voice", "wavo-hop", "wavo-trace", "weighted-moving-average", "widget-position",
+ "widget-size", "widget-text", "window-height", "window-samples", "window-width", "window-x",
+ "window-y", "with-background-processes", "with-baffle", "with-file-monitor", "with-gl", "with-inset-graph",
+ "with-interrupts", "with-let", "with-local-hook", "with-menu-icons", "with-mix-tags", "with-pointer-focus",
+ "with-relative-panes", "with-smpte-label", "with-sound", "with-temporary-selection", "with-toolbar", "with-tooltips",
+ "with-tracking-cursor", "with-verbose-cursor", "x->position", "x-axis-label", "x-axis-style", "x-bounds",
+ "x-position-slider", "x-zoom-slider", "xb-open", "xramp-channel", "y->position", "y-axis-label",
+ "y-bounds", "y-position-slider", "y-zoom-slider", "z-transform", "zecho", "zero+",
+ "zero-pad", "zero-phase", "zip-sound", "zipper", "zoom-color", "zoom-focus-style"};
#endif
#if HAVE_RUBY
static const char *help_names[HELP_NAMES_SIZE] = {
@@ -310,151 +310,151 @@ static const char *help_names[HELP_NAMES_SIZE] = {
"delete_file_sorter", "delete_mark", "delete_marks", "delete_sample", "delete_samples", "delete_samples_and_smooth",
"delete_selection", "delete_selection_and_smooth", "delete_transform", "describe_hook", "describe_mark", "dht",
"dialog_widgets", "dilambda", "disable_control_panel", "display_bark_fft", "display_correlation", "display_db",
- "display_edits", "display_energy", "dissolve_fade", "dither_channel", "dither_sound", "dolph",
- "dot_product", "dot_size", "down_oct", "draw_axes", "draw_dot", "draw_dots",
- "draw_line", "draw_lines", "draw_mark_hook", "draw_mix_hook", "draw_string", "drone",
- "drop_sites", "drop_hook", "during_open_hook", "edit_fragment", "edit_header_dialog", "edit_hook",
- "edit_list2function", "edit_position", "edit_properties", "edit_property", "edit_tree", "edits",
- "edot_product", "effects_hook", "elliptic_filters", "env", "env_any", "env_channel",
- "env_channel_with_base", "env_expt_channel", "env_interp", "env_mixes", "env_selection", "env_sound",
- "env_sound_interp", "env_squared_channel", "env?", "enved_base", "enved_clip?", "enved_dialog",
- "enved_envelope", "enved_filter", "enved_filter_order", "enved_hook", "enved_in_dB", "enved_power",
- "enved_style", "enved_target", "enved_wave?", "enved_waveform_color", "envelope_interp", "enveloped_mix",
- "eoddcos", "eoddcos?", "eps_bottom_margin", "eps_file", "eps_left_margin", "eps_size",
- "ercos", "ercos?", "_error_hook_", "erssb", "erssb?", "even_multiple",
- "even_weight", "every_sample?", "exit", "exit_hook", "expand_control", "expand_control_bounds",
- "expand_control_hop", "expand_control_jitter", "expand_control_length", "expand_control_ramp", "expand_control?", "explode_sf2",
- "exponentially_weighted_moving_average", "expsnd", "expsrc", "_features_", "feedback_fm", "fft",
- "fft_cancel", "fft_edit", "fft_env_edit", "fft_env_interp", "fft_log_frequency", "fft_log_magnitude",
- "fft_smoother", "fft_squelch", "fft_window", "fft_window_alpha", "fft_window_beta", "fft_with_phases",
- "file_database", "file2array", "file2frample", "file2frample?", "file2sample", "file2sample?",
- "file_name", "fill!", "fill_polygon", "fill_rectangle", "filter", "filter_channel",
- "filter_control_coeffs", "filter_control_envelope", "filter_control_in_dB", "filter_control_in_hz", "filter_control_order", "filter_control_waveform_color",
- "filter_control?", "filter_fft", "filter_selection", "filter_selection_and_smooth", "filter_sound", "filter?",
- "filtered_comb", "filtered_comb_bank", "filtered_comb_bank?", "filtered_comb?", "find_dialog", "find_mark",
- "find_mix", "find_sound", "finfo", "finish_progress_report", "fir_filter", "fir_filter?",
- "firmant", "firmant?", "fit_selection_between_marks", "flatten_partials", "float_vector", "float-vector_multiply",
- "float-vector_add", "float_vector2channel", "float_vector2list", "float_vector2string", "float_vector_abs!", "float_vector_add!",
- "float_vector_equal?", "float_vector_fill!", "float_vector_length", "float_vector_max", "float_vector_min", "float_vector_move!",
- "float_vector_multiply!", "float_vector_offset!", "float_vector_peak", "float_vector_polynomial", "float_vector_ref", "float_vector_reverse!",
- "float_vector_scale!", "float_vector_set!", "float_vector_subseq", "float_vector_subtract!", "float_vector?", "flocsig",
- "flocsig?", "flute_model", "fm_bell", "fm_drum", "fm_noise", "fm_parallel_component",
- "fm_talker", "fm_trumpet", "fm_violin", "fm_voice", "fmssb", "fmssb?",
- "focus_widget", "FOF_synthesis", "fofins", "for_each_child", "for_each_sound_file", "Forbidden_Planet",
- "foreground_color", "forget_region", "formant", "formant_bank", "formant_bank?", "formant?",
- "format", "fp", "fractional_fourier_transform", "frample2file", "frample2file?", "frample2frample",
- "framples", "free_player", "free_sampler", "freeverb", "fullmix", "funclet",
- "gaussian_distribution", "gc_off", "gc_on", "gensym", "gensym?", "gl_graph2ps",
- "glSpectrogram", "goertzel", "goto_listener_end", "grani", "granulate", "granulate?",
- "granulated_sound_interp", "graph", "graph2ps", "graph_color", "graph_cursor", "graph_data",
- "graph_hook", "graph_style", "graphic_equalizer", "graphs_horizontal", "green_noise", "green_noise_interp",
- "green_noise_interp?", "green_noise?", "grid_density", "harmonicizer", "Hartley_transform", "hash_table",
- "hash_table_", "hash_table_entries", "hash_table_ref", "hash_table_set!", "hash_table?", "header_type",
- "hello_dentist", "help_dialog", "help_hook", "hide_widget", "highlight_color", "hilbert_transform",
- "hook_functions", "hook_member", "html", "html_dir", "html_program", "hz2radians",
- "iir_filter", "iir_filter?", "call_in", "in_any", "ina", "inb",
- "info_dialog", "init_ladspa", "initial_beg", "initial_dur", "initial_graph_hook", "inlet",
- "insert_channel", "insert_file_dialog", "insert_region", "insert_sample", "insert_samples", "insert_selection",
- "insert_silence", "insert_sound", "int_vector", "int_vector_ref", "int_vector_set!", "int_vector?",
- "integer2colormap", "integer2mark", "integer2mix", "integer2region", "integer2sound", "integer2transform",
- "integrate_envelope", "invert_filter", "iterate", "iterator_at_end?", "iterator_sequence", "iterator?",
- "izcos", "izcos?", "j0evencos", "j0evencos?", "j0j1cos", "j0j1cos?",
- "j2cos", "j2cos?", "jc_reverb", "jjcos", "jjcos?", "jncos",
- "jncos?", "jpcos", "jpcos?", "just_sounds", "jycos", "jycos?",
- "k2cos", "k2cos?", "k2sin", "k2sin?", "k2ssb", "k2ssb?",
- "k3sin", "k3sin?", "kalman_filter_channel", "key", "key_binding", "key_press_hook",
- "krksin", "krksin?", "ladspa_descriptor", "ladspa_dir", "lambda_", "lbj_piano",
- "left_sample", "let2list", "let_ref", "let_set!", "let_temporarily", "let?",
- "linear2db", "linear_src_channel", "lint_for_scheme", "lisp_graph_hook", "lisp_graph_style", "lisp_graph?",
- "list2float_vector", "list_ladspa", "listener_click_hook", "listener_color", "listener_colorized", "listener_font",
- "listener_prompt", "listener_selection", "listener_text_color", "little_endian?", "_load_hook_", "_load_path_",
- "locate_zero", "locsig", "locsig_ref", "locsig_reverb_ref", "locsig_reverb_set!", "locsig_set!",
- "locsig_type", "locsig?", "log_freq_start", "lpc_coeffs", "lpc_predict", "macro?",
- "macroexpand", "main_menu", "main_widgets", "make_abcos", "make_absin", "make_adjustable_sawtooth_wave",
- "make_adjustable_square_wave", "make_adjustable_triangle_wave", "make_all_pass", "make_all_pass_bank", "make_asyfm", "make_asymmetric_fm",
- "make_bandpass", "make_bandstop", "make_bess", "make_biquad", "make_birds", "make_blackman",
- "make_brown_noise", "make_byte_vector", "make_channel_drop_site", "make_color", "make_comb", "make_comb_bank",
- "make_convolve", "make_delay", "make_differentiator", "make_env", "make_eoddcos", "make_ercos",
- "make_erssb", "make_fft_window", "make_file2frample", "make_file2sample", "make_filter", "make_filtered_comb",
- "make_filtered_comb_bank", "make_fir_coeffs", "make_fir_filter", "make_firmant", "make_float_vector", "make_flocsig",
- "make_fmssb", "make_formant", "make_formant_bank", "make_frample2file", "make_granulate", "make_graph_data",
- "make_green_noise", "make_green_noise_interp", "make_hash_table", "make_highpass", "make_hilbert_transform", "make_hook",
- "make_iir_filter", "make_int_vector", "make_iterator", "make_izcos", "make_j0evencos", "make_j0j1cos",
- "make_j2cos", "make_jjcos", "make_jncos", "make_jpcos", "make_jycos", "make_k2cos",
- "make_k2sin", "make_k2ssb", "make_k3sin", "make_krksin", "make_locsig", "make_lowpass",
- "make_mix_sampler", "make_move_sound", "make_moving_autocorrelation", "make_moving_average", "make_moving_fft", "make_moving_max",
- "make_moving_norm", "make_moving_pitch", "make_moving_scentroid", "make_moving_spectrum", "make_n1cos", "make_nchoosekcos",
- "make_ncos", "make_nkssb", "make_noddcos", "make_noddsin", "make_noddssb", "make_noid",
- "make_notch", "make_nrcos", "make_nrsin", "make_nrssb", "make_nrxycos", "make_nrxysin",
- "make_nsin", "make_nsincos", "make_nssb", "make_nxy1cos", "make_nxy1sin", "make_nxycos",
- "make_nxysin", "make_one_pole", "make_one_pole_all_pass", "make_one_zero", "make_oscil", "make_oscil_bank",
- "make_phase_vocoder", "make_pink_noise", "make_pixmap", "make_player", "make_polyoid", "make_polyshape",
- "make_polywave", "make_pulse_train", "make_pulsed_env", "make_r2k!cos", "make_r2k2cos", "make_ramp",
- "make_rand", "make_rand_interp", "make_rcos", "make_readin", "make_region", "make_region_sampler",
- "make_rk!cos", "make_rk!ssb", "make_rkcos", "make_rkoddssb", "make_rksin", "make_rkssb",
- "make_round_interp", "make_rssb", "make_rxycos", "make_rxyk!cos", "make_rxyk!sin", "make_rxysin",
- "make_sample2file", "make_sampler", "make_sawtooth_wave", "make_selection", "make_sinc_train", "make_snd2sample",
- "make_sound_box", "make_spencer_filter", "make_square_wave", "make_src", "make_ssb_am", "make_table_lookup",
- "make_table_lookup_with_env", "make_tanhsin", "make_triangle_wave", "make_two_pole", "make_two_zero", "make_variable_display",
- "make_variable_graph", "make_wave_train", "make_wave_train_with_env", "map_channel", "map_sound_files", "maracas",
- "mark2integer", "mark_click_hook", "mark_click_info", "mark_color", "Mark_context", "mark_drag_hook",
- "mark_explode", "mark_home", "mark_hook", "mark_loops", "mark_name", "mark_name2id",
- "mark_properties", "mark_property", "mark_sample", "mark_sync", "mark_sync_color", "mark_sync_max",
- "mark_tag_height", "mark_tag_width", "mark?", "marks", "match_sound_files", "max_envelope",
- "max_regions", "max_transform_peaks", "maxamp", "maxamp_position", "menu_widgets", "menus__optional",
- "min_dB", "mix", "mix2float_vector", "mix2integer", "mix_amp", "mix_amp_env",
- "mix_channel", "mix_click_hook", "mix_click_info", "mix_click_sets_amp", "mix_color", "mix_dialog_mix",
- "mix_drag_hook", "mix_file_dialog", "mix_float_vector", "mix_home", "mix_length", "mix_maxamp",
- "mix_name", "mix_name2id", "mix_position", "mix_properties", "mix_property", "mix_region",
- "mix_release_hook", "mix_sampler?", "mix_selection", "mix_sound", "mix_speed", "mix_sync",
- "mix_sync_max", "mix_tag_height", "mix_tag_width", "mix_tag_y", "mix_waveform_height", "mix?",
- "mixes", "mono2stereo", "moog_filter", "morally_equal?", "mouse_click_hook", "mouse_drag_hook",
- "mouse_enter_graph_hook", "mouse_enter_label_hook", "mouse_enter_listener_hook", "mouse_enter_text_hook", "mouse_leave_graph_hook", "mouse_leave_label_hook",
- "mouse_leave_listener_hook", "mouse_leave_text_hook", "mouse_press_hook", "move_locsig", "move_mixes", "move_sound",
- "move_sound?", "move_syncd_marks", "moving_autocorrelation", "moving_autocorrelation?", "moving_average", "moving_average?",
- "moving_fft", "moving_fft?", "moving_length", "moving_max", "moving_max?", "moving_norm",
- "moving_norm?", "moving_pitch", "moving_pitch?", "moving_rms", "moving_scentroid", "moving_scentroid?",
- "moving_spectrum", "moving_spectrum?", "moving_sum", "mpg", "mus_alsa_buffer_size", "mus_alsa_buffers",
- "mus_alsa_capture_device", "mus_alsa_device", "mus_alsa_playback_device", "mus_alsa_squelch_warning", "mus_array_print_length", "mus_bytes_per_sample",
- "mus_channel", "mus_channels", "mus_chebyshev_tu_sum", "mus_clipping", "mus_close", "mus_copy",
- "mus_data", "mus_describe", "mus_error_hook", "mus_error_type2string", "mus_expand_filename", "mus_feedback",
- "mus_feedforward", "mus_fft", "mus_file_buffer_size", "mus_file_clipping", "mus_file_mix", "mus_file_name",
- "mus_float_equal_fudge_factor", "mus_frequency", "mus_generator?", "mus_header_raw_defaults", "mus_header_type2string", "mus_header_type_name",
- "mus_hop", "mus_increment", "mus_input?", "mus_interp_type", "mus_interpolate", "mus_length",
- "mus_location", "mus_max_malloc", "mus_max_table_size", "mus_name", "mus_offset", "mus_order",
- "mus_oss_set_buffers", "mus_output?", "mus_phase", "mus_ramp", "mus_rand_seed", "mus_random",
- "mus_reset", "mus_run", "mus_sample_type2string", "mus_sample_type_name", "mus_scaler", "mus_sound_chans",
- "mus_sound_comment", "mus_sound_data_location", "mus_sound_datum_size", "mus_sound_duration", "mus_sound_forget", "mus_sound_framples",
- "mus_sound_header_type", "mus_sound_length", "mus_sound_loop_info", "mus_sound_mark_info", "mus_sound_maxamp", "mus_sound_maxamp_exists?",
- "mus_sound_path", "mus_sound_preload", "mus_sound_prune", "mus_sound_report_cache", "mus_sound_sample_type", "mus_sound_samples",
- "mus_sound_srate", "mus_sound_type_specifier", "mus_sound_write_date", "mus_srate", "mus_width", "mus_xcoeff",
- "mus_xcoeffs", "mus_ycoeff", "mus_ycoeffs", "n1cos", "n1cos?", "name_click_hook",
- "nchoosekcos", "nchoosekcos?", "ncos", "ncos2?", "ncos4?", "ncos?",
- "new_sound", "new_sound_dialog", "new_sound_hook", "new_widget_hook", "next_sample", "nkssb",
- "nkssb_interp", "nkssb?", "noddcos", "noddcos?", "noddsin", "noddsin?",
- "noddssb", "noddssb?", "noid", "normalize_channel", "normalize_envelope", "normalize_partials",
- "normalize_sound", "normalized_mix", "notch", "notch_channel", "notch_selection", "notch_sound",
- "notch?", "npcos?", "nrcos", "nrcos?", "nrev", "nrsin",
- "nrsin?", "nrssb", "nrssb_interp", "nrssb?", "nrxycos", "nrxycos?",
- "nrxysin", "nrxysin?", "nsin", "nsin?", "nsincos", "nsincos?",
- "nssb", "nssb?", "nxy1cos", "nxy1cos?", "nxy1sin", "nxy1sin?",
- "nxycos", "nxycos?", "nxysin", "nxysin?", "object2let", "object2string",
- "odd_multiple", "odd_weight", "offset_channel", "offset_sound", "one_pole", "one_pole_all_pass",
- "one_pole_all_pass?", "one_pole?", "one_zero", "one_zero?", "open_file_dialog", "open_file_dialog_directory",
- "open_hook", "open_next_file_in_directory", "open_raw_sound", "open_raw_sound_hook", "open_sound", "openlet",
- "openlet?", "orientation_hook", "oscil", "oscil_bank", "oscil_bank?", "oscil?",
- "out_any", "out_bank", "outa", "outlet", "_output_", "output_comment_hook",
- "overlay_rms_env", "owlet", "pad_channel", "pad_marks", "pad_sound", "pair_filename",
- "pair_line_number", "pan_mix", "pan_mix_float_vector", "partials2polynomial", "partials2wave", "pausing",
- "peak_env_dir", "peaks", "peaks_font", "phase_partials2wave", "phase_vocoder", "phase_vocoder?",
- "piano_model", "pink_noise", "pink_noise?", "pins", "place_sound", "play",
- "play_arrow_size", "play_between_marks", "play_hook", "play_mixes", "play_often", "play_region_forever",
- "play_sine", "play_sines", "play_syncd_marks", "play_until_c_g", "play_with_envs", "player_home",
- "player?", "players", "playing", "pluck", "polar2rectangular", "polynomial",
- "polynomial_operations", "polyoid", "polyoid_env", "polyoid?", "polyshape", "polyshape?",
- "polywave", "polywave?", "port_filename", "port_line_number", "position2x", "position2y",
- "position_color", "power_env", "pqw", "pqw_vox", "preferences_dialog", "previous_sample",
- "print_dialog", "print_length", "procedure_documentation", "procedure_setter", "procedure_signature", "procedure_source",
+ "display_edits", "display_energy", "dissolve_fade", "dither_channel", "dither_sound", "documentation",
+ "dolph", "dot_product", "dot_size", "down_oct", "draw_axes", "draw_dot",
+ "draw_dots", "draw_line", "draw_lines", "draw_mark_hook", "draw_mix_hook", "draw_string",
+ "drone", "drop_sites", "drop_hook", "during_open_hook", "edit_fragment", "edit_header_dialog",
+ "edit_hook", "edit_list2function", "edit_position", "edit_properties", "edit_property", "edit_tree",
+ "edits", "edot_product", "effects_hook", "elliptic_filters", "env", "env_any",
+ "env_channel", "env_channel_with_base", "env_expt_channel", "env_interp", "env_mixes", "env_selection",
+ "env_sound", "env_sound_interp", "env_squared_channel", "env?", "enved_base", "enved_clip?",
+ "enved_dialog", "enved_envelope", "enved_filter", "enved_filter_order", "enved_hook", "enved_in_dB",
+ "enved_power", "enved_style", "enved_target", "enved_wave?", "enved_waveform_color", "envelope_interp",
+ "enveloped_mix", "eoddcos", "eoddcos?", "eps_bottom_margin", "eps_file", "eps_left_margin",
+ "eps_size", "ercos", "ercos?", "_error_hook_", "erssb", "erssb?",
+ "even_multiple", "even_weight", "every_sample?", "exit", "exit_hook", "expand_control",
+ "expand_control_bounds", "expand_control_hop", "expand_control_jitter", "expand_control_length", "expand_control_ramp", "expand_control?",
+ "explode_sf2", "exponentially_weighted_moving_average", "expsnd", "expsrc", "_features_", "feedback_fm",
+ "fft", "fft_cancel", "fft_edit", "fft_env_edit", "fft_env_interp", "fft_log_frequency",
+ "fft_log_magnitude", "fft_smoother", "fft_squelch", "fft_window", "fft_window_alpha", "fft_window_beta",
+ "fft_with_phases", "file_database", "file2array", "file2frample", "file2frample?", "file2sample",
+ "file2sample?", "file_name", "fill!", "fill_polygon", "fill_rectangle", "filter",
+ "filter_channel", "filter_control_coeffs", "filter_control_envelope", "filter_control_in_dB", "filter_control_in_hz", "filter_control_order",
+ "filter_control_waveform_color", "filter_control?", "filter_fft", "filter_selection", "filter_selection_and_smooth", "filter_sound",
+ "filter?", "filtered_comb", "filtered_comb_bank", "filtered_comb_bank?", "filtered_comb?", "find_dialog",
+ "find_mark", "find_mix", "find_sound", "finfo", "finish_progress_report", "fir_filter",
+ "fir_filter?", "firmant", "firmant?", "fit_selection_between_marks", "flatten_partials", "float_vector",
+ "float-vector_multiply", "float-vector_add", "float_vector2channel", "float_vector2list", "float_vector2string", "float_vector_abs!",
+ "float_vector_add!", "float_vector_equal?", "float_vector_fill!", "float_vector_length", "float_vector_max", "float_vector_min",
+ "float_vector_move!", "float_vector_multiply!", "float_vector_offset!", "float_vector_peak", "float_vector_polynomial", "float_vector_ref",
+ "float_vector_reverse!", "float_vector_scale!", "float_vector_set!", "float_vector_subseq", "float_vector_subtract!", "float_vector?",
+ "flocsig", "flocsig?", "flute_model", "fm_bell", "fm_drum", "fm_noise",
+ "fm_parallel_component", "fm_talker", "fm_trumpet", "fm_violin", "fm_voice", "fmssb",
+ "fmssb?", "focus_widget", "FOF_synthesis", "fofins", "for_each_child", "for_each_sound_file",
+ "Forbidden_Planet", "foreground_color", "forget_region", "formant", "formant_bank", "formant_bank?",
+ "formant?", "format", "fp", "fractional_fourier_transform", "frample2file", "frample2file?",
+ "frample2frample", "framples", "free_player", "free_sampler", "freeverb", "fullmix",
+ "funclet", "gaussian_distribution", "gc_off", "gc_on", "gensym", "gensym?",
+ "gl_graph2ps", "glSpectrogram", "goertzel", "goto_listener_end", "grani", "granulate",
+ "granulate?", "granulated_sound_interp", "graph", "graph2ps", "graph_color", "graph_cursor",
+ "graph_data", "graph_hook", "graph_style", "graphic_equalizer", "graphs_horizontal", "green_noise",
+ "green_noise_interp", "green_noise_interp?", "green_noise?", "grid_density", "harmonicizer", "Hartley_transform",
+ "hash_table", "hash_table_", "hash_table_entries", "hash_table_ref", "hash_table_set!", "hash_table?",
+ "header_type", "hello_dentist", "help_dialog", "help_hook", "hide_widget", "highlight_color",
+ "hilbert_transform", "hook_functions", "hook_member", "html", "html_dir", "html_program",
+ "hz2radians", "iir_filter", "iir_filter?", "immutable!", "immutable?", "call_in",
+ "in_any", "ina", "inb", "info_dialog", "init_ladspa", "initial_beg",
+ "initial_dur", "initial_graph_hook", "inlet", "insert_channel", "insert_file_dialog", "insert_region",
+ "insert_sample", "insert_samples", "insert_selection", "insert_silence", "insert_sound", "int_vector",
+ "int_vector_ref", "int_vector_set!", "int_vector?", "integer2colormap", "integer2mark", "integer2mix",
+ "integer2region", "integer2sound", "integer2transform", "integrate_envelope", "invert_filter", "iterate",
+ "iterator_at_end?", "iterator_sequence", "iterator?", "izcos", "izcos?", "j0evencos",
+ "j0evencos?", "j0j1cos", "j0j1cos?", "j2cos", "j2cos?", "jc_reverb",
+ "jjcos", "jjcos?", "jncos", "jncos?", "jpcos", "jpcos?",
+ "just_sounds", "jycos", "jycos?", "k2cos", "k2cos?", "k2sin",
+ "k2sin?", "k2ssb", "k2ssb?", "k3sin", "k3sin?", "kalman_filter_channel",
+ "key", "key_binding", "key_press_hook", "krksin", "krksin?", "ladspa_descriptor",
+ "ladspa_dir", "lambda_", "lbj_piano", "left_sample", "let2list", "let_ref",
+ "let_set!", "let_temporarily", "let?", "linear2db", "linear_src_channel", "lint_for_scheme",
+ "lisp_graph_hook", "lisp_graph_style", "lisp_graph?", "list2float_vector", "list_ladspa", "listener_click_hook",
+ "listener_color", "listener_colorized", "listener_font", "listener_prompt", "listener_selection", "listener_text_color",
+ "little_endian?", "_load_hook_", "_load_path_", "locate_zero", "locsig", "locsig_ref",
+ "locsig_reverb_ref", "locsig_reverb_set!", "locsig_set!", "locsig_type", "locsig?", "log_freq_start",
+ "lpc_coeffs", "lpc_predict", "macro?", "macroexpand", "main_menu", "main_widgets",
+ "make_abcos", "make_absin", "make_adjustable_sawtooth_wave", "make_adjustable_square_wave", "make_adjustable_triangle_wave", "make_all_pass",
+ "make_all_pass_bank", "make_asyfm", "make_asymmetric_fm", "make_bandpass", "make_bandstop", "make_bess",
+ "make_biquad", "make_birds", "make_blackman", "make_brown_noise", "make_byte_vector", "make_channel_drop_site",
+ "make_color", "make_comb", "make_comb_bank", "make_convolve", "make_delay", "make_differentiator",
+ "make_env", "make_eoddcos", "make_ercos", "make_erssb", "make_fft_window", "make_file2frample",
+ "make_file2sample", "make_filter", "make_filtered_comb", "make_filtered_comb_bank", "make_fir_coeffs", "make_fir_filter",
+ "make_firmant", "make_float_vector", "make_flocsig", "make_fmssb", "make_formant", "make_formant_bank",
+ "make_frample2file", "make_granulate", "make_graph_data", "make_green_noise", "make_green_noise_interp", "make_hash_table",
+ "make_highpass", "make_hilbert_transform", "make_hook", "make_iir_filter", "make_int_vector", "make_iterator",
+ "make_izcos", "make_j0evencos", "make_j0j1cos", "make_j2cos", "make_jjcos", "make_jncos",
+ "make_jpcos", "make_jycos", "make_k2cos", "make_k2sin", "make_k2ssb", "make_k3sin",
+ "make_krksin", "make_locsig", "make_lowpass", "make_mix_sampler", "make_move_sound", "make_moving_autocorrelation",
+ "make_moving_average", "make_moving_fft", "make_moving_max", "make_moving_norm", "make_moving_pitch", "make_moving_scentroid",
+ "make_moving_spectrum", "make_n1cos", "make_nchoosekcos", "make_ncos", "make_nkssb", "make_noddcos",
+ "make_noddsin", "make_noddssb", "make_noid", "make_notch", "make_nrcos", "make_nrsin",
+ "make_nrssb", "make_nrxycos", "make_nrxysin", "make_nsin", "make_nsincos", "make_nssb",
+ "make_nxy1cos", "make_nxy1sin", "make_nxycos", "make_nxysin", "make_one_pole", "make_one_pole_all_pass",
+ "make_one_zero", "make_oscil", "make_oscil_bank", "make_phase_vocoder", "make_pink_noise", "make_pixmap",
+ "make_player", "make_polyoid", "make_polyshape", "make_polywave", "make_pulse_train", "make_pulsed_env",
+ "make_r2k!cos", "make_r2k2cos", "make_ramp", "make_rand", "make_rand_interp", "make_rcos",
+ "make_readin", "make_region", "make_region_sampler", "make_rk!cos", "make_rk!ssb", "make_rkcos",
+ "make_rkoddssb", "make_rksin", "make_rkssb", "make_round_interp", "make_rssb", "make_rxycos",
+ "make_rxyk!cos", "make_rxyk!sin", "make_rxysin", "make_sample2file", "make_sampler", "make_sawtooth_wave",
+ "make_selection", "make_sinc_train", "make_snd2sample", "make_sound_box", "make_spencer_filter", "make_square_wave",
+ "make_src", "make_ssb_am", "make_table_lookup", "make_table_lookup_with_env", "make_tanhsin", "make_triangle_wave",
+ "make_two_pole", "make_two_zero", "make_variable_display", "make_variable_graph", "make_wave_train", "make_wave_train_with_env",
+ "map_channel", "map_sound_files", "maracas", "mark2integer", "mark_click_hook", "mark_click_info",
+ "mark_color", "Mark_context", "mark_drag_hook", "mark_explode", "mark_home", "mark_hook",
+ "mark_loops", "mark_name", "mark_name2id", "mark_properties", "mark_property", "mark_sample",
+ "mark_sync", "mark_sync_color", "mark_sync_max", "mark_tag_height", "mark_tag_width", "mark?",
+ "marks", "match_sound_files", "max_envelope", "max_regions", "max_transform_peaks", "maxamp",
+ "maxamp_position", "menu_widgets", "menus__optional", "min_dB", "mix", "mix2float_vector",
+ "mix2integer", "mix_amp", "mix_amp_env", "mix_channel", "mix_click_hook", "mix_click_info",
+ "mix_click_sets_amp", "mix_color", "mix_dialog_mix", "mix_drag_hook", "mix_file_dialog", "mix_float_vector",
+ "mix_home", "mix_length", "mix_maxamp", "mix_name", "mix_name2id", "mix_position",
+ "mix_properties", "mix_property", "mix_region", "mix_release_hook", "mix_sampler?", "mix_selection",
+ "mix_sound", "mix_speed", "mix_sync", "mix_sync_max", "mix_tag_height", "mix_tag_width",
+ "mix_tag_y", "mix_waveform_height", "mix?", "mixes", "mono2stereo", "moog_filter",
+ "morally_equal?", "mouse_click_hook", "mouse_drag_hook", "mouse_enter_graph_hook", "mouse_enter_label_hook", "mouse_enter_listener_hook",
+ "mouse_enter_text_hook", "mouse_leave_graph_hook", "mouse_leave_label_hook", "mouse_leave_listener_hook", "mouse_leave_text_hook", "mouse_press_hook",
+ "move_locsig", "move_mixes", "move_sound", "move_sound?", "move_syncd_marks", "moving_autocorrelation",
+ "moving_autocorrelation?", "moving_average", "moving_average?", "moving_fft", "moving_fft?", "moving_length",
+ "moving_max", "moving_max?", "moving_norm", "moving_norm?", "moving_pitch", "moving_pitch?",
+ "moving_rms", "moving_scentroid", "moving_scentroid?", "moving_spectrum", "moving_spectrum?", "moving_sum",
+ "mpg", "mus_alsa_buffer_size", "mus_alsa_buffers", "mus_alsa_capture_device", "mus_alsa_device", "mus_alsa_playback_device",
+ "mus_alsa_squelch_warning", "mus_array_print_length", "mus_bytes_per_sample", "mus_channel", "mus_channels", "mus_chebyshev_tu_sum",
+ "mus_clipping", "mus_close", "mus_copy", "mus_data", "mus_describe", "mus_error_hook",
+ "mus_error_type2string", "mus_expand_filename", "mus_feedback", "mus_feedforward", "mus_fft", "mus_file_buffer_size",
+ "mus_file_clipping", "mus_file_mix", "mus_file_name", "mus_float_equal_fudge_factor", "mus_frequency", "mus_generator?",
+ "mus_header_raw_defaults", "mus_header_type2string", "mus_header_type_name", "mus_hop", "mus_increment", "mus_input?",
+ "mus_interp_type", "mus_interpolate", "mus_length", "mus_location", "mus_max_malloc", "mus_max_table_size",
+ "mus_name", "mus_offset", "mus_order", "mus_oss_set_buffers", "mus_output?", "mus_phase",
+ "mus_ramp", "mus_rand_seed", "mus_random", "mus_reset", "mus_run", "mus_sample_type2string",
+ "mus_sample_type_name", "mus_scaler", "mus_sound_chans", "mus_sound_comment", "mus_sound_data_location", "mus_sound_datum_size",
+ "mus_sound_duration", "mus_sound_forget", "mus_sound_framples", "mus_sound_header_type", "mus_sound_length", "mus_sound_loop_info",
+ "mus_sound_mark_info", "mus_sound_maxamp", "mus_sound_maxamp_exists?", "mus_sound_path", "mus_sound_preload", "mus_sound_prune",
+ "mus_sound_report_cache", "mus_sound_sample_type", "mus_sound_samples", "mus_sound_srate", "mus_sound_type_specifier", "mus_sound_write_date",
+ "mus_srate", "mus_width", "mus_xcoeff", "mus_xcoeffs", "mus_ycoeff", "mus_ycoeffs",
+ "n1cos", "n1cos?", "name_click_hook", "nchoosekcos", "nchoosekcos?", "ncos",
+ "ncos2?", "ncos4?", "ncos?", "new_sound", "new_sound_dialog", "new_sound_hook",
+ "new_widget_hook", "next_sample", "nkssb", "nkssb_interp", "nkssb?", "noddcos",
+ "noddcos?", "noddsin", "noddsin?", "noddssb", "noddssb?", "noid",
+ "normalize_channel", "normalize_envelope", "normalize_partials", "normalize_sound", "normalized_mix", "notch",
+ "notch_channel", "notch_selection", "notch_sound", "notch?", "npcos?", "nrcos",
+ "nrcos?", "nrev", "nrsin", "nrsin?", "nrssb", "nrssb_interp",
+ "nrssb?", "nrxycos", "nrxycos?", "nrxysin", "nrxysin?", "nsin",
+ "nsin?", "nsincos", "nsincos?", "nssb", "nssb?", "nxy1cos",
+ "nxy1cos?", "nxy1sin", "nxy1sin?", "nxycos", "nxycos?", "nxysin",
+ "nxysin?", "object2let", "object2string", "odd_multiple", "odd_weight", "offset_channel",
+ "offset_sound", "one_pole", "one_pole_all_pass", "one_pole_all_pass?", "one_pole?", "one_zero",
+ "one_zero?", "open_file_dialog", "open_file_dialog_directory", "open_hook", "open_next_file_in_directory", "open_raw_sound",
+ "open_raw_sound_hook", "open_sound", "openlet", "openlet?", "orientation_hook", "oscil",
+ "oscil_bank", "oscil_bank?", "oscil?", "out_any", "out_bank", "outa",
+ "outlet", "_output_", "output_comment_hook", "overlay_rms_env", "owlet", "pad_channel",
+ "pad_marks", "pad_sound", "pair_filename", "pair_line_number", "pan_mix", "pan_mix_float_vector",
+ "partials2polynomial", "partials2wave", "pausing", "peak_env_dir", "peaks", "peaks_font",
+ "phase_partials2wave", "phase_vocoder", "phase_vocoder?", "piano_model", "pink_noise", "pink_noise?",
+ "pins", "place_sound", "play", "play_arrow_size", "play_between_marks", "play_hook",
+ "play_mixes", "play_often", "play_region_forever", "play_sine", "play_sines", "play_syncd_marks",
+ "play_until_c_g", "play_with_envs", "player_home", "player?", "players", "playing",
+ "pluck", "polar2rectangular", "polynomial", "polynomial_operations", "polyoid", "polyoid_env",
+ "polyoid?", "polyshape", "polyshape?", "polywave", "polywave?", "port_filename",
+ "port_line_number", "position2x", "position2y", "position_color", "power_env", "pqw",
+ "pqw_vox", "preferences_dialog", "previous_sample", "print_dialog", "print_length", "procedure_source",
"progress_report", "pulse_train", "pulse_train?", "pulsed_env", "pulsed_env?", "r2k!cos",
"r2k!cos?", "r2k2cos", "r2k2cos?", "radians2degrees", "radians2hz", "ramp_channel",
"rand", "rand_interp", "rand_interp?", "rand?", "random", "random_state",
@@ -486,51 +486,51 @@ static const char *help_names[HELP_NAMES_SIZE] = {
"selected_channel", "selected_data_color", "selected_graph_color", "selected_sound", "selection", "selection2mix",
"selection_chans", "selection_color", "Selection_context", "selection_creates_region", "selection_framples", "selection_maxamp",
"selection_maxamp_position", "selection_member?", "selection_members", "selection_position", "selection_rms", "selection_srate",
- "selection?", "set_samples", "short_file_name", "show_axes", "show_controls", "show_disk_space",
- "show_full_duration", "show_full_range", "show_grid", "show_indices", "show_listener", "show_marks",
- "show_mix_waveforms", "show_selection", "show_selection_transform", "show_sonogram_cursor", "show_transform_peaks", "show_widget",
- "show_y_zero", "silence_all_mixes", "silence_mixes", "sinc_train", "sinc_train?", "sinc_width",
- "sine_env_channel", "sine_ramp", "singer", "smooth_channel", "smooth_selection", "smooth_sound",
- "SMS_synthesis", "snap_mark_to_beat", "snap_marks", "snap_mix_to_beat", "snd2sample", "snd2sample?",
- "snd_color", "snd_error", "snd_error_hook", "snd_font", "snd_gcs", "snd_help",
- "snd_hooks", "_snd_opened_sound_", "snd_print", "snd_spectrum", "snd_tempnam", "snd_url",
- "snd_urls", "snd_version", "snd_warning", "snd_warning_hook", "sndwarp", "sort!",
- "sound2amp_env", "sound2integer", "sound_file_extensions", "sound_file?", "sound_files_in_directory", "sound_interp",
- "sound_loop_info", "sound_properties", "sound_property", "sound_widgets", "sound?", "soundfont_info",
- "sounds", "sounds2segment_data", "spectra", "spectral_interpolation", "spectral_polynomial", "spectro_hop",
- "spectro_x_angle", "spectro_x_scale", "spectro_y_angle", "spectro_y_scale", "spectro_z_angle", "spectro_z_scale",
- "spectrum", "spectrum2coeffs", "spectrum_end", "spectrum_start", "speed_control", "speed_control_bounds",
- "speed_control_style", "speed_control_tones", "spot_freq", "square_wave", "square_wave?", "squelch_update",
- "squelch_vowels", "srate", "src", "src_channel", "src_duration", "src_fit_envelope",
- "src_mixes", "src_selection", "src_sound", "src?", "ssb_am", "ssb_am?",
- "ssb_bank", "ssb_bank_env", "ssb_fm", "start_dac", "start_playing", "start_playing_hook",
- "start_playing_selection_hook", "start_progress_report", "status_report", "stdin_prompt", "stereo2mono", "stereo_flute",
- "stop_player", "stop_playing", "stop_playing_hook", "stop_playing_selection_hook", "stretch_envelope", "stretch_sound_via_dft",
- "string2byte_vector", "string_position", "sublet", "superimpose_ffts", "swap_channels", "swap_selection_channels",
- "symbol2dynamic_value", "symbol2value", "symbol_access", "symbol_table", "sync", "sync_everything",
- "sync_max", "sync_style", "syncd_marks", "syncd_mixes", "syncup", "table_lookup",
- "table_lookup?", "tanhsin", "tanhsin?", "tap", "tap?", "telephone",
- "temp_dir", "text_focus_color", "time_graph_style", "time_graph_type", "time_graph?", "times2samples",
- "tiny_font", "touch_tone", "trace", "tracking_cursor_style", "transform2float_vector", "transform2integer",
- "transform_dialog", "transform_framples", "transform_graph_style", "transform_graph_type", "transform_graph?", "transform_normalization",
- "transform_sample", "transform_size", "transform_type", "transform?", "transpose_mixes", "triangle_wave",
- "triangle_wave?", "tubebell", "tubular_bell", "two_pole", "two_pole?", "two_tab",
- "two_zero", "two_zero?", "type_of", "unbind_key", "_unbound_variable_hook_", "unclip_channel",
- "undo", "undo_hook", "unlet", "unselect_all", "update_graphs", "update_hook",
- "update_lisp_graph", "update_sound", "update_time_graph", "update_transform_graph", "upon_save_yourself", "user_interface_extensions",
- "variable_display", "variable_graph?", "varlet", "vibrating_uniform_circular_string", "view_files_amp", "view_files_amp_env",
- "view_files_dialog", "view_files_files", "view_files_select_hook", "view_files_selected_files", "view_files_sort", "view_files_speed",
- "view_files_speed_style", "view_mixes_dialog", "view_regions_dialog", "view_sound", "voice_physical_model", "voiced2unvoiced",
- "volterra_filter", "vox", "wave_train", "wave_train?", "wavelet_type", "waveshaping_voice",
- "wavo_hop", "wavo_trace", "weighted_moving_average", "widget_position", "widget_size", "widget_text",
- "window_height", "window_samples", "window_width", "window_x", "window_y", "with_background_processes",
- "with_baffle", "with_file_monitor", "with_gl", "with_inset_graph", "with_interrupts", "with_let",
- "with_local_hook", "with_menu_icons", "with_mix_tags", "with_pointer_focus", "with_relative_panes", "with_smpte_label",
- "with_sound", "with_temporary_selection", "with_toolbar", "with_tooltips", "with_tracking_cursor", "with_verbose_cursor",
- "x2position", "x_axis_label", "x_axis_style", "x_bounds", "x_position_slider", "x_zoom_slider",
- "xb_open", "xramp_channel", "y2position", "y_axis_label", "y_bounds", "y_position_slider",
- "y_zoom_slider", "z_transform", "zecho", "zero_", "zero_pad", "zero_phase",
- "zip_sound", "zipper", "zoom_color", "zoom_focus_style"};
+ "selection?", "set_samples", "setter", "short_file_name", "show_axes", "show_controls",
+ "show_disk_space", "show_full_duration", "show_full_range", "show_grid", "show_indices", "show_listener",
+ "show_marks", "show_mix_waveforms", "show_selection", "show_selection_transform", "show_sonogram_cursor", "show_transform_peaks",
+ "show_widget", "show_y_zero", "signature", "silence_all_mixes", "silence_mixes", "sinc_train",
+ "sinc_train?", "sinc_width", "sine_env_channel", "sine_ramp", "singer", "smooth_channel",
+ "smooth_selection", "smooth_sound", "SMS_synthesis", "snap_mark_to_beat", "snap_marks", "snap_mix_to_beat",
+ "snd2sample", "snd2sample?", "snd_color", "snd_error", "snd_error_hook", "snd_font",
+ "snd_gcs", "snd_help", "snd_hooks", "_snd_opened_sound_", "snd_print", "snd_spectrum",
+ "snd_tempnam", "snd_url", "snd_urls", "snd_version", "snd_warning", "snd_warning_hook",
+ "sndwarp", "sort!", "sound2amp_env", "sound2integer", "sound_file_extensions", "sound_file?",
+ "sound_files_in_directory", "sound_interp", "sound_loop_info", "sound_properties", "sound_property", "sound_widgets",
+ "sound?", "soundfont_info", "sounds", "sounds2segment_data", "spectra", "spectral_interpolation",
+ "spectral_polynomial", "spectro_hop", "spectro_x_angle", "spectro_x_scale", "spectro_y_angle", "spectro_y_scale",
+ "spectro_z_angle", "spectro_z_scale", "spectrum", "spectrum2coeffs", "spectrum_end", "spectrum_start",
+ "speed_control", "speed_control_bounds", "speed_control_style", "speed_control_tones", "spot_freq", "square_wave",
+ "square_wave?", "squelch_update", "squelch_vowels", "srate", "src", "src_channel",
+ "src_duration", "src_fit_envelope", "src_mixes", "src_selection", "src_sound", "src?",
+ "ssb_am", "ssb_am?", "ssb_bank", "ssb_bank_env", "ssb_fm", "start_dac",
+ "start_playing", "start_playing_hook", "start_playing_selection_hook", "start_progress_report", "status_report", "stdin_prompt",
+ "stereo2mono", "stereo_flute", "stop_player", "stop_playing", "stop_playing_hook", "stop_playing_selection_hook",
+ "stretch_envelope", "stretch_sound_via_dft", "string2byte_vector", "string_position", "sublet", "superimpose_ffts",
+ "swap_channels", "swap_selection_channels", "symbol2dynamic_value", "symbol2value", "symbol_setter", "symbol_table",
+ "sync", "sync_everything", "sync_max", "sync_style", "syncd_marks", "syncd_mixes",
+ "syncup", "table_lookup", "table_lookup?", "tanhsin", "tanhsin?", "tap",
+ "tap?", "telephone", "temp_dir", "text_focus_color", "time_graph_style", "time_graph_type",
+ "time_graph?", "times2samples", "tiny_font", "touch_tone", "trace", "tracking_cursor_style",
+ "transform2float_vector", "transform2integer", "transform_dialog", "transform_framples", "transform_graph_style", "transform_graph_type",
+ "transform_graph?", "transform_normalization", "transform_sample", "transform_size", "transform_type", "transform?",
+ "transpose_mixes", "triangle_wave", "triangle_wave?", "tubebell", "tubular_bell", "two_pole",
+ "two_pole?", "two_tab", "two_zero", "two_zero?", "type_of", "unbind_key",
+ "_unbound_variable_hook_", "unclip_channel", "undo", "undo_hook", "unlet", "unselect_all",
+ "update_graphs", "update_hook", "update_lisp_graph", "update_sound", "update_time_graph", "update_transform_graph",
+ "upon_save_yourself", "user_interface_extensions", "variable_display", "variable_graph?", "varlet", "vibrating_uniform_circular_string",
+ "view_files_amp", "view_files_amp_env", "view_files_dialog", "view_files_files", "view_files_select_hook", "view_files_selected_files",
+ "view_files_sort", "view_files_speed", "view_files_speed_style", "view_mixes_dialog", "view_regions_dialog", "view_sound",
+ "voice_physical_model", "voiced2unvoiced", "volterra_filter", "vox", "wave_train", "wave_train?",
+ "wavelet_type", "waveshaping_voice", "wavo_hop", "wavo_trace", "weighted_moving_average", "widget_position",
+ "widget_size", "widget_text", "window_height", "window_samples", "window_width", "window_x",
+ "window_y", "with_background_processes", "with_baffle", "with_file_monitor", "with_gl", "with_inset_graph",
+ "with_interrupts", "with_let", "with_local_hook", "with_menu_icons", "with_mix_tags", "with_pointer_focus",
+ "with_relative_panes", "with_smpte_label", "with_sound", "with_temporary_selection", "with_toolbar", "with_tooltips",
+ "with_tracking_cursor", "with_verbose_cursor", "x2position", "x_axis_label", "x_axis_style", "x_bounds",
+ "x_position_slider", "x_zoom_slider", "xb_open", "xramp_channel", "y2position", "y_axis_label",
+ "y_bounds", "y_position_slider", "y_zoom_slider", "z_transform", "zecho", "zero_",
+ "zero_pad", "zero_phase", "zip_sound", "zipper", "zoom_color", "zoom_focus_style"};
#endif
#if (!HAVE_EXTENSION_LANGUAGE)
static const char **help_names = NULL;
@@ -600,223 +600,223 @@ static const char *help_urls[HELP_NAMES_SIZE] = {
"sndscm.html#describemark", "sndscm.html#dht", "extsnd.html#dialogwidgets", "s7.html#dilambda",
"sndscm.html#disablecontrolpanel", "sndscm.html#displaybarkfft", "sndscm.html#displaycorrelation", "sndscm.html#displaydb",
"extsnd.html#displayedits", "sndscm.html#displayenergy", "sndscm.html#dissolvefade", "sndscm.html#ditherchannel",
- "sndscm.html#dithersound", "sndscm.html#dolph", "sndclm.html#dot-product", "extsnd.html#dotsize",
- "sndscm.html#downoct", "extsnd.html#drawaxes", "extsnd.html#drawdot", "extsnd.html#drawdots",
- "extsnd.html#drawline", "extsnd.html#drawlines", "extsnd.html#drawmarkhook", "extsnd.html#drawmixhook",
- "extsnd.html#drawstring", "sndscm.html#drone", "sndscm.html#makedropsite", "extsnd.html#drophook",
- "extsnd.html#duringopenhook", "extsnd.html#editfragment", "extsnd.html#editheaderdialog", "extsnd.html#edithook",
- "extsnd.html#editlisttofunction", "extsnd.html#editposition", "extsnd.html#editproperties", "extsnd.html#editproperty",
- "extsnd.html#edittree", "extsnd.html#edits", "sndclm.html#edot-product", "extsnd.html#effectshook",
- "sndscm.html#analogfilterdoc", "sndclm.html#env", "sndclm.html#env-any", "extsnd.html#envchannel",
- "extsnd.html#envchannelwithbase", "sndscm.html#envexptchannel", "sndclm.html#env-interp", "sndscm.html#envmixes",
- "extsnd.html#envselection", "extsnd.html#envsound", "sndscm.html#envsoundinterp", "sndscm.html#envsquaredchannel",
- "sndclm.html#env?", "extsnd.html#envedbase", "extsnd.html#envedclipping", "extsnd.html#enveddialog",
- "extsnd.html#envedenvelope", "extsnd.html#filterenv", "extsnd.html#filterenvorder", "extsnd.html#envedhook",
- "extsnd.html#envedin-dB", "extsnd.html#envedpower", "extsnd.html#envedstyle", "extsnd.html#envedtarget",
- "extsnd.html#envedwaving", "extsnd.html#envedwaveformcolor", "sndclm.html#envelopeinterp", "sndscm.html#envelopedmix",
- "sndclm.html#eoddcos", "sndclm.html#eoddcos?", "extsnd.html#epsbottommargin", "extsnd.html#epsfile",
- "extsnd.html#epsleftmargin", "extsnd.html#epssize", "sndclm.html#ercos", "sndclm.html#ercos?",
- "s7.html#errorhook", "sndclm.html#erssb", "sndclm.html#erssb?", "sndclm.html#evenmultiple",
- "sndclm.html#evenweight", "sndscm.html#everysample", "extsnd.html#exit", "extsnd.html#exithook",
- "extsnd.html#expandcontrol", "extsnd.html#expandcontrolbounds", "extsnd.html#expandcontrolhop", "extsnd.html#expandcontroljitter",
- "extsnd.html#expandcontrollength", "extsnd.html#expandcontrolramp", "extsnd.html#expandcontrolp", "sndscm.html#explodesf2",
- "sndclm.html#exponentially-weighted-moving-average", "sndscm.html#expsnd", "sndscm.html#expsrc", "s7.html#featureslist",
- "sndscm.html#cellon", "extsnd.html#fft", "sndscm.html#fftcancel", "sndscm.html#fftedit",
- "sndscm.html#fftenvedit", "sndscm.html#fftenvinterp", "extsnd.html#fftlogfrequency", "extsnd.html#fftlogmagnitude",
- "sndscm.html#fftsmoother", "sndscm.html#fftsquelch", "extsnd.html#fftwindow", "extsnd.html#fftalpha",
- "extsnd.html#fftbeta", "extsnd.html#fftwithphases", "sndscm.html#nbdoc", "sndclm.html#filetoarray",
- "sndclm.html#filetoframple", "sndclm.html#filetoframple?", "sndclm.html#filetosample", "sndclm.html#filetosample?",
- "extsnd.html#filename", "s7.html#fillb", "extsnd.html#fillpolygon", "extsnd.html#fillrectangle",
- "sndclm.html#filter", "extsnd.html#filterchannel", "extsnd.html#filtercontrolcoeffs", "extsnd.html#filtercontrolenvelope",
- "extsnd.html#filtercontrolindB", "extsnd.html#filtercontrolinhz", "extsnd.html#filtercontrolorder", "extsnd.html#filterwaveformcolor",
- "extsnd.html#filtercontrolp", "sndscm.html#filterfft", "extsnd.html#filterselection", "sndscm.html#filterselectionandsmooth",
- "extsnd.html#filtersound", "sndclm.html#filter?", "sndclm.html#filtered-comb", "sndclm.html#filteredcombbank",
- "sndclm.html#filteredcombbankp", "sndclm.html#filtered-comb?", "extsnd.html#finddialog", "extsnd.html#findmark",
- "sndscm.html#findmix", "extsnd.html#findsound", "sndscm.html#finfo", "extsnd.html#finishprogressreport",
- "sndclm.html#fir-filter", "sndclm.html#fir-filter?", "sndclm.html#firmant", "sndclm.html#firmant?",
- "sndscm.html#fitselectionbetweenmarks", "sndscm.html#flattenpartials", "extsnd.html#fv", "extsnd.html#fvtimes",
- "extsnd.html#fvplus", "extsnd.html#fvtochannel", "extsnd.html#fvtolist", "extsnd.html#fvtostring",
- "extsnd.html#fvabs", "extsnd.html#fvadd", "extsnd.html#fvequal", "extsnd.html#fvfill",
- "extsnd.html#fvlength", "extsnd.html#fvmax", "extsnd.html#fvmin", "extsnd.html#fvmove",
- "extsnd.html#fvmultiply", "extsnd.html#fvoffset", "extsnd.html#fvpeak", "sndscm.html#fvpolynomial",
- "extsnd.html#fvref", "extsnd.html#fvreverse", "extsnd.html#fvscale", "extsnd.html#fvset",
- "extsnd.html#fvsubseq", "extsnd.html#fvsubtract", "extsnd.html#fvp", "sndclm.html#flocsig",
- "sndclm.html#flocsig?", "sndscm.html#stereoflute", "sndscm.html#fmbell", "sndscm.html#fmdrum",
- "sndscm.html#fmnoise", "sndscm.html#fmparallelcomponent", "sndscm.html#fmvox", "sndscm.html#fmtrumpet",
- "sndscm.html#vdoc", "sndscm.html#fmvoice", "sndclm.html#fmssb", "sndclm.html#fmssb?",
- "extsnd.html#focuswidget", "sndscm.html#fofins", "sndscm.html#fofins", "sndscm.html#foreachchild",
- "sndscm.html#foreachsoundfile", "sndscm.html#fp", "extsnd.html#foregroundcolor", "extsnd.html#forgetregion",
- "sndclm.html#formant", "sndclm.html#formantbank", "sndclm.html#formantbankp", "sndclm.html#formant?",
- "s7.html#format", "sndscm.html#fp", "sndscm.html#fractionalfouriertransform", "sndclm.html#frampletofile",
- "sndclm.html#frampletofile?", "sndclm.html#frampletoframple", "extsnd.html#framples", "extsnd.html#freeplayer",
- "extsnd.html#freesampler", "sndscm.html#freeverb", "sndscm.html#fullmix", "s7.html#funclet",
- "sndscm.html#gaussiandistribution", "extsnd.html#gcoff", "extsnd.html#gcon", "s7.html#gensym",
- "s7.html#gensym?", "extsnd.html#glgraphtops", "extsnd.html#glspectrogram", "sndscm.html#goertzel",
- "extsnd.html#gotolistenerend", "sndscm.html#grani", "sndclm.html#granulate", "sndclm.html#granulate?",
- "sndscm.html#granulatedsoundinterp", "extsnd.html#graph", "extsnd.html#graphtops", "extsnd.html#graphcolor",
- "extsnd.html#graphcursor", "extsnd.html#graphdata", "extsnd.html#graphhook", "extsnd.html#graphstyle",
- "sndscm.html#grapheq", "extsnd.html#graphshorizontal", "sndclm.html#green-noise", "sndclm.html#green-noise-interp",
- "sndclm.html#green-noise-interp?", "sndclm.html#green-noise?", "extsnd.html#griddensity", "sndscm.html#harmonicizer",
- "sndscm.html#dht", "s7.html#hashtable", "s7.html#hashtablestar", "s7.html#hashtableentries",
- "s7.html#hashtableref", "s7.html#hashtableset", "s7.html#hashtablep", "extsnd.html#headertype",
- "sndscm.html#hellodentist", "extsnd.html#helpdialog", "extsnd.html#helphook", "extsnd.html#hidewidget",
- "extsnd.html#highlightcolor", "sndscm.html#hilberttransform", "s7.html#hookfunctions", "sndscm.html#hookmember",
- "sndscm.html#html", "extsnd.html#htmldir", "extsnd.html#htmlprogram", "sndclm.html#hztoradians",
- "sndclm.html#iir-filter", "sndclm.html#iir-filter?", "extsnd.html#gin", "sndclm.html#in-any",
- "sndclm.html#ina", "sndclm.html#inb", "extsnd.html#infodialog", "grfsnd.html#initladspa",
- "extsnd.html#initialbeg", "extsnd.html#initialdur", "extsnd.html#initialgraphhook", "s7.html#inlet",
- "sndscm.html#insertchannel", "extsnd.html#insertfiledialog", "extsnd.html#insertregion", "extsnd.html#insertsample",
- "extsnd.html#insertsamples", "extsnd.html#insertselection", "extsnd.html#insertsilence", "extsnd.html#insertsound",
- "s7.html#intvector", "s7.html#intvectorref", "s7.html#intvectorset", "s7.html#intvectorp",
- "extsnd.html#integertocolormap", "extsnd.html#integertomark", "extsnd.html#integertomix", "extsnd.html#integertoregion",
- "extsnd.html#integertosound", "extsnd.html#integertotransform", "sndscm.html#integrateenvelope", "sndscm.html#invertfilter",
- "s7.html#iterate", "s7.html#iteratoratend", "s7.html#iteratorsequence", "s7.html#iteratorp",
- "sndclm.html#izcos", "sndclm.html#izcos?", "sndclm.html#j0evencos", "sndclm.html#j0evencos?",
- "sndclm.html#j0j1cos", "sndclm.html#j0j1cos?", "sndclm.html#j2cos", "sndclm.html#j2cos?",
- "sndscm.html#jcreverb", "sndclm.html#jjcos", "sndclm.html#jjcos?", "sndclm.html#jncos",
- "sndclm.html#jncos?", "sndclm.html#jpcos", "sndclm.html#jpcos?", "extsnd.html#justsounds",
- "sndclm.html#jycos", "sndclm.html#jycos?", "sndclm.html#k2cos", "sndclm.html#k2cos?",
- "sndclm.html#k2sin", "sndclm.html#k2sin?", "sndclm.html#k2ssb", "sndclm.html#k2ssb?",
- "sndclm.html#k3sin", "sndclm.html#k3sin?", "sndscm.html#kalmanfilterchannel", "extsnd.html#key",
- "extsnd.html#keybinding", "extsnd.html#keypresshook", "sndclm.html#krksin", "sndclm.html#krksin?",
- "grfsnd.html#ladspadescriptor", "extsnd.html#ladspadir", "s7.html#lambdastar", "sndscm.html#lbjpiano",
- "extsnd.html#leftsample", "s7.html#lettolist", "s7.html#letref", "s7.html#letset",
- "s7.html#lettemporarily", "s7.html#letp", "sndclm.html#lineartodb", "sndscm.html#linearsrcchannel",
- "sndscm.html#lintdoc", "extsnd.html#lispgraphhook", "extsnd.html#lispgraphstyle", "extsnd.html#lispgraphp",
- "extsnd.html#listtofv", "grfsnd.html#listladspa", "extsnd.html#listenerclickhook", "extsnd.html#listenercolor",
- "extsnd.html#listenercolorized", "extsnd.html#listenerfont", "extsnd.html#listenerprompt", "extsnd.html#listenerselection",
- "extsnd.html#listenertextcolor", "extsnd.html#littleendianp", "s7.html#loadhook", "s7.html#loadpath",
- "sndscm.html#locatezero", "sndclm.html#locsig", "sndclm.html#locsig-ref", "sndclm.html#locsig-reverb-ref",
- "sndclm.html#locsig-reverb-set!", "sndclm.html#locsig-set!", "sndclm.html#locsig-type", "sndclm.html#locsig?",
- "extsnd.html#logfreqstart", "sndscm.html#lpccoeffs", "sndscm.html#lpcpredict", "s7.html#macrop",
- "s7.html#macroexpand", "extsnd.html#mainmenu", "extsnd.html#mainwidgets", "sndclm.html#make-abcos",
- "sndclm.html#make-absin", "sndclm.html#make-adjustable-sawtooth-wave", "sndclm.html#make-adjustable-square-wave", "sndclm.html#make-adjustable-triangle-wave",
- "sndclm.html#make-all-pass", "sndclm.html#makeallpassbank", "sndclm.html#make-asyfm", "sndclm.html#make-asymmetric-fm",
- "sndscm.html#makebandpass", "sndscm.html#makebandstop", "sndclm.html#make-bess", "sndscm.html#makebiquad",
- "sndscm.html#makebirds", "sndclm.html#make-blackman", "sndclm.html#make-brown-noise", "s7.html#makebytevector",
- "sndscm.html#makedropsite", "extsnd.html#makecolor", "sndclm.html#make-comb", "sndclm.html#makecombbank",
- "sndclm.html#make-convolve", "sndclm.html#make-delay", "sndscm.html#makedifferentiator", "sndclm.html#make-env",
- "sndclm.html#make-eoddcos", "sndclm.html#make-ercos", "sndclm.html#make-erssb", "sndclm.html#make-fft-window",
- "sndclm.html#make-filetoframple", "sndclm.html#make-filetosample", "sndclm.html#make-filter", "sndclm.html#make-filtered-comb",
- "sndclm.html#makefilteredcombbank", "sndclm.html#make-fir-coeffs", "sndclm.html#make-fir-filter", "sndclm.html#make-firmant",
- "extsnd.html#makefv", "sndclm.html#make-flocsig", "sndclm.html#make-fmssb", "sndclm.html#make-formant",
- "sndclm.html#makeformantbank", "sndclm.html#make-frampletofile", "sndclm.html#make-granulate", "extsnd.html#makegraphdata",
- "sndclm.html#make-green-noise", "sndclm.html#make-green-noise-interp", "s7.html#makehashtable", "sndscm.html#makehighpass",
- "sndscm.html#makehilberttransform", "s7.html#makehook", "sndclm.html#make-iir-filter", "s7.html#makeintvector",
- "s7.html#makeiterator", "sndclm.html#make-izcos", "sndclm.html#make-j0evencos", "sndclm.html#make-j0j1cos",
- "sndclm.html#make-j2cos", "sndclm.html#make-jjcos", "sndclm.html#make-jncos", "sndclm.html#make-jpcos",
- "sndclm.html#make-jycos", "sndclm.html#make-k2cos", "sndclm.html#make-k2sin", "sndclm.html#make-k2ssb",
- "sndclm.html#make-k3sin", "sndclm.html#make-krksin", "sndclm.html#make-locsig", "sndscm.html#makelowpass",
- "extsnd.html#makemixsampler", "sndclm.html#make-move-sound", "sndclm.html#make-moving-autocorrelation", "sndclm.html#make-moving-average",
- "sndclm.html#make-moving-fft", "sndclm.html#make-moving-max", "sndclm.html#make-moving-norm", "sndclm.html#make-moving-pitch",
- "sndclm.html#make-moving-scentroid", "sndclm.html#make-moving-spectrum", "sndclm.html#make-n1cos", "sndclm.html#make-nchoosekcos",
- "sndclm.html#make-ncos", "sndclm.html#make-nkssb", "sndclm.html#make-noddcos", "sndclm.html#make-noddsin",
- "sndclm.html#make-noddssb", "sndclm.html#make-noid", "sndclm.html#make-notch", "sndclm.html#make-nrcos",
- "sndclm.html#make-nrsin", "sndclm.html#make-nrssb", "sndclm.html#make-nrxycos", "sndclm.html#make-nrxysin",
- "sndclm.html#make-nsin", "sndclm.html#make-nsincos", "sndclm.html#make-nssb", "sndclm.html#make-nxy1cos",
- "sndclm.html#make-nxy1sin", "sndclm.html#make-nxycos", "sndclm.html#make-nxysin", "sndclm.html#make-one-pole",
- "sndclm.html#make-one-pole-all-pass", "sndclm.html#make-one-zero", "sndclm.html#make-oscil", "sndclm.html#make-oscil-bank",
- "sndclm.html#make-phase-vocoder", "sndclm.html#make-pink-noise", "sndscm.html#makepixmap", "extsnd.html#makeplayer",
- "sndclm.html#make-polyoid", "sndclm.html#make-polyshape", "sndclm.html#make-polywave", "sndclm.html#make-pulse-train",
- "sndclm.html#make-pulsed-env", "sndclm.html#make-r2k!cos", "sndclm.html#make-r2k2cos", "sndscm.html#makeramp",
- "sndclm.html#make-rand", "sndclm.html#make-rand-interp", "sndclm.html#make-rcos", "sndclm.html#make-readin",
- "extsnd.html#makeregion", "extsnd.html#makeregionsampler", "sndclm.html#make-rk!cos", "sndclm.html#make-rk!ssb",
- "sndclm.html#make-rkcos", "sndclm.html#make-rkoddssb", "sndclm.html#make-rksin", "sndclm.html#make-rkssb",
- "sndclm.html#make-round-interp", "sndclm.html#make-rssb", "sndclm.html#make-rxycos", "sndclm.html#make-rxyk!cos",
- "sndclm.html#make-rxyk!sin", "sndclm.html#make-rxysin", "sndclm.html#make-sampletofile", "extsnd.html#makesampler",
- "sndclm.html#make-sawtooth-wave", "sndscm.html#makeselection", "sndclm.html#make-sinc-train", "extsnd.html#makesndtosample",
- "sndscm.html#makesoundbox", "sndscm.html#makespencerfilter", "sndclm.html#make-square-wave", "sndclm.html#make-src",
- "sndclm.html#make-ssb-am", "sndclm.html#make-table-lookup", "sndclm.html#make-table-lookup-with-env", "sndclm.html#make-tanhsin",
- "sndclm.html#make-triangle-wave", "sndclm.html#make-two-pole", "sndclm.html#make-two-zero", "sndscm.html#makevariabledisplay",
- "extsnd.html#makevariablegraph", "sndclm.html#make-wave-train", "sndclm.html#make-wave-train-with-env", "extsnd.html#mapchannel",
- "sndscm.html#mapsoundfiles", "sndscm.html#maracadoc", "extsnd.html#marktointeger", "extsnd.html#markclickhook",
- "sndscm.html#markclickinfo", "extsnd.html#markcolor", "extsnd.html#markcontext", "extsnd.html#markdraghook",
- "sndscm.html#markexplode", "extsnd.html#markhome", "extsnd.html#markhook", "sndscm.html#markloops",
- "extsnd.html#markname", "sndscm.html#marknametoid", "extsnd.html#markproperties", "extsnd.html#markproperty",
- "extsnd.html#marksample", "extsnd.html#marksync", "sndscm.html#marksynccolor", "extsnd.html#marksyncmax",
- "extsnd.html#marktagheight", "extsnd.html#marktagwidth", "extsnd.html#markp", "extsnd.html#emarks",
- "sndscm.html#matchsoundfiles", "sndscm.html#maxenvelope", "extsnd.html#maxregions", "extsnd.html#maxfftpeaks",
- "extsnd.html#maxamp", "extsnd.html#maxampposition", "extsnd.html#menuwidgets", "sndscm.html#menusdoc",
- "extsnd.html#mindb", "extsnd.html#mix", "sndscm.html#mixtofv", "extsnd.html#mixtointeger",
- "extsnd.html#mixamp", "extsnd.html#mixampenv", "sndscm.html#mixchannel", "extsnd.html#mixclickhook",
- "sndscm.html#mixclickinfo", "sndscm.html#mixclicksetsamp", "extsnd.html#mixcolor", "extsnd.html#mixdialogmix",
- "extsnd.html#mixdraghook", "extsnd.html#mixfiledialog", "extsnd.html#mixfv", "extsnd.html#mixhome",
- "extsnd.html#mixlength", "sndscm.html#mixmaxamp", "extsnd.html#mixname", "sndscm.html#mixnametoid",
- "extsnd.html#mixposition", "extsnd.html#mixproperties", "extsnd.html#mixproperty", "extsnd.html#mixregion",
- "extsnd.html#mixreleasehook", "extsnd.html#mixsamplerQ", "extsnd.html#mixselection", "sndscm.html#mixsound",
- "extsnd.html#mixspeed", "extsnd.html#mixsync", "extsnd.html#mixsyncmax", "extsnd.html#mixtagheight",
- "extsnd.html#mixtagwidth", "extsnd.html#mixtagy", "extsnd.html#mixwaveformheight", "extsnd.html#mixp",
- "extsnd.html#mixes", "sndscm.html#monotostereo", "sndscm.html#moogfilter", "s7.html#morallyequalp",
- "extsnd.html#mouseclickhook", "extsnd.html#mousedraghook", "extsnd.html#mouseentergraphhook", "extsnd.html#mouseenterlabelhook",
- "extsnd.html#mouseenterlistenerhook", "extsnd.html#mouseentertexthook", "extsnd.html#mouseleavegraphhook", "extsnd.html#mouseleavelabelhook",
- "extsnd.html#mousleavelistenerhook", "extsnd.html#mousleavetexthook", "extsnd.html#mousepresshook", "sndclm.html#move-locsig",
- "sndscm.html#movemixes", "sndclm.html#move-sound", "sndclm.html#move-sound?", "sndscm.html#movesyncdmarks",
- "sndclm.html#moving-autocorrelation", "sndclm.html#moving-autocorrelation?", "sndclm.html#moving-average", "sndclm.html#moving-average?",
- "sndclm.html#moving-fft", "sndclm.html#moving-fft?", "sndclm.html#moving-length", "sndclm.html#moving-max",
- "sndclm.html#moving-max?", "sndclm.html#moving-norm", "sndclm.html#moving-norm?", "sndclm.html#moving-pitch",
- "sndclm.html#moving-pitch?", "sndclm.html#moving-rms", "sndclm.html#moving-scentroid", "sndclm.html#moving-scentroid?",
- "sndclm.html#moving-spectrum", "sndclm.html#moving-spectrum?", "sndclm.html#moving-sum", "sndscm.html#mpg",
- "extsnd.html#musalsabuffersize", "extsnd.html#musalsabuffers", "extsnd.html#musalsacapturedevice", "extsnd.html#musalsadevice",
- "extsnd.html#musalsaplaybackdevice", "extsnd.html#musalsasquelchwarning", "sndclm.html#musarrayprintlength", "extsnd.html#musbytespersample",
- "sndclm.html#mus-channel", "sndclm.html#mus-channels", "sndclm.html#mus-chebyshev-tu-sum", "extsnd.html#musclipping",
- "sndclm.html#mus-close", "sndclm.html#mus-copy", "sndclm.html#mus-data", "sndclm.html#mus-describe",
- "extsnd.html#muserrorhook", "extsnd.html#muserrortypetostring", "extsnd.html#musexpandfilename", "sndclm.html#mus-feedback",
- "sndclm.html#mus-feedforward", "sndclm.html#fft", "sndclm.html#musfilebuffersize", "extsnd.html#musfileclipping",
- "sndscm.html#musfilemix", "sndclm.html#mus-file-name", "sndclm.html#musfloatequalfudgefactor", "sndclm.html#mus-frequency",
- "sndclm.html#musgeneratorp", "extsnd.html#musheaderrawdefaults", "extsnd.html#musheadertypetostring", "extsnd.html#musheadertypename",
- "sndclm.html#mus-hop", "sndclm.html#mus-increment", "sndclm.html#mus-input?", "sndclm.html#mus-interp-type",
- "sndclm.html#mus-interpolate", "sndclm.html#mus-length", "sndclm.html#mus-location", "extsnd.html#musmaxmalloc",
- "extsnd.html#musmaxtablesize", "sndclm.html#mus-name", "sndclm.html#mus-offset", "sndclm.html#mus-order",
- "extsnd.html#musosssetbuffers", "sndclm.html#mus-output?", "sndclm.html#mus-phase", "sndclm.html#mus-ramp",
- "sndclm.html#mus-rand-seed", "sndclm.html#mus-random", "sndclm.html#mus-reset", "sndclm.html#mus-run",
- "extsnd.html#mussampletypetostring", "extsnd.html#mussampletypename", "sndclm.html#mus-scaler", "extsnd.html#mussoundchans",
- "extsnd.html#mussoundcomment", "extsnd.html#mussounddatalocation", "extsnd.html#mussounddatumsize", "extsnd.html#mussoundduration",
- "extsnd.html#mussoundforget", "extsnd.html#mussoundframples", "extsnd.html#mussoundheadertype", "extsnd.html#mussoundlength",
- "extsnd.html#mussoundloopinfo", "extsnd.html#mussoundmarkinfo", "extsnd.html#mussoundmaxamp", "extsnd.html#mussoundmaxampexists",
- "extsnd.html#mussoundpath", "extsnd.html#mussoundpreload", "extsnd.html#mussoundprune", "extsnd.html#mussoundreportcache",
- "extsnd.html#mussoundsampletype", "extsnd.html#mussoundsamples", "extsnd.html#mussoundsrate", "extsnd.html#mussoundtypespecifier",
- "extsnd.html#mussoundwritedate", "sndclm.html#mussrate", "sndclm.html#mus-width", "sndclm.html#mus-xcoeff",
- "sndclm.html#mus-xcoeffs", "sndclm.html#mus-ycoeff", "sndclm.html#mus-ycoeffs", "sndclm.html#n1cos",
- "sndclm.html#n1cos?", "extsnd.html#nameclickhook", "sndclm.html#nchoosekcos", "sndclm.html#nchoosekcos?",
- "sndclm.html#ncos", "sndclm.html#ncos2?", "sndclm.html#ncos4?", "sndclm.html#ncos?",
- "extsnd.html#newsound", "extsnd.html#newsounddialog", "extsnd.html#newsoundhook", "extsnd.html#newwidgethook",
- "extsnd.html#nextsample", "sndclm.html#nkssb", "sndclm.html#nkssbinterp", "sndclm.html#nkssb?",
- "sndclm.html#noddcos", "sndclm.html#noddcos?", "sndclm.html#noddsin", "sndclm.html#noddsin?",
- "sndclm.html#noddssb", "sndclm.html#noddssb?", "sndclm.html#noid", "extsnd.html#normalizechannel",
- "sndscm.html#normalizeenvelope", "sndclm.html#normalizepartials", "sndscm.html#normalizesound", "sndscm.html#normalizedmix",
- "sndclm.html#notch", "sndscm.html#notchchannel", "sndscm.html#notchselection", "sndscm.html#notchsound",
- "sndclm.html#notch?", "sndclm.html#npcos?", "sndclm.html#nrcos", "sndclm.html#nrcos?",
- "sndscm.html#nrev", "sndclm.html#nrsin", "sndclm.html#nrsin?", "sndclm.html#nrssb",
- "sndclm.html#nrssbinterp", "sndclm.html#nrssb?", "sndclm.html#nrxycos", "sndclm.html#nrxycos?",
- "sndclm.html#nrxysin", "sndclm.html#nrxysin?", "sndclm.html#nsin", "sndclm.html#nsin?",
- "sndclm.html#nsincos", "sndclm.html#nsincos?", "sndclm.html#nssb", "sndclm.html#nssb?",
- "sndclm.html#nxy1cos", "sndclm.html#nxy1cos?", "sndclm.html#nxy1sin", "sndclm.html#nxy1sin?",
- "sndclm.html#nxycos", "sndclm.html#nxycos?", "sndclm.html#nxysin", "sndclm.html#nxysin?",
- "s7.html#objecttolet", "s7.html#objecttostring", "sndclm.html#oddmultiple", "sndclm.html#oddweight",
- "sndscm.html#offsetchannel", "sndscm.html#offsetsound", "sndclm.html#one-pole", "sndclm.html#one-pole-all-pass",
- "sndclm.html#one-pole-all-pass?", "sndclm.html#one-pole?", "sndclm.html#one-zero", "sndclm.html#one-zero?",
- "extsnd.html#openfiledialog", "extsnd.html#openfiledialogdirectory", "extsnd.html#openhook", "sndscm.html#opennextfileindirectory",
- "extsnd.html#openrawsound", "extsnd.html#openrawsoundhook", "extsnd.html#opensound", "s7.html#openlet",
- "s7.html#openletp", "extsnd.html#orientationhook", "sndclm.html#oscil", "sndclm.html#oscil-bank",
- "sndclm.html#oscil-bank?", "sndclm.html#oscil?", "sndclm.html#out-any", "sndclm.html#outbank",
- "sndclm.html#outa", "s7.html#outlet", "sndclm.html#*output*", "extsnd.html#outputcommenthook",
- "sndscm.html#overlayrmsenv", "s7.html#owlet", "extsnd.html#padchannel", "sndscm.html#padmarks",
- "sndscm.html#padsound", "s7.html#pairfilename", "s7.html#pairlinenumber", "sndscm.html#panmix",
- "sndscm.html#panmixfv", "sndclm.html#partialstopolynomial", "sndclm.html#partialstowave", "extsnd.html#pausing",
- "extsnd.html#peakenvdir", "extsnd.html#peaks", "extsnd.html#peaksfont", "sndclm.html#phase-partialstowave",
- "sndclm.html#phase-vocoder", "sndclm.html#phase-vocoder?", "sndscm.html#pianodoc", "sndclm.html#pink-noise",
- "sndclm.html#pink-noise?", "sndscm.html#pins", "sndscm.html#placesound", "extsnd.html#play",
- "extsnd.html#playarrowsize", "sndscm.html#playbetweenmarks", "extsnd.html#playhook", "sndscm.html#playmixes",
- "sndscm.html#playoften", "sndscm.html#playregionforever", "sndscm.html#playsine", "sndscm.html#playsines",
- "sndscm.html#playsyncdmarks", "sndscm.html#playuntilcg", "sndscm.html#playwithenvs", "extsnd.html#playerhome",
- "extsnd.html#playerQ", "extsnd.html#players", "extsnd.html#playing", "sndscm.html#pluck",
- "sndclm.html#polartorectangular", "sndclm.html#polynomial", "sndscm.html#polydoc", "sndclm.html#polyoid",
- "sndclm.html#polyoidenv", "sndclm.html#polyoid?", "sndclm.html#polyshape", "sndclm.html#polyshape?",
- "sndclm.html#polywave", "sndclm.html#polywave?", "s7.html#portfilename", "s7.html#portlinenumber",
- "extsnd.html#positiontox", "extsnd.html#positiontoy", "extsnd.html#positioncolor", "sndscm.html#powerenv",
- "sndscm.html#pqw", "sndscm.html#pqwvox", "extsnd.html#preferencesdialog", "extsnd.html#previoussample",
- "extsnd.html#printdialog", "extsnd.html#printlength", "s7.html#proceduredocumentation", "s7.html#proceduresetter",
- "s7.html#proceduresignature", "s7.html#proceduresource", "extsnd.html#progressreport", "sndclm.html#pulse-train",
+ "sndscm.html#dithersound", "s7.html#documentation", "sndscm.html#dolph", "sndclm.html#dot-product",
+ "extsnd.html#dotsize", "sndscm.html#downoct", "extsnd.html#drawaxes", "extsnd.html#drawdot",
+ "extsnd.html#drawdots", "extsnd.html#drawline", "extsnd.html#drawlines", "extsnd.html#drawmarkhook",
+ "extsnd.html#drawmixhook", "extsnd.html#drawstring", "sndscm.html#drone", "sndscm.html#makedropsite",
+ "extsnd.html#drophook", "extsnd.html#duringopenhook", "extsnd.html#editfragment", "extsnd.html#editheaderdialog",
+ "extsnd.html#edithook", "extsnd.html#editlisttofunction", "extsnd.html#editposition", "extsnd.html#editproperties",
+ "extsnd.html#editproperty", "extsnd.html#edittree", "extsnd.html#edits", "sndclm.html#edot-product",
+ "extsnd.html#effectshook", "sndscm.html#analogfilterdoc", "sndclm.html#env", "sndclm.html#env-any",
+ "extsnd.html#envchannel", "extsnd.html#envchannelwithbase", "sndscm.html#envexptchannel", "sndclm.html#env-interp",
+ "sndscm.html#envmixes", "extsnd.html#envselection", "extsnd.html#envsound", "sndscm.html#envsoundinterp",
+ "sndscm.html#envsquaredchannel", "sndclm.html#env?", "extsnd.html#envedbase", "extsnd.html#envedclipping",
+ "extsnd.html#enveddialog", "extsnd.html#envedenvelope", "extsnd.html#filterenv", "extsnd.html#filterenvorder",
+ "extsnd.html#envedhook", "extsnd.html#envedin-dB", "extsnd.html#envedpower", "extsnd.html#envedstyle",
+ "extsnd.html#envedtarget", "extsnd.html#envedwaving", "extsnd.html#envedwaveformcolor", "sndclm.html#envelopeinterp",
+ "sndscm.html#envelopedmix", "sndclm.html#eoddcos", "sndclm.html#eoddcos?", "extsnd.html#epsbottommargin",
+ "extsnd.html#epsfile", "extsnd.html#epsleftmargin", "extsnd.html#epssize", "sndclm.html#ercos",
+ "sndclm.html#ercos?", "s7.html#errorhook", "sndclm.html#erssb", "sndclm.html#erssb?",
+ "sndclm.html#evenmultiple", "sndclm.html#evenweight", "sndscm.html#everysample", "extsnd.html#exit",
+ "extsnd.html#exithook", "extsnd.html#expandcontrol", "extsnd.html#expandcontrolbounds", "extsnd.html#expandcontrolhop",
+ "extsnd.html#expandcontroljitter", "extsnd.html#expandcontrollength", "extsnd.html#expandcontrolramp", "extsnd.html#expandcontrolp",
+ "sndscm.html#explodesf2", "sndclm.html#exponentially-weighted-moving-average", "sndscm.html#expsnd", "sndscm.html#expsrc",
+ "s7.html#featureslist", "sndscm.html#cellon", "extsnd.html#fft", "sndscm.html#fftcancel",
+ "sndscm.html#fftedit", "sndscm.html#fftenvedit", "sndscm.html#fftenvinterp", "extsnd.html#fftlogfrequency",
+ "extsnd.html#fftlogmagnitude", "sndscm.html#fftsmoother", "sndscm.html#fftsquelch", "extsnd.html#fftwindow",
+ "extsnd.html#fftalpha", "extsnd.html#fftbeta", "extsnd.html#fftwithphases", "sndscm.html#nbdoc",
+ "sndclm.html#filetoarray", "sndclm.html#filetoframple", "sndclm.html#filetoframple?", "sndclm.html#filetosample",
+ "sndclm.html#filetosample?", "extsnd.html#filename", "s7.html#fillb", "extsnd.html#fillpolygon",
+ "extsnd.html#fillrectangle", "sndclm.html#filter", "extsnd.html#filterchannel", "extsnd.html#filtercontrolcoeffs",
+ "extsnd.html#filtercontrolenvelope", "extsnd.html#filtercontrolindB", "extsnd.html#filtercontrolinhz", "extsnd.html#filtercontrolorder",
+ "extsnd.html#filterwaveformcolor", "extsnd.html#filtercontrolp", "sndscm.html#filterfft", "extsnd.html#filterselection",
+ "sndscm.html#filterselectionandsmooth", "extsnd.html#filtersound", "sndclm.html#filter?", "sndclm.html#filtered-comb",
+ "sndclm.html#filteredcombbank", "sndclm.html#filteredcombbankp", "sndclm.html#filtered-comb?", "extsnd.html#finddialog",
+ "extsnd.html#findmark", "sndscm.html#findmix", "extsnd.html#findsound", "sndscm.html#finfo",
+ "extsnd.html#finishprogressreport", "sndclm.html#fir-filter", "sndclm.html#fir-filter?", "sndclm.html#firmant",
+ "sndclm.html#firmant?", "sndscm.html#fitselectionbetweenmarks", "sndscm.html#flattenpartials", "extsnd.html#fv",
+ "extsnd.html#fvtimes", "extsnd.html#fvplus", "extsnd.html#fvtochannel", "extsnd.html#fvtolist",
+ "extsnd.html#fvtostring", "extsnd.html#fvabs", "extsnd.html#fvadd", "extsnd.html#fvequal",
+ "extsnd.html#fvfill", "extsnd.html#fvlength", "extsnd.html#fvmax", "extsnd.html#fvmin",
+ "extsnd.html#fvmove", "extsnd.html#fvmultiply", "extsnd.html#fvoffset", "extsnd.html#fvpeak",
+ "sndscm.html#fvpolynomial", "extsnd.html#fvref", "extsnd.html#fvreverse", "extsnd.html#fvscale",
+ "extsnd.html#fvset", "extsnd.html#fvsubseq", "extsnd.html#fvsubtract", "extsnd.html#fvp",
+ "sndclm.html#flocsig", "sndclm.html#flocsig?", "sndscm.html#stereoflute", "sndscm.html#fmbell",
+ "sndscm.html#fmdrum", "sndscm.html#fmnoise", "sndscm.html#fmparallelcomponent", "sndscm.html#fmvox",
+ "sndscm.html#fmtrumpet", "sndscm.html#vdoc", "sndscm.html#fmvoice", "sndclm.html#fmssb",
+ "sndclm.html#fmssb?", "extsnd.html#focuswidget", "sndscm.html#fofins", "sndscm.html#fofins",
+ "sndscm.html#foreachchild", "sndscm.html#foreachsoundfile", "sndscm.html#fp", "extsnd.html#foregroundcolor",
+ "extsnd.html#forgetregion", "sndclm.html#formant", "sndclm.html#formantbank", "sndclm.html#formantbankp",
+ "sndclm.html#formant?", "s7.html#format", "sndscm.html#fp", "sndscm.html#fractionalfouriertransform",
+ "sndclm.html#frampletofile", "sndclm.html#frampletofile?", "sndclm.html#frampletoframple", "extsnd.html#framples",
+ "extsnd.html#freeplayer", "extsnd.html#freesampler", "sndscm.html#freeverb", "sndscm.html#fullmix",
+ "s7.html#funclet", "sndscm.html#gaussiandistribution", "extsnd.html#gcoff", "extsnd.html#gcon",
+ "s7.html#gensym", "s7.html#gensym?", "extsnd.html#glgraphtops", "extsnd.html#glspectrogram",
+ "sndscm.html#goertzel", "extsnd.html#gotolistenerend", "sndscm.html#grani", "sndclm.html#granulate",
+ "sndclm.html#granulate?", "sndscm.html#granulatedsoundinterp", "extsnd.html#graph", "extsnd.html#graphtops",
+ "extsnd.html#graphcolor", "extsnd.html#graphcursor", "extsnd.html#graphdata", "extsnd.html#graphhook",
+ "extsnd.html#graphstyle", "sndscm.html#grapheq", "extsnd.html#graphshorizontal", "sndclm.html#green-noise",
+ "sndclm.html#green-noise-interp", "sndclm.html#green-noise-interp?", "sndclm.html#green-noise?", "extsnd.html#griddensity",
+ "sndscm.html#harmonicizer", "sndscm.html#dht", "s7.html#hashtable", "s7.html#hashtablestar",
+ "s7.html#hashtableentries", "s7.html#hashtableref", "s7.html#hashtableset", "s7.html#hashtablep",
+ "extsnd.html#headertype", "sndscm.html#hellodentist", "extsnd.html#helpdialog", "extsnd.html#helphook",
+ "extsnd.html#hidewidget", "extsnd.html#highlightcolor", "sndscm.html#hilberttransform", "s7.html#hookfunctions",
+ "sndscm.html#hookmember", "sndscm.html#html", "extsnd.html#htmldir", "extsnd.html#htmlprogram",
+ "sndclm.html#hztoradians", "sndclm.html#iir-filter", "sndclm.html#iir-filter?", "s7.html#immutableb",
+ "s7.html#immutablep", "extsnd.html#gin", "sndclm.html#in-any", "sndclm.html#ina",
+ "sndclm.html#inb", "extsnd.html#infodialog", "grfsnd.html#initladspa", "extsnd.html#initialbeg",
+ "extsnd.html#initialdur", "extsnd.html#initialgraphhook", "s7.html#inlet", "sndscm.html#insertchannel",
+ "extsnd.html#insertfiledialog", "extsnd.html#insertregion", "extsnd.html#insertsample", "extsnd.html#insertsamples",
+ "extsnd.html#insertselection", "extsnd.html#insertsilence", "extsnd.html#insertsound", "s7.html#intvector",
+ "s7.html#intvectorref", "s7.html#intvectorset", "s7.html#intvectorp", "extsnd.html#integertocolormap",
+ "extsnd.html#integertomark", "extsnd.html#integertomix", "extsnd.html#integertoregion", "extsnd.html#integertosound",
+ "extsnd.html#integertotransform", "sndscm.html#integrateenvelope", "sndscm.html#invertfilter", "s7.html#iterate",
+ "s7.html#iteratoratend", "s7.html#iteratorsequence", "s7.html#iteratorp", "sndclm.html#izcos",
+ "sndclm.html#izcos?", "sndclm.html#j0evencos", "sndclm.html#j0evencos?", "sndclm.html#j0j1cos",
+ "sndclm.html#j0j1cos?", "sndclm.html#j2cos", "sndclm.html#j2cos?", "sndscm.html#jcreverb",
+ "sndclm.html#jjcos", "sndclm.html#jjcos?", "sndclm.html#jncos", "sndclm.html#jncos?",
+ "sndclm.html#jpcos", "sndclm.html#jpcos?", "extsnd.html#justsounds", "sndclm.html#jycos",
+ "sndclm.html#jycos?", "sndclm.html#k2cos", "sndclm.html#k2cos?", "sndclm.html#k2sin",
+ "sndclm.html#k2sin?", "sndclm.html#k2ssb", "sndclm.html#k2ssb?", "sndclm.html#k3sin",
+ "sndclm.html#k3sin?", "sndscm.html#kalmanfilterchannel", "extsnd.html#key", "extsnd.html#keybinding",
+ "extsnd.html#keypresshook", "sndclm.html#krksin", "sndclm.html#krksin?", "grfsnd.html#ladspadescriptor",
+ "extsnd.html#ladspadir", "s7.html#lambdastar", "sndscm.html#lbjpiano", "extsnd.html#leftsample",
+ "s7.html#lettolist", "s7.html#letref", "s7.html#letset", "s7.html#lettemporarily",
+ "s7.html#letp", "sndclm.html#lineartodb", "sndscm.html#linearsrcchannel", "sndscm.html#lintdoc",
+ "extsnd.html#lispgraphhook", "extsnd.html#lispgraphstyle", "extsnd.html#lispgraphp", "extsnd.html#listtofv",
+ "grfsnd.html#listladspa", "extsnd.html#listenerclickhook", "extsnd.html#listenercolor", "extsnd.html#listenercolorized",
+ "extsnd.html#listenerfont", "extsnd.html#listenerprompt", "extsnd.html#listenerselection", "extsnd.html#listenertextcolor",
+ "extsnd.html#littleendianp", "s7.html#loadhook", "s7.html#loadpath", "sndscm.html#locatezero",
+ "sndclm.html#locsig", "sndclm.html#locsig-ref", "sndclm.html#locsig-reverb-ref", "sndclm.html#locsig-reverb-set!",
+ "sndclm.html#locsig-set!", "sndclm.html#locsig-type", "sndclm.html#locsig?", "extsnd.html#logfreqstart",
+ "sndscm.html#lpccoeffs", "sndscm.html#lpcpredict", "s7.html#macrop", "s7.html#macroexpand",
+ "extsnd.html#mainmenu", "extsnd.html#mainwidgets", "sndclm.html#make-abcos", "sndclm.html#make-absin",
+ "sndclm.html#make-adjustable-sawtooth-wave", "sndclm.html#make-adjustable-square-wave", "sndclm.html#make-adjustable-triangle-wave", "sndclm.html#make-all-pass",
+ "sndclm.html#makeallpassbank", "sndclm.html#make-asyfm", "sndclm.html#make-asymmetric-fm", "sndscm.html#makebandpass",
+ "sndscm.html#makebandstop", "sndclm.html#make-bess", "sndscm.html#makebiquad", "sndscm.html#makebirds",
+ "sndclm.html#make-blackman", "sndclm.html#make-brown-noise", "s7.html#makebytevector", "sndscm.html#makedropsite",
+ "extsnd.html#makecolor", "sndclm.html#make-comb", "sndclm.html#makecombbank", "sndclm.html#make-convolve",
+ "sndclm.html#make-delay", "sndscm.html#makedifferentiator", "sndclm.html#make-env", "sndclm.html#make-eoddcos",
+ "sndclm.html#make-ercos", "sndclm.html#make-erssb", "sndclm.html#make-fft-window", "sndclm.html#make-filetoframple",
+ "sndclm.html#make-filetosample", "sndclm.html#make-filter", "sndclm.html#make-filtered-comb", "sndclm.html#makefilteredcombbank",
+ "sndclm.html#make-fir-coeffs", "sndclm.html#make-fir-filter", "sndclm.html#make-firmant", "extsnd.html#makefv",
+ "sndclm.html#make-flocsig", "sndclm.html#make-fmssb", "sndclm.html#make-formant", "sndclm.html#makeformantbank",
+ "sndclm.html#make-frampletofile", "sndclm.html#make-granulate", "extsnd.html#makegraphdata", "sndclm.html#make-green-noise",
+ "sndclm.html#make-green-noise-interp", "s7.html#makehashtable", "sndscm.html#makehighpass", "sndscm.html#makehilberttransform",
+ "s7.html#makehook", "sndclm.html#make-iir-filter", "s7.html#makeintvector", "s7.html#makeiterator",
+ "sndclm.html#make-izcos", "sndclm.html#make-j0evencos", "sndclm.html#make-j0j1cos", "sndclm.html#make-j2cos",
+ "sndclm.html#make-jjcos", "sndclm.html#make-jncos", "sndclm.html#make-jpcos", "sndclm.html#make-jycos",
+ "sndclm.html#make-k2cos", "sndclm.html#make-k2sin", "sndclm.html#make-k2ssb", "sndclm.html#make-k3sin",
+ "sndclm.html#make-krksin", "sndclm.html#make-locsig", "sndscm.html#makelowpass", "extsnd.html#makemixsampler",
+ "sndclm.html#make-move-sound", "sndclm.html#make-moving-autocorrelation", "sndclm.html#make-moving-average", "sndclm.html#make-moving-fft",
+ "sndclm.html#make-moving-max", "sndclm.html#make-moving-norm", "sndclm.html#make-moving-pitch", "sndclm.html#make-moving-scentroid",
+ "sndclm.html#make-moving-spectrum", "sndclm.html#make-n1cos", "sndclm.html#make-nchoosekcos", "sndclm.html#make-ncos",
+ "sndclm.html#make-nkssb", "sndclm.html#make-noddcos", "sndclm.html#make-noddsin", "sndclm.html#make-noddssb",
+ "sndclm.html#make-noid", "sndclm.html#make-notch", "sndclm.html#make-nrcos", "sndclm.html#make-nrsin",
+ "sndclm.html#make-nrssb", "sndclm.html#make-nrxycos", "sndclm.html#make-nrxysin", "sndclm.html#make-nsin",
+ "sndclm.html#make-nsincos", "sndclm.html#make-nssb", "sndclm.html#make-nxy1cos", "sndclm.html#make-nxy1sin",
+ "sndclm.html#make-nxycos", "sndclm.html#make-nxysin", "sndclm.html#make-one-pole", "sndclm.html#make-one-pole-all-pass",
+ "sndclm.html#make-one-zero", "sndclm.html#make-oscil", "sndclm.html#make-oscil-bank", "sndclm.html#make-phase-vocoder",
+ "sndclm.html#make-pink-noise", "sndscm.html#makepixmap", "extsnd.html#makeplayer", "sndclm.html#make-polyoid",
+ "sndclm.html#make-polyshape", "sndclm.html#make-polywave", "sndclm.html#make-pulse-train", "sndclm.html#make-pulsed-env",
+ "sndclm.html#make-r2k!cos", "sndclm.html#make-r2k2cos", "sndscm.html#makeramp", "sndclm.html#make-rand",
+ "sndclm.html#make-rand-interp", "sndclm.html#make-rcos", "sndclm.html#make-readin", "extsnd.html#makeregion",
+ "extsnd.html#makeregionsampler", "sndclm.html#make-rk!cos", "sndclm.html#make-rk!ssb", "sndclm.html#make-rkcos",
+ "sndclm.html#make-rkoddssb", "sndclm.html#make-rksin", "sndclm.html#make-rkssb", "sndclm.html#make-round-interp",
+ "sndclm.html#make-rssb", "sndclm.html#make-rxycos", "sndclm.html#make-rxyk!cos", "sndclm.html#make-rxyk!sin",
+ "sndclm.html#make-rxysin", "sndclm.html#make-sampletofile", "extsnd.html#makesampler", "sndclm.html#make-sawtooth-wave",
+ "sndscm.html#makeselection", "sndclm.html#make-sinc-train", "extsnd.html#makesndtosample", "sndscm.html#makesoundbox",
+ "sndscm.html#makespencerfilter", "sndclm.html#make-square-wave", "sndclm.html#make-src", "sndclm.html#make-ssb-am",
+ "sndclm.html#make-table-lookup", "sndclm.html#make-table-lookup-with-env", "sndclm.html#make-tanhsin", "sndclm.html#make-triangle-wave",
+ "sndclm.html#make-two-pole", "sndclm.html#make-two-zero", "sndscm.html#makevariabledisplay", "extsnd.html#makevariablegraph",
+ "sndclm.html#make-wave-train", "sndclm.html#make-wave-train-with-env", "extsnd.html#mapchannel", "sndscm.html#mapsoundfiles",
+ "sndscm.html#maracadoc", "extsnd.html#marktointeger", "extsnd.html#markclickhook", "sndscm.html#markclickinfo",
+ "extsnd.html#markcolor", "extsnd.html#markcontext", "extsnd.html#markdraghook", "sndscm.html#markexplode",
+ "extsnd.html#markhome", "extsnd.html#markhook", "sndscm.html#markloops", "extsnd.html#markname",
+ "sndscm.html#marknametoid", "extsnd.html#markproperties", "extsnd.html#markproperty", "extsnd.html#marksample",
+ "extsnd.html#marksync", "sndscm.html#marksynccolor", "extsnd.html#marksyncmax", "extsnd.html#marktagheight",
+ "extsnd.html#marktagwidth", "extsnd.html#markp", "extsnd.html#emarks", "sndscm.html#matchsoundfiles",
+ "sndscm.html#maxenvelope", "extsnd.html#maxregions", "extsnd.html#maxfftpeaks", "extsnd.html#maxamp",
+ "extsnd.html#maxampposition", "extsnd.html#menuwidgets", "sndscm.html#menusdoc", "extsnd.html#mindb",
+ "extsnd.html#mix", "sndscm.html#mixtofv", "extsnd.html#mixtointeger", "extsnd.html#mixamp",
+ "extsnd.html#mixampenv", "sndscm.html#mixchannel", "extsnd.html#mixclickhook", "sndscm.html#mixclickinfo",
+ "sndscm.html#mixclicksetsamp", "extsnd.html#mixcolor", "extsnd.html#mixdialogmix", "extsnd.html#mixdraghook",
+ "extsnd.html#mixfiledialog", "extsnd.html#mixfv", "extsnd.html#mixhome", "extsnd.html#mixlength",
+ "sndscm.html#mixmaxamp", "extsnd.html#mixname", "sndscm.html#mixnametoid", "extsnd.html#mixposition",
+ "extsnd.html#mixproperties", "extsnd.html#mixproperty", "extsnd.html#mixregion", "extsnd.html#mixreleasehook",
+ "extsnd.html#mixsamplerQ", "extsnd.html#mixselection", "sndscm.html#mixsound", "extsnd.html#mixspeed",
+ "extsnd.html#mixsync", "extsnd.html#mixsyncmax", "extsnd.html#mixtagheight", "extsnd.html#mixtagwidth",
+ "extsnd.html#mixtagy", "extsnd.html#mixwaveformheight", "extsnd.html#mixp", "extsnd.html#mixes",
+ "sndscm.html#monotostereo", "sndscm.html#moogfilter", "s7.html#morallyequalp", "extsnd.html#mouseclickhook",
+ "extsnd.html#mousedraghook", "extsnd.html#mouseentergraphhook", "extsnd.html#mouseenterlabelhook", "extsnd.html#mouseenterlistenerhook",
+ "extsnd.html#mouseentertexthook", "extsnd.html#mouseleavegraphhook", "extsnd.html#mouseleavelabelhook", "extsnd.html#mousleavelistenerhook",
+ "extsnd.html#mousleavetexthook", "extsnd.html#mousepresshook", "sndclm.html#move-locsig", "sndscm.html#movemixes",
+ "sndclm.html#move-sound", "sndclm.html#move-sound?", "sndscm.html#movesyncdmarks", "sndclm.html#moving-autocorrelation",
+ "sndclm.html#moving-autocorrelation?", "sndclm.html#moving-average", "sndclm.html#moving-average?", "sndclm.html#moving-fft",
+ "sndclm.html#moving-fft?", "sndclm.html#moving-length", "sndclm.html#moving-max", "sndclm.html#moving-max?",
+ "sndclm.html#moving-norm", "sndclm.html#moving-norm?", "sndclm.html#moving-pitch", "sndclm.html#moving-pitch?",
+ "sndclm.html#moving-rms", "sndclm.html#moving-scentroid", "sndclm.html#moving-scentroid?", "sndclm.html#moving-spectrum",
+ "sndclm.html#moving-spectrum?", "sndclm.html#moving-sum", "sndscm.html#mpg", "extsnd.html#musalsabuffersize",
+ "extsnd.html#musalsabuffers", "extsnd.html#musalsacapturedevice", "extsnd.html#musalsadevice", "extsnd.html#musalsaplaybackdevice",
+ "extsnd.html#musalsasquelchwarning", "sndclm.html#musarrayprintlength", "extsnd.html#musbytespersample", "sndclm.html#mus-channel",
+ "sndclm.html#mus-channels", "sndclm.html#mus-chebyshev-tu-sum", "extsnd.html#musclipping", "sndclm.html#mus-close",
+ "sndclm.html#mus-copy", "sndclm.html#mus-data", "sndclm.html#mus-describe", "extsnd.html#muserrorhook",
+ "extsnd.html#muserrortypetostring", "extsnd.html#musexpandfilename", "sndclm.html#mus-feedback", "sndclm.html#mus-feedforward",
+ "sndclm.html#fft", "sndclm.html#musfilebuffersize", "extsnd.html#musfileclipping", "sndscm.html#musfilemix",
+ "sndclm.html#mus-file-name", "sndclm.html#musfloatequalfudgefactor", "sndclm.html#mus-frequency", "sndclm.html#musgeneratorp",
+ "extsnd.html#musheaderrawdefaults", "extsnd.html#musheadertypetostring", "extsnd.html#musheadertypename", "sndclm.html#mus-hop",
+ "sndclm.html#mus-increment", "sndclm.html#mus-input?", "sndclm.html#mus-interp-type", "sndclm.html#mus-interpolate",
+ "sndclm.html#mus-length", "sndclm.html#mus-location", "extsnd.html#musmaxmalloc", "extsnd.html#musmaxtablesize",
+ "sndclm.html#mus-name", "sndclm.html#mus-offset", "sndclm.html#mus-order", "extsnd.html#musosssetbuffers",
+ "sndclm.html#mus-output?", "sndclm.html#mus-phase", "sndclm.html#mus-ramp", "sndclm.html#mus-rand-seed",
+ "sndclm.html#mus-random", "sndclm.html#mus-reset", "sndclm.html#mus-run", "extsnd.html#mussampletypetostring",
+ "extsnd.html#mussampletypename", "sndclm.html#mus-scaler", "extsnd.html#mussoundchans", "extsnd.html#mussoundcomment",
+ "extsnd.html#mussounddatalocation", "extsnd.html#mussounddatumsize", "extsnd.html#mussoundduration", "extsnd.html#mussoundforget",
+ "extsnd.html#mussoundframples", "extsnd.html#mussoundheadertype", "extsnd.html#mussoundlength", "extsnd.html#mussoundloopinfo",
+ "extsnd.html#mussoundmarkinfo", "extsnd.html#mussoundmaxamp", "extsnd.html#mussoundmaxampexists", "extsnd.html#mussoundpath",
+ "extsnd.html#mussoundpreload", "extsnd.html#mussoundprune", "extsnd.html#mussoundreportcache", "extsnd.html#mussoundsampletype",
+ "extsnd.html#mussoundsamples", "extsnd.html#mussoundsrate", "extsnd.html#mussoundtypespecifier", "extsnd.html#mussoundwritedate",
+ "sndclm.html#mussrate", "sndclm.html#mus-width", "sndclm.html#mus-xcoeff", "sndclm.html#mus-xcoeffs",
+ "sndclm.html#mus-ycoeff", "sndclm.html#mus-ycoeffs", "sndclm.html#n1cos", "sndclm.html#n1cos?",
+ "extsnd.html#nameclickhook", "sndclm.html#nchoosekcos", "sndclm.html#nchoosekcos?", "sndclm.html#ncos",
+ "sndclm.html#ncos2?", "sndclm.html#ncos4?", "sndclm.html#ncos?", "extsnd.html#newsound",
+ "extsnd.html#newsounddialog", "extsnd.html#newsoundhook", "extsnd.html#newwidgethook", "extsnd.html#nextsample",
+ "sndclm.html#nkssb", "sndclm.html#nkssbinterp", "sndclm.html#nkssb?", "sndclm.html#noddcos",
+ "sndclm.html#noddcos?", "sndclm.html#noddsin", "sndclm.html#noddsin?", "sndclm.html#noddssb",
+ "sndclm.html#noddssb?", "sndclm.html#noid", "extsnd.html#normalizechannel", "sndscm.html#normalizeenvelope",
+ "sndclm.html#normalizepartials", "sndscm.html#normalizesound", "sndscm.html#normalizedmix", "sndclm.html#notch",
+ "sndscm.html#notchchannel", "sndscm.html#notchselection", "sndscm.html#notchsound", "sndclm.html#notch?",
+ "sndclm.html#npcos?", "sndclm.html#nrcos", "sndclm.html#nrcos?", "sndscm.html#nrev",
+ "sndclm.html#nrsin", "sndclm.html#nrsin?", "sndclm.html#nrssb", "sndclm.html#nrssbinterp",
+ "sndclm.html#nrssb?", "sndclm.html#nrxycos", "sndclm.html#nrxycos?", "sndclm.html#nrxysin",
+ "sndclm.html#nrxysin?", "sndclm.html#nsin", "sndclm.html#nsin?", "sndclm.html#nsincos",
+ "sndclm.html#nsincos?", "sndclm.html#nssb", "sndclm.html#nssb?", "sndclm.html#nxy1cos",
+ "sndclm.html#nxy1cos?", "sndclm.html#nxy1sin", "sndclm.html#nxy1sin?", "sndclm.html#nxycos",
+ "sndclm.html#nxycos?", "sndclm.html#nxysin", "sndclm.html#nxysin?", "s7.html#objecttolet",
+ "s7.html#objecttostring", "sndclm.html#oddmultiple", "sndclm.html#oddweight", "sndscm.html#offsetchannel",
+ "sndscm.html#offsetsound", "sndclm.html#one-pole", "sndclm.html#one-pole-all-pass", "sndclm.html#one-pole-all-pass?",
+ "sndclm.html#one-pole?", "sndclm.html#one-zero", "sndclm.html#one-zero?", "extsnd.html#openfiledialog",
+ "extsnd.html#openfiledialogdirectory", "extsnd.html#openhook", "sndscm.html#opennextfileindirectory", "extsnd.html#openrawsound",
+ "extsnd.html#openrawsoundhook", "extsnd.html#opensound", "s7.html#openlet", "s7.html#openletp",
+ "extsnd.html#orientationhook", "sndclm.html#oscil", "sndclm.html#oscil-bank", "sndclm.html#oscil-bank?",
+ "sndclm.html#oscil?", "sndclm.html#out-any", "sndclm.html#outbank", "sndclm.html#outa",
+ "s7.html#outlet", "sndclm.html#*output*", "extsnd.html#outputcommenthook", "sndscm.html#overlayrmsenv",
+ "s7.html#owlet", "extsnd.html#padchannel", "sndscm.html#padmarks", "sndscm.html#padsound",
+ "s7.html#pairfilename", "s7.html#pairlinenumber", "sndscm.html#panmix", "sndscm.html#panmixfv",
+ "sndclm.html#partialstopolynomial", "sndclm.html#partialstowave", "extsnd.html#pausing", "extsnd.html#peakenvdir",
+ "extsnd.html#peaks", "extsnd.html#peaksfont", "sndclm.html#phase-partialstowave", "sndclm.html#phase-vocoder",
+ "sndclm.html#phase-vocoder?", "sndscm.html#pianodoc", "sndclm.html#pink-noise", "sndclm.html#pink-noise?",
+ "sndscm.html#pins", "sndscm.html#placesound", "extsnd.html#play", "extsnd.html#playarrowsize",
+ "sndscm.html#playbetweenmarks", "extsnd.html#playhook", "sndscm.html#playmixes", "sndscm.html#playoften",
+ "sndscm.html#playregionforever", "sndscm.html#playsine", "sndscm.html#playsines", "sndscm.html#playsyncdmarks",
+ "sndscm.html#playuntilcg", "sndscm.html#playwithenvs", "extsnd.html#playerhome", "extsnd.html#playerQ",
+ "extsnd.html#players", "extsnd.html#playing", "sndscm.html#pluck", "sndclm.html#polartorectangular",
+ "sndclm.html#polynomial", "sndscm.html#polydoc", "sndclm.html#polyoid", "sndclm.html#polyoidenv",
+ "sndclm.html#polyoid?", "sndclm.html#polyshape", "sndclm.html#polyshape?", "sndclm.html#polywave",
+ "sndclm.html#polywave?", "s7.html#portfilename", "s7.html#portlinenumber", "extsnd.html#positiontox",
+ "extsnd.html#positiontoy", "extsnd.html#positioncolor", "sndscm.html#powerenv", "sndscm.html#pqw",
+ "sndscm.html#pqwvox", "extsnd.html#preferencesdialog", "extsnd.html#previoussample", "extsnd.html#printdialog",
+ "extsnd.html#printlength", "s7.html#proceduresource", "extsnd.html#progressreport", "sndclm.html#pulse-train",
"sndclm.html#pulse-train?", "sndclm.html#pulsedenv", "sndclm.html#pulsedenv?", "sndclm.html#r2k!cos",
"sndclm.html#r2k!cos?", "sndclm.html#r2k2cos", "sndclm.html#r2k2cos?", "sndclm.html#radianstodegrees",
"sndclm.html#radianstohz", "extsnd.html#rampchannel", "sndclm.html#rand", "sndclm.html#rand-interp",
@@ -863,73 +863,74 @@ static const char *help_urls[HELP_NAMES_SIZE] = {
"extsnd.html#selectionchans", "extsnd.html#selectioncolor", "extsnd.html#selectioncontext", "extsnd.html#selectioncreatesregion",
"extsnd.html#selectionframples", "extsnd.html#selectionmaxamp", "extsnd.html#selectionmaxampposition", "extsnd.html#selectionmember",
"sndscm.html#selectionmembers", "extsnd.html#selectionposition", "sndscm.html#selectionrms", "extsnd.html#selectionsrate",
- "extsnd.html#selectionok", "extsnd.html#setsamples", "extsnd.html#shortfilename", "extsnd.html#showaxes",
- "extsnd.html#showcontrols", "sndscm.html#showdiskspace", "extsnd.html#showfullduration", "extsnd.html#showfullrange",
- "extsnd.html#showgrid", "extsnd.html#showindices", "extsnd.html#showlistener", "extsnd.html#showmarks",
- "extsnd.html#showmixwaveforms", "extsnd.html#showselection", "extsnd.html#showselectiontransform", "extsnd.html#showsonogramcursor",
- "extsnd.html#showtransformpeaks", "extsnd.html#showwidget", "extsnd.html#showyzero", "sndscm.html#silenceallmixes",
- "sndscm.html#silencemixes", "sndclm.html#sinc-train", "sndclm.html#sinc-train?", "extsnd.html#sincwidth",
- "sndscm.html#sineenvchannel", "sndscm.html#sineramp", "sndscm.html#singerdoc", "extsnd.html#smoothchannel",
- "extsnd.html#smoothselection", "extsnd.html#smoothsound", "sndscm.html#pins", "sndscm.html#snapmarktobeat",
- "sndscm.html#snapmarks", "sndscm.html#snapmixtobeat", "extsnd.html#sndtosample", "extsnd.html#sndtosamplep",
- "extsnd.html#sndcolor", "extsnd.html#snderror", "extsnd.html#snderrorhook", "extsnd.html#sndfont",
- "extsnd.html#sndgcs", "extsnd.html#sndhelp", "sndscm.html#sndscmhooks", "extsnd.html#sndopenedsound",
- "extsnd.html#sndprint", "extsnd.html#sndspectrum", "extsnd.html#sndtempnam", "extsnd.html#sndurl",
- "extsnd.html#sndurls", "extsnd.html#sndversion", "extsnd.html#sndwarning", "extsnd.html#sndwarninghook",
- "sndscm.html#sndwarp", "s7.html#sortb", "sndscm.html#soundtoamp_env", "extsnd.html#soundtointeger",
- "extsnd.html#soundfileextensions", "extsnd.html#soundfilep", "extsnd.html#soundfilesindirectory", "sndscm.html#soundinterp",
- "extsnd.html#soundloopinfo", "extsnd.html#soundproperties", "extsnd.html#soundproperty", "extsnd.html#soundwidgets",
- "extsnd.html#soundp", "extsnd.html#soundfontinfo", "extsnd.html#sounds", "sndscm.html#soundstosegmentdata",
- "sndscm.html#spectra", "sndscm.html#twotab", "sndscm.html#spectralpolynomial", "extsnd.html#spectrohop",
- "extsnd.html#spectroxangle", "extsnd.html#spectroxscale", "extsnd.html#spectroyangle", "extsnd.html#spectroyscale",
- "extsnd.html#spectrozangle", "extsnd.html#spectrozscale", "sndclm.html#spectrum", "sndscm.html#spectrumtocoeffs",
- "extsnd.html#spectrumend", "extsnd.html#spectrumstart", "extsnd.html#speedcontrol", "extsnd.html#speedcontrolbounds",
- "extsnd.html#speedstyle", "extsnd.html#speedtones", "sndscm.html#spotfreq", "sndclm.html#square-wave",
- "sndclm.html#square-wave?", "extsnd.html#squelchupdate", "sndscm.html#squelchvowels", "extsnd.html#srate",
- "sndclm.html#src", "extsnd.html#srcchannel", "sndscm.html#srcduration", "sndscm.html#srcfitenvelope",
- "sndscm.html#srcmixes", "extsnd.html#srcsoundselection", "extsnd.html#srcsound", "sndclm.html#src?",
- "sndclm.html#ssb-am", "sndclm.html#ssb-am?", "sndscm.html#ssbbank", "sndscm.html#ssbbankenv",
- "sndscm.html#ssbfm", "sndscm.html#startdac", "extsnd.html#startplaying", "extsnd.html#startplayinghook",
- "extsnd.html#startplayingselectionhook", "extsnd.html#startprogressreport", "extsnd.html#statusreport", "extsnd.html#stdinprompt",
- "sndscm.html#stereotomono", "sndscm.html#stereoflute", "extsnd.html#stopplayer", "extsnd.html#stopplaying",
- "extsnd.html#stopplayinghook", "extsnd.html#stopplayingselectionhook", "sndscm.html#stretchenvelope", "sndscm.html#stretchsoundviadft",
- "s7.html#stringtobytevector", "s7.html#stringposition", "s7.html#sublet", "sndscm.html#superimposeffts",
- "extsnd.html#swapchannels", "sndscm.html#swapselectionchannels", "s7.html#symboltodynamicvalue", "s7.html#symboltovalue",
- "s7.html#symbolaccess", "s7.html#symboltable", "extsnd.html#sync", "sndscm.html#sync-everything",
- "extsnd.html#syncmax", "extsnd.html#syncstyle", "extsnd.html#syncdmarks", "sndscm.html#syncdmixes",
- "sndscm.html#syncup", "sndclm.html#table-lookup", "sndclm.html#table-lookup?", "sndclm.html#tanhsin",
- "sndclm.html#tanhsin?", "sndclm.html#tap", "sndclm.html#tap?", "sndscm.html#telephone",
- "extsnd.html#tempdir", "extsnd.html#textfocuscolor", "extsnd.html#timegraphstyle", "extsnd.html#timegraphtype",
- "extsnd.html#timegraphp", "sndclm.html#timestosamples", "extsnd.html#tinyfont", "sndscm.html#telephone",
- "s7.html#trace", "extsnd.html#trackingcursorstyle", "extsnd.html#transformtofv", "extsnd.html#transformtointeger",
- "extsnd.html#transformdialog", "extsnd.html#transformframples", "extsnd.html#transformgraphstyle", "extsnd.html#transformgraphtype",
- "extsnd.html#transformgraphp", "extsnd.html#normalizefft", "extsnd.html#transformsample", "extsnd.html#transformsize",
- "extsnd.html#transformtype", "extsnd.html#transformp", "sndscm.html#transposemixes", "sndclm.html#triangle-wave",
- "sndclm.html#triangle-wave?", "sndscm.html#tubebell", "sndscm.html#tubebell", "sndclm.html#two-pole",
- "sndclm.html#two-pole?", "sndscm.html#twotab", "sndclm.html#two-zero", "sndclm.html#two-zero?",
- "s7.html#typeof", "extsnd.html#unbindkey", "s7.html#unboundvariablehook", "sndscm.html#unclipchannel",
- "extsnd.html#undo", "extsnd.html#undohook", "s7.html#unlet", "extsnd.html#unselectall",
- "sndscm.html#updategraphs", "extsnd.html#updatehook", "extsnd.html#updatelispgraph", "extsnd.html#updatesound",
- "extsnd.html#updatetimegraph", "extsnd.html#updatetransformgraph", "sndscm.html#uponsaveyourself", "sndscm.html#sndmotifdoc",
- "sndscm.html#variabledisplay", "extsnd.html#variablegraphp", "s7.html#varlet", "sndscm.html#vibratinguniformcircularstring",
- "extsnd.html#viewfilesamp", "extsnd.html#viewfilesampenv", "extsnd.html#viewfilesdialog", "extsnd.html#viewfilesfiles",
- "extsnd.html#viewfilesselecthook", "extsnd.html#viewfilesselectedfiles", "extsnd.html#viewfilessort", "extsnd.html#viewfilesspeed",
- "extsnd.html#viewfilesspeedstyle", "extsnd.html#viewmixesdialog", "extsnd.html#viewregionsdialog", "extsnd.html#viewsound",
- "sndscm.html#singerdoc", "sndscm.html#voicedtounvoiced", "sndscm.html#volterrafilter", "sndscm.html#fmvox",
- "sndclm.html#wave-train", "sndclm.html#wave-train?", "extsnd.html#wavelettype", "sndscm.html#pqwvox",
- "extsnd.html#wavohop", "extsnd.html#wavotrace", "sndclm.html#weighted-moving-average", "extsnd.html#widgetposition",
- "extsnd.html#widgetsize", "extsnd.html#widgettext", "extsnd.html#windowheight", "sndscm.html#windowsamples",
- "extsnd.html#windowwidth", "extsnd.html#windowx", "extsnd.html#windowy", "extsnd.html#withbackgroundprocesses",
- "s7.html#withbaffle", "extsnd.html#withfilemonitor", "extsnd.html#withgl", "extsnd.html#withinsetgraph",
- "extsnd.html#withinterrupts", "s7.html#with-let", "sndscm.html#withlocalhook", "extsnd.html#withmenuicons",
- "extsnd.html#withmixtags", "extsnd.html#withpointerfocus", "extsnd.html#withrelativepanes", "extsnd.html#withsmptelabel",
- "sndscm.html#withsound", "sndscm.html#withtemporaryselection", "extsnd.html#withtoolbar", "extsnd.html#withtooltips",
- "extsnd.html#withtrackingcursor", "extsnd.html#withverbosecursor", "extsnd.html#xtoposition", "extsnd.html#xaxislabel",
- "extsnd.html#xaxisstyle", "extsnd.html#xbounds", "extsnd.html#xpositionslider", "extsnd.html#xzoomslider",
- "sndscm.html#xbopen", "extsnd.html#xrampchannel", "extsnd.html#ytoposition", "extsnd.html#yaxislabel",
- "extsnd.html#ybounds", "extsnd.html#ypositionslider", "extsnd.html#yzoomslider", "sndscm.html#ztransform",
- "sndscm.html#zecho", "sndscm.html#zeroplus", "extsnd.html#zeropad", "sndscm.html#zerophase",
- "sndscm.html#zipsound", "sndscm.html#zipper", "extsnd.html#zoomcolor", "extsnd.html#zoomfocusstyle"};
+ "extsnd.html#selectionok", "extsnd.html#setsamples", "s7.html#setter", "extsnd.html#shortfilename",
+ "extsnd.html#showaxes", "extsnd.html#showcontrols", "sndscm.html#showdiskspace", "extsnd.html#showfullduration",
+ "extsnd.html#showfullrange", "extsnd.html#showgrid", "extsnd.html#showindices", "extsnd.html#showlistener",
+ "extsnd.html#showmarks", "extsnd.html#showmixwaveforms", "extsnd.html#showselection", "extsnd.html#showselectiontransform",
+ "extsnd.html#showsonogramcursor", "extsnd.html#showtransformpeaks", "extsnd.html#showwidget", "extsnd.html#showyzero",
+ "s7.html#signature", "sndscm.html#silenceallmixes", "sndscm.html#silencemixes", "sndclm.html#sinc-train",
+ "sndclm.html#sinc-train?", "extsnd.html#sincwidth", "sndscm.html#sineenvchannel", "sndscm.html#sineramp",
+ "sndscm.html#singerdoc", "extsnd.html#smoothchannel", "extsnd.html#smoothselection", "extsnd.html#smoothsound",
+ "sndscm.html#pins", "sndscm.html#snapmarktobeat", "sndscm.html#snapmarks", "sndscm.html#snapmixtobeat",
+ "extsnd.html#sndtosample", "extsnd.html#sndtosamplep", "extsnd.html#sndcolor", "extsnd.html#snderror",
+ "extsnd.html#snderrorhook", "extsnd.html#sndfont", "extsnd.html#sndgcs", "extsnd.html#sndhelp",
+ "sndscm.html#sndscmhooks", "extsnd.html#sndopenedsound", "extsnd.html#sndprint", "extsnd.html#sndspectrum",
+ "extsnd.html#sndtempnam", "extsnd.html#sndurl", "extsnd.html#sndurls", "extsnd.html#sndversion",
+ "extsnd.html#sndwarning", "extsnd.html#sndwarninghook", "sndscm.html#sndwarp", "s7.html#sortb",
+ "sndscm.html#soundtoamp_env", "extsnd.html#soundtointeger", "extsnd.html#soundfileextensions", "extsnd.html#soundfilep",
+ "extsnd.html#soundfilesindirectory", "sndscm.html#soundinterp", "extsnd.html#soundloopinfo", "extsnd.html#soundproperties",
+ "extsnd.html#soundproperty", "extsnd.html#soundwidgets", "extsnd.html#soundp", "extsnd.html#soundfontinfo",
+ "extsnd.html#sounds", "sndscm.html#soundstosegmentdata", "sndscm.html#spectra", "sndscm.html#twotab",
+ "sndscm.html#spectralpolynomial", "extsnd.html#spectrohop", "extsnd.html#spectroxangle", "extsnd.html#spectroxscale",
+ "extsnd.html#spectroyangle", "extsnd.html#spectroyscale", "extsnd.html#spectrozangle", "extsnd.html#spectrozscale",
+ "sndclm.html#spectrum", "sndscm.html#spectrumtocoeffs", "extsnd.html#spectrumend", "extsnd.html#spectrumstart",
+ "extsnd.html#speedcontrol", "extsnd.html#speedcontrolbounds", "extsnd.html#speedstyle", "extsnd.html#speedtones",
+ "sndscm.html#spotfreq", "sndclm.html#square-wave", "sndclm.html#square-wave?", "extsnd.html#squelchupdate",
+ "sndscm.html#squelchvowels", "extsnd.html#srate", "sndclm.html#src", "extsnd.html#srcchannel",
+ "sndscm.html#srcduration", "sndscm.html#srcfitenvelope", "sndscm.html#srcmixes", "extsnd.html#srcsoundselection",
+ "extsnd.html#srcsound", "sndclm.html#src?", "sndclm.html#ssb-am", "sndclm.html#ssb-am?",
+ "sndscm.html#ssbbank", "sndscm.html#ssbbankenv", "sndscm.html#ssbfm", "sndscm.html#startdac",
+ "extsnd.html#startplaying", "extsnd.html#startplayinghook", "extsnd.html#startplayingselectionhook", "extsnd.html#startprogressreport",
+ "extsnd.html#statusreport", "extsnd.html#stdinprompt", "sndscm.html#stereotomono", "sndscm.html#stereoflute",
+ "extsnd.html#stopplayer", "extsnd.html#stopplaying", "extsnd.html#stopplayinghook", "extsnd.html#stopplayingselectionhook",
+ "sndscm.html#stretchenvelope", "sndscm.html#stretchsoundviadft", "s7.html#stringtobytevector", "s7.html#stringposition",
+ "s7.html#sublet", "sndscm.html#superimposeffts", "extsnd.html#swapchannels", "sndscm.html#swapselectionchannels",
+ "s7.html#symboltodynamicvalue", "s7.html#symboltovalue", "s7.html#symbolsetter", "s7.html#symboltable",
+ "extsnd.html#sync", "sndscm.html#sync-everything", "extsnd.html#syncmax", "extsnd.html#syncstyle",
+ "extsnd.html#syncdmarks", "sndscm.html#syncdmixes", "sndscm.html#syncup", "sndclm.html#table-lookup",
+ "sndclm.html#table-lookup?", "sndclm.html#tanhsin", "sndclm.html#tanhsin?", "sndclm.html#tap",
+ "sndclm.html#tap?", "sndscm.html#telephone", "extsnd.html#tempdir", "extsnd.html#textfocuscolor",
+ "extsnd.html#timegraphstyle", "extsnd.html#timegraphtype", "extsnd.html#timegraphp", "sndclm.html#timestosamples",
+ "extsnd.html#tinyfont", "sndscm.html#telephone", "s7.html#trace", "extsnd.html#trackingcursorstyle",
+ "extsnd.html#transformtofv", "extsnd.html#transformtointeger", "extsnd.html#transformdialog", "extsnd.html#transformframples",
+ "extsnd.html#transformgraphstyle", "extsnd.html#transformgraphtype", "extsnd.html#transformgraphp", "extsnd.html#normalizefft",
+ "extsnd.html#transformsample", "extsnd.html#transformsize", "extsnd.html#transformtype", "extsnd.html#transformp",
+ "sndscm.html#transposemixes", "sndclm.html#triangle-wave", "sndclm.html#triangle-wave?", "sndscm.html#tubebell",
+ "sndscm.html#tubebell", "sndclm.html#two-pole", "sndclm.html#two-pole?", "sndscm.html#twotab",
+ "sndclm.html#two-zero", "sndclm.html#two-zero?", "s7.html#typeof", "extsnd.html#unbindkey",
+ "s7.html#unboundvariablehook", "sndscm.html#unclipchannel", "extsnd.html#undo", "extsnd.html#undohook",
+ "s7.html#unlet", "extsnd.html#unselectall", "sndscm.html#updategraphs", "extsnd.html#updatehook",
+ "extsnd.html#updatelispgraph", "extsnd.html#updatesound", "extsnd.html#updatetimegraph", "extsnd.html#updatetransformgraph",
+ "sndscm.html#uponsaveyourself", "sndscm.html#sndmotifdoc", "sndscm.html#variabledisplay", "extsnd.html#variablegraphp",
+ "s7.html#varlet", "sndscm.html#vibratinguniformcircularstring", "extsnd.html#viewfilesamp", "extsnd.html#viewfilesampenv",
+ "extsnd.html#viewfilesdialog", "extsnd.html#viewfilesfiles", "extsnd.html#viewfilesselecthook", "extsnd.html#viewfilesselectedfiles",
+ "extsnd.html#viewfilessort", "extsnd.html#viewfilesspeed", "extsnd.html#viewfilesspeedstyle", "extsnd.html#viewmixesdialog",
+ "extsnd.html#viewregionsdialog", "extsnd.html#viewsound", "sndscm.html#singerdoc", "sndscm.html#voicedtounvoiced",
+ "sndscm.html#volterrafilter", "sndscm.html#fmvox", "sndclm.html#wave-train", "sndclm.html#wave-train?",
+ "extsnd.html#wavelettype", "sndscm.html#pqwvox", "extsnd.html#wavohop", "extsnd.html#wavotrace",
+ "sndclm.html#weighted-moving-average", "extsnd.html#widgetposition", "extsnd.html#widgetsize", "extsnd.html#widgettext",
+ "extsnd.html#windowheight", "sndscm.html#windowsamples", "extsnd.html#windowwidth", "extsnd.html#windowx",
+ "extsnd.html#windowy", "extsnd.html#withbackgroundprocesses", "s7.html#withbaffle", "extsnd.html#withfilemonitor",
+ "extsnd.html#withgl", "extsnd.html#withinsetgraph", "extsnd.html#withinterrupts", "s7.html#with-let",
+ "sndscm.html#withlocalhook", "extsnd.html#withmenuicons", "extsnd.html#withmixtags", "extsnd.html#withpointerfocus",
+ "extsnd.html#withrelativepanes", "extsnd.html#withsmptelabel", "sndscm.html#withsound", "sndscm.html#withtemporaryselection",
+ "extsnd.html#withtoolbar", "extsnd.html#withtooltips", "extsnd.html#withtrackingcursor", "extsnd.html#withverbosecursor",
+ "extsnd.html#xtoposition", "extsnd.html#xaxislabel", "extsnd.html#xaxisstyle", "extsnd.html#xbounds",
+ "extsnd.html#xpositionslider", "extsnd.html#xzoomslider", "sndscm.html#xbopen", "extsnd.html#xrampchannel",
+ "extsnd.html#ytoposition", "extsnd.html#yaxislabel", "extsnd.html#ybounds", "extsnd.html#ypositionslider",
+ "extsnd.html#yzoomslider", "sndscm.html#ztransform", "sndscm.html#zecho", "sndscm.html#zeroplus",
+ "extsnd.html#zeropad", "sndscm.html#zerophase", "sndscm.html#zipsound", "sndscm.html#zipper",
+ "extsnd.html#zoomcolor", "extsnd.html#zoomfocusstyle"};
static const char *Tracking_cursors_xrefs[] = {
"play from the current cursor position with a tracking cursor: {pfc}",
@@ -1744,7 +1745,7 @@ static const char *Reverb_urls[] = {
#if HAVE_SCHEME
-static const char *snd_names[11598] = {
+static const char *snd_names[11608] = {
"*clm-array-print-length*", "ws.scm",
"*clm-channels*", "ws.scm",
"*clm-clipped*", "ws.scm",
@@ -6242,6 +6243,11 @@ static const char *snd_names[11598] = {
"indri", "animals.scm",
"inexact", "r7rs.scm",
"init-with-sound", "ws.scm",
+ "init_func", "libc.scm",
+ "init_func", "libm.scm",
+ "init_func", "libdl.scm",
+ "init_func", "libgsl.scm",
+ "init_func", "libgdbm.scm",
"initial-direction", "dlocsig.scm",
"initstate", "libc.scm",
"input-port-open?", "r7rs.scm",
@@ -7548,7 +7554,7 @@ static const char *snd_names[11598] = {
static void autoload_info(s7_scheme *sc)
{
- s7_autoload_set_names(sc, snd_names, 5799);
+ s7_autoload_set_names(sc, snd_names, 5804);
}
#endif
diff --git a/snd.h b/snd.h
index 39a128d..ee3e77b 100644
--- a/snd.h
+++ b/snd.h
@@ -55,7 +55,7 @@
#include "snd-strings.h"
-#define SND_DATE "11-Sep-17"
+#define SND_DATE "17-Oct-17"
#ifndef SND_VERSION
#define SND_VERSION "17.7"
#endif
diff --git a/snd.html b/snd.html
index 9d0ac73..7b35bcd 100644
--- a/snd.html
+++ b/snd.html
@@ -127,12 +127,11 @@ using either <a href="s7.html">s7</a> (included in the Snd sources),
Snd is free; the code is available via anonymous ftp as
<a href="ftp://ccrma-ftp.stanford.edu/pub/Lisp/snd-17.tar.gz">snd-17.tar.gz</a>.
Snd has a <a href="http://ccrma.stanford.edu/software/snd/">home page</a>
-and a CVS <a href="http://snd.cvs.sourceforge.net/snd/cvs-snd">repository</a>, and
+and an SVN <a href="https://sourceforge.net/p/snd/svn1">repository</a>, and
is included in <a href="http://ccrma.stanford.edu/planetccrma/software/">PlanetCCRMA</a>.
</p>
-
<div class="related">
related documentation: &nbsp;
<a href="extsnd.html">extsnd.html &nbsp;</a>
diff --git a/sndlib2xen.c b/sndlib2xen.c
index 2923674..a033ac8 100644
--- a/sndlib2xen.c
+++ b/sndlib2xen.c
@@ -1260,15 +1260,15 @@ void mus_sndlib_xen_initialize(void)
#if HAVE_SCHEME
mus_max_table_size_symbol = s7_define_variable(s7, "*" S_mus_max_table_size "*", s7_make_integer(s7, MUS_MAX_TABLE_SIZE_DEFAULT));
s7_symbol_set_documentation(s7, mus_max_table_size_symbol, "*mus-max-table-size*: maximum table size.");
- s7_symbol_set_access(s7, mus_max_table_size_symbol, s7_make_function(s7, "[acc-mus-max-table-size]" "]", acc_mus_max_table_size, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, mus_max_table_size_symbol, s7_make_function(s7, "[acc-mus-max-table-size]" "]", acc_mus_max_table_size, 2, 0, false, "accessor"));
mus_max_malloc_symbol = s7_define_variable(s7, "*" S_mus_max_malloc "*", s7_make_integer(s7, MUS_MAX_MALLOC_DEFAULT));
s7_symbol_set_documentation(s7, mus_max_malloc_symbol, "*mus-max-malloc*: maximum number of bytes we will try to malloc.");
- s7_symbol_set_access(s7, mus_max_malloc_symbol, s7_make_function(s7, "[acc-mus-max-malloc]" "]", acc_mus_max_malloc, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, mus_max_malloc_symbol, s7_make_function(s7, "[acc-mus-max-malloc]" "]", acc_mus_max_malloc, 2, 0, false, "accessor"));
mus_sound_path_symbol = s7_define_variable(s7, "*" S_mus_sound_path "*", s7_nil(s7));
s7_symbol_set_documentation(s7, mus_sound_path_symbol, "*" S_mus_sound_path "* is a list of directories to search for sound files");
- s7_symbol_set_access(s7, mus_sound_path_symbol, s7_make_function(s7, "[acc-mus-sound-path]" "]", acc_mus_sound_path, 2, 0, false, "accessor"));
+ s7_symbol_set_setter(s7, mus_sound_path_symbol, s7_make_function(s7, "[acc-mus-sound-path]" "]", acc_mus_sound_path, 2, 0, false, "accessor"));
#endif
#if __APPLE__
diff --git a/sndscm.html b/sndscm.html
index c1b6e92..5ab1a2a 100644
--- a/sndscm.html
+++ b/sndscm.html
@@ -4244,7 +4244,7 @@ current spectrum value.
<pre class="indented">
(define brfft
- (let ((documentation "(brfft lofrq hifrq) removes all frequencies between lofrq and hifrq: (brfft 1000.0 2000.0)"))
+ (let ((+documentation+ "(brfft lofrq hifrq) removes all frequencies between lofrq and hifrq: (brfft 1000.0 2000.0)"))
(lambda (lofrq hifrq)
(let* ((fsize (let ((len (<a class=quiet href="extsnd.html#framples">framples</a>)))
(expt 2 (ceiling (log len 2)))))
@@ -8807,10 +8807,10 @@ of harmonics, then the minimum peak amplitude, then (log peak n).
125 11.105 0.4986 | 127 11.268 0.5000 | 13 3.973 0.5378 | 5 2.477 0.5635
7 2.639 0.4988 | 112 10.582 0.5000 | 11 3.656 0.5406 | 4 2.192 0.5662
256 15.997 0.5000 | 3 1.739 0.5035 | 10 3.559 0.5513 | 8 3.263 0.5687
-512 23.405 0.5054 | 512 23.688 0.5073 | 8 3.198 0.5590 | 256 23.955 0.5728
-1024 33.328 0.5059 | 256 16.836 0.5092 | 9 3.454 0.5641 | 7 3.062 0.5750
-2048 49.568 0.5119 | 1024 34.273 0.5099 | 7 3.047 0.5726 | 6 2.805 0.5757
-4 2.039 0.5139 | 2048 49.045 0.5105 | 6 2.837 0.5820 | 512 38.603 0.5856
+512 23.404 0.5054 | 512 23.627 0.5069 | 8 3.198 0.5590 | 256 23.955 0.5728
+1024 33.313 0.5058 | 256 16.586 0.5065 | 9 3.454 0.5641 | 7 3.062 0.5750
+2048 49.568 0.5119 | 1024 34.068 0.5090 | 7 3.047 0.5726 | 6 2.805 0.5757
+4 2.039 0.5139 | 2048 48.700 0.5096 | 6 2.837 0.5820 | 512 38.603 0.5856
6 2.549 0.5223 | 4 2.045 0.5161 | 5 2.605 0.5948 | 2048 95.904 0.5985
5 2.343 0.5292 | 6 2.523 0.5164 | 3 2.021 0.6406 | 1024 65.349 0.6030
3 1.980 0.6217 | 5 2.307 0.5195 | 4 2.431 0.6406 | 3 1.980 0.6217
diff --git a/sound.c b/sound.c
index fb85166..c986a0b 100644
--- a/sound.c
+++ b/sound.c
@@ -524,7 +524,7 @@ static void display_sound_file_entry(FILE *fp, const char *name, sound_file *sf)
if (i > 1) fprintf(fp, ", ");
fprintf(fp, " %.3f at %.3f ",
sf->maxamps[i],
- (sf->srate > 0) ? (float)((double)(sf->maxtimes[i]) / (double)(sf->srate)) : (float)(sf->maxtimes[i]));
+ (sf->srate > 0) ? ((double)(sf->maxtimes[i]) / (double)(sf->srate)) : (double)(sf->maxtimes[i]));
}
}
}
@@ -821,7 +821,7 @@ float mus_sound_duration(const char *arg)
if (sf)
{
if ((sf->chans > 0) && (sf->srate > 0))
- val = (float)((double)(sf->samples) / ((float)(sf->chans) * (float)(sf->srate)));
+ val = ((double)(sf->samples) / ((double)(sf->chans) * (double)(sf->srate)));
else val = 0.0;
}
return(val);
diff --git a/strad.scm b/strad.scm
index 9c3273d..e45bed9 100644
--- a/strad.scm
+++ b/strad.scm
@@ -14,7 +14,7 @@
(require sndlib-ws.scm))
(define make-biquad
- (let ((documentation "(make-biquad a0 a1 a2 b1 b2) returns a biquad filter (use with the CLM filter gen)"))
+ (let ((+documentation+ "(make-biquad a0 a1 a2 b1 b2) returns a biquad filter (use with the CLM filter gen)"))
(lambda (a0 a1 a2 b1 b2)
(make-filter 3
(float-vector a0 a1 a2)
diff --git a/stuff.scm b/stuff.scm
index 2d5680b..d294bc2 100644
--- a/stuff.scm
+++ b/stuff.scm
@@ -8,7 +8,7 @@
;;; ----------------
(define empty?
- (let ((documentation "(empty? obj) returns #t if obj is an empty sequence"))
+ (let ((+documentation+ "(empty? obj) returns #t if obj is an empty sequence"))
(lambda (obj)
(and (not (pair? obj))
(if (hash-table? obj)
@@ -17,10 +17,10 @@
(define applicable? arity)
-;(define sequence? length) -- now built-in for procedure-signatures
+;(define sequence? length) -- now built-in for signatures
(define indexable?
- (let ((documentation "(indexable? obj) returns #t if obj can be applied to an index: (obj 0)"))
+ (let ((+documentation+ "(indexable? obj) returns #t if obj can be applied to an index: (obj 0)"))
(lambda (obj)
(and (sequence? obj)
(applicable? obj)))))
@@ -108,7 +108,7 @@
(define iota
- (let ((documentation "(iota n (start 0) (incr 1)) returns a list counting from start for n:\n\
+ (let ((+documentation+ "(iota n (start 0) (incr 1)) returns a list counting from start for n:\n\
(iota 3) -> '(0 1 2)"))
(lambda* (n (start 0) (incr 1))
(if (or (not (integer? n))
@@ -128,28 +128,28 @@
result)))
(define make-circular-list
- (let ((documentation "(make-circular-list n init) returns a circular list with n entries initialized to init:\n\
+ (let ((+documentation+ "(make-circular-list n init) returns a circular list with n entries initialized to init:\n\
(make-circular-list 3 #f) -> #1=(#f #f #f . #1#)"))
(lambda* (n init)
(let ((lst (make-list n init)))
(set-cdr! (list-tail lst (- n 1)) lst)))))
(define circular-list
- (let ((documentation "(circular-list . objs) returns a circular list with objs:\n\
+ (let ((+documentation+ "(circular-list . objs) returns a circular list with objs:\n\
(circular-list 1 2) -> #1=(1 2 . #1#)"))
(lambda objs
(let ((lst (copy objs)))
(set-cdr! (list-tail lst (- (length lst) 1)) lst)))))
(define circular-list?
- (let ((documentation "(circular-list? obj) returns #t if obj is a circular list"))
+ (let ((+documentation+ "(circular-list? obj) returns #t if obj is a circular list"))
(lambda (obj)
(catch #t
(lambda () (infinite? (length obj)))
(lambda args #f)))))
(define linearize
- (let ((documentation " (linearize lst) turns a circular list into normal list:\n\
+ (let ((+documentation+ " (linearize lst) turns a circular list into normal list:\n\
(linearize (circular-list 1 2)) -> '(1 2)"))
(lambda (lst)
(let lin-1 ((lst lst)
@@ -160,13 +160,13 @@
(lin-1 (cdr lst) (cons (car lst) result) (cons lst sofar)))))))
(define cyclic?
- (let ((documentation "(cyclic obj) returns #t if the sequence obj contains any cycles"))
+ (let ((+documentation+ "(cyclic obj) returns #t if the sequence obj contains any cycles"))
(lambda (obj)
(pair? (cyclic-sequences obj)))))
(define copy-tree
- (let ((documentation "(copy-tree lst) returns a full copy of lst"))
+ (let ((+documentation+ "(copy-tree lst) returns a full copy of lst"))
(lambda (lis)
(if (pair? lis)
(cons (copy-tree (car lis))
@@ -174,7 +174,7 @@
lis))))
(define tree-member
- (let ((documentation "(tree-member sym tree) returns #t if sym is found anywhere in tree:\n\
+ (let ((+documentation+ "(tree-member sym tree) returns #t if sym is found anywhere in tree:\n\
(tree-member 'a '(1 (2 a))) -> #t"))
(lambda (sym tree)
(and (pair? tree)
@@ -184,7 +184,7 @@
(tree-member sym (cdr tree)))))))
(define adjoin
- (let ((documentation "(adjoin obj lst) adds obj to lst if it is not already in lst, returning the new list"))
+ (let ((+documentation+ "(adjoin obj lst) adds obj to lst if it is not already in lst, returning the new list"))
(lambda (obj lst)
(if (member obj lst) lst (cons obj lst)))))
@@ -215,11 +215,11 @@
((and (symbol? (car form))
(macro? (symbol->value (car form))))
(expand (apply macroexpand (list form))))
- ((and (eq? (car form) 'set!) ; look for (set! (mac ...) ...) and use mac's procedure-setter
+ ((and (eq? (car form) 'set!) ; look for (set! (mac ...) ...) and use mac's setter
(pair? (cdr form))
(pair? (cadr form))
(macro? (symbol->value (caadr form))))
- (expand (apply (eval (procedure-source (procedure-setter (symbol->value (caadr form)))))
+ (expand (apply (eval (procedure-source (setter (symbol->value (caadr form)))))
(append (cdadr form) (cddr form)))))
(else (cons (expand (car form))
(expand (cdr form))))))))
@@ -339,6 +339,26 @@
;;; 14-8-16: moved let-temporarily to s7.c
+(define-macro (let/setter vars . body)
+ (let ((setters (map (lambda (binding)
+ (and (pair? (cddr binding))
+ (caddr binding)))
+ vars))
+ (gsetters (gensym)))
+ `(let ((,gsetters (list ,@setters))
+ ,@(map (lambda (binding)
+ (list (car binding) (cadr binding)))
+ vars))
+ ,@(do ((setter setters (cdr setter))
+ (var vars (cdr var))
+ (i 0 (+ i 1))
+ (result ()))
+ ((null? setter)
+ (reverse result))
+ (if (car setter)
+ (set! result (cons `(set! (symbol-setter (quote ,(caar var))) (list-ref ,gsetters ,i)) result))))
+ ,@body)))
+
(define-macro (while test . body) ; while loop with predefined break and continue
`(call-with-exit
(lambda (break)
@@ -384,7 +404,7 @@
;;; ----------------
(define hash-table->alist
- (let ((documentation "(hash-table->alist table) returns the contents of table as an association list:\n\
+ (let ((+documentation+ "(hash-table->alist table) returns the contents of table as an association list:\n\
(hash-table->alist (hash-table '(a . 1))) -> '((a . 1))"))
(lambda (table)
(if (hash-table? table)
@@ -392,7 +412,7 @@
(error 'wrong-type-arg "hash-table->alist argument, ~A, is not a hash-table" table)))))
(define merge-hash-tables
- (let ((documentation "(merge-hash-tables . tables) returns a new hash-table with the contents of all the tables"))
+ (let ((+documentation+ "(merge-hash-tables . tables) returns a new hash-table with the contents of all the tables"))
(lambda tables
(apply hash-table
(apply append
@@ -422,7 +442,7 @@
;;; ----------------
(define find-if
- (let ((documentation "(find-if func sequence) applies func to each member of sequence.\n\
+ (let ((+documentation+ "(find-if func sequence) applies func to each member of sequence.\n\
If func approves of one, find-if returns that member of the sequence"))
(lambda (f sequence)
(call-with-exit
@@ -434,13 +454,13 @@ If func approves of one, find-if returns that member of the sequence"))
#f)))))
(define member?
- (let ((documentation "(member? obj sequence) returns #t if obj is an element of sequence"))
+ (let ((+documentation+ "(member? obj sequence) returns #t if obj is an element of sequence"))
(lambda (obj sequence)
(find-if (lambda (x) (equal? x obj)) sequence))))
(define index-if
- (let ((documentation "(index-if func sequence) applies func to each member of sequence.\n\
+ (let ((+documentation+ "(index-if func sequence) applies func to each member of sequence.\n\
If func approves of one, index-if returns the index that gives that element's position.\n\
(index-if (lambda (x) (= x 32)) #(0 1 32 4)) -> 2\n\
(index-if (lambda (x) (= (cdr x) 32)) (hash-table '(a . 1) '(b . 32))) -> 'b"))
@@ -460,7 +480,7 @@ If func approves of one, index-if returns the index that gives that element's po
#f)))))
(define count-if
- (let ((documentation "(count-if func sequence) applies func to each member of sequence, returning the number of times func approves."))
+ (let ((+documentation+ "(count-if func sequence) applies func to each member of sequence, returning the number of times func approves."))
(lambda (f sequence)
(let ((count 0))
(for-each (lambda (arg)
@@ -470,7 +490,7 @@ If func approves of one, index-if returns the index that gives that element's po
count))))
(define every?
- (let ((documentation "(every? func sequence) returns #t if func approves of every member of sequence"))
+ (let ((+documentation+ "(every? func sequence) returns #t if func approves of every member of sequence"))
(lambda (f sequence)
(call-with-exit
(lambda (return)
@@ -478,7 +498,7 @@ If func approves of one, index-if returns the index that gives that element's po
#t)))))
(define any?
- (let ((documentation "(any? func sequence) returns #t if func approves of any member of sequence"))
+ (let ((+documentation+ "(any? func sequence) returns #t if func approves of any member of sequence"))
(lambda (f sequence)
(call-with-exit
(lambda (return)
@@ -486,7 +506,7 @@ If func approves of one, index-if returns the index that gives that element's po
#f)))))
(define collect-if
- (let ((documentation "(collect-if type func sequence) gathers the elements of sequence that satisfy func, and returns them via type:\n\
+ (let ((+documentation+ "(collect-if type func sequence) gathers the elements of sequence that satisfy func, and returns them via type:\n\
(collect-if list integer? #(1.4 2/3 1 1+i 2)) -> '(1 2)"))
(lambda (type f sequence)
(apply type (map (lambda (arg) (if (f arg) arg (values))) sequence)))))
@@ -497,19 +517,19 @@ If func approves of one, index-if returns the index that gives that element's po
;;; to return (f arg) rather than arg, (apply type (map f sequence))
(define remove-if
- (let ((documentation "(remove-if type f sequence) returns via type the elements of sequence that do not satisfy func:\n\
+ (let ((+documentation+ "(remove-if type f sequence) returns via type the elements of sequence that do not satisfy func:\n\
(remove-if list integer? #(1.4 2/3 1 1+i 2)) -> '(1.4 2/3 1+1i)"))
(lambda (type f sequence)
(collect-if type (lambda (obj) (not (f obj))) sequence))))
(define nonce
- (let ((documentation "(nonce type sequence) returns via type the elements of sequence that occur only once"))
+ (let ((+documentation+ "(nonce type sequence) returns via type the elements of sequence that occur only once"))
(lambda (type sequence)
(collect-if type (lambda (obj) (= (count-if (lambda (x) (equal? x obj)) sequence) 1)) sequence))))
(define full-find-if
- (let ((documentation "(full-find-if func sequence) searches sequence, and recursively any sequences it contains, for an element that satisfies func"))
+ (let ((+documentation+ "(full-find-if func sequence) searches sequence, and recursively any sequences it contains, for an element that satisfies func"))
(lambda (f sequence)
(if (and (procedure? f)
(aritable? f 1))
@@ -528,14 +548,14 @@ If func approves of one, index-if returns the index that gives that element's po
(error 'wrong-type-arg "full-find-if first argument, ~A, is not a procedure of one argument" f)))))
(define full-count-if
- (let ((documentation "(full-count-if func sequence) searches sequence, and recursively any sequences it contains, returning the number of elements that satisfy func"))
+ (let ((+documentation+ "(full-count-if func sequence) searches sequence, and recursively any sequences it contains, returning the number of elements that satisfy func"))
(lambda (f sequence)
(let ((count 0))
(full-find-if (lambda (x) (if (f x) (set! count (+ count 1))) #f) sequence)
count))))
(define full-index-if
- (let ((documentation "(full-index-if func sequence) searches sequence, and recursively any sequences it contains, returning the indices of the first element that satisfies func:\n\
+ (let ((+documentation+ "(full-index-if func sequence) searches sequence, and recursively any sequences it contains, returning the indices of the first element that satisfies func:\n\
(full-index-if (lambda (x) (and (integer? x) (= x 3))) '(1 (2 3))) -> '(1 1)"))
(lambda (f sequence)
(call-with-exit
@@ -630,7 +650,7 @@ If func approves of one, index-if returns the index that gives that element's po
(define safe-find-if
- (let ((documentation "(safe-find-if func sequence) searches sequence, and recursively any sequences it contains, for an element that satisfies func.\
+ (let ((+documentation+ "(safe-find-if func sequence) searches sequence, and recursively any sequences it contains, for an element that satisfies func.\
Unlike full-find-if, safe-find-if can handle any circularity in the sequences."))
(lambda (f sequence)
(let ((iter (make-complete-iterator sequence)))
@@ -657,7 +677,7 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
;;; ----------------
(define sequences->list
- (let ((documentation "(sequences->list . sequences) returns a list of elements of all the sequences:\n\
+ (let ((+documentation+ "(sequences->list . sequences) returns a list of elements of all the sequences:\n\
(sequences->list \"hi\" #(0 1) (hash-table '(a . 2))) -> '(#\\h #\\i 0 1 (a . 2))"))
(lambda sequences
(apply append
@@ -666,13 +686,13 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
sequences)))))
(define concatenate
- (let ((documentation "(concatenate type . sequences) concatenates sequences returning an object of type:\n\
+ (let ((+documentation+ "(concatenate type . sequences) concatenates sequences returning an object of type:\n\
(concatenate vector '(1 2) #(3 4)) -> #(1 2 3 4)"))
(lambda (type . sequences)
(apply type (apply sequences->list sequences)))))
(define intersection
- (let ((documentation "(intersection type . sequences) returns via type the intersection of the sequences:\n\
+ (let ((+documentation+ "(intersection type . sequences) returns via type the intersection of the sequences:\n\
(intersection vector '(1 2 3) #(2 3 4)) -> #(2 3)"))
(lambda (type . sequences)
(if (every? sequence? sequences)
@@ -688,7 +708,7 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
(error 'wrong-type-arg "intersection arguments should be sequences: ~A" sequences)))))
(define union
- (let ((documentation "(union type . sequences) returns via type the union of the sequences:\n\
+ (let ((+documentation+ "(union type . sequences) returns via type the union of the sequences:\n\
(union vector '(1 2 3) #(2 3 4)) -> #(1 2 3 4)"))
(lambda (type . sequences)
(apply type (let ((lst ()))
@@ -699,7 +719,7 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
(reverse lst))))))
(define asymmetric-difference
- (let ((documentation "(asymmetric-difference type . sequences) returns the elements in the rest of the sequences that are not in the first:\n\
+ (let ((+documentation+ "(asymmetric-difference type . sequences) returns the elements in the rest of the sequences that are not in the first:\n\
(asymmetric-difference vector '(1 2 3) #(2 3 4) '(1 5)) -> #(4 5)"))
(lambda (type . sequences) ; complement, elements in B's not in A
(if (not (and (pair? sequences)
@@ -710,7 +730,7 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
(apply union list (cdr sequences)))))))
(define cl-set-difference
- (let ((documentation "(cl-set-difference type .sequences) returns the elements in the first sequence that are not in the rest of the sequences:\n\
+ (let ((+documentation+ "(cl-set-difference type .sequences) returns the elements in the first sequence that are not in the rest of the sequences:\n\
(cl-set-difference vector '(1 2 3) #(2 3 4) '(1 5)) -> #()"))
(lambda (type . sequences) ; CL: elements in A not in B's
(if (not (and (pair? sequences)
@@ -722,7 +742,7 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
(car sequences)))))))
(define symmetric-difference
- (let ((documentation "(symmetric-difference type .sequences) returns the elements that are in an odd number of the sequences:\n\
+ (let ((+documentation+ "(symmetric-difference type .sequences) returns the elements that are in an odd number of the sequences:\n\
(symmetric-difference vector '(1 2 3) #(2 3 4) '(5)) -> #(1 4 5)"))
(lambda (type . sequences) ; xor, elements in an odd number of sequences (logxor A B...)
(let ((all (apply sequences->list sequences)))
@@ -733,7 +753,7 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
(apply union list sequences))))))
(define power-set
- (let ((documentation "(power-set type . sequences) returns the power set of the union of the elements in the sequences."))
+ (let ((+documentation+ "(power-set type . sequences) returns the power set of the union of the elements in the sequences."))
(lambda (type . sequences) ; ignoring repeats
(apply type
(let pset ((set (apply union list sequences)))
@@ -770,12 +790,12 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
(memq obj (list quote if when unless begin set! let let* letrec letrec* cond and or case do
lambda lambda* define define* define-macro define-macro* define-bacro define-bacro*
define-constant with-baffle macroexpand with-let)))))
- (documentation "(->predicate obj) returns the type predicate function for obj: (->predicate 31) -> integer?"))
+ (+documentation+ "(->predicate obj) returns the type predicate function for obj: (->predicate 31) -> integer?"))
(lambda (obj)
(find-if (lambda (pred) (pred obj)) predicates))))
(define add-predicate
- (let ((documentation "(add-predicate p) adds p (a boolean function of one argument) to the list of predicates used by ->predicate"))
+ (let ((+documentation+ "(add-predicate p) adds p (a boolean function of one argument) to the list of predicates used by ->predicate"))
(lambda (p)
(if (and (procedure? p)
(aritable? p 1))
@@ -784,7 +804,7 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
(error 'wrong-type-arg "add-predicate argument, ~A, is not a procedure of one argument" p)))))
(define typeq?
- (let ((documentation "(typeq? . objs) returns #t if all objs have the same type (as determined by ->predicate)"))
+ (let ((+documentation+ "(typeq? . objs) returns #t if all objs have the same type (as determined by ->predicate)"))
(lambda objs
(or (null? objs)
(every? (->predicate (car objs)) (cdr objs))))))
@@ -808,7 +828,7 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
;;; ----------------
(define 2^n?
- (let ((documentation "(2^n? x) returns #t if x is a power of 2"))
+ (let ((+documentation+ "(2^n? x) returns #t if x is a power of 2"))
(lambda (x)
(and (integer> x)
(not (zero? x))
@@ -1051,7 +1071,7 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
;;; ----------------
(define for-each-subset
- (let ((documentation "(for-each-subset func args) forms each subset of args, then applies func to the subsets that fit its arity"))
+ (let ((+documentation+ "(for-each-subset func args) forms each subset of args, then applies func to the subsets that fit its arity"))
(lambda (func args)
(let subset ((source args)
(dest ())
@@ -1064,20 +1084,20 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
(subset (cdr source) dest len)))))))
(define for-each-permutation
- (let ((documentation "(for-each-permutation func vals) applies func to every permutation of vals:\n\
+ (let ((+documentation+ "(for-each-permutation func vals) applies func to every permutation of vals:\n\
(for-each-permutation (lambda args (format () \"~{~A~^ ~}~%\" args)) '(1 2 3))"))
(lambda (func vals)
(define (pinner cur nvals len)
(if (= len 1)
(apply func (car nvals) cur)
- (do ((i 0 (+ i 1))) ; I suppose a named let would be more Schemish
+ (do ((i 0 (+ i 1)) ; I suppose a named let would be more Schemish
+ (start nvals nvals))
((= i len))
- (let ((start nvals))
- (set! nvals (cdr nvals))
- (let ((cur1 (cons (car nvals) cur))) ; add (car nvals) to our arg list
- (set! (cdr start) (cdr nvals)) ; splice out that element and
- (pinner cur1 (cdr start) (- len 1)) ; pass a smaller circle on down, "wheels within wheels"
- (set! (cdr start) nvals)))))) ; restore original circle
+ (set! nvals (cdr nvals))
+ (let ((cur1 (cons (car nvals) cur))) ; add (car nvals) to our arg list
+ (set! (cdr start) (cdr nvals)) ; splice out that element and
+ (pinner cur1 (cdr start) (- len 1)) ; pass a smaller circle on down, "wheels within wheels"
+ (set! (cdr start) nvals))))) ; restore original circle
(let ((len (length vals)))
(set-cdr! (list-tail vals (- len 1)) vals) ; make vals into a circle
(pinner () vals len)
@@ -1093,7 +1113,7 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
(define (1+ x) (+ x 1))
(define n-choose-k
- (let ((documentation "(n-choose-k n k) returns the binomial coefficient C(N,K)"))
+ (let ((+documentation+ "(n-choose-k n k) returns the binomial coefficient C(N,K)"))
(lambda (n k)
(if (not (integer? n))
(error 'wrong-type-arg "n-choose-k 'n argument, ~A, should be an integer" n)
@@ -1114,14 +1134,14 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
;;; ----------------
(define continuable-error
- (let ((documentation "(continuable-error . args) is (apply error args) wrapped in a continuation named 'continue."))
+ (let ((+documentation+ "(continuable-error . args) is (apply error args) wrapped in a continuation named 'continue."))
(lambda args
(call/cc
(lambda (continue)
(apply error args))))))
(define continue-from-error ; maybe arg for value to pass back
- (let ((documentation "(continue-from-error) tries to continue from the point of the earlier continuable-error"))
+ (let ((+documentation+ "(continue-from-error) tries to continue from the point of the earlier continuable-error"))
(lambda ()
(if (continuation? ((owlet) 'continue))
(((owlet) 'continue))))))
@@ -1170,7 +1190,7 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
(apply inlet slots))
(for-each (lambda (slot)
(if (not (or (assq (car slot) slots)
- (constant? (car slot)))) ; immutable symbol
+ (immutable? (car slot)))) ; immutable symbol
(set! slots (cons slot slots))))
pe))))
@@ -1183,7 +1203,7 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
(define-macro (reflective-let vars . body)
`(let ,vars
,@(map (lambda (vr)
- `(set! (symbol-access ',(car vr))
+ `(set! (symbol-setter ',(car vr))
(lambda (s v)
(format *stderr* "~S -> ~S~%" s v)
v)))
@@ -1270,13 +1290,13 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
(define ,ne ,e)
,@(map (lambda (sym)
(if (symbol? sym)
- `(set! (symbol-access ',sym)
+ `(set! (symbol-setter ',sym)
(lambda (s v)
(let ((,nv ,(if (not (with-let (sublet e 'sym sym)
- (symbol-access sym)))
+ (symbol-setter sym)))
'v
`(begin (,(procedure-source (with-let (sublet e 'sym sym)
- (symbol-access sym)))
+ (symbol-setter sym)))
s v)))))
(with-let (sublet ,ne ',sym ,nv)
(set! ,place ,value))
@@ -1339,7 +1359,7 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
(let ((a 1)) (let ((v (reactive-vector a (+ a 1) 2))) (set! a 4) v)) -> #(4 5 2)
(let* ((a 1) (v (reactive-vector a (+ a 1) 2))) (set! a 4) v) -> #(4 5 2)
(let* ((a 1) (v (reactive-vector a (+ a 1) (* 2 (_ 0))))) (set! a 4) v) -> #(4 5 8)
-;;; mock-vector could also be used for constant or reflective vectors, etc -- just like symbol-access but element-wise
+;;; mock-vector could also be used for constant or reflective vectors, etc -- just like symbol-setter but element-wise
|#
;; another experiment:
@@ -1350,10 +1370,10 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
'port port
'ctrl ctrl)
(let* ((syms (gather-symbols args e () ()))
- (sa's (map symbol-access syms)))
+ (sa's (map symbol-setter syms)))
`(begin
,@(map (lambda (sym sa)
- `(set! (symbol-access ',sym)
+ `(set! (symbol-setter ',sym)
(lambda (s v)
(let ((result (if ,sa (apply ,sa s v ()) v)))
(with-let (sublet ,e ',sym result)
@@ -1367,8 +1387,8 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
;;; part of the complexity comes from the hope to be tail-callable, but even a version
;;; using dynamic-wind is complicated because of shadowing
;;; what I think we want here is a globally accessible way to see set! that does not
-;;; require non-local state (not a hook with its list of functions, or symbol-access)
-;;; and that doesn't bring s7 to a halt. Perhaps a symbol-access function that
+;;; require non-local state (not a hook with its list of functions, or symbol-setter)
+;;; and that doesn't bring s7 to a halt. Perhaps a symbol-setter function that
;;; traverses the let-chain (like *features*) looking for something?? But the relevant
;;; chain is on the stack (is it?), so it won't be quick. And weak refs are asking for trouble.
;;; (let ((a 1)) (define (set-a x) (set! a x)) (let ((b 2)) (reactive-set! b (+ a 1)) (set-a 3) b))
@@ -1423,18 +1443,18 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
(nsyms ()))
(for-each (lambda (s)
(if (and (with-let (sublet e (quote gs) s)
- (symbol-access gs))
+ (symbol-setter gs))
(not (assq s bindings)))
(if (not (memq s setters))
(begin
(set! setters (cons s setters))
(set! nsyms (cons (cons s (cdr (procedure-source (with-let (sublet e (quote gs) s)
- (symbol-access gs)))))
+ (symbol-setter gs)))))
nsyms)))
(let ((prev (assq s accessors)))
(if prev ; merge the two functions
(set-cdr! prev (append (cdddr (procedure-source (with-let (sublet e (quote gs) s)
- (symbol-access gs))))
+ (symbol-setter gs))))
(cdr prev))))))))
bsyms)
@@ -1447,14 +1467,14 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
,@(map (lambda (sa)
(if (assq (car sa) bindings)
(values)
- `(set! (symbol-access ',(car sa))
+ `(set! (symbol-setter ',(car sa))
(lambda (,(gensym) ,v)
(,(rlet-symbol (car sa)) ,v)
,@(cdr sa)
,v))))
accessors)
,@(map (lambda (ns)
- `(set! (symbol-access ',(car ns))
+ `(set! (symbol-setter ',(car ns))
(apply lambda ',(cdr ns))))
nsyms)
,@body))))))
@@ -1476,13 +1496,13 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
(define (one-access s1 v)
(let* ((syms (map car e))
- (sa's (map (lambda (s) (symbol-access s e)) syms)))
+ (sa's (map (lambda (s) (symbol-setter s e)) syms)))
(dynamic-wind
- (lambda () (for-each (lambda (s) (if (not (eq? s s1)) (set! (symbol-access s e) #f))) syms))
+ (lambda () (for-each (lambda (s) (if (not (eq? s s1)) (set! (symbol-setter s e) #f))) syms))
(lambda () (f s1 v))
- (lambda () (for-each (lambda (s a) (set! (symbol-access s e) a)) syms sa's)))))
+ (lambda () (for-each (lambda (s a) (set! (symbol-setter s e) a)) syms sa's)))))
- (for-each (lambda (s) (set! (symbol-access s e) one-access)) (map car e)))
+ (for-each (lambda (s) (set! (symbol-setter s e) one-access)) (map car e)))
f))
@@ -1490,13 +1510,13 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
`(let ((accessors ()))
(dynamic-wind
(lambda ()
- (set! accessors (map symbol-access ',vars)))
+ (set! accessors (map symbol-setter ',vars)))
(lambda ()
,@body)
(lambda ()
(for-each
(lambda (var accessor)
- (set! (symbol-access var) accessor))
+ (set! (symbol-setter var) accessor))
',vars accessors)))))
;; (let ((a 1) (b 2)) (with-accessors (a b) (let ((c 3)) (reactive-set! c (+ (* 2 a) (* 3 b))) (set! a 4) c)))
@@ -1504,7 +1524,7 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
#|
(let ((x 0.0)) (reactive-let ((y (sin x))) (set! x 1.0) y)) -- so "lifting" comes for free?
-(map (lambda (s) (symbol-access (car s) e)) e)
+(map (lambda (s) (symbol-setter (car s) e)) e)
(let ((a 1))
(reactive-let ((b (+ a 1))
@@ -1705,7 +1725,7 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
(format ap-port "~A: ~A~%"
(car binding)
(if (procedure? (cdr binding))
- (procedure-documentation (cdr binding))
+ (documentation (cdr binding))
(cdr binding)))))
ap-env))))
@@ -1725,10 +1745,10 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
(vlp (gensym)))
;; local symbol access -- this does not affect any other uses of these symbols
- (set! (symbol-access '*display-spacing* (curlet))
+ (set! (symbol-setter '*display-spacing* (curlet))
(lambda (s v) (if (and (integer? v) (not (negative? v))) v *display-spacing*)))
- (set! (symbol-access '*display-print-length* (curlet))
+ (set! (symbol-setter '*display-print-length* (curlet))
(lambda (s v) (if (and (integer? v) (not (negative? v))) v *display-print-length*)))
;; export *display* -- just a convenience
@@ -2141,13 +2161,13 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
;;; (sandbox '(let ((x 1)) (+ x 2))) -> 3
(define sandbox
- (let ((documentation "(sandbox code) evaluates code in an environment where nothing outside that code can be affected by its evaluation.")
+ (let ((+documentation+ "(sandbox code) evaluates code in an environment where nothing outside that code can be affected by its evaluation.")
(built-ins
(let ((ht (make-hash-table))) ; bad guys removed
(for-each
(lambda (op)
(set! (ht op) #t))
- '(symbol? gensym? keyword? let? openlet? iterator? constant? macro? c-pointer? c-object?
+ '(symbol? gensym? keyword? let? openlet? iterator? macro? c-pointer? c-object? immutable? constant?
input-port? output-port? eof-object? integer? number? real? complex? rational? random-state?
char? string? list? pair? vector? float-vector? int-vector? byte-vector? hash-table?
continuation? procedure? dilambda? boolean? float? proper-list? sequence? null? gensym
@@ -2181,8 +2201,8 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
byte-vector make-byte-vector hash-table hash-table* make-hash-table hash-table-ref
hash-table-set! hash-table-entries cyclic-sequences call/cc call-with-current-continuation
call-with-exit apply for-each map dynamic-wind values type-of
- catch throw error procedure-documentation procedure-signature help procedure-source
- procedure-setter arity aritable? not eq? eqv? equal? morally-equal? s7-version
+ catch throw error documentation signature help procedure-source
+ setter arity aritable? not eq? eqv? equal? morally-equal? s7-version
dilambda make-hook hook-functions stacktrace tree-leaves tree-memq object->let
pi most-positive-fixnum most-negative-fixnum nan.0 inf.0 -nan.0 -inf.0
*stderr* *stdout* *stdin*
@@ -2194,8 +2214,8 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
ht))
(baddies (list #_eval #_eval-string #_load #_autoload #_define-constant #_define-expansion #_require
#_string->symbol #_symbol->value #_symbol->dynamic-value #_symbol-table #_symbol #_keyword->symbol
- #_defined? #_symbol-access
- #_call/cc #_gc #_read
+ #_defined? #_symbol-setter
+ #_call/cc #_gc #_read #_immutable!
#_open-output-file #_call-with-output-file #_with-output-to-file
#_open-input-file #_call-with-input-file #_with-input-from-file
#_current-output-port #_current-error-port #_current-input-port
@@ -2215,7 +2235,7 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
(cond ((symbol? tree)
(let ((val (symbol->value tree)))
;; don't accept any symbol with an accessor
- (if (or (symbol-access tree)
+ (if (or (symbol-setter tree)
(memq tree '(*s7* unquote abort))
(let? val)) ; not sure about this
(quit #f))
diff --git a/tools/ffitest.c b/tools/ffitest.c
index 94370c1..3765f9d 100644
--- a/tools/ffitest.c
+++ b/tools/ffitest.c
@@ -944,7 +944,7 @@ int main(int argc, char **argv)
{fprintf(stderr, "%d: %s is not an environment?\n", __LINE__, s1 = TO_STR(p)); free(s1);}
s7_define_constant(sc, "a_constant", s7_t(sc));
- if (!s7_is_constant(s7_name_to_value(sc, "a_constant")))
+ if (!s7_is_immutable(s7_name_to_value(sc, "a_constant")))
{fprintf(stderr, "%d: a_constant is not a constant?\n", __LINE__);}
if (!s7_is_defined(sc, "a_constant"))
{fprintf(stderr, "%d: a_constant is not defined?\n", __LINE__);}
@@ -1001,7 +1001,7 @@ int main(int argc, char **argv)
if (s7_integer(p1) != 2)
{fprintf(stderr, "%d: %s is not 2?\n", __LINE__, s1 = TO_STR(p1)); free(s1);}
- s7_apply_function(sc, s7_procedure_setter(sc, s7_name_to_value(sc, "dax-data")), s7_cons(sc, p, s7_cons(sc, TO_S7_INT(32), s7_nil(sc))));
+ s7_apply_function(sc, s7_setter(sc, s7_name_to_value(sc, "dax-data")), s7_cons(sc, p, s7_cons(sc, TO_S7_INT(32), s7_nil(sc))));
p1 = s7_apply_function(sc, s7_name_to_value(sc, "dax-data"), s7_cons(sc, p, s7_nil(sc)));
if (!s7_is_integer(p1))
{fprintf(stderr, "%d: %s is not an integer?\n", __LINE__, s1 = TO_STR(p1)); free(s1);}
@@ -1432,9 +1432,9 @@ int main(int argc, char **argv)
{
const char *s3;
- s3 = s7_procedure_documentation(sc, p1);
+ s3 = s7_documentation(sc, p1);
if (strcmp(s3, "(abs x) returns the absolute value of the real number x") != 0)
- {fprintf(stderr, "%d: (procedure-documentation abs) = %s?\n", __LINE__, s3);}
+ {fprintf(stderr, "%d: (documentation abs) = %s?\n", __LINE__, s3);}
s3 = s7_help(sc, p1);
if (strcmp(s3, "(abs x) returns the absolute value of the real number x") != 0)
@@ -1627,7 +1627,7 @@ int main(int argc, char **argv)
s7_define_function(sc, "notify-C", scheme_set_notification, 2, 0, false, "called if notified-var is set!");
s7_define_variable(sc, "notified-var", s7_make_integer(sc, 0));
- s7_symbol_set_access(sc, s7_make_symbol(sc, "notified-var"), s7_name_to_value(sc, "notify-C"));
+ s7_symbol_set_setter(sc, s7_make_symbol(sc, "notified-var"), s7_name_to_value(sc, "notify-C"));
s7_eval_c_string(sc, "(set! notified-var 32)");
p = s7_name_to_value(sc, "notified-var");
if (s7_integer(p) != 32)
diff --git a/tools/gdbinit b/tools/gdbinit
index f49a0df..44a5285 100644
--- a/tools/gdbinit
+++ b/tools/gdbinit
@@ -216,8 +216,8 @@ define s7cell
end
if (($type == T_SYMBOL) || ($is_bad_type))
- printf "sym: name: %p, global_slot: %p, local_slot: %p, \n id: %d, tag: %d, accessor: %u\n", \
- $cell.object.sym.name, $cell.object.sym.global_slot, $cell.object.sym.local_slot, $cell.object.sym.id, $cell.object.sym.tag, $cell.object.string.str_ext.accessor
+ printf "sym: name: %p, global_slot: %p, local_slot: %p, \n id: %d, tag: %d, setter: %u\n", \
+ $cell.object.sym.name, $cell.object.sym.global_slot, $cell.object.sym.local_slot, $cell.object.sym.id, $cell.object.sym.info->tag, $cell.object.string.str_ext.setter
end
if (($type == T_SYNTAX) || ($is_bad_type))
diff --git a/tools/make-index.scm b/tools/make-index.scm
index 4d058db..ae76e62 100644
--- a/tools/make-index.scm
+++ b/tools/make-index.scm
@@ -507,7 +507,7 @@
(format *stderr* ";~S says it is in ~S which does not exist~%" symbol file))
(let ((cur-names (hash-table-ref names file)))
- (hash-table-set! names file (if cur-names (cons symbol cur-names) (list symbol))))))
+ (hash-table-set! names file (cons symbol (or cur-names ()))))))
'((*libm* "libm.scm")
(*libgdbm* "libgdbm.scm")
(*libdl* "libdl.scm")
@@ -1592,12 +1592,13 @@
(begin
(set! cur-href (substring dline 0 epos))
(let ((pos (char-position #\# cur-href)))
- (if (not (or pos
- (<= epos 5)
- (file-exists? cur-href)
- (string=? (substring cur-href 0 4) "ftp:")
- (string=? (substring cur-href 0 5) "http:")))
- (format () "~A[~D]: reference to missing file ~S~%" file linectr cur-href)))))
+ (unless (or pos
+ (<= epos 5)
+ (file-exists? cur-href)
+ (string=? (substring cur-href 0 4) "ftp:")
+ (string=? (substring cur-href 0 5) "http:")
+ (string=? (substring cur-href 0 6) "https:"))
+ (format () "~A[~D]: reference to missing file ~S~%" file linectr cur-href)))))
;; cur-href here is the full link: sndclm.html#make-filetosample for example
;; it can also be a bare file name
diff --git a/tools/makexg.scm b/tools/makexg.scm
index 99d719e..1f323e7 100755
--- a/tools/makexg.scm
+++ b/tools/makexg.scm
@@ -3813,7 +3813,7 @@
(hoy " (!s7_is_symbol(arg))) ~%")
(hoy " return(s7_make_symbol(sc, \"integer?\")); ~%")
(hoy " func = s7_car(form); ~%")
-(hoy " doc_string = s7_procedure_documentation(sc, func); ~%")
+(hoy " doc_string = s7_documentation(sc, func); ~%")
(hoy " p = strchr(doc_string, (int)'('); ~%")
(hoy " if (p) ~%")
(hoy " { ~%")
diff --git a/tools/tauto.scm b/tools/tauto.scm
index 8b189a8..3a77464 100644
--- a/tools/tauto.scm
+++ b/tools/tauto.scm
@@ -4,13 +4,13 @@
(if (provided? 'snd)
(begin
- (format *stderr* "this won't work in Snd!~%") ; see t705.scm
+ (format *stderr* "this won't work in Snd!~%")
(exit)))
;(load "stuff.scm")
;(load "r7rs.scm")
(require mockery.scm)
-
+;(load "s7test-block.so" (sublet (curlet) (cons 'init_func 'block_init)))
(define max-args 3)
(define-constant one 1)
@@ -55,6 +55,11 @@
(lambda (dir) 1.0) (float-vector) (make-float-vector '(2 32))
'((a . 1)) #i(1) '((((A . B) C . D) (E . F) G . H) ((I . J) K . L) (M . N) O . P)
+ ;(make-block 2) (block 1.0 2.0 3.0) (block)
+ #u8(0 1 2) (openlet (inlet 'abs (lambda (x) (- x))))
+ (make-iterator (list 1 2 3)) (make-iterator (string #\1)) #<eof> #r2d((.1 .2) (.3 .4))
+ (dilambda (lambda () 1) (lambda (a) a))
+
(mock-number 0) (mock-number 1-i) (mock-number 4/3) (mock-number 2.0)
(mock-string #\h #\o #\h #\o)
(mock-pair '(2 3 4))
@@ -147,7 +152,7 @@
auto-constants))))))))
(define safe-fill!
- (let ((signature '(#t sequence? #t)))
+ (let ((+signature+ '(#t sequence? #t)))
(lambda (obj arg)
(if (not (let? obj))
(fill! obj arg)))))
@@ -171,7 +176,7 @@
symbol-table load local-symbol?
global-environment current-environment make-procedure-with-setter procedure-with-setter? make-rectangular
- copy fill! hash-table-set! vector-set! let-set! list-values apply-values
+ copy fill! hash-table-set! vector-set! let-set! list-values apply-values immutable!
mock-number mock-pair mock-string mock-char mock-vector mock-hash-table*
mock-symbol mock-port mock-hash-table m mock->string make-local-method
@@ -193,7 +198,7 @@
(strname (symbol->string sym)))
(if (not (memv (strname 0) '(#\{ #\[ #\()))
(begin
- ;(if (not (procedure-signature f)) (format *stderr* "~A~%" sym))
+ ;(if (not (signature f)) (format *stderr* "~A~%" sym))
(if (< top bottom)
(format *stderr* ";~A (bottom: ~A, top: ~A)...~%" sym bottom top))
;(format *stderr* ";~A...~%" sym)
@@ -202,7 +207,7 @@
(let ((sig (cond ((eq? sym 'append)
(let ((lst (list 'list?)))
(set-cdr! lst lst)))
- ((procedure-signature f) => copy))))
+ ((signature f) => copy))))
(map-values sig)
(autotest f () 0 top (if (pair? sig) (cdr sig) ())))))))))))
diff --git a/tools/tcopy.scm b/tools/tcopy.scm
index caa9859..4ac8e3e 100644
--- a/tools/tcopy.scm
+++ b/tools/tcopy.scm
@@ -1,4 +1,5 @@
(let ((new-env (sublet (curlet) (cons 'init_func 'block_init)))) ; load calls init_func if possible
+ ;; depends on running s7test first normally
(load "s7test-block.so" new-env))
(define (test-copy size)
@@ -11,16 +12,13 @@
(old-fvect (make-float-vector size 1.0))
(old-ivect (make-int-vector size 1))
(old-hash (make-hash-table size))
- (old-let #f)
+ (old-let (inlet))
(old-block (make-block size)))
- (set! old-let (inlet))
(do ((i 0 (+ i 1)))
((= i size))
- (hash-table-set! old-hash i #\a))
- (do ((i 0 (+ i 1)))
- ((= i size))
- (varlet old-let (string->symbol (number->string i)) #\a))
+ (hash-table-set! old-hash (string->symbol (number->string i)) #\a))
+ (copy old-hash old-let)
(let ((new-string (make-string size #\space))
(new-bvect (make-byte-vector size 0))
diff --git a/tools/testsnd b/tools/testsnd
index 7100a61..d79213a 100755
--- a/tools/testsnd
+++ b/tools/testsnd
@@ -184,7 +184,7 @@ make
echo ' '
echo ' '
./snd --version
-./snd -l snd-test 23
+# ./snd -l snd-test 23
./snd -noinit -l snd-test
make clmclean
make sndinfo
@@ -193,7 +193,7 @@ make sndplay
./sndplay oboe.snd
echo ' '
echo ' '
-echo ' -------------------------------- that was motif? and test 23 -------------------------------- '
+echo ' -------------------------------- that was motif -------------------------------- '
echo ' '
echo ' '
diff --git a/tools/tgen.scm b/tools/tgen.scm
index 851b6c2..ea06d48 100644
--- a/tools/tgen.scm
+++ b/tools/tgen.scm
@@ -30,7 +30,7 @@
(mus-sound-preload "1a.snd")
-(define* (env-1 g f) (env g))
+(define (env-1 g) (env g))
(define (make-env-1 size) (make-env M :length 10))
(define pulsed-env-1 pulsed-env)
diff --git a/tools/thash.scm b/tools/thash.scm
index 03b89e4..7d01db6 100644
--- a/tools/thash.scm
+++ b/tools/thash.scm
@@ -177,7 +177,7 @@
(test10 size))
(for-each test-hash (list 1 10 100 1000 10000 100000 1000000))
-
+(newline)
;(gc)
#|
diff --git a/tools/valcall.scm b/tools/valcall.scm
index 2473b19..eb39ac9 100644
--- a/tools/valcall.scm
+++ b/tools/valcall.scm
@@ -62,8 +62,8 @@
(list "repl" "s7test.scm")
(list "repl" "tlet.scm")
(list "repl" "lt.scm")
- (list "repl" "tcopy.scm")
(list "repl" "tform.scm")
+ (list "repl" "tcopy.scm")
(list "repl" "tmap.scm")
(list "repl" "tfft.scm")
(list "repl" "tsort.scm")
diff --git a/ws.rb b/ws.rb
index 0a643f0..5e7e3d7 100644
--- a/ws.rb
+++ b/ws.rb
@@ -25,7 +25,7 @@
# SUCH DAMAGE.
#
# Created: 03/04/08 17:05:03
-# Changed: 17/08/14 05:49:00
+# Changed: 17/09/25 22:15:33
# module WS
# ws_getlogin
@@ -431,16 +431,13 @@ def clm_player(s)
end
end
-trace_var(:$clm_default_frequency) do |val|
- set_clm_default_frequency(val)
-end
trace_var(:$clm_table_size) do |val|
set_clm_table_size(val)
end
with_silence do
# warning: undefined variable
- $clm_version = "ruby 2017/08/14"
+ $clm_version = "ruby 2017/09/25"
$output ||= false
$reverb ||= false
$clm_array_print_length ||= 8
@@ -461,7 +458,7 @@ with_silence do
$clm_statistics ||= false
$clm_table_size ||= 512
$clm_verbose ||= false
- $clm_default_frequency ||= 0.0
+ $clm_default_frequency ||= 440.0
$clm_locsig_type ||= locsig_type
$clm_search_list ||= (ENV["CLM_SEARCH_PATH"] or ".").split(/:/)
diff --git a/ws.scm b/ws.scm
index 60c6b15..93b8644 100644
--- a/ws.scm
+++ b/ws.scm
@@ -31,7 +31,7 @@
(set! *clm-file-buffer-size* 65536)
(define times->samples
- (let ((documentation "(times->samples beg dur) converts beg and (+ beg dur) to samples, returning both in a list"))
+ (let ((+documentation+ "(times->samples beg dur) converts beg and (+ beg dur) to samples, returning both in a list"))
(lambda (beg dur)
(list (seconds->samples beg) (seconds->samples (+ beg dur))))))
@@ -56,7 +56,7 @@
(if (string? (car body))
`(begin
(define ,name
- (let ((documentation ,(car body)))
+ (let ((+documentation+ ,(car body)))
(lambda* ,targs
(if *clm-notehook*
(*clm-notehook* (symbol->string ',name) ,@utargs))
@@ -370,7 +370,7 @@
;;; -------- clm-load --------
(define clm-load
- (let ((documentation "(clm-load file . args) loads 'file' in the context of with-sound"))
+ (let ((+documentation+ "(clm-load file . args) loads 'file' in the context of with-sound"))
(lambda (file . args)
(apply with-sound-helper (lambda () (load file)) args))))
@@ -678,7 +678,7 @@
(define wsdat-play ; for cm
(dilambda
- (let ((documentation "accessor for play field of init-with-sound struct"))
+ (let ((+documentation+ "accessor for play field of init-with-sound struct"))
(lambda (w)
(w 9)))
(lambda (w val)
@@ -688,7 +688,7 @@
;;; -------- with-sound save state --------
(define ws-save-state
- (let ((documentation "(ws-save-state filename) is an after-save-state-hook function that saves the current with-sound global settings"))
+ (let ((+documentation+ "(ws-save-state filename) is an after-save-state-hook function that saves the current with-sound global settings"))
(lambda (hook)
(let ((fd (open-output-file (hook 'name) "a")))
;; should the save-state file load this file if it hasn't been loaded? (what path?)
@@ -712,7 +712,7 @@
(let ((main-pitch (/ 440.0 (expt 2.0 19/4))) ;(/ 57 12) ; a4 = 440Hz is pitch 57 in our numbering
(last-octave 0) ; octave number can be omitted
(ratios (vector 1.0 256/243 9/8 32/27 81/64 4/3 1024/729 3/2 128/81 27/16 16/9 243/128 2.0))
- (documentation "(->frequency pitch pythagorean) returns the frequency (Hz) of the 'pitch', a CLM/CM style note name as a \
+ (+documentation+ "(->frequency pitch pythagorean) returns the frequency (Hz) of the 'pitch', a CLM/CM style note name as a \
symbol: 'e4 for example. If 'pythagorean', the frequency calculation uses small-integer ratios, rather than equal-tempered tuning."))
(lambda* (pitch pythagorean) ; pitch can be pitch name or actual frequency
(if (not (symbol? pitch))
@@ -742,7 +742,7 @@ symbol: 'e4 for example. If 'pythagorean', the frequency calculation uses small
;;; -------- ->sample --------
(define ->sample
- (let ((documentation "(->sample time-in-seconds) -> time-in-samples"))
+ (let ((+documentation+ "(->sample time-in-seconds) -> time-in-samples"))
(lambda (beg)
(round (* (if (pair? (sounds)) (srate) *clm-srate*) beg)))))
diff --git a/xen.c b/xen.c
index 1e3fa0e..611ba13 100644
--- a/xen.c
+++ b/xen.c
@@ -1612,6 +1612,7 @@ static Xen g_tmpnam(void)
static Xen g_ftell(Xen fd)
{
+ Xen_check_type(Xen_is_integer(fd), fd, 1, "ftell", "an integer");
return(C_int_to_Xen_integer(lseek(Xen_integer_to_C_int(fd), 0, SEEK_CUR)));
}
diff --git a/xg.c b/xg.c
index fcf91d1..8146a95 100644
--- a/xg.c
+++ b/xg.c
@@ -39666,7 +39666,7 @@ static void define_functions(void)
{
#if HAVE_SCHEME
s7_pointer s_boolean, s_integer, s_real, s_string, s_any, s_pair, s_float, s_gtk_enum_t, s_pair_false;
- s7_pointer pl_iur, pl_iugi, pl_iuisi, pl_iuuui, pl_iuuuui, pl_iuis, pl_iug, pl_pit, pl_piu, pl_ius, pl_iusi, pl_iu, pl_iuui, pl_pi, pl_iui, pl_iuisut, pl_t, pl_prrru, pl_tts, pl_tti, pl_dusr, pl_dusi, pl_dui, pl_du, pl_dus, pl_pr, pl_ssig, pl_ssi, pl_psgi, pl_suiig, pl_sug, pl_psiuub, pl_psgbiiiit, pl_psrrrb, pl_sui, pl_suuub, pl_psu, pl_psb, pl_su, pl_sus, pl_ps, pl_psg, pl_psi, pl_psugt, pl_psiu, pl_psiiuusu, pl_psut, pl_pur, pl_puuui, pl_pusiig, pl_pusiigu, pl_pusiiugu, pl_puuiig, pl_puur, pl_purru, pl_puiiui, pl_pugi, pl_puuig, pl_puttiiiu, pl_pubi, pl_puiig, pl_puiigi, pl_puigu, pl_puuusuug, pl_pusi, pl_pusiu, pl_putu, pl_puri, pl_pusub, pl_pust, pl_pub, pl_puuiu, pl_pugiiu, pl_pusu, pl_pu, pl_puiiu, pl_puuubu, pl_pugu, pl_puutuuiu, pl_puutu, pl_pui, pl_pussu, pl_puibu, pl_pus, pl_pug, pl_put, pl_pusigu, pl_pusig, pl_puui, pl_puiu, pl_pusiuiu, pl_pusiuibu, pl_pusiiu, pl_puuiiu, pl_b, pl_btiib, pl_bti, pl_bt, pl_tb, pl_g, pl_i, pl_tg, pl_tiu, pl_itiiub, pl_itsub, pl_itstttg, pl_itgiiut, pl_ti, pl_it, pl_s, pl_tsu, pl_tsb, pl_st, pl_tsig, pl_ts, pl_tsi, pl_tsiu, pl_tsiiuui, pl_tsiuui, pl_p, pl_tusiuiui, pl_tuuiu, pl_tussu, pl_tuuuggu, pl_tuuggu, pl_tugiis, pl_tubu, pl_tuurru, pl_tuurrrrgr, pl_tuurrrrg, pl_tuuur, pl_tusg, pl_tuuuui, pl_tugiiu, pl_tuusb, pl_tugui, pl_tuuugi, pl_tuuuub, pl_tuttti, pl_tuuttti, pl_tuisi, pl_tugb, pl_tugs, pl_tugug, pl_turgs, pl_tubi, pl_tuttigsi, pl_tuiiiiui, pl_tuurb, pl_tuuiiiirrrrg, pl_tuuiiiirrrrgi, pl_tuiggu, pl_turrrb, pl_tuubbig, pl_pt, pl_tuuti, pl_tubbi, pl_tuti, pl_tutti, pl_tutui, pl_tutisi, pl_tuuri, pl_tuusit, pl_tuurbr, pl_tuugi, pl_tuit, pl_tusr, pl_tusri, pl_tusi, pl_turi, pl_tuui, pl_tuur, pl_tuig, pl_tur, pl_tub, pl_tui, pl_tu, pl_tus, pl_tusb, pl_tut, pl_tuuut, pl_tug, pl_tutb, pl_tust, pl_tuub, pl_tuus, pl_tuug, pl_tuibu, pl_tuut, pl_tuuig, pl_tuguig, pl_tuubr, pl_tuuub, pl_tuuiuui, pl_tugu, pl_tuuir, pl_tugr, pl_tugi, pl_tuuui, pl_tuib, pl_tusu, pl_tuusi, pl_tugt, pl_tuis, pl_tubiiiu, pl_tuiu, pl_tusiis, pl_tuiiu, pl_tuuug, pl_tusuig, pl_tuuubr, pl_big, pl_bi, pl_bsu, pl_bsigb, pl_bur, pl_buug, pl_buigu, pl_buuti, pl_butib, pl_buiuig, pl_buuusuug, pl_buuit, pl_buti, pl_butti, pl_busi, pl_buusib, pl_busib, pl_buuuub, pl_buuub, pl_buttu, pl_busgu, pl_buurbr, pl_buui, pl_buus, pl_buuui, pl_bug, pl_bu, pl_bus, pl_busu, pl_but, pl_bui, pl_buib, pl_buiu, pl_bub, pl_buub, pl_pb, pl_buig, pl_buuig, pl_igi, pl_gi, pl_iiit, pl_iit, pl_sg, pl_gs, pl_isigutttiiu, pl_isi, pl_isgt, pl_sig, pl_si, pl_is, pl_gussitu, pl_gurrsiu, pl_gus, pl_guut, pl_guuut, pl_guugbuut, pl_pgr, pl_pgu, pl_pgi, pl_gug, pl_pgbi, pl_gu, pl_pg, pl_gui, pl_bpt;
+ s7_pointer pl_b, pl_s, pl_t, pl_bsu, pl_bsigb, pl_ssi, pl_ssig, pl_bt, pl_tb, pl_bti, pl_btiib, pl_st, pl_ts, pl_tsu, pl_tsb, pl_tsi, pl_tsig, pl_tsiu, pl_tsiuui, pl_tsiiuui, pl_tts, pl_tti, pl_p, pl_g, pl_buuusuug, pl_bu, pl_pb, pl_bur, pl_bug, pl_bus, pl_but, pl_bui, pl_bub, pl_buug, pl_buti, pl_busi, pl_buui, pl_buus, pl_busu, pl_buib, pl_buiu, pl_buub, pl_buig, pl_buigu, pl_buuti, pl_butib, pl_buuit, pl_butti, pl_busib, pl_buuub, pl_buttu, pl_busgu, pl_buuui, pl_buuig, pl_buiuig, pl_buusib, pl_buuuub, pl_buurbr, pl_su, pl_ps, pl_sug, pl_sui, pl_psu, pl_psb, pl_sus, pl_psg, pl_psi, pl_psgi, pl_psiu, pl_psut, pl_suiig, pl_suuub, pl_psugt, pl_psiuub, pl_psrrrb, pl_psgbiiiit, pl_psiiuusu, pl_sg, pl_gs, pl_tusiuiui, pl_tuurrrrgr, pl_tuurrrrg, pl_tuttigsi, pl_tuiiiiui, pl_tuuiiiirrrrg, pl_tuuiiiirrrrgi, pl_pt, pl_tu, pl_tur, pl_tub, pl_tui, pl_tus, pl_tut, pl_tug, pl_tubu, pl_tusg, pl_tugb, pl_tugs, pl_tubi, pl_tuti, pl_tuit, pl_tusr, pl_tusi, pl_turi, pl_tuui, pl_tuur, pl_tuig, pl_tusb, pl_tutb, pl_tust, pl_tuub, pl_tuus, pl_tuug, pl_tuut, pl_tugu, pl_tugr, pl_tugi, pl_tuib, pl_tusu, pl_tugt, pl_tuis, pl_tuiu, pl_tuuiu, pl_tussu, pl_tuuur, pl_tuusb, pl_tugui, pl_tuisi, pl_tugug, pl_turgs, pl_tuurb, pl_tuuti, pl_tubbi, pl_tutti, pl_tutui, pl_tuuri, pl_tuugi, pl_tusri, pl_tuuut, pl_tuibu, pl_tuuig, pl_tuubr, pl_tuuub, pl_tuuir, pl_tuuui, pl_tuusi, pl_tuiiu, pl_tuuug, pl_tuuggu, pl_tugiis, pl_tuurru, pl_tuuuui, pl_tugiiu, pl_tuuugi, pl_tuuuub, pl_tuttti, pl_tuiggu, pl_turrrb, pl_tutisi, pl_tuusit, pl_tuurbr, pl_tuguig, pl_tusiis, pl_tusuig, pl_tuuubr, pl_tuuuggu, pl_tuuttti, pl_tuubbig, pl_tuuiuui, pl_tubiiiu, pl_tg, pl_i, pl_bi, pl_big, pl_si, pl_is, pl_isi, pl_sig, pl_isgt, pl_isigutttiiu, pl_pu, pl_pur, pl_pub, pl_pui, pl_pus, pl_pug, pl_put, pl_puur, pl_pugi, pl_pubi, pl_pusi, pl_putu, pl_puri, pl_pust, pl_pusu, pl_pugu, pl_puui, pl_puiu, pl_puuui, pl_purru, pl_puuig, pl_puiig, pl_puigu, pl_pusiu, pl_pusub, pl_puuiu, pl_puiiu, pl_puutu, pl_pussu, pl_puibu, pl_pusig, pl_pusiig, pl_puuiig, pl_puiiui, pl_puiigi, pl_pugiiu, pl_puuubu, pl_pusigu, pl_pusiiu, pl_puuiiu, pl_pusiigu, pl_pusiuiu, pl_guugbuut, pl_pusiiugu, pl_puttiiiu, pl_puuusuug, pl_puutuuiu, pl_pusiuibu, pl_ti, pl_it, pl_gu, pl_pg, pl_gus, pl_pgr, pl_pgu, pl_pgi, pl_gug, pl_tiu, pl_gui, pl_guut, pl_pgbi, pl_guuut, pl_itsub, pl_itiiub, pl_gussitu, pl_gurrsiu, pl_itstttg, pl_itgiiut, pl_iu, pl_pi, pl_iur, pl_iug, pl_pit, pl_piu, pl_ius, pl_iui, pl_iugi, pl_iuis, pl_iusi, pl_iuui, pl_iuisi, pl_iuuui, pl_iuuuui, pl_iuisut, pl_gi, pl_igi, pl_iit, pl_iiit, pl_du, pl_pr, pl_dui, pl_dus, pl_dusr, pl_dusi, pl_prrru, pl_bpt;
#endif
xm_gc_table = Xen_make_vector(1, Xen_false);
@@ -39686,281 +39686,281 @@ static void define_functions(void)
s_gtk_enum_t = s7_make_symbol(s7, "gtk_enum_t?");
s_any = s7_t(s7);
- pl_iur = s7_make_circular_signature(s7, 2, 3, s_integer, s_pair_false, s_real);
- pl_iugi = s7_make_circular_signature(s7, 3, 4, s_integer, s_pair_false, s_gtk_enum_t, s_integer);
- pl_iuisi = s7_make_circular_signature(s7, 4, 5, s_integer, s_pair_false, s_integer, s_string, s_integer);
- pl_iuuui = s7_make_circular_signature(s7, 4, 5, s_integer, s_pair_false, s_pair_false, s_pair_false, s_integer);
- pl_iuuuui = s7_make_circular_signature(s7, 5, 6, s_integer, s_pair_false, s_pair_false, s_pair_false, s_pair_false, s_integer);
- pl_iuis = s7_make_circular_signature(s7, 3, 4, s_integer, s_pair_false, s_integer, s_string);
- pl_iug = s7_make_circular_signature(s7, 2, 3, s_integer, s_pair_false, s_gtk_enum_t);
- pl_pit = s7_make_circular_signature(s7, 2, 3, s_pair, s_integer, s_any);
- pl_piu = s7_make_circular_signature(s7, 2, 3, s_pair, s_integer, s_pair_false);
- pl_ius = s7_make_circular_signature(s7, 2, 3, s_integer, s_pair_false, s_string);
- pl_iusi = s7_make_circular_signature(s7, 3, 4, s_integer, s_pair_false, s_string, s_integer);
- pl_iu = s7_make_circular_signature(s7, 1, 2, s_integer, s_pair_false);
- pl_iuui = s7_make_circular_signature(s7, 3, 4, s_integer, s_pair_false, s_pair_false, s_integer);
- pl_pi = s7_make_circular_signature(s7, 1, 2, s_pair, s_integer);
- pl_iui = s7_make_circular_signature(s7, 2, 3, s_integer, s_pair_false, s_integer);
- pl_iuisut = s7_make_circular_signature(s7, 5, 6, s_integer, s_pair_false, s_integer, s_string, s_pair_false, s_any);
+ pl_b = s7_make_circular_signature(s7, 0, 1, s_boolean);
+ pl_s = s7_make_circular_signature(s7, 0, 1, s_string);
pl_t = s7_make_circular_signature(s7, 0, 1, s_any);
- pl_prrru = s7_make_circular_signature(s7, 4, 5, s_pair, s_real, s_real, s_real, s_pair_false);
+ pl_bsu = s7_make_circular_signature(s7, 2, 3, s_boolean, s_string, s_pair_false);
+ pl_bsigb = s7_make_circular_signature(s7, 4, 5, s_boolean, s_string, s_integer, s_gtk_enum_t, s_boolean);
+ pl_ssi = s7_make_circular_signature(s7, 2, 3, s_string, s_string, s_integer);
+ pl_ssig = s7_make_circular_signature(s7, 3, 4, s_string, s_string, s_integer, s_gtk_enum_t);
+ pl_bt = s7_make_circular_signature(s7, 1, 2, s_boolean, s_any);
+ pl_tb = s7_make_circular_signature(s7, 1, 2, s_any, s_boolean);
+ pl_bti = s7_make_circular_signature(s7, 2, 3, s_boolean, s_any, s_integer);
+ pl_btiib = s7_make_circular_signature(s7, 4, 5, s_boolean, s_any, s_integer, s_integer, s_boolean);
+ pl_st = s7_make_circular_signature(s7, 1, 2, s_string, s_any);
+ pl_ts = s7_make_circular_signature(s7, 1, 2, s_any, s_string);
+ pl_tsu = s7_make_circular_signature(s7, 2, 3, s_any, s_string, s_pair_false);
+ pl_tsb = s7_make_circular_signature(s7, 2, 3, s_any, s_string, s_boolean);
+ pl_tsi = s7_make_circular_signature(s7, 2, 3, s_any, s_string, s_integer);
+ pl_tsig = s7_make_circular_signature(s7, 3, 4, s_any, s_string, s_integer, s_gtk_enum_t);
+ pl_tsiu = s7_make_circular_signature(s7, 3, 4, s_any, s_string, s_integer, s_pair_false);
+ pl_tsiuui = s7_make_circular_signature(s7, 5, 6, s_any, s_string, s_integer, s_pair_false, s_pair_false, s_integer);
+ pl_tsiiuui = s7_make_circular_signature(s7, 6, 7, s_any, s_string, s_integer, s_integer, s_pair_false, s_pair_false, s_integer);
pl_tts = s7_make_circular_signature(s7, 2, 3, s_any, s_any, s_string);
pl_tti = s7_make_circular_signature(s7, 2, 3, s_any, s_any, s_integer);
- pl_dusr = s7_make_circular_signature(s7, 3, 4, s_float, s_pair_false, s_string, s_real);
- pl_dusi = s7_make_circular_signature(s7, 3, 4, s_float, s_pair_false, s_string, s_integer);
- pl_dui = s7_make_circular_signature(s7, 2, 3, s_float, s_pair_false, s_integer);
- pl_du = s7_make_circular_signature(s7, 1, 2, s_float, s_pair_false);
- pl_dus = s7_make_circular_signature(s7, 2, 3, s_float, s_pair_false, s_string);
- pl_pr = s7_make_circular_signature(s7, 1, 2, s_pair, s_real);
- pl_ssig = s7_make_circular_signature(s7, 3, 4, s_string, s_string, s_integer, s_gtk_enum_t);
- pl_ssi = s7_make_circular_signature(s7, 2, 3, s_string, s_string, s_integer);
- pl_psgi = s7_make_circular_signature(s7, 3, 4, s_pair, s_string, s_gtk_enum_t, s_integer);
- pl_suiig = s7_make_circular_signature(s7, 4, 5, s_string, s_pair_false, s_integer, s_integer, s_gtk_enum_t);
+ pl_p = s7_make_circular_signature(s7, 0, 1, s_pair);
+ pl_g = s7_make_circular_signature(s7, 0, 1, s_gtk_enum_t);
+ pl_buuusuug = s7_make_circular_signature(s7, 7, 8, s_boolean, s_pair_false, s_pair_false, s_pair_false, s_string, s_pair_false, s_pair_false, s_gtk_enum_t);
+ pl_bu = s7_make_circular_signature(s7, 1, 2, s_boolean, s_pair_false);
+ pl_pb = s7_make_circular_signature(s7, 1, 2, s_pair, s_boolean);
+ pl_bur = s7_make_circular_signature(s7, 2, 3, s_boolean, s_pair_false, s_real);
+ pl_bug = s7_make_circular_signature(s7, 2, 3, s_boolean, s_pair_false, s_gtk_enum_t);
+ pl_bus = s7_make_circular_signature(s7, 2, 3, s_boolean, s_pair_false, s_string);
+ pl_but = s7_make_circular_signature(s7, 2, 3, s_boolean, s_pair_false, s_any);
+ pl_bui = s7_make_circular_signature(s7, 2, 3, s_boolean, s_pair_false, s_integer);
+ pl_bub = s7_make_circular_signature(s7, 2, 3, s_boolean, s_pair_false, s_boolean);
+ pl_buug = s7_make_circular_signature(s7, 3, 4, s_boolean, s_pair_false, s_pair_false, s_gtk_enum_t);
+ pl_buti = s7_make_circular_signature(s7, 3, 4, s_boolean, s_pair_false, s_any, s_integer);
+ pl_busi = s7_make_circular_signature(s7, 3, 4, s_boolean, s_pair_false, s_string, s_integer);
+ pl_buui = s7_make_circular_signature(s7, 3, 4, s_boolean, s_pair_false, s_pair_false, s_integer);
+ pl_buus = s7_make_circular_signature(s7, 3, 4, s_boolean, s_pair_false, s_pair_false, s_string);
+ pl_busu = s7_make_circular_signature(s7, 3, 4, s_boolean, s_pair_false, s_string, s_pair_false);
+ pl_buib = s7_make_circular_signature(s7, 3, 4, s_boolean, s_pair_false, s_integer, s_boolean);
+ pl_buiu = s7_make_circular_signature(s7, 3, 4, s_boolean, s_pair_false, s_integer, s_pair_false);
+ pl_buub = s7_make_circular_signature(s7, 3, 4, s_boolean, s_pair_false, s_pair_false, s_boolean);
+ pl_buig = s7_make_circular_signature(s7, 3, 4, s_boolean, s_pair_false, s_integer, s_gtk_enum_t);
+ pl_buigu = s7_make_circular_signature(s7, 4, 5, s_boolean, s_pair_false, s_integer, s_gtk_enum_t, s_pair_false);
+ pl_buuti = s7_make_circular_signature(s7, 4, 5, s_boolean, s_pair_false, s_pair_false, s_any, s_integer);
+ pl_butib = s7_make_circular_signature(s7, 4, 5, s_boolean, s_pair_false, s_any, s_integer, s_boolean);
+ pl_buuit = s7_make_circular_signature(s7, 4, 5, s_boolean, s_pair_false, s_pair_false, s_integer, s_any);
+ pl_butti = s7_make_circular_signature(s7, 4, 5, s_boolean, s_pair_false, s_any, s_any, s_integer);
+ pl_busib = s7_make_circular_signature(s7, 4, 5, s_boolean, s_pair_false, s_string, s_integer, s_boolean);
+ pl_buuub = s7_make_circular_signature(s7, 4, 5, s_boolean, s_pair_false, s_pair_false, s_pair_false, s_boolean);
+ pl_buttu = s7_make_circular_signature(s7, 4, 5, s_boolean, s_pair_false, s_any, s_any, s_pair_false);
+ pl_busgu = s7_make_circular_signature(s7, 4, 5, s_boolean, s_pair_false, s_string, s_gtk_enum_t, s_pair_false);
+ pl_buuui = s7_make_circular_signature(s7, 4, 5, s_boolean, s_pair_false, s_pair_false, s_pair_false, s_integer);
+ pl_buuig = s7_make_circular_signature(s7, 4, 5, s_boolean, s_pair_false, s_pair_false, s_integer, s_gtk_enum_t);
+ pl_buiuig = s7_make_circular_signature(s7, 5, 6, s_boolean, s_pair_false, s_integer, s_pair_false, s_integer, s_gtk_enum_t);
+ pl_buusib = s7_make_circular_signature(s7, 5, 6, s_boolean, s_pair_false, s_pair_false, s_string, s_integer, s_boolean);
+ pl_buuuub = s7_make_circular_signature(s7, 5, 6, s_boolean, s_pair_false, s_pair_false, s_pair_false, s_pair_false, s_boolean);
+ pl_buurbr = s7_make_circular_signature(s7, 5, 6, s_boolean, s_pair_false, s_pair_false, s_real, s_boolean, s_real);
+ pl_su = s7_make_circular_signature(s7, 1, 2, s_string, s_pair_false);
+ pl_ps = s7_make_circular_signature(s7, 1, 2, s_pair, s_string);
pl_sug = s7_make_circular_signature(s7, 2, 3, s_string, s_pair_false, s_gtk_enum_t);
- pl_psiuub = s7_make_circular_signature(s7, 5, 6, s_pair, s_string, s_integer, s_pair_false, s_pair_false, s_boolean);
- pl_psgbiiiit = s7_make_circular_signature(s7, 8, 9, s_pair, s_string, s_gtk_enum_t, s_boolean, s_integer, s_integer, s_integer, s_integer, s_any);
- pl_psrrrb = s7_make_circular_signature(s7, 5, 6, s_pair, s_string, s_real, s_real, s_real, s_boolean);
pl_sui = s7_make_circular_signature(s7, 2, 3, s_string, s_pair_false, s_integer);
- pl_suuub = s7_make_circular_signature(s7, 4, 5, s_string, s_pair_false, s_pair_false, s_pair_false, s_boolean);
pl_psu = s7_make_circular_signature(s7, 2, 3, s_pair, s_string, s_pair_false);
pl_psb = s7_make_circular_signature(s7, 2, 3, s_pair, s_string, s_boolean);
- pl_su = s7_make_circular_signature(s7, 1, 2, s_string, s_pair_false);
pl_sus = s7_make_circular_signature(s7, 2, 3, s_string, s_pair_false, s_string);
- pl_ps = s7_make_circular_signature(s7, 1, 2, s_pair, s_string);
pl_psg = s7_make_circular_signature(s7, 2, 3, s_pair, s_string, s_gtk_enum_t);
pl_psi = s7_make_circular_signature(s7, 2, 3, s_pair, s_string, s_integer);
- pl_psugt = s7_make_circular_signature(s7, 4, 5, s_pair, s_string, s_pair_false, s_gtk_enum_t, s_any);
+ pl_psgi = s7_make_circular_signature(s7, 3, 4, s_pair, s_string, s_gtk_enum_t, s_integer);
pl_psiu = s7_make_circular_signature(s7, 3, 4, s_pair, s_string, s_integer, s_pair_false);
- pl_psiiuusu = s7_make_circular_signature(s7, 7, 8, s_pair, s_string, s_integer, s_integer, s_pair_false, s_pair_false, s_string, s_pair_false);
pl_psut = s7_make_circular_signature(s7, 3, 4, s_pair, s_string, s_pair_false, s_any);
- pl_pur = s7_make_circular_signature(s7, 2, 3, s_pair, s_pair_false, s_real);
- pl_puuui = s7_make_circular_signature(s7, 4, 5, s_pair, s_pair_false, s_pair_false, s_pair_false, s_integer);
- pl_pusiig = s7_make_circular_signature(s7, 5, 6, s_pair, s_pair_false, s_string, s_integer, s_integer, s_gtk_enum_t);
- pl_pusiigu = s7_make_circular_signature(s7, 6, 7, s_pair, s_pair_false, s_string, s_integer, s_integer, s_gtk_enum_t, s_pair_false);
- pl_pusiiugu = s7_make_circular_signature(s7, 7, 8, s_pair, s_pair_false, s_string, s_integer, s_integer, s_pair_false, s_gtk_enum_t, s_pair_false);
- pl_puuiig = s7_make_circular_signature(s7, 5, 6, s_pair, s_pair_false, s_pair_false, s_integer, s_integer, s_gtk_enum_t);
- pl_puur = s7_make_circular_signature(s7, 3, 4, s_pair, s_pair_false, s_pair_false, s_real);
- pl_purru = s7_make_circular_signature(s7, 4, 5, s_pair, s_pair_false, s_real, s_real, s_pair_false);
- pl_puiiui = s7_make_circular_signature(s7, 5, 6, s_pair, s_pair_false, s_integer, s_integer, s_pair_false, s_integer);
- pl_pugi = s7_make_circular_signature(s7, 3, 4, s_pair, s_pair_false, s_gtk_enum_t, s_integer);
- pl_puuig = s7_make_circular_signature(s7, 4, 5, s_pair, s_pair_false, s_pair_false, s_integer, s_gtk_enum_t);
- pl_puttiiiu = s7_make_circular_signature(s7, 7, 8, s_pair, s_pair_false, s_any, s_any, s_integer, s_integer, s_integer, s_pair_false);
- pl_pubi = s7_make_circular_signature(s7, 3, 4, s_pair, s_pair_false, s_boolean, s_integer);
- pl_puiig = s7_make_circular_signature(s7, 4, 5, s_pair, s_pair_false, s_integer, s_integer, s_gtk_enum_t);
- pl_puiigi = s7_make_circular_signature(s7, 5, 6, s_pair, s_pair_false, s_integer, s_integer, s_gtk_enum_t, s_integer);
- pl_puigu = s7_make_circular_signature(s7, 4, 5, s_pair, s_pair_false, s_integer, s_gtk_enum_t, s_pair_false);
- pl_puuusuug = s7_make_circular_signature(s7, 7, 8, s_pair, s_pair_false, s_pair_false, s_pair_false, s_string, s_pair_false, s_pair_false, s_gtk_enum_t);
- pl_pusi = s7_make_circular_signature(s7, 3, 4, s_pair, s_pair_false, s_string, s_integer);
- pl_pusiu = s7_make_circular_signature(s7, 4, 5, s_pair, s_pair_false, s_string, s_integer, s_pair_false);
- pl_putu = s7_make_circular_signature(s7, 3, 4, s_pair, s_pair_false, s_any, s_pair_false);
- pl_puri = s7_make_circular_signature(s7, 3, 4, s_pair, s_pair_false, s_real, s_integer);
- pl_pusub = s7_make_circular_signature(s7, 4, 5, s_pair, s_pair_false, s_string, s_pair_false, s_boolean);
- pl_pust = s7_make_circular_signature(s7, 3, 4, s_pair, s_pair_false, s_string, s_any);
- pl_pub = s7_make_circular_signature(s7, 2, 3, s_pair, s_pair_false, s_boolean);
- pl_puuiu = s7_make_circular_signature(s7, 4, 5, s_pair, s_pair_false, s_pair_false, s_integer, s_pair_false);
- pl_pugiiu = s7_make_circular_signature(s7, 5, 6, s_pair, s_pair_false, s_gtk_enum_t, s_integer, s_integer, s_pair_false);
- pl_pusu = s7_make_circular_signature(s7, 3, 4, s_pair, s_pair_false, s_string, s_pair_false);
- pl_pu = s7_make_circular_signature(s7, 1, 2, s_pair, s_pair_false);
- pl_puiiu = s7_make_circular_signature(s7, 4, 5, s_pair, s_pair_false, s_integer, s_integer, s_pair_false);
- pl_puuubu = s7_make_circular_signature(s7, 5, 6, s_pair, s_pair_false, s_pair_false, s_pair_false, s_boolean, s_pair_false);
- pl_pugu = s7_make_circular_signature(s7, 3, 4, s_pair, s_pair_false, s_gtk_enum_t, s_pair_false);
- pl_puutuuiu = s7_make_circular_signature(s7, 7, 8, s_pair, s_pair_false, s_pair_false, s_any, s_pair_false, s_pair_false, s_integer, s_pair_false);
- pl_puutu = s7_make_circular_signature(s7, 4, 5, s_pair, s_pair_false, s_pair_false, s_any, s_pair_false);
- pl_pui = s7_make_circular_signature(s7, 2, 3, s_pair, s_pair_false, s_integer);
- pl_pussu = s7_make_circular_signature(s7, 4, 5, s_pair, s_pair_false, s_string, s_string, s_pair_false);
- pl_puibu = s7_make_circular_signature(s7, 4, 5, s_pair, s_pair_false, s_integer, s_boolean, s_pair_false);
- pl_pus = s7_make_circular_signature(s7, 2, 3, s_pair, s_pair_false, s_string);
- pl_pug = s7_make_circular_signature(s7, 2, 3, s_pair, s_pair_false, s_gtk_enum_t);
- pl_put = s7_make_circular_signature(s7, 2, 3, s_pair, s_pair_false, s_any);
- pl_pusigu = s7_make_circular_signature(s7, 5, 6, s_pair, s_pair_false, s_string, s_integer, s_gtk_enum_t, s_pair_false);
- pl_pusig = s7_make_circular_signature(s7, 4, 5, s_pair, s_pair_false, s_string, s_integer, s_gtk_enum_t);
- pl_puui = s7_make_circular_signature(s7, 3, 4, s_pair, s_pair_false, s_pair_false, s_integer);
- pl_puiu = s7_make_circular_signature(s7, 3, 4, s_pair, s_pair_false, s_integer, s_pair_false);
- pl_pusiuiu = s7_make_circular_signature(s7, 6, 7, s_pair, s_pair_false, s_string, s_integer, s_pair_false, s_integer, s_pair_false);
- pl_pusiuibu = s7_make_circular_signature(s7, 7, 8, s_pair, s_pair_false, s_string, s_integer, s_pair_false, s_integer, s_boolean, s_pair_false);
- pl_pusiiu = s7_make_circular_signature(s7, 5, 6, s_pair, s_pair_false, s_string, s_integer, s_integer, s_pair_false);
- pl_puuiiu = s7_make_circular_signature(s7, 5, 6, s_pair, s_pair_false, s_pair_false, s_integer, s_integer, s_pair_false);
- pl_b = s7_make_circular_signature(s7, 0, 1, s_boolean);
- pl_btiib = s7_make_circular_signature(s7, 4, 5, s_boolean, s_any, s_integer, s_integer, s_boolean);
- pl_bti = s7_make_circular_signature(s7, 2, 3, s_boolean, s_any, s_integer);
- pl_bt = s7_make_circular_signature(s7, 1, 2, s_boolean, s_any);
- pl_tb = s7_make_circular_signature(s7, 1, 2, s_any, s_boolean);
- pl_g = s7_make_circular_signature(s7, 0, 1, s_gtk_enum_t);
- pl_i = s7_make_circular_signature(s7, 0, 1, s_integer);
- pl_tg = s7_make_circular_signature(s7, 1, 2, s_any, s_gtk_enum_t);
- pl_tiu = s7_make_circular_signature(s7, 2, 3, s_any, s_integer, s_pair_false);
- pl_itiiub = s7_make_circular_signature(s7, 5, 6, s_integer, s_any, s_integer, s_integer, s_pair_false, s_boolean);
- pl_itsub = s7_make_circular_signature(s7, 4, 5, s_integer, s_any, s_string, s_pair_false, s_boolean);
- pl_itstttg = s7_make_circular_signature(s7, 6, 7, s_integer, s_any, s_string, s_any, s_any, s_any, s_gtk_enum_t);
- pl_itgiiut = s7_make_circular_signature(s7, 6, 7, s_integer, s_any, s_gtk_enum_t, s_integer, s_integer, s_pair_false, s_any);
- pl_ti = s7_make_circular_signature(s7, 1, 2, s_any, s_integer);
- pl_it = s7_make_circular_signature(s7, 1, 2, s_integer, s_any);
- pl_s = s7_make_circular_signature(s7, 0, 1, s_string);
- pl_tsu = s7_make_circular_signature(s7, 2, 3, s_any, s_string, s_pair_false);
- pl_tsb = s7_make_circular_signature(s7, 2, 3, s_any, s_string, s_boolean);
- pl_st = s7_make_circular_signature(s7, 1, 2, s_string, s_any);
- pl_tsig = s7_make_circular_signature(s7, 3, 4, s_any, s_string, s_integer, s_gtk_enum_t);
- pl_ts = s7_make_circular_signature(s7, 1, 2, s_any, s_string);
- pl_tsi = s7_make_circular_signature(s7, 2, 3, s_any, s_string, s_integer);
- pl_tsiu = s7_make_circular_signature(s7, 3, 4, s_any, s_string, s_integer, s_pair_false);
- pl_tsiiuui = s7_make_circular_signature(s7, 6, 7, s_any, s_string, s_integer, s_integer, s_pair_false, s_pair_false, s_integer);
- pl_tsiuui = s7_make_circular_signature(s7, 5, 6, s_any, s_string, s_integer, s_pair_false, s_pair_false, s_integer);
- pl_p = s7_make_circular_signature(s7, 0, 1, s_pair);
+ pl_suiig = s7_make_circular_signature(s7, 4, 5, s_string, s_pair_false, s_integer, s_integer, s_gtk_enum_t);
+ pl_suuub = s7_make_circular_signature(s7, 4, 5, s_string, s_pair_false, s_pair_false, s_pair_false, s_boolean);
+ pl_psugt = s7_make_circular_signature(s7, 4, 5, s_pair, s_string, s_pair_false, s_gtk_enum_t, s_any);
+ pl_psiuub = s7_make_circular_signature(s7, 5, 6, s_pair, s_string, s_integer, s_pair_false, s_pair_false, s_boolean);
+ pl_psrrrb = s7_make_circular_signature(s7, 5, 6, s_pair, s_string, s_real, s_real, s_real, s_boolean);
+ pl_psgbiiiit = s7_make_circular_signature(s7, 8, 9, s_pair, s_string, s_gtk_enum_t, s_boolean, s_integer, s_integer, s_integer, s_integer, s_any);
+ pl_psiiuusu = s7_make_circular_signature(s7, 7, 8, s_pair, s_string, s_integer, s_integer, s_pair_false, s_pair_false, s_string, s_pair_false);
+ pl_sg = s7_make_circular_signature(s7, 1, 2, s_string, s_gtk_enum_t);
+ pl_gs = s7_make_circular_signature(s7, 1, 2, s_gtk_enum_t, s_string);
pl_tusiuiui = s7_make_circular_signature(s7, 7, 8, s_any, s_pair_false, s_string, s_integer, s_pair_false, s_integer, s_pair_false, s_integer);
- pl_tuuiu = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_pair_false, s_integer, s_pair_false);
- pl_tussu = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_string, s_string, s_pair_false);
- pl_tuuuggu = s7_make_circular_signature(s7, 6, 7, s_any, s_pair_false, s_pair_false, s_pair_false, s_gtk_enum_t, s_gtk_enum_t, s_pair_false);
- pl_tuuggu = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_pair_false, s_gtk_enum_t, s_gtk_enum_t, s_pair_false);
- pl_tugiis = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_gtk_enum_t, s_integer, s_integer, s_string);
- pl_tubu = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_boolean, s_pair_false);
- pl_tuurru = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_pair_false, s_real, s_real, s_pair_false);
pl_tuurrrrgr = s7_make_circular_signature(s7, 8, 9, s_any, s_pair_false, s_pair_false, s_real, s_real, s_real, s_real, s_gtk_enum_t, s_real);
pl_tuurrrrg = s7_make_circular_signature(s7, 7, 8, s_any, s_pair_false, s_pair_false, s_real, s_real, s_real, s_real, s_gtk_enum_t);
- pl_tuuur = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_pair_false, s_pair_false, s_real);
- pl_tusg = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_string, s_gtk_enum_t);
- pl_tuuuui = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_pair_false, s_pair_false, s_pair_false, s_integer);
- pl_tugiiu = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_gtk_enum_t, s_integer, s_integer, s_pair_false);
- pl_tuusb = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_pair_false, s_string, s_boolean);
- pl_tugui = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_gtk_enum_t, s_pair_false, s_integer);
- pl_tuuugi = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_pair_false, s_pair_false, s_gtk_enum_t, s_integer);
- pl_tuuuub = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_pair_false, s_pair_false, s_pair_false, s_boolean);
- pl_tuttti = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_any, s_any, s_any, s_integer);
- pl_tuuttti = s7_make_circular_signature(s7, 6, 7, s_any, s_pair_false, s_pair_false, s_any, s_any, s_any, s_integer);
- pl_tuisi = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_integer, s_string, s_integer);
- pl_tugb = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_gtk_enum_t, s_boolean);
- pl_tugs = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_gtk_enum_t, s_string);
- pl_tugug = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_gtk_enum_t, s_pair_false, s_gtk_enum_t);
- pl_turgs = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_real, s_gtk_enum_t, s_string);
- pl_tubi = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_boolean, s_integer);
pl_tuttigsi = s7_make_circular_signature(s7, 7, 8, s_any, s_pair_false, s_any, s_any, s_integer, s_gtk_enum_t, s_string, s_integer);
pl_tuiiiiui = s7_make_circular_signature(s7, 7, 8, s_any, s_pair_false, s_integer, s_integer, s_integer, s_integer, s_pair_false, s_integer);
- pl_tuurb = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_pair_false, s_real, s_boolean);
pl_tuuiiiirrrrg = s7_make_circular_signature(s7, 11, 12, s_any, s_pair_false, s_pair_false, s_integer, s_integer, s_integer, s_integer, s_real, s_real, s_real, s_real, s_gtk_enum_t);
pl_tuuiiiirrrrgi = s7_make_circular_signature(s7, 12, 13, s_any, s_pair_false, s_pair_false, s_integer, s_integer, s_integer, s_integer, s_real, s_real, s_real, s_real, s_gtk_enum_t, s_integer);
- pl_tuiggu = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_integer, s_gtk_enum_t, s_gtk_enum_t, s_pair_false);
- pl_turrrb = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_real, s_real, s_real, s_boolean);
- pl_tuubbig = s7_make_circular_signature(s7, 6, 7, s_any, s_pair_false, s_pair_false, s_boolean, s_boolean, s_integer, s_gtk_enum_t);
pl_pt = s7_make_circular_signature(s7, 1, 2, s_pair, s_any);
- pl_tuuti = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_pair_false, s_any, s_integer);
- pl_tubbi = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_boolean, s_boolean, s_integer);
+ pl_tu = s7_make_circular_signature(s7, 1, 2, s_any, s_pair_false);
+ pl_tur = s7_make_circular_signature(s7, 2, 3, s_any, s_pair_false, s_real);
+ pl_tub = s7_make_circular_signature(s7, 2, 3, s_any, s_pair_false, s_boolean);
+ pl_tui = s7_make_circular_signature(s7, 2, 3, s_any, s_pair_false, s_integer);
+ pl_tus = s7_make_circular_signature(s7, 2, 3, s_any, s_pair_false, s_string);
+ pl_tut = s7_make_circular_signature(s7, 2, 3, s_any, s_pair_false, s_any);
+ pl_tug = s7_make_circular_signature(s7, 2, 3, s_any, s_pair_false, s_gtk_enum_t);
+ pl_tubu = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_boolean, s_pair_false);
+ pl_tusg = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_string, s_gtk_enum_t);
+ pl_tugb = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_gtk_enum_t, s_boolean);
+ pl_tugs = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_gtk_enum_t, s_string);
+ pl_tubi = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_boolean, s_integer);
pl_tuti = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_any, s_integer);
- pl_tutti = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_any, s_any, s_integer);
- pl_tutui = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_any, s_pair_false, s_integer);
- pl_tutisi = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_any, s_integer, s_string, s_integer);
- pl_tuuri = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_pair_false, s_real, s_integer);
- pl_tuusit = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_pair_false, s_string, s_integer, s_any);
- pl_tuurbr = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_pair_false, s_real, s_boolean, s_real);
- pl_tuugi = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_pair_false, s_gtk_enum_t, s_integer);
pl_tuit = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_integer, s_any);
pl_tusr = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_string, s_real);
- pl_tusri = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_string, s_real, s_integer);
pl_tusi = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_string, s_integer);
pl_turi = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_real, s_integer);
pl_tuui = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_pair_false, s_integer);
pl_tuur = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_pair_false, s_real);
pl_tuig = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_integer, s_gtk_enum_t);
- pl_tur = s7_make_circular_signature(s7, 2, 3, s_any, s_pair_false, s_real);
- pl_tub = s7_make_circular_signature(s7, 2, 3, s_any, s_pair_false, s_boolean);
- pl_tui = s7_make_circular_signature(s7, 2, 3, s_any, s_pair_false, s_integer);
- pl_tu = s7_make_circular_signature(s7, 1, 2, s_any, s_pair_false);
- pl_tus = s7_make_circular_signature(s7, 2, 3, s_any, s_pair_false, s_string);
pl_tusb = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_string, s_boolean);
- pl_tut = s7_make_circular_signature(s7, 2, 3, s_any, s_pair_false, s_any);
- pl_tuuut = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_pair_false, s_pair_false, s_any);
- pl_tug = s7_make_circular_signature(s7, 2, 3, s_any, s_pair_false, s_gtk_enum_t);
pl_tutb = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_any, s_boolean);
pl_tust = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_string, s_any);
pl_tuub = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_pair_false, s_boolean);
pl_tuus = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_pair_false, s_string);
pl_tuug = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_pair_false, s_gtk_enum_t);
- pl_tuibu = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_integer, s_boolean, s_pair_false);
pl_tuut = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_pair_false, s_any);
- pl_tuuig = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_pair_false, s_integer, s_gtk_enum_t);
- pl_tuguig = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_gtk_enum_t, s_pair_false, s_integer, s_gtk_enum_t);
- pl_tuubr = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_pair_false, s_boolean, s_real);
- pl_tuuub = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_pair_false, s_pair_false, s_boolean);
- pl_tuuiuui = s7_make_circular_signature(s7, 6, 7, s_any, s_pair_false, s_pair_false, s_integer, s_pair_false, s_pair_false, s_integer);
pl_tugu = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_gtk_enum_t, s_pair_false);
- pl_tuuir = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_pair_false, s_integer, s_real);
pl_tugr = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_gtk_enum_t, s_real);
pl_tugi = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_gtk_enum_t, s_integer);
- pl_tuuui = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_pair_false, s_pair_false, s_integer);
pl_tuib = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_integer, s_boolean);
pl_tusu = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_string, s_pair_false);
- pl_tuusi = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_pair_false, s_string, s_integer);
pl_tugt = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_gtk_enum_t, s_any);
pl_tuis = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_integer, s_string);
- pl_tubiiiu = s7_make_circular_signature(s7, 6, 7, s_any, s_pair_false, s_boolean, s_integer, s_integer, s_integer, s_pair_false);
pl_tuiu = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_integer, s_pair_false);
- pl_tusiis = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_string, s_integer, s_integer, s_string);
+ pl_tuuiu = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_pair_false, s_integer, s_pair_false);
+ pl_tussu = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_string, s_string, s_pair_false);
+ pl_tuuur = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_pair_false, s_pair_false, s_real);
+ pl_tuusb = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_pair_false, s_string, s_boolean);
+ pl_tugui = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_gtk_enum_t, s_pair_false, s_integer);
+ pl_tuisi = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_integer, s_string, s_integer);
+ pl_tugug = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_gtk_enum_t, s_pair_false, s_gtk_enum_t);
+ pl_turgs = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_real, s_gtk_enum_t, s_string);
+ pl_tuurb = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_pair_false, s_real, s_boolean);
+ pl_tuuti = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_pair_false, s_any, s_integer);
+ pl_tubbi = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_boolean, s_boolean, s_integer);
+ pl_tutti = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_any, s_any, s_integer);
+ pl_tutui = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_any, s_pair_false, s_integer);
+ pl_tuuri = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_pair_false, s_real, s_integer);
+ pl_tuugi = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_pair_false, s_gtk_enum_t, s_integer);
+ pl_tusri = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_string, s_real, s_integer);
+ pl_tuuut = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_pair_false, s_pair_false, s_any);
+ pl_tuibu = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_integer, s_boolean, s_pair_false);
+ pl_tuuig = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_pair_false, s_integer, s_gtk_enum_t);
+ pl_tuubr = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_pair_false, s_boolean, s_real);
+ pl_tuuub = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_pair_false, s_pair_false, s_boolean);
+ pl_tuuir = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_pair_false, s_integer, s_real);
+ pl_tuuui = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_pair_false, s_pair_false, s_integer);
+ pl_tuusi = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_pair_false, s_string, s_integer);
pl_tuiiu = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_integer, s_integer, s_pair_false);
pl_tuuug = s7_make_circular_signature(s7, 4, 5, s_any, s_pair_false, s_pair_false, s_pair_false, s_gtk_enum_t);
+ pl_tuuggu = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_pair_false, s_gtk_enum_t, s_gtk_enum_t, s_pair_false);
+ pl_tugiis = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_gtk_enum_t, s_integer, s_integer, s_string);
+ pl_tuurru = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_pair_false, s_real, s_real, s_pair_false);
+ pl_tuuuui = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_pair_false, s_pair_false, s_pair_false, s_integer);
+ pl_tugiiu = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_gtk_enum_t, s_integer, s_integer, s_pair_false);
+ pl_tuuugi = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_pair_false, s_pair_false, s_gtk_enum_t, s_integer);
+ pl_tuuuub = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_pair_false, s_pair_false, s_pair_false, s_boolean);
+ pl_tuttti = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_any, s_any, s_any, s_integer);
+ pl_tuiggu = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_integer, s_gtk_enum_t, s_gtk_enum_t, s_pair_false);
+ pl_turrrb = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_real, s_real, s_real, s_boolean);
+ pl_tutisi = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_any, s_integer, s_string, s_integer);
+ pl_tuusit = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_pair_false, s_string, s_integer, s_any);
+ pl_tuurbr = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_pair_false, s_real, s_boolean, s_real);
+ pl_tuguig = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_gtk_enum_t, s_pair_false, s_integer, s_gtk_enum_t);
+ pl_tusiis = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_string, s_integer, s_integer, s_string);
pl_tusuig = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_string, s_pair_false, s_integer, s_gtk_enum_t);
pl_tuuubr = s7_make_circular_signature(s7, 5, 6, s_any, s_pair_false, s_pair_false, s_pair_false, s_boolean, s_real);
- pl_big = s7_make_circular_signature(s7, 2, 3, s_boolean, s_integer, s_gtk_enum_t);
+ pl_tuuuggu = s7_make_circular_signature(s7, 6, 7, s_any, s_pair_false, s_pair_false, s_pair_false, s_gtk_enum_t, s_gtk_enum_t, s_pair_false);
+ pl_tuuttti = s7_make_circular_signature(s7, 6, 7, s_any, s_pair_false, s_pair_false, s_any, s_any, s_any, s_integer);
+ pl_tuubbig = s7_make_circular_signature(s7, 6, 7, s_any, s_pair_false, s_pair_false, s_boolean, s_boolean, s_integer, s_gtk_enum_t);
+ pl_tuuiuui = s7_make_circular_signature(s7, 6, 7, s_any, s_pair_false, s_pair_false, s_integer, s_pair_false, s_pair_false, s_integer);
+ pl_tubiiiu = s7_make_circular_signature(s7, 6, 7, s_any, s_pair_false, s_boolean, s_integer, s_integer, s_integer, s_pair_false);
+ pl_tg = s7_make_circular_signature(s7, 1, 2, s_any, s_gtk_enum_t);
+ pl_i = s7_make_circular_signature(s7, 0, 1, s_integer);
pl_bi = s7_make_circular_signature(s7, 1, 2, s_boolean, s_integer);
- pl_bsu = s7_make_circular_signature(s7, 2, 3, s_boolean, s_string, s_pair_false);
- pl_bsigb = s7_make_circular_signature(s7, 4, 5, s_boolean, s_string, s_integer, s_gtk_enum_t, s_boolean);
- pl_bur = s7_make_circular_signature(s7, 2, 3, s_boolean, s_pair_false, s_real);
- pl_buug = s7_make_circular_signature(s7, 3, 4, s_boolean, s_pair_false, s_pair_false, s_gtk_enum_t);
- pl_buigu = s7_make_circular_signature(s7, 4, 5, s_boolean, s_pair_false, s_integer, s_gtk_enum_t, s_pair_false);
- pl_buuti = s7_make_circular_signature(s7, 4, 5, s_boolean, s_pair_false, s_pair_false, s_any, s_integer);
- pl_butib = s7_make_circular_signature(s7, 4, 5, s_boolean, s_pair_false, s_any, s_integer, s_boolean);
- pl_buiuig = s7_make_circular_signature(s7, 5, 6, s_boolean, s_pair_false, s_integer, s_pair_false, s_integer, s_gtk_enum_t);
- pl_buuusuug = s7_make_circular_signature(s7, 7, 8, s_boolean, s_pair_false, s_pair_false, s_pair_false, s_string, s_pair_false, s_pair_false, s_gtk_enum_t);
- pl_buuit = s7_make_circular_signature(s7, 4, 5, s_boolean, s_pair_false, s_pair_false, s_integer, s_any);
- pl_buti = s7_make_circular_signature(s7, 3, 4, s_boolean, s_pair_false, s_any, s_integer);
- pl_butti = s7_make_circular_signature(s7, 4, 5, s_boolean, s_pair_false, s_any, s_any, s_integer);
- pl_busi = s7_make_circular_signature(s7, 3, 4, s_boolean, s_pair_false, s_string, s_integer);
- pl_buusib = s7_make_circular_signature(s7, 5, 6, s_boolean, s_pair_false, s_pair_false, s_string, s_integer, s_boolean);
- pl_busib = s7_make_circular_signature(s7, 4, 5, s_boolean, s_pair_false, s_string, s_integer, s_boolean);
- pl_buuuub = s7_make_circular_signature(s7, 5, 6, s_boolean, s_pair_false, s_pair_false, s_pair_false, s_pair_false, s_boolean);
- pl_buuub = s7_make_circular_signature(s7, 4, 5, s_boolean, s_pair_false, s_pair_false, s_pair_false, s_boolean);
- pl_buttu = s7_make_circular_signature(s7, 4, 5, s_boolean, s_pair_false, s_any, s_any, s_pair_false);
- pl_busgu = s7_make_circular_signature(s7, 4, 5, s_boolean, s_pair_false, s_string, s_gtk_enum_t, s_pair_false);
- pl_buurbr = s7_make_circular_signature(s7, 5, 6, s_boolean, s_pair_false, s_pair_false, s_real, s_boolean, s_real);
- pl_buui = s7_make_circular_signature(s7, 3, 4, s_boolean, s_pair_false, s_pair_false, s_integer);
- pl_buus = s7_make_circular_signature(s7, 3, 4, s_boolean, s_pair_false, s_pair_false, s_string);
- pl_buuui = s7_make_circular_signature(s7, 4, 5, s_boolean, s_pair_false, s_pair_false, s_pair_false, s_integer);
- pl_bug = s7_make_circular_signature(s7, 2, 3, s_boolean, s_pair_false, s_gtk_enum_t);
- pl_bu = s7_make_circular_signature(s7, 1, 2, s_boolean, s_pair_false);
- pl_bus = s7_make_circular_signature(s7, 2, 3, s_boolean, s_pair_false, s_string);
- pl_busu = s7_make_circular_signature(s7, 3, 4, s_boolean, s_pair_false, s_string, s_pair_false);
- pl_but = s7_make_circular_signature(s7, 2, 3, s_boolean, s_pair_false, s_any);
- pl_bui = s7_make_circular_signature(s7, 2, 3, s_boolean, s_pair_false, s_integer);
- pl_buib = s7_make_circular_signature(s7, 3, 4, s_boolean, s_pair_false, s_integer, s_boolean);
- pl_buiu = s7_make_circular_signature(s7, 3, 4, s_boolean, s_pair_false, s_integer, s_pair_false);
- pl_bub = s7_make_circular_signature(s7, 2, 3, s_boolean, s_pair_false, s_boolean);
- pl_buub = s7_make_circular_signature(s7, 3, 4, s_boolean, s_pair_false, s_pair_false, s_boolean);
- pl_pb = s7_make_circular_signature(s7, 1, 2, s_pair, s_boolean);
- pl_buig = s7_make_circular_signature(s7, 3, 4, s_boolean, s_pair_false, s_integer, s_gtk_enum_t);
- pl_buuig = s7_make_circular_signature(s7, 4, 5, s_boolean, s_pair_false, s_pair_false, s_integer, s_gtk_enum_t);
- pl_igi = s7_make_circular_signature(s7, 2, 3, s_integer, s_gtk_enum_t, s_integer);
- pl_gi = s7_make_circular_signature(s7, 1, 2, s_gtk_enum_t, s_integer);
- pl_iiit = s7_make_circular_signature(s7, 3, 4, s_integer, s_integer, s_integer, s_any);
- pl_iit = s7_make_circular_signature(s7, 2, 3, s_integer, s_integer, s_any);
- pl_sg = s7_make_circular_signature(s7, 1, 2, s_string, s_gtk_enum_t);
- pl_gs = s7_make_circular_signature(s7, 1, 2, s_gtk_enum_t, s_string);
- pl_isigutttiiu = s7_make_circular_signature(s7, 10, 11, s_integer, s_string, s_integer, s_gtk_enum_t, s_pair_false, s_any, s_any, s_any, s_integer, s_integer, s_pair_false);
- pl_isi = s7_make_circular_signature(s7, 2, 3, s_integer, s_string, s_integer);
- pl_isgt = s7_make_circular_signature(s7, 3, 4, s_integer, s_string, s_gtk_enum_t, s_any);
- pl_sig = s7_make_circular_signature(s7, 2, 3, s_string, s_integer, s_gtk_enum_t);
+ pl_big = s7_make_circular_signature(s7, 2, 3, s_boolean, s_integer, s_gtk_enum_t);
pl_si = s7_make_circular_signature(s7, 1, 2, s_string, s_integer);
pl_is = s7_make_circular_signature(s7, 1, 2, s_integer, s_string);
- pl_gussitu = s7_make_circular_signature(s7, 6, 7, s_gtk_enum_t, s_pair_false, s_string, s_string, s_integer, s_any, s_pair_false);
- pl_gurrsiu = s7_make_circular_signature(s7, 6, 7, s_gtk_enum_t, s_pair_false, s_real, s_real, s_string, s_integer, s_pair_false);
- pl_gus = s7_make_circular_signature(s7, 2, 3, s_gtk_enum_t, s_pair_false, s_string);
- pl_guut = s7_make_circular_signature(s7, 3, 4, s_gtk_enum_t, s_pair_false, s_pair_false, s_any);
- pl_guuut = s7_make_circular_signature(s7, 4, 5, s_gtk_enum_t, s_pair_false, s_pair_false, s_pair_false, s_any);
+ pl_isi = s7_make_circular_signature(s7, 2, 3, s_integer, s_string, s_integer);
+ pl_sig = s7_make_circular_signature(s7, 2, 3, s_string, s_integer, s_gtk_enum_t);
+ pl_isgt = s7_make_circular_signature(s7, 3, 4, s_integer, s_string, s_gtk_enum_t, s_any);
+ pl_isigutttiiu = s7_make_circular_signature(s7, 10, 11, s_integer, s_string, s_integer, s_gtk_enum_t, s_pair_false, s_any, s_any, s_any, s_integer, s_integer, s_pair_false);
+ pl_pu = s7_make_circular_signature(s7, 1, 2, s_pair, s_pair_false);
+ pl_pur = s7_make_circular_signature(s7, 2, 3, s_pair, s_pair_false, s_real);
+ pl_pub = s7_make_circular_signature(s7, 2, 3, s_pair, s_pair_false, s_boolean);
+ pl_pui = s7_make_circular_signature(s7, 2, 3, s_pair, s_pair_false, s_integer);
+ pl_pus = s7_make_circular_signature(s7, 2, 3, s_pair, s_pair_false, s_string);
+ pl_pug = s7_make_circular_signature(s7, 2, 3, s_pair, s_pair_false, s_gtk_enum_t);
+ pl_put = s7_make_circular_signature(s7, 2, 3, s_pair, s_pair_false, s_any);
+ pl_puur = s7_make_circular_signature(s7, 3, 4, s_pair, s_pair_false, s_pair_false, s_real);
+ pl_pugi = s7_make_circular_signature(s7, 3, 4, s_pair, s_pair_false, s_gtk_enum_t, s_integer);
+ pl_pubi = s7_make_circular_signature(s7, 3, 4, s_pair, s_pair_false, s_boolean, s_integer);
+ pl_pusi = s7_make_circular_signature(s7, 3, 4, s_pair, s_pair_false, s_string, s_integer);
+ pl_putu = s7_make_circular_signature(s7, 3, 4, s_pair, s_pair_false, s_any, s_pair_false);
+ pl_puri = s7_make_circular_signature(s7, 3, 4, s_pair, s_pair_false, s_real, s_integer);
+ pl_pust = s7_make_circular_signature(s7, 3, 4, s_pair, s_pair_false, s_string, s_any);
+ pl_pusu = s7_make_circular_signature(s7, 3, 4, s_pair, s_pair_false, s_string, s_pair_false);
+ pl_pugu = s7_make_circular_signature(s7, 3, 4, s_pair, s_pair_false, s_gtk_enum_t, s_pair_false);
+ pl_puui = s7_make_circular_signature(s7, 3, 4, s_pair, s_pair_false, s_pair_false, s_integer);
+ pl_puiu = s7_make_circular_signature(s7, 3, 4, s_pair, s_pair_false, s_integer, s_pair_false);
+ pl_puuui = s7_make_circular_signature(s7, 4, 5, s_pair, s_pair_false, s_pair_false, s_pair_false, s_integer);
+ pl_purru = s7_make_circular_signature(s7, 4, 5, s_pair, s_pair_false, s_real, s_real, s_pair_false);
+ pl_puuig = s7_make_circular_signature(s7, 4, 5, s_pair, s_pair_false, s_pair_false, s_integer, s_gtk_enum_t);
+ pl_puiig = s7_make_circular_signature(s7, 4, 5, s_pair, s_pair_false, s_integer, s_integer, s_gtk_enum_t);
+ pl_puigu = s7_make_circular_signature(s7, 4, 5, s_pair, s_pair_false, s_integer, s_gtk_enum_t, s_pair_false);
+ pl_pusiu = s7_make_circular_signature(s7, 4, 5, s_pair, s_pair_false, s_string, s_integer, s_pair_false);
+ pl_pusub = s7_make_circular_signature(s7, 4, 5, s_pair, s_pair_false, s_string, s_pair_false, s_boolean);
+ pl_puuiu = s7_make_circular_signature(s7, 4, 5, s_pair, s_pair_false, s_pair_false, s_integer, s_pair_false);
+ pl_puiiu = s7_make_circular_signature(s7, 4, 5, s_pair, s_pair_false, s_integer, s_integer, s_pair_false);
+ pl_puutu = s7_make_circular_signature(s7, 4, 5, s_pair, s_pair_false, s_pair_false, s_any, s_pair_false);
+ pl_pussu = s7_make_circular_signature(s7, 4, 5, s_pair, s_pair_false, s_string, s_string, s_pair_false);
+ pl_puibu = s7_make_circular_signature(s7, 4, 5, s_pair, s_pair_false, s_integer, s_boolean, s_pair_false);
+ pl_pusig = s7_make_circular_signature(s7, 4, 5, s_pair, s_pair_false, s_string, s_integer, s_gtk_enum_t);
+ pl_pusiig = s7_make_circular_signature(s7, 5, 6, s_pair, s_pair_false, s_string, s_integer, s_integer, s_gtk_enum_t);
+ pl_puuiig = s7_make_circular_signature(s7, 5, 6, s_pair, s_pair_false, s_pair_false, s_integer, s_integer, s_gtk_enum_t);
+ pl_puiiui = s7_make_circular_signature(s7, 5, 6, s_pair, s_pair_false, s_integer, s_integer, s_pair_false, s_integer);
+ pl_puiigi = s7_make_circular_signature(s7, 5, 6, s_pair, s_pair_false, s_integer, s_integer, s_gtk_enum_t, s_integer);
+ pl_pugiiu = s7_make_circular_signature(s7, 5, 6, s_pair, s_pair_false, s_gtk_enum_t, s_integer, s_integer, s_pair_false);
+ pl_puuubu = s7_make_circular_signature(s7, 5, 6, s_pair, s_pair_false, s_pair_false, s_pair_false, s_boolean, s_pair_false);
+ pl_pusigu = s7_make_circular_signature(s7, 5, 6, s_pair, s_pair_false, s_string, s_integer, s_gtk_enum_t, s_pair_false);
+ pl_pusiiu = s7_make_circular_signature(s7, 5, 6, s_pair, s_pair_false, s_string, s_integer, s_integer, s_pair_false);
+ pl_puuiiu = s7_make_circular_signature(s7, 5, 6, s_pair, s_pair_false, s_pair_false, s_integer, s_integer, s_pair_false);
+ pl_pusiigu = s7_make_circular_signature(s7, 6, 7, s_pair, s_pair_false, s_string, s_integer, s_integer, s_gtk_enum_t, s_pair_false);
+ pl_pusiuiu = s7_make_circular_signature(s7, 6, 7, s_pair, s_pair_false, s_string, s_integer, s_pair_false, s_integer, s_pair_false);
pl_guugbuut = s7_make_circular_signature(s7, 7, 8, s_gtk_enum_t, s_pair_false, s_pair_false, s_gtk_enum_t, s_boolean, s_pair_false, s_pair_false, s_any);
+ pl_pusiiugu = s7_make_circular_signature(s7, 7, 8, s_pair, s_pair_false, s_string, s_integer, s_integer, s_pair_false, s_gtk_enum_t, s_pair_false);
+ pl_puttiiiu = s7_make_circular_signature(s7, 7, 8, s_pair, s_pair_false, s_any, s_any, s_integer, s_integer, s_integer, s_pair_false);
+ pl_puuusuug = s7_make_circular_signature(s7, 7, 8, s_pair, s_pair_false, s_pair_false, s_pair_false, s_string, s_pair_false, s_pair_false, s_gtk_enum_t);
+ pl_puutuuiu = s7_make_circular_signature(s7, 7, 8, s_pair, s_pair_false, s_pair_false, s_any, s_pair_false, s_pair_false, s_integer, s_pair_false);
+ pl_pusiuibu = s7_make_circular_signature(s7, 7, 8, s_pair, s_pair_false, s_string, s_integer, s_pair_false, s_integer, s_boolean, s_pair_false);
+ pl_ti = s7_make_circular_signature(s7, 1, 2, s_any, s_integer);
+ pl_it = s7_make_circular_signature(s7, 1, 2, s_integer, s_any);
+ pl_gu = s7_make_circular_signature(s7, 1, 2, s_gtk_enum_t, s_pair_false);
+ pl_pg = s7_make_circular_signature(s7, 1, 2, s_pair, s_gtk_enum_t);
+ pl_gus = s7_make_circular_signature(s7, 2, 3, s_gtk_enum_t, s_pair_false, s_string);
pl_pgr = s7_make_circular_signature(s7, 2, 3, s_pair, s_gtk_enum_t, s_real);
pl_pgu = s7_make_circular_signature(s7, 2, 3, s_pair, s_gtk_enum_t, s_pair_false);
pl_pgi = s7_make_circular_signature(s7, 2, 3, s_pair, s_gtk_enum_t, s_integer);
pl_gug = s7_make_circular_signature(s7, 2, 3, s_gtk_enum_t, s_pair_false, s_gtk_enum_t);
- pl_pgbi = s7_make_circular_signature(s7, 3, 4, s_pair, s_gtk_enum_t, s_boolean, s_integer);
- pl_gu = s7_make_circular_signature(s7, 1, 2, s_gtk_enum_t, s_pair_false);
- pl_pg = s7_make_circular_signature(s7, 1, 2, s_pair, s_gtk_enum_t);
+ pl_tiu = s7_make_circular_signature(s7, 2, 3, s_any, s_integer, s_pair_false);
pl_gui = s7_make_circular_signature(s7, 2, 3, s_gtk_enum_t, s_pair_false, s_integer);
+ pl_guut = s7_make_circular_signature(s7, 3, 4, s_gtk_enum_t, s_pair_false, s_pair_false, s_any);
+ pl_pgbi = s7_make_circular_signature(s7, 3, 4, s_pair, s_gtk_enum_t, s_boolean, s_integer);
+ pl_guuut = s7_make_circular_signature(s7, 4, 5, s_gtk_enum_t, s_pair_false, s_pair_false, s_pair_false, s_any);
+ pl_itsub = s7_make_circular_signature(s7, 4, 5, s_integer, s_any, s_string, s_pair_false, s_boolean);
+ pl_itiiub = s7_make_circular_signature(s7, 5, 6, s_integer, s_any, s_integer, s_integer, s_pair_false, s_boolean);
+ pl_gussitu = s7_make_circular_signature(s7, 6, 7, s_gtk_enum_t, s_pair_false, s_string, s_string, s_integer, s_any, s_pair_false);
+ pl_gurrsiu = s7_make_circular_signature(s7, 6, 7, s_gtk_enum_t, s_pair_false, s_real, s_real, s_string, s_integer, s_pair_false);
+ pl_itstttg = s7_make_circular_signature(s7, 6, 7, s_integer, s_any, s_string, s_any, s_any, s_any, s_gtk_enum_t);
+ pl_itgiiut = s7_make_circular_signature(s7, 6, 7, s_integer, s_any, s_gtk_enum_t, s_integer, s_integer, s_pair_false, s_any);
+ pl_iu = s7_make_circular_signature(s7, 1, 2, s_integer, s_pair_false);
+ pl_pi = s7_make_circular_signature(s7, 1, 2, s_pair, s_integer);
+ pl_iur = s7_make_circular_signature(s7, 2, 3, s_integer, s_pair_false, s_real);
+ pl_iug = s7_make_circular_signature(s7, 2, 3, s_integer, s_pair_false, s_gtk_enum_t);
+ pl_pit = s7_make_circular_signature(s7, 2, 3, s_pair, s_integer, s_any);
+ pl_piu = s7_make_circular_signature(s7, 2, 3, s_pair, s_integer, s_pair_false);
+ pl_ius = s7_make_circular_signature(s7, 2, 3, s_integer, s_pair_false, s_string);
+ pl_iui = s7_make_circular_signature(s7, 2, 3, s_integer, s_pair_false, s_integer);
+ pl_iugi = s7_make_circular_signature(s7, 3, 4, s_integer, s_pair_false, s_gtk_enum_t, s_integer);
+ pl_iuis = s7_make_circular_signature(s7, 3, 4, s_integer, s_pair_false, s_integer, s_string);
+ pl_iusi = s7_make_circular_signature(s7, 3, 4, s_integer, s_pair_false, s_string, s_integer);
+ pl_iuui = s7_make_circular_signature(s7, 3, 4, s_integer, s_pair_false, s_pair_false, s_integer);
+ pl_iuisi = s7_make_circular_signature(s7, 4, 5, s_integer, s_pair_false, s_integer, s_string, s_integer);
+ pl_iuuui = s7_make_circular_signature(s7, 4, 5, s_integer, s_pair_false, s_pair_false, s_pair_false, s_integer);
+ pl_iuuuui = s7_make_circular_signature(s7, 5, 6, s_integer, s_pair_false, s_pair_false, s_pair_false, s_pair_false, s_integer);
+ pl_iuisut = s7_make_circular_signature(s7, 5, 6, s_integer, s_pair_false, s_integer, s_string, s_pair_false, s_any);
+ pl_gi = s7_make_circular_signature(s7, 1, 2, s_gtk_enum_t, s_integer);
+ pl_igi = s7_make_circular_signature(s7, 2, 3, s_integer, s_gtk_enum_t, s_integer);
+ pl_iit = s7_make_circular_signature(s7, 2, 3, s_integer, s_integer, s_any);
+ pl_iiit = s7_make_circular_signature(s7, 3, 4, s_integer, s_integer, s_integer, s_any);
+ pl_du = s7_make_circular_signature(s7, 1, 2, s_float, s_pair_false);
+ pl_pr = s7_make_circular_signature(s7, 1, 2, s_pair, s_real);
+ pl_dui = s7_make_circular_signature(s7, 2, 3, s_float, s_pair_false, s_integer);
+ pl_dus = s7_make_circular_signature(s7, 2, 3, s_float, s_pair_false, s_string);
+ pl_dusr = s7_make_circular_signature(s7, 3, 4, s_float, s_pair_false, s_string, s_real);
+ pl_dusi = s7_make_circular_signature(s7, 3, 4, s_float, s_pair_false, s_string, s_integer);
+ pl_prrru = s7_make_circular_signature(s7, 4, 5, s_pair, s_real, s_real, s_real, s_pair_false);
pl_bpt = s7_make_signature(s7, 2, s_pair_false, s_any);
#endif
@@ -47253,7 +47253,7 @@ static s7_pointer g_gtk_enum_t(s7_scheme *sc, s7_pointer args)
(!s7_is_symbol(arg)))
return(s7_make_symbol(sc, "integer?"));
func = s7_car(form);
- doc_string = s7_procedure_documentation(sc, func);
+ doc_string = s7_documentation(sc, func);
p = strchr(doc_string, (int)'(');
if (p)
{
@@ -47347,7 +47347,7 @@ void Init_libxg(void)
Xen_provide_feature("gtk2");
#endif
#endif
- Xen_define("xg-version", C_string_to_Xen_string("08-Sep-17"));
+ Xen_define("xg-version", C_string_to_Xen_string("09-Oct-17"));
xg_already_inited = true;
#if HAVE_SCHEME
#if USE_SND
diff --git a/xm.c b/xm.c
index fd105ad..2111ed7 100644
--- a/xm.c
+++ b/xm.c
@@ -886,7 +886,7 @@ static Widget *Xen_to_C_Widgets(Xen lst_1, int n)
{
free(ws);
ws = NULL;
- Xen_check_type(0, Xen_car(lst), i, __func__, "a Widget");
+ Xen_check_type(false, Xen_car(lst), i, __func__, "a Widget");
break;
}
return(ws);
@@ -906,7 +906,7 @@ static XmString *Xen_to_C_XmStrings(Xen v_1, int len)
{
free(str);
str = NULL;
- Xen_check_type(0, Xen_car(v), i, __func__, "an XmString");
+ Xen_check_type(false, Xen_car(v), i, __func__, "an XmString");
break;
}
return(str);
@@ -929,7 +929,7 @@ static XmDropTransferEntryRec *Xen_to_C_XmDropTransferEntryRecs(Xen v_1, int len
{
if (Xen_is_Atom(Xen_car(Xen_car(v))))
ps[i].target = Xen_to_C_Atom(Xen_car(Xen_car(v)));
- else Xen_check_type(0, Xen_car(v), i, __func__, "an Atom");
+ else Xen_check_type(false, Xen_car(v), i, __func__, "an Atom");
ps[i].client_data = (XtPointer)Xen_cadr(Xen_car(v));
}
}
@@ -951,7 +951,7 @@ static XmStringTable Xen_to_C_XmStringTable(Xen v_1, int len)
{
free(str);
str = NULL;
- Xen_check_type(0, Xen_car(v), i, __func__, "an XmString");
+ Xen_check_type(false, Xen_car(v), i, __func__, "an XmString");
break;
}
return(str);
@@ -976,6 +976,7 @@ static Xen c_to_xen_ints(Xen array, Xen len)
{
#define H_to_ints "->ints translates a Motif int array (from a .value reference for example) into a scheme list of ints"
Xen_check_type(Xen_is_wrapped_c_pointer(array), array, 1, "->ints", "int*");
+ Xen_check_type(Xen_is_integer(len), len, 2, "->ints", "integer");
return(C_to_Xen_Ints((int *)Xen_unwrap_C_pointer(array), Xen_integer_to_C_int(len)));
}
#endif
@@ -999,6 +1000,7 @@ static Xen c_to_xen_atoms(Xen array, Xen len)
{
#define H_to_Atoms "->Atoms translates a Motif Atoms array (from a .value reference for example) into a scheme list of Atoms"
Xen_check_type(Xen_is_wrapped_c_pointer(array), array, 1, "->Atoms", "Atom*");
+ Xen_check_type(Xen_is_integer(len), len, 2, "->Atoms", "integer");
return(C_to_Xen_Atoms((Atom *)Xen_unwrap_C_pointer(array), Xen_integer_to_C_int(len)));
}
#endif
@@ -1022,6 +1024,7 @@ static Xen c_to_xen_strings(Xen array, Xen len)
{
#define H_to_strings "->strings translates a Motif string array (from a .value reference for example) into a scheme list of strings"
Xen_check_type(Xen_is_wrapped_c_pointer(array), array, 1, "->strings", "char**");
+ Xen_check_type(Xen_is_integer(len), len, 2, "->strings", "integer");
return(C_to_Xen_Strings((char **)Xen_unwrap_C_pointer(array), Xen_integer_to_C_int(len)));
}
#endif
@@ -1056,6 +1059,7 @@ static Xen c_to_xen_xrectangles(Xen array, Xen len)
{
#define H_to_XRectangles "->XRectangles translates a Motif rectangle array (from a .value reference for example) into a scheme list of rectangles"
Xen_check_type(Xen_is_wrapped_c_pointer(array), array, 1, "->XRectangles", "Motif rectangle array");
+ Xen_check_type(Xen_is_integer(len), len, 2, "->XRectangles", "an integer");
return(C_to_Xen_XRectangles((XRectangle *)Xen_unwrap_C_pointer(array), Xen_integer_to_C_int(len)));
}
#endif
@@ -1089,7 +1093,7 @@ static Window *Xen_to_C_Windows(Xen lst_1, int n)
{
free(ws);
ws = NULL;
- Xen_check_type(0, Xen_car(lst), i, __func__, "a Window");
+ Xen_check_type(false, Xen_car(lst), i, __func__, "a Window");
break;
}
return(ws);
@@ -1110,7 +1114,7 @@ static XmRendition *Xen_to_C_XmRenditions(Xen lst_1, int n)
{
free(ws);
ws = NULL;
- Xen_check_type(0, Xen_car(lst), i, __func__, "an XmRendition");
+ Xen_check_type(false, Xen_car(lst), i, __func__, "an XmRendition");
break;
}
return(ws);
@@ -1131,7 +1135,7 @@ static XmTab *Xen_to_C_XmTabs(Xen v_1, int len)
{
free(str);
str = NULL;
- Xen_check_type(0, Xen_car(v), i, __func__, "an XmTab");
+ Xen_check_type(false, Xen_car(v), i, __func__, "an XmTab");
break;
}
return(str);
@@ -1152,7 +1156,7 @@ static Atom *Xen_to_C_Atoms(Xen v_1, int len)
{
free(str);
str = NULL;
- Xen_check_type(0, Xen_car(v), i, __func__, "an Atom");
+ Xen_check_type(false, Xen_car(v), i, __func__, "an Atom");
break;
}
return(str);
@@ -1173,7 +1177,7 @@ static Pixel *Xen_to_C_Pixels(Xen v_1, int len)
{
free(str);
str = NULL;
- Xen_check_type(0, Xen_car(v), i, __func__, "a Pixel");
+ Xen_check_type(false, Xen_car(v), i, __func__, "a Pixel");
break;
}
return(str);
@@ -1194,7 +1198,7 @@ static KeySym *Xen_to_C_KeySyms(Xen v_1, int len)
{
free(str);
str = NULL;
- Xen_check_type(0, Xen_car(v), i, __func__, "a KeySym");
+ Xen_check_type(false, Xen_car(v), i, __func__, "a KeySym");
break;
}
return(str);
@@ -1215,7 +1219,7 @@ static char **Xen_to_C_Strings(Xen v_1, int len)
{
free(str);
str = NULL;
- Xen_check_type(0, Xen_car(v), i, __func__, "a char*");
+ Xen_check_type(false, Xen_car(v), i, __func__, "a char*");
break;
}
return(str);
@@ -1236,7 +1240,7 @@ static int *Xen_to_C_Ints(Xen v_1, int len)
{
free(ps);
ps = NULL;
- Xen_check_type(0, Xen_car(v), i, __func__, "an int");
+ Xen_check_type(false, Xen_car(v), i, __func__, "an int");
break;
}
return(ps);
@@ -1257,7 +1261,7 @@ static Cardinal *Xen_to_C_Cardinals(Xen v_1, int len)
{
free(ps);
ps = NULL;
- Xen_check_type(0, Xen_car(v), i, __func__, "a Cardinal");
+ Xen_check_type(false, Xen_car(v), i, __func__, "a Cardinal");
break;
}
return(ps);
@@ -1279,7 +1283,7 @@ static XRectangle *Xen_to_C_XRectangles(Xen v_1, int len)
{
free(str);
str = NULL;
- Xen_check_type(0, Xen_car(v), i, __func__, "an XRectangle");
+ Xen_check_type(false, Xen_car(v), i, __func__, "an XRectangle");
break;
}
str[i].x = dat->x;
@@ -1744,7 +1748,7 @@ static Arg *Xen_to_C_Args(Xen inargl)
{
if (Xen_is_false(value))
XtSetArg(args[i], name, 0);
- else Xen_check_type(0, value, 0, name, "procedure of 8 args");
+ else Xen_check_type(false, value, 0, name, "procedure of 8 args");
}
break;
case XM_DROP_CALLBACK:
@@ -1758,7 +1762,7 @@ static Arg *Xen_to_C_Args(Xen inargl)
{
if (Xen_is_false(value))
XtSetArg(args[i], name, 0);
- else Xen_check_type(0, value, 0, name, "procedure of 3 args");
+ else Xen_check_type(false, value, 0, name, "procedure of 3 args");
}
break;
case XM_DRAG_CALLBACK:
@@ -1772,7 +1776,7 @@ static Arg *Xen_to_C_Args(Xen inargl)
{
if (Xen_is_false(value))
XtSetArg(args[i], name, 0);
- else Xen_check_type(0, value, 0, name, "procedure of 3 args");
+ else Xen_check_type(false, value, 0, name, "procedure of 3 args");
}
break;
case XM_SEARCH_CALLBACK: /* XmNfileSearchProc and XmNdirSearchProc, XmSearchProc XmFileSelectionBox 756 */
@@ -1786,7 +1790,7 @@ static Arg *Xen_to_C_Args(Xen inargl)
{
if (Xen_is_false(value))
XtSetArg(args[i], name, 0);
- else Xen_check_type(0, value, 0, name, "procedure of 2 args");
+ else Xen_check_type(false, value, 0, name, "procedure of 2 args");
}
break;
case XM_QUALIFY_CALLBACK: /* XmNqualifySearchDataProc, XmQualifyProc */
@@ -1800,7 +1804,7 @@ static Arg *Xen_to_C_Args(Xen inargl)
{
if (Xen_is_false(value))
XtSetArg(args[i], name, 0);
- else Xen_check_type(0, value, 0, name, "procedure of 3 args");
+ else Xen_check_type(false, value, 0, name, "procedure of 3 args");
}
break;
case XM_ORDER_CALLBACK:
@@ -1814,7 +1818,7 @@ static Arg *Xen_to_C_Args(Xen inargl)
{
if (Xen_is_false(value))
XtSetArg(args[i], name, 0);
- else Xen_check_type(0, value, 0, name, "procedure of 1 arg");
+ else Xen_check_type(false, value, 0, name, "procedure of 1 arg");
}
break;
case XM_TRANSFER_CALLBACK: /* XmNtransferProc, XtSelectionCallbackProc, XmDropTransfer */
@@ -1840,7 +1844,7 @@ static Arg *Xen_to_C_Args(Xen inargl)
{
if (Xen_is_false(value))
XtSetArg(args[i], name, 0);
- else Xen_check_type(0, value, 0, name, "procedure of 3 args");
+ else Xen_check_type(false, value, 0, name, "procedure of 3 args");
}
break;
case XM_SCREEN_COLOR_CALLBACK: /* XmNcolorCalculationProc, XmScreen 921 */
@@ -1855,7 +1859,7 @@ static Arg *Xen_to_C_Args(Xen inargl)
{
if (Xen_is_false(value))
XtSetArg(args[i], name, 0);
- else Xen_check_type(0, value, 0, name, "procedure of 2 args");
+ else Xen_check_type(false, value, 0, name, "procedure of 2 args");
}
break;
case XM_POPUP_CALLBACK: /* XmNcreatePopupChildProc, XtCreatePopupChildProc */
@@ -1869,7 +1873,7 @@ static Arg *Xen_to_C_Args(Xen inargl)
{
if (Xen_is_false(value))
XtSetArg(args[i], name, 0);
- else Xen_check_type(0, value, 0, name, "procedure of 1 arg");
+ else Xen_check_type(false, value, 0, name, "procedure of 1 arg");
}
break;
@@ -2831,7 +2835,7 @@ retrieves rendition resources"
/* here we need to make sure the ref args are ok from C's point of view */
r = Xen_to_C_XmRendition(arg1);
len = Xen_to_C_INT_DEF(arg3, arg2);
- if (len == 0) Xen_check_type(0, arg3, 3, "XmRenditionRetrieve", "positive integer");
+ if (len == 0) Xen_check_type(false, arg3, 3, "XmRenditionRetrieve", "positive integer");
args = (Arg *)calloc(len, sizeof(Arg));
locs = (unsigned long *)calloc(len, sizeof(unsigned long));
for (i = 0; i < len; i++, arg2 = Xen_cddr(arg2))
@@ -3094,7 +3098,7 @@ static XmParseTable Xen_to_C_XmParseTable(Xen lst, int size)
val = Xen_list_ref(lst, i);
if (Xen_is_XmParseMapping(val))
pt[i] = Xen_to_C_XmParseMapping(val);
- else Xen_check_type(0, val, i, __func__, "an XmParseMapping");
+ else Xen_check_type(false, val, i, __func__, "an XmParseMapping");
}
return(pt);
}
@@ -3243,7 +3247,7 @@ generates a compound string"
Xen_check_type(Xen_is_integer(arg3), arg3, 3, "XmStringGenerate", "XmTextType");
Xen_check_type(Xen_is_string(arg4), arg4, 4, "XmStringGenerate", "XmStringTag");
type = (XmTextType)Xen_integer_to_C_int(arg3);
- if (type > 1) Xen_check_type(0, arg3, 3, "XmStringGenerate", "XmTextType");
+ if (type > 1) Xen_check_type(false, arg3, 3, "XmStringGenerate", "XmTextType");
rendition = (XmStringTag)Xen_string_to_C_string(arg4);
if (!rendition)
Xen_out_of_range_error("XmStringGenerate", 4, arg4, "a null rendition?");
@@ -3289,7 +3293,7 @@ to a compound string table"
Xen_check_type(Xen_is_false(arg5) || Xen_is_XmParseTable(arg5), arg5, 5, "XmStringTableParseStringArray", "XmParseTable");
Xen_check_type(Xen_is_integer(arg6), arg6, 6, "XmStringTableParseStringArray", "int");
type = (XmTextType)Xen_integer_to_C_int(arg4);
- if (type > 1) Xen_check_type(0, arg4, 4, "XmStringTableParseStringArray", "XmTextType");
+ if (type > 1) Xen_check_type(false, arg4, 4, "XmStringTableParseStringArray", "XmTextType");
len = Xen_integer_to_C_int(arg2);
if (len <= 0) return(Xen_false);
strs = Xen_to_C_Strings(arg1, len);
@@ -3330,9 +3334,9 @@ compound strings to an array of text"
Xen_check_type(Xen_is_integer(arg7), arg7, 7, "XmStringTableUnparse", "int");
Xen_check_type(Xen_is_integer(arg8), arg8, 8, "XmStringTableUnparse", "XmParseModel");
type1 = (XmTextType)Xen_integer_to_C_int(arg4);
- if (type1 > 1) Xen_check_type(0, arg4, 4, "XmStringTableUnparse", "XmTextType");
+ if (type1 > 1) Xen_check_type(false, arg4, 4, "XmStringTableUnparse", "XmTextType");
type2 = (XmTextType)Xen_integer_to_C_int(arg5);
- if (type2 > 1) Xen_check_type(0, arg5, 5, "XmStringTableUnparse", "XmTextType");
+ if (type2 > 1) Xen_check_type(false, arg5, 5, "XmStringTableUnparse", "XmTextType");
len = Xen_integer_to_C_int(arg2);
if (len <= 0) return(Xen_false);
loc = xm_protect(lst);
@@ -3415,7 +3419,7 @@ XmParseTable parse_table, Cardinal parse_count, XtPointer call_data) converts a
Xen_check_type(Xen_is_XmParseTable(arg5), arg5, 5, "XmStringParseText", "XmParseTable");
Xen_check_type(Xen_is_integer(arg6), arg6, 6, "XmStringParseText", "int");
type = (XmTextType)Xen_integer_to_C_int(arg4);
- if (type > 1) Xen_check_type(0, arg4, 4, "XmStringParseText", "XmTextType");
+ if (type > 1) Xen_check_type(false, arg4, 4, "XmStringParseText", "XmTextType");
str = Xen_string_to_C_string(arg1);
if (Xen_is_integer(arg2))
{
@@ -3448,9 +3452,9 @@ XmParseTable parse_table, Cardinal parse_count, XmParseModel parse_model) unpars
Xen_check_type(Xen_is_integer(arg6), arg6, 6, "XmStringUnparse", "int");
Xen_check_type(Xen_is_integer(arg7), arg7, 7, "XmStringUnparse", "XmParseModel");
type1 = (XmTextType)Xen_integer_to_C_int(arg3);
- if (type1 > 1) Xen_check_type(0, arg3, 3, "XmStringUnparse", "XmTextType");
+ if (type1 > 1) Xen_check_type(false, arg3, 3, "XmStringUnparse", "XmTextType");
type2 = (XmTextType)Xen_integer_to_C_int(arg4);
- if (type2 > 1) Xen_check_type(0, arg4, 4, "XmStringUnparse", "XmTextType");
+ if (type2 > 1) Xen_check_type(false, arg4, 4, "XmStringUnparse", "XmTextType");
len = Xen_integer_to_C_int(arg6);
if (Xen_is_XmParseTable(arg5)) pt = Xen_to_C_XmParseTable(arg5, len);
str = (char *)XmStringUnparse(Xen_to_C_XmString(arg1),
@@ -5773,7 +5777,7 @@ retrieves resource values set on a drop site"
arg2 = Xen_copy_arg(larg2);
gcloc = xm_protect(arg2);
len = Xen_to_C_INT_DEF(arg3, larg2);
- if (len == 0) Xen_check_type(0, arg3, 3, "XmDropSiteRetrieve", "positive integer");
+ if (len == 0) Xen_check_type(false, arg3, 3, "XmDropSiteRetrieve", "positive integer");
args = (Arg *)calloc(len, sizeof(Arg));
locs = (unsigned long *)calloc(len, sizeof(unsigned long));
for (i = 0; i < len; i++, arg2 = Xen_cddr(arg2))
@@ -7768,13 +7772,13 @@ static Xen gxm_XPolygonRegion(Xen larg1, Xen arg2, Xen arg3)
Xen_check_type(Xen_is_integer(arg3), arg3, 3, "XPolygonRegion", "int");
arg1 = Xen_copy_arg(larg1);
len = Xen_integer_to_C_int(arg2);
- if (len <= 0) Xen_check_type(0, arg2, 2, "XPolygonRegion", "positive integer");
+ if (len <= 0) Xen_check_type(false, arg2, 2, "XPolygonRegion", "positive integer");
pt = (XPoint *)calloc(len, sizeof(XPoint));
for (i = 0; (i < len) && (!Xen_is_null(arg1)); i++, arg1 = Xen_cdr(arg1))
{
Xen xp;
xp = Xen_car(arg1);
- if (!(Xen_is_XPoint(xp))) {free(pt); Xen_check_type(0, xp, i, "XPolygonRegion", "XPoint"); return(Xen_false);}
+ if (!(Xen_is_XPoint(xp))) {free(pt); Xen_check_type(false, xp, i, "XPolygonRegion", "XPoint"); return(Xen_false);}
pt1 = Xen_to_C_XPoint(Xen_car(arg1));
pt[i].x = pt1->x;
pt[i].y = pt1->y;
@@ -8409,7 +8413,7 @@ pixel members of the XColor structures."
Xen_check_type(Xen_is_integer(arg4), arg4, 4, "XStoreColors", "int");
arg3 = Xen_copy_arg(larg3);
len = Xen_integer_to_C_int(arg4);
- if (len == 0) Xen_check_type(0, arg4, 4, "XStoreColors", "positive integer");
+ if (len == 0) Xen_check_type(false, arg4, 4, "XStoreColors", "positive integer");
xc = (XColor *)calloc(len, sizeof(XColor));
for (i = 0; (i < len) && (!Xen_is_null(arg3)); i++, arg3 = Xen_cdr(arg3))
{
@@ -8800,7 +8804,7 @@ the specified GC to the specified list of rectangles and sets the clip origin."
Xen_check_type(Xen_is_integer(arg7), arg7, 7, "XSetClipRectangles", "int");
arg5 = Xen_copy_arg(larg5);
len = Xen_integer_to_C_int(arg6);
- if (len == 0) Xen_check_type(0, arg6, 6, "XSetClipRectangles", "positive integer");
+ if (len == 0) Xen_check_type(false, arg6, 6, "XSetClipRectangles", "positive integer");
pt = (XRectangle *)calloc(len, sizeof(XRectangle));
for (i = 0; (i < len) && (!Xen_is_null(arg5)); i++, arg5 = Xen_cdr(arg5))
{
@@ -9205,7 +9209,7 @@ static Xen gxm_XQueryColors(Xen arg1, Xen arg2, Xen arg3, Xen arg4)
col = Xen_to_C_XColor(Xen_car(lst));
cols[i].pixel = col->pixel;
}
- else Xen_check_type(0, Xen_car(lst), i, __func__, "an XColor");
+ else Xen_check_type(false, Xen_car(lst), i, __func__, "an XColor");
}
rtn = XQueryColors(Xen_to_C_Display(arg1), Xen_to_C_Colormap(arg2), cols, len);
for (i = 0; i < len; i++)
@@ -9835,7 +9839,7 @@ static Xen gxm_XGetPointerMapping(Xen arg1, Xen ignore, Xen arg3)
Xen_check_type(Xen_is_Display(arg1), arg1, 1, "XGetPointerMapping", "Display*");
Xen_check_type(Xen_is_integer(arg3), arg3, 3, "XGetPointerMapping", "int");
len = Xen_integer_to_C_int(arg3);
- if (len <= 0) Xen_check_type(0, arg3, 3, "XGetPointerMapping", "positive integer");
+ if (len <= 0) Xen_check_type(false, arg3, 3, "XGetPointerMapping", "positive integer");
map = (unsigned char *)calloc(len, sizeof(unsigned char));
rtn = XGetPointerMapping(Xen_to_C_Display(arg1), map, len);
if (len > rtn) len = rtn;
@@ -9985,7 +9989,7 @@ code into the specified buffer."
Xen_check_type(Xen_is_integer(arg2), arg2, 2, "XGetErrorText", "int");
Xen_check_type(Xen_is_integer(arg4), arg4, 4, "XGetErrorText", "int");
len = Xen_integer_to_C_int(arg4);
- if (len <= 0) Xen_check_type(0, arg4, 4, "XGetErrorText", "positive integer");
+ if (len <= 0) Xen_check_type(false, arg4, 4, "XGetErrorText", "positive integer");
buf = (char *)calloc(len, sizeof(char));
val = XGetErrorText(Xen_to_C_Display(arg1), Xen_integer_to_C_int(arg2), buf, len);
str = C_string_to_Xen_string(buf);
@@ -10183,7 +10187,7 @@ static Xen gxm_XFillRectangles(Xen arg1, Xen arg2, Xen arg3, Xen larg4, Xen arg5
Xen_check_type(Xen_is_integer(arg5), arg5, 5, "XFillRectangles", "int");
arg4 = Xen_copy_arg(larg4);
len = Xen_integer_to_C_int(arg5);
- if (len <= 0) Xen_check_type(0, arg5, 5, "XFillRectangles", "positive integer");
+ if (len <= 0) Xen_check_type(false, arg5, 5, "XFillRectangles", "positive integer");
pt = (XRectangle *)calloc(len, sizeof(XRectangle));
for (i = 0; (i < len) && (!Xen_is_null(arg4)); i++, arg4 = Xen_cdr(arg4))
{
@@ -10234,13 +10238,13 @@ static Xen gxm_XFillPolygon(Xen arg1, Xen arg2, Xen arg3, Xen larg4, Xen arg5, X
Xen_check_type(Xen_is_integer(arg7), arg7, 7, "XFillPolygon", "int");
arg4 = Xen_copy_arg(larg4);
len = Xen_integer_to_C_int(arg5);
- if (len == 0) Xen_check_type(0, arg5, 5, "XFillPolygon", "positive integer");
+ if (len == 0) Xen_check_type(false, arg5, 5, "XFillPolygon", "positive integer");
pt = (XPoint *)calloc(len, sizeof(XPoint));
for (i = 0; (i < len) && (!Xen_is_null(arg4)); i++, arg4 = Xen_cdr(arg4))
{
Xen xp;
xp = Xen_car(arg4);
- if (!(Xen_is_XPoint(xp))) Xen_check_type(0, xp, i, "XFillRegion", "XPoint");
+ if (!(Xen_is_XPoint(xp))) Xen_check_type(false, xp, i, "XFillRegion", "XPoint");
pt1 = Xen_to_C_XPoint(xp);
pt[i].x = pt1->x;
pt[i].y = pt1->y;
@@ -10402,7 +10406,7 @@ static Xen gxm_XDrawSegments(Xen arg1, Xen arg2, Xen arg3, Xen larg4, Xen arg5)
Xen_check_type(Xen_is_integer(arg5), arg5, 5, "XDrawSegments", "int");
arg4 = Xen_copy_arg(larg4);
len = Xen_integer_to_C_int(arg5);
- if (len <= 0) Xen_check_type(0, arg5, 5, "XDrawSegments", "positive integer");
+ if (len <= 0) Xen_check_type(false, arg5, 5, "XDrawSegments", "positive integer");
pt = (XSegment *)calloc(len, sizeof(XSegment));
for (i = 0; (i < len) && (!Xen_is_null(arg4)); i++, arg4 = Xen_cdr(arg4))
{
@@ -10436,7 +10440,7 @@ static Xen gxm_XDrawRectangles(Xen arg1, Xen arg2, Xen arg3, Xen larg4, Xen arg5
Xen_check_type(Xen_is_integer(arg5), arg5, 5, "XDrawRectangles", "int");
arg4 = Xen_copy_arg(larg4);
len = Xen_integer_to_C_int(arg5);
- if (len <= 0) Xen_check_type(0, arg5, 5, "XDrawRectangles", "positive integer");
+ if (len <= 0) Xen_check_type(false, arg5, 5, "XDrawRectangles", "positive integer");
pt = (XRectangle *)calloc(len, sizeof(XRectangle));
for (i = 0; (i < len) && (!Xen_is_null(arg4)); i++, arg4 = Xen_cdr(arg4))
{
@@ -10487,13 +10491,13 @@ static Xen gxm_XDrawPoints(Xen arg1, Xen arg2, Xen arg3, Xen larg4, Xen arg5, Xe
Xen_check_type(Xen_is_integer(arg6), arg6, 6, "XDrawPoints", "int");
arg4 = Xen_copy_arg(larg4);
len = Xen_integer_to_C_int(arg5);
- if (len == 0) Xen_check_type(0, arg5, 5, "XDrawPoints", "positive integer");
+ if (len == 0) Xen_check_type(false, arg5, 5, "XDrawPoints", "positive integer");
pt = (XPoint *)calloc(len, sizeof(XPoint));
for (i = 0; (i < len) && (!Xen_is_null(arg4)); i++, arg4 = Xen_cdr(arg4))
{
Xen xp;
xp = Xen_car(arg4);
- if (!(Xen_is_XPoint(xp))) Xen_check_type(0, xp, i, "XDrawPoints", "XPoint");
+ if (!(Xen_is_XPoint(xp))) Xen_check_type(false, xp, i, "XDrawPoints", "XPoint");
pt1 = Xen_to_C_XPoint(xp);
pt[i].x = pt1->x;
pt[i].y = pt1->y;
@@ -10539,13 +10543,13 @@ between each pair of points (point[i], point[i+1]) in the array of XPoint struct
Xen_check_type(Xen_is_integer(arg6), arg6, 6, "XDrawLines", "int");
arg4 = Xen_copy_arg(larg4);
len = Xen_integer_to_C_int(arg5);
- if (len == 0) Xen_check_type(0, arg5, 5, "XDrawLines", "positive integer");
+ if (len == 0) Xen_check_type(false, arg5, 5, "XDrawLines", "positive integer");
pt = (XPoint *)calloc(len, sizeof(XPoint));
for (i = 0; (i < len) && (!Xen_is_null(arg4)); i++, arg4 = Xen_cdr(arg4))
{
Xen xp;
xp = Xen_car(arg4);
- if (!(Xen_is_XPoint(xp))) Xen_check_type(0, xp, i, "XDrawLines", "XPoint");
+ if (!(Xen_is_XPoint(xp))) Xen_check_type(false, xp, i, "XDrawLines", "XPoint");
pt1 = Xen_to_C_XPoint(xp);
pt[i].x = pt1->x;
pt[i].y = pt1->y;
@@ -10590,12 +10594,17 @@ static Xen gxm_Vector2XPoints(Xen arg1)
XPoint *pt;
Xen_check_type(Xen_is_vector(arg1), arg1, 1, "vector->XPoints", "vector of x,y values");
len = Xen_vector_length(arg1) / 2;
- if (len == 0) Xen_check_type(0, arg1, 1, "vector->XPoints", "positive integer");
+ if (len == 0) Xen_check_type(false, arg1, 1, "vector->XPoints", "positive integer");
pt = (XPoint *)calloc(len, sizeof(XPoint));
for (i = 0, j = 0; i < len; i++, j += 2)
{
- pt[i].x = Xen_integer_to_C_int(Xen_vector_ref(arg1, j));
- pt[i].y = Xen_integer_to_C_int(Xen_vector_ref(arg1, j + 1));
+ Xen p;
+ p = Xen_vector_ref(arg1, j);
+ Xen_check_type(Xen_is_integer(p), p, j, "vector->XPoints", "integer");
+ pt[i].x = Xen_integer_to_C_int(p);
+ p = Xen_vector_ref(arg1, j + 1);
+ Xen_check_type(Xen_is_integer(p), p, j + 1, "vector->XPoints", "integer");
+ pt[i].y = Xen_integer_to_C_int(p);
}
return(Xen_wrap_C_pointer(pt));
}
@@ -11367,7 +11376,7 @@ static Xen gxm_XAllocColorPlanes(Xen args)
Xen_check_type(Xen_is_integer(arg7), arg7, 7, "XAllocColorPlanes", "int");
Xen_check_type(Xen_is_integer(arg8), arg8, 8, "XAllocColorPlanes", "int");
len = Xen_integer_to_C_int(arg5);
- if (len == 0) Xen_check_type(0, arg5, 5, "XAllocColorPlanes", "positive integer");
+ if (len == 0) Xen_check_type(false, arg5, 5, "XAllocColorPlanes", "positive integer");
ps = (unsigned long *)calloc(len, sizeof(unsigned long));
val = XAllocColorPlanes(Xen_to_C_Display(arg1),
Xen_to_C_Colormap(arg2),
@@ -12172,7 +12181,7 @@ pixmap of the given depth and then does a bitmap-format XPutImage of the data in
Xen_check_type(Xen_is_Pixel(arg7), arg7, 7, "XCreatePixmapFromBitmapData", "pixel");
Xen_check_type(Xen_is_ulong(arg8), arg8, 8, "XCreatePixmapFromBitmapData", "unsigned int");
len = Xen_list_length(larg3);
- if (len == 0) Xen_check_type(0, larg3, 3, "XCreatePixmapFromBitmapData", "positive integer");
+ if (len == 0) Xen_check_type(false, larg3, 3, "XCreatePixmapFromBitmapData", "positive integer");
arg3 = Xen_copy_arg(larg3);
bits = (char *)calloc(len, sizeof(char));
for (i = 0; i < len; i++, arg3 = Xen_cdr(arg3))
@@ -12203,7 +12212,7 @@ program a bitmap file that was written out by XWriteBitmapFile"
Xen_check_type(Xen_is_ulong(arg4), arg4, 4, "XCreateBitmapFromData", "unsigned int");
Xen_check_type(Xen_is_ulong(arg5), arg5, 5, "XCreateBitmapFromData", "unsigned int");
len = Xen_list_length(larg3);
- if (len == 0) Xen_check_type(0, larg3, 3, "XCreateBitmapFromData", "positive integer");
+ if (len == 0) Xen_check_type(false, larg3, 3, "XCreateBitmapFromData", "positive integer");
arg3 = Xen_copy_arg(larg3);
bits = (char *)calloc(len, sizeof(char));
for (i = 0; i < len; i++, arg3 = Xen_cdr(arg3))
@@ -16147,7 +16156,7 @@ with the translation manager."
Xen_check_type(Xen_is_XtAppContext(arg1), arg1, 1, "XtAppAddActions", "XtAppContext");
Xen_check_type(Xen_is_list(arg2), arg2, 2, "XtAppAddActions", "list of XtActions");
len = Xen_list_length(arg2);
- if (len <= 0) Xen_check_type(0, arg2, 2, "XtAppAddActions", "positive integer");
+ if (len <= 0) Xen_check_type(false, arg2, 2, "XtAppAddActions", "positive integer");
act = make_action_rec(len, arg2);
XtAppAddActions(Xen_to_C_XtAppContext(arg1), act, len);
for (i = 0; i < len; i++)
@@ -16661,7 +16670,7 @@ static Xen gxm_XpmCreatePixmapFromData(Xen arg1, Xen arg2, Xen larg3, Xen arg6)
Xen_check_type(Xen_is_XpmAttributes(arg6) || Xen_is_false(arg6), arg6, 6, "XpmCreatePixmapFromData", "XpmAttributes*");
arg3 = Xen_copy_arg(larg3);
len = Xen_list_length(arg3);
- if (len == 0) Xen_check_type(0, arg3, 3, "XpmCreatePixmapFromData", "positive integer");
+ if (len == 0) Xen_check_type(false, arg3, 3, "XpmCreatePixmapFromData", "positive integer");
bits = (char **)calloc(len, sizeof(char *));
for (i = 0; i < len; i++, arg3 = Xen_cdr(arg3))
bits[i] = xen_strdup(Xen_string_to_C_string(Xen_car(arg3)));
diff --git a/zip.scm b/zip.scm
index 4e06e75..2767c1f 100644
--- a/zip.scm
+++ b/zip.scm
@@ -25,7 +25,7 @@
input1 input2)
(define make-zipper
- (let ((documentation "(make-zipper ramp-env frame-size frame-env) makes a zipper generator. 'ramp-env' is
+ (let ((+documentation+ "(make-zipper ramp-env frame-size frame-env) makes a zipper generator. 'ramp-env' is
an envelope (normally a ramp from 0 to 1) which sets where we are in the zipping process,
'frame-size' is the maximum frame length during the zip in seconds (defaults to 0.05), and
'frame-env' is an envelope returning the current frame size during the zip process."))
@@ -42,7 +42,7 @@ an envelope (normally a ramp from 0 to 1) which sets where we are in the zipping
(define zipper
- (let ((documentation "(zipper zip in1 in2) creates the digital zipper sound effect using zipper generator 'zip' and the two samplers 'in1' and 'in2'"))
+ (let ((+documentation+ "(zipper zip in1 in2) creates the digital zipper sound effect using zipper generator 'zip' and the two samplers 'in1' and 'in2'"))
(lambda (zp input1 input2)
(let-set! zp 'input1 input1)
(let-set! zp 'input2 input2)
@@ -99,7 +99,7 @@ an envelope (normally a ramp from 0 to 1) which sets where we are in the zipping
;; (zip-sound 0 3 "mb.snd" "fyow.snd" '(0 0 1.0 0 1.5 1.0 3.0 1.0) .025)
(define zip-sound
- (let ((documentation "(zip-sound beg dur file1 file2 ramp-env size) zips the two files and mixes the result into the current sound"))
+ (let ((+documentation+ "(zip-sound beg dur file1 file2 ramp-env size) zips the two files and mixes the result into the current sound"))
(lambda* (beg-in-seconds dur-in-seconds file1 file2 ramp size)
(let* ((beg (seconds->samples beg-in-seconds))
(dur (seconds->samples dur-in-seconds))