summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIOhannes m zmölnig <zmoelnig@umlautS.umlaeute.mur.at>2018-02-23 16:22:29 +0100
committerIOhannes m zmölnig <zmoelnig@umlautS.umlaeute.mur.at>2018-02-23 16:22:29 +0100
commitb3b583be0f50487d478f02ee6c147848bdfcc73c (patch)
tree4e12aaceedbde1d991260c3fd9cd17675efec2fd
parent1b3b1b2aeecc34416aa125e24abecda704a5c8ad (diff)
New upstream version 18.1
-rw-r--r--HISTORY.Snd1
-rw-r--r--NEWS13
-rw-r--r--README.Snd4
-rw-r--r--bess.rb526
-rw-r--r--bess.scm56
-rw-r--r--bess1.rb663
-rw-r--r--clm.c29
-rw-r--r--clm.fs48
-rwxr-xr-xconfigure113
-rw-r--r--configure.ac60
-rw-r--r--gl.c56
-rw-r--r--glistener.c2
-rw-r--r--grfsnd.html12
-rw-r--r--gtkex.scm7
-rw-r--r--index.html689
-rw-r--r--libgtk_s7.c621
-rw-r--r--lint.scm318
-rw-r--r--peak-phases.scm30
-rw-r--r--repl.scm4
-rw-r--r--s7.c5328
-rw-r--r--s7.h6
-rw-r--r--s7.html59
-rw-r--r--s7test.scm1298
-rw-r--r--snd-file.c12
-rw-r--r--snd-g0.h6
-rw-r--r--snd-gmenu.c2
-rw-r--r--snd-gsnd.c6
-rw-r--r--snd-test.scm108
-rw-r--r--snd-xen.c10
-rw-r--r--snd.h6
-rw-r--r--snd.html2
-rw-r--r--sndlib.html4
-rw-r--r--sndscm.html15
-rw-r--r--stuff.scm35
-rw-r--r--tools/auto-tester.scm691
-rwxr-xr-xtools/compsnd10
-rwxr-xr-xtools/makexg.scm91
-rwxr-xr-xtools/testsnd10
-rw-r--r--tools/xgdata.scm29
-rw-r--r--vct.h2
-rw-r--r--write.scm2
-rw-r--r--xen.c24
-rw-r--r--xen.h4
-rw-r--r--xg.c413
44 files changed, 6029 insertions, 5396 deletions
diff --git a/HISTORY.Snd b/HISTORY.Snd
index c0fb84a..d3deacf 100644
--- a/HISTORY.Snd
+++ b/HISTORY.Snd
@@ -1,5 +1,6 @@
Snd change log
+ 14-Feb: Snd 18.1.
9-Jan-18: Snd-18.0.
2018 ----------------------------------------------------------------
diff --git a/NEWS b/NEWS
index 334ec1d..96c0558 100644
--- a/NEWS
+++ b/NEWS
@@ -1,12 +1,7 @@
-Snd 18.0:
+Snd 18.1
-many Forth/Ruby improvements thanks to Mike.
+s7: added (*s7* 'max-heap-size)
-in Snd, xg.c is no longer included automatically. The changes for
- gtk 4 are very extensive.
+checked: sbcl 1.4.4
-added snd.desktop and tools/auto-tester.scm.
-
-checked: sbcl 1.4.2|3, gtk 3.93.0
-
-Thanks!: Mike Scholz, Kjetil Matheussen, Yuri, Daniel Hensel
+Thanks!: Mike Scholz, Kjetil Matheussen, Marty Hayman, Yuri
diff --git a/README.Snd b/README.Snd
index 4d20d09..da26f9c 100644
--- a/README.Snd
+++ b/README.Snd
@@ -46,7 +46,7 @@ The configure script has a bunch of arguments:
in *BSD, pkg install open-motif, or perhaps use pkgin?
in Debian, apt-get install libmotif4, libmotif-dev, libxt-dev, libxpm-dev
- --with-gtk use Gtk+ (Debian package libgtk-3-dev).
+ --with-gtk use Gtk+ (Debian package libgtk-3-dev, Fedora gtk3-devel or gtk4-devel)
--with-gui make Snd with graphics support (actually intended for use as --without-gui)
@@ -98,7 +98,7 @@ Here at CCRMA, we use this configure invocation:
Version info:
- if Gtk, then Gtk+ 2.13 or later and Cairo 1.6.4 or later
+ if Gtk, then Gtk+ 2.13 or later (but anything after gtk 3.22 is work-in-progress), and Cairo 1.6.4 or later
if Motif, then Motif 2.n but not Lesstif
in Linux, if ALSA, then ALSA 1.0 or later
if Ruby, Ruby 1.8.0 or later.
diff --git a/bess.rb b/bess.rb
index e92bcc5..c90488d 100644
--- a/bess.rb
+++ b/bess.rb
@@ -1,415 +1,171 @@
-#!/usr/local/bin/ruby -wd
-# bess -- Translation of Bill Schottstaedt's bess.scm to Ruby.
-
-# Copyright (c) 2002--2009 Michael Scholz <mi-scholz@users.sourceforge.net>
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-
-begin require 'rubygems' rescue LoadError end
-
-file = File.basename __FILE__
-banner = "This is #{file.upcase} v1.9, (C) 2002--2009 Michael Scholz"
-
-def warn(*args)
- str = format(*args) << ($! ? ": #{$!}" : "") << "\n"
- str << (($@ and $DEBUG) ? "\n[#{$@.join("\n")}]" : "")
- $stdout.print str
- $! = nil
-end
-
-def die(*args)
- warn(*args)
- exit 1
-end
-
-def rbm_require(lib)
- require lib.to_s
-rescue ScriptError
- die "\aScriptError"
-end
-
-1.upto(15) do |i|
- trap(i) do |sig| die("\nSignal #{sig} received. Process #{$$} canceled.") end
-end
-
-class Bess
- def initialize(banner, file)
- @bufsize = 256
- @srate = 22050
- @chans = 1
- @play = 0.0
+# bess.rb -- examples from clm-2/bess.cl and clm-2/bess1.cl
+#
+# Translator: Michael Scholz <mi-scholz@users.sourceforge.net>
+# Created: 2002/09/15 22:20:25
+# Changed: 2018/01/11 19:58:32
+#
+# snd-ruby-xm -batch bess.rb -e fm_forever
+# or
+# snd-ruby-xm bess.rb
+
+require "snd-xm"
+
+class FM_Forever
+ FMname = "FM Forever!"
+ FMinfo = "\
+bess.rb provides mono real time output to DAC.
+Frequency, amplitude, FM index, and C/M ratio
+can be controlled via sliders."
+
+ def initialize
@freq = 220.0
- @fm_index1 = 1.0
- @fm_ratio1 = 1
@amp = 0.5
- @sliderback = "lightsteelblue"
- @background = "lightsteelblue1"
+ @fm_index1 = 1.0
+ @fm_index2 = 0.0
+ @fm_index3 = 0.0
+ @cm_ratio1 = 1
+ @cm_ratio2 = 1
+ @cm_ratio3 = 1
@low_freq = 40.0
@high_freq = 2000.0
- @high_index1 = 3.0
@high_ratio = 10
- get_options(banner, file)
- rbm_require(:libxm)
- rbm_require(:sndlib)
- set_mus_srate(@srate)
+ @high_index1 = 3.0
+ @high_index2 = 1.0
+ @high_index3 = 0.25
end
- def get_options(banner, file)
- vers = false
- help = false
- vers_msg = "#{banner}
-#{file.capitalize} comes with ABSOLUTELY NO WARRANTY.
-You may redistribute copies of #{file.capitalize}
-under the terms of the GNU General Public License.
-For more information about these matters, see the file named COPYING."
- help_msg = "#{banner}
-#{file.capitalize} is a Ruby script working with sndlib.so and
-libxm.so which must be in the Ruby library path, for example in
-/usr/local/lib/ruby/site_ruby, or the environment variable $RUBYLIB
-must be set correctly. It opens the DAC, creates some scale widgets,
-and starts two CLM oscillators doing frequency modulation in
-semi-real-time. This is a translation of bess.scm of Bill
-Schottstaedt\'s Snd sound editor.
-
-Default values shown in brackets.
-
-Usage: #{file} [ options ] [ -- X options ]
-
- -p, --play play immediately (#{@play.nonzero? ? "yes" : "no"})
-
- -f, --frequency NUMBER frequency between #{@low_freq} and #{@high_freq} (#{@freq})
- -i, --index1 NUMBER fm_index1 between 0 and #{@high_index1} (#{@fm_index1})
- -r, --ratio NUMBER ratio between 0 and #{@high_ratio} (#{@fm_ratio1})
- -a, --amplitude NUMBER amplitude between 0 and 1 (#{@amp})
-
- -B, --bufsize NUMBER buffer size (#{@bufsize})
- -S, --srate NUMBER sampling rate (#{@srate})
- -C, --channels NUMBER number of channels (#{@chans})
-
- -b --background COLOR background color (#{@background})
- -s, --sliderback COLOR slider background color (#{@sliderback})
-
- -V, --version display version information and exit
- -h, --help display this help message and exit
-
-Example: #{file} -pf1000 -r3 -b ivory1 -s ivory3"
- rbm_require "getoptlong"
- GetoptLong.new(["--play", "-p", GetoptLong::NO_ARGUMENT],
- ["--frequency", "-f", GetoptLong::REQUIRED_ARGUMENT],
- ["--index1", "-i", GetoptLong::REQUIRED_ARGUMENT],
- ["--ratio", "-r", GetoptLong::REQUIRED_ARGUMENT],
- ["--amplitude", "-a", GetoptLong::REQUIRED_ARGUMENT],
- ["--bufsize", "-B", GetoptLong::REQUIRED_ARGUMENT],
- ["--srate", "-S", GetoptLong::REQUIRED_ARGUMENT],
- ["--channels", "-C", GetoptLong::REQUIRED_ARGUMENT],
- ["--background", "-b", GetoptLong::REQUIRED_ARGUMENT],
- ["--sliderback", "-s", GetoptLong::REQUIRED_ARGUMENT],
- ["--version", "-V", GetoptLong::NO_ARGUMENT],
- ["--help", "-h", GetoptLong::NO_ARGUMENT]).each do |name, arg|
-
- case name
- when "--play"
- @play = 1.0
- when "--frequency"
- @freq = arg.to_f.abs
- @freq = @freq < @low_freq ? @low_freq : @freq > @high_freq ? @high_freq : @freq
- when "--index1"
- ind = arg.to_f.abs
- @fm_index1 = ind > @high_index1 ? @high_index1 : ind
- when "--ratio"
- rat = arg.to_i.abs
- @fm_ratio1 = rat > @high_ratio ? @high_ratio : rat
- when "--amplitude"
- amp = arg.to_f.abs
- @amp = amp > 1 ? 1 : amp
- when "--bufsize"
- @bufsize = arg.to_i
- when "--srate"
- @srate = arg.to_i
- when "--channels"
- @chans = arg.to_i
- when "--sliderback"
- @sliderback = arg
- when "--background"
- @background = arg
- when "--version"
- vers = true
- when "--help"
- help = true
+ def start_dac(&body)
+ set_playing(false)
+ freq = @freq
+ amp = @amp
+ index1 = @fm_index1
+ ratio1 = @cm_ratio1
+ index2 = @fm_index2
+ ratio2 = @cm_ratio2
+ index3 = @fm_index3
+ ratio3 = @cm_ratio3
+ s1, s2, s3, s4, s5, s6, s7, s8 = false
+ reset_cb = lambda do |w, c, i|
+ set_scale_value(s1.scale, @freq = freq, 100.0)
+ set_scale_value(s2.scale, @amp = amp, 100.0)
+ set_scale_value(s3.scale, @fm_index1 = index1, 100.0)
+ set_scale_value(s4.scale, @cm_ratio1 = ratio1, 100.0)
+ if s5
+ set_scale_value(s5.scale, @fm_index2 = index2, 100.0)
+ set_scale_value(s6.scale, @cm_ratio2 = ratio2, 100.0)
+ set_scale_value(s7.scale, @fm_index3 = index3, 100.0)
+ set_scale_value(s8.scale, @cm_ratio3 = ratio3, 100.0)
end
end
- die help_msg if help
- die vers_msg if vers
- end
-
- def get_color(color)
- col = RXColor()
- dpy = RXtDisplay(@shell_app[0])
- cmap = RDefaultColormap(dpy, RDefaultScreen(dpy))
- warn("Can't allocate #{color.inspect}!") if RXAllocNamedColor(dpy, cmap, color, col, col).zero?
- Rpixel(col)
- end
-
- def set_label(wid, *args)
- RXtVaSetValues(wid, [RXmNlabelString, RXmStringCreate(format(*args), RXmFONTLIST_DEFAULT_TAG)])
- end
-
- def make_label(wid, name)
- RXtCreateManagedWidget(name, RxmLabelWidgetClass, @form,
- [RXmNleftAttachment, RXmATTACH_FORM,
- RXmNbottomAttachment, RXmATTACH_NONE,
- RXmNtopAttachment, RXmATTACH_WIDGET,
- RXmNtopWidget, wid,
- RXmNrightAttachment, RXmATTACH_NONE,
- RXmNalignment, RXmALIGNMENT_END,
- RXmNwidth, 80, #114,
- RXmNrecomputeSize, false,
- RXmNbackground, get_color(@background)])
- end
-
- def make_scale_label(wid)
- RXtCreateManagedWidget("label", RxmLabelWidgetClass, @form,
- [RXmNleftAttachment, RXmATTACH_WIDGET,
- RXmNleftWidget, wid,
- RXmNbottomAttachment, RXmATTACH_NONE,
- RXmNtopAttachment, RXmATTACH_OPPOSITE_WIDGET,
- RXmNtopWidget, wid,
- RXmNrightAttachment, RXmATTACH_NONE,
- RXmNbackground, get_color(@background)])
- end
-
- def make_scale(wid)
- RXtCreateManagedWidget("scale", RxmScaleWidgetClass, @form,
- [RXmNleftAttachment, RXmATTACH_WIDGET,
- RXmNleftWidget, wid,
- RXmNbottomAttachment, RXmATTACH_NONE,
- RXmNtopAttachment, RXmATTACH_OPPOSITE_WIDGET,
- RXmNtopWidget, wid,
- RXmNrightAttachment, RXmATTACH_FORM,
- RXmNshowValue, false,
- RXmNorientation, RXmHORIZONTAL,
- RXmNbackground, get_color(@sliderback)])
- end
-
- def make_scales(wid, name, val, callback)
- label = make_scale_label(make_label(wid, name))
- scale = make_scale(label)
- set_label(label, val.kind_of?(Integer) ? "%8d" : "%8.3f", val)
- RXtAddCallback(scale, RXmNdragCallback, callback, label)
- RXtAddCallback(scale, RXmNvalueChangedCallback, callback ,label)
- scale
- end
-
- def start_dac(&body)
- args = [$0] + $*
- @shell_app = RXtVaOpenApplication("FM", args.length, args, RapplicationShellWidgetClass,
- [RXmNallowShellResize, true, RXmNtitle, "FM forever!"])
- RXtAddEventHandler(@shell_app[0], 0, true,
- lambda do |w, c, i, f| R_XEditResCheckMessages(w, c, i, f) end)
- @form = RXtCreateManagedWidget("form", RxmFormWidgetClass, @shell_app[0],
- [RXmNresizePolicy, RXmRESIZE_GROW,
- RXmNbackground, get_color(@background)])
- play_button = RXtCreateManagedWidget("play", RxmToggleButtonWidgetClass, @form,
- [RXmNtopAttachment, RXmATTACH_FORM,
- RXmNleftAttachment, RXmATTACH_FORM,
- RXmNrightAttachment, RXmATTACH_NONE,
- RXmNbottomAttachment, RXmATTACH_NONE,
- RXmNbackground, get_color(@background)])
- RXmToggleButtonSetState(play_button, @play.nonzero? ? true : false, false)
- RXtAddCallback(play_button, RXmNvalueChangedCallback,
- lambda do |w, c, i| @play = Rset(i) ? 1.0 : 0.0 end)
- quit_button = RXtCreateManagedWidget(" quit ", RxmPushButtonWidgetClass, @form,
- [RXmNtopAttachment, RXmATTACH_FORM,
- RXmNleftAttachment, RXmATTACH_NONE,
- RXmNrightAttachment, RXmATTACH_FORM,
- RXmNbottomAttachment, RXmATTACH_NONE,
- RXmNbackground, get_color(@background)])
- RXtAddCallback(quit_button, RXmNactivateCallback, lambda do |w, c, i| exit(0) end)
- wid = make_scales(play_button, " carrier:", @freq,
- lambda do |w, c, i|
- @freq = @low_freq + Rvalue(i) * ((@high_freq - @low_freq) / 100.0)
- set_label(c, "%8.3f", @freq)
- end)
- RXmScaleSetValue(wid, (100 * (@freq - @low_freq) / (@high_freq - @low_freq)).round)
- wid = make_scales(wid, " amplitude:", @amp,
- lambda do |w, c, i|
- @amp = Rvalue(i) / 100.0
- set_label(c, "%8.3f", @amp)
- end)
- RXmScaleSetValue(wid, (100 * @amp).round)
- wid = make_scales(wid, "fm index 1:", @fm_index1,
- lambda do |w, c, i|
- @fm_index1 = Rvalue(i) * (@high_index1 / 100.0)
- set_label(c, "%8.3f", @fm_index1)
- end)
- RXmScaleSetValue(wid, (100 * @fm_index1 / @high_index1).round)
- wid = make_scales(wid, "c/m ratio 1:", @fm_ratio1,
- lambda do |w, c, i|
- @fm_ratio1 = (Rvalue(i) * (@high_ratio / 100.0)).round
- set_label(c, "%8d", @fm_ratio1)
- end)
- RXmScaleSetValue(wid, (@fm_ratio1 * 100 / @high_ratio).round)
- if defined? @fm_index2
- wid = make_scales(wid, "fm index 2:", @fm_index2,
- lambda do |w, c, i|
- @fm_index2 = Rvalue(i) * (@high_index2 / 100.0)
- set_label(c, "%8.3f", @fm_index2)
- end)
- RXmScaleSetValue(wid, (100 * @fm_index2 / @high_index2).round)
- wid = make_scales(wid, "c/m ratio 2:", @fm_ratio2,
- lambda do |w, c, i|
- @fm_ratio2 = (Rvalue(i) * (@high_ratio / 100.0)).round
- set_label(c, "%8d", @fm_ratio2)
- end)
- RXmScaleSetValue(wid, (@fm_ratio2 * 100 / @high_ratio).round)
+ help_cb = lambda do |w, c, i| info_dialog(FMname, FMinfo) end
+ #
+ # -batch sets XtSetMappedWhenManaged(shell, 0)
+ # The "Quit Snd" button is only realized if -batch was given.
+ #
+ if get_xtvalue(main_widgets[Top_level_shell], RXmNmappedWhenManaged)
+ clear_cb = false
+ else
+ clear_cb = lambda do |w, c, i| exit(0) end
+ end
+ d = make_dialog(FMname,
+ :reset_cb, reset_cb,
+ :clear_cb, clear_cb,
+ :help_cb, help_cb) do |w, c, i|
+ if set_playing(!playing)
+ play(body)
+ d.doit_string("Pause")
+ else
+ d.doit_string("Play")
+ end
+ end
+ name = "carrier frequency"
+ s1 = d.add_slider(name, @low_freq, freq, @high_freq, 100) do |w, c, i|
+ @freq = get_scale_value(w, i, 100.0)
+ end
+ name = "amplitude"
+ s2 = d.add_slider(name, 0, amp, 1, 100) do |w, c, i|
+ @amp = get_scale_value(w, i, 100.0)
end
- if defined? @fm_index3
- wid = make_scales(wid, "fm index 3:", @fm_index2,
- lambda do |w, c, i|
- @fm_index2 = Rvalue(i) * (@high_index3 / 100.0)
- set_label(c, "%8.3f", @fm_index2)
- end)
- RXmScaleSetValue(wid, (100 * @fm_index3 / @high_index3).round)
- wid = make_scales(wid, "c/m ratio 3:", @fm_ratio3,
- lambda do |w, c, i|
- @fm_ratio3 = (Rvalue(i) * (@high_ratio / 100.0)).round
- set_label(c, "%8d", @fm_ratio3)
- end)
- RXmScaleSetValue(wid, (@fm_ratio3 * 100 / @high_ratio).round)
+ name = (@fm_index2 ? "1. " : "") + "fm index"
+ s3 = d.add_slider(name, 0, index1, @high_index1, 100) do |w, c, i|
+ @fm_index1 = get_scale_value(w, i, 100.0)
end
- proc = nil
- data = make_sound_data(@chans, @bufsize)
- port = mus_audio_open_output(0, @srate, @chans, Mus_lshort, @bufsize * 2)
- die("Can't open DAC!") if port < 0
- RXmAddWMProtocolCallback(@shell_app[0],
- RXmInternAtom(RXtDisplay(@shell_app[0]), "WM_DELETE_WINDOW", false),
- lambda do |w, c, i|
- RXtRemoveWorkProc(proc)
- mus_audio_close(port)
- end, false)
- proc = RXtAppAddWorkProc(@shell_app[1], lambda do |dummy|
- @bufsize.times do |i|
- @chans.times do |c|
- sound_data_set!(data, c, i, body.call)
- end
- end
- mus_audio_write(port, data, @bufsize)
- false
- end)
- RXtRealizeWidget(@shell_app[0])
- RXtAppMainLoop(@shell_app[1])
- rescue
- die("start_dac() { ... }")
+ name = (@fm_index2 ? "1. " : "") + "c/m ratio"
+ s4 = d.add_slider(name, 0, ratio1, @high_ratio, 100) do |w, c, i|
+ @cm_ratio1 = get_scale_value(w, i, 100.0)
+ end
+ if @fm_index2
+ name = "2. fm index"
+ s5 = d.add_slider(name, 0, index2, @high_index2, 100) do |w, c, i|
+ @fm_index2 = get_scale_value(w, i, 100.0)
+ end
+ name = "2. c/m ratio"
+ s6 = d.add_slider(name, 0, ratio2, @high_ratio, 100) do |w, c, i|
+ @cm_ratio2 = get_scale_value(w, i, 100.0)
+ end
+ name = "3. fm index"
+ s7 = d.add_slider(name, 0, index3, @high_index3, 100) do |w, c, i|
+ @fm_index3 = get_scale_value(w, i, 100.0)
+ end
+ name = "3. c/m ratio"
+ s8 = d.add_slider(name, 0, ratio3, @high_ratio, 100) do |w, c, i|
+ @cm_ratio3 = get_scale_value(w, i, 100.0)
+ end
+ end
+ if clear_cb
+ d.clear_string("Quit Snd")
+ end
+ d.doit_string("Play")
+ set_sensitive(d.okay_button, true)
+ RXtManageChild(d.dialog)
end
-end
-# test functions
-
-def bess(banner, file, &body)
- b = Bess.new(banner, file)
- b.make_ffm()
- b.start_dac() do b.instance_eval(&body) end
-rescue
- die("bess(banner, file, osf, mdf) { ... }")
-end
-
-class Bess
- def make_fm
- @osc = make_oscil(0.0)
+ def make_fm_forever
+ @fm_index2 = false
+ @fm_index3 = false
+ @car = make_oscil(0.0)
@mod = make_oscil(0.0)
end
-
- def fm
- @amp * @play * oscil(@osc, in_hz(@freq) + @fm_index1 * oscil(@mod, in_hz(@fm_ratio1 * @freq)))
+
+ def fm_forever
+ @amp *
+ oscil(@car, hz2radians(@freq) +
+ @fm_index1 * oscil(@mod, hz2radians(@cm_ratio1 * @freq)))
end
- def make_ffm
- @osc = make_oscil(0.0)
+ def make_ffm_forever
+ @fm_index2 = 0.0
+ @fm_index3 = 0.0
+ @car = make_oscil(0.0)
@md1 = make_oscil(0.0)
@md2 = make_oscil(0.0)
@md3 = make_oscil(0.0)
- @fm_index1 = 1.0
- @fm_index2 = 0.0
- @fm_index3 = 0.0
- @fm_ratio1 = 1
- @fm_ratio2 = 1
- @fm_ratio3 = 1
- @high_index2 = 3.0
- @high_index2 = 1.0
- @high_index3 = 0.25
- @amp = 0.5
end
- def ffm_rb
- @amp * @play * oscil(@osc, in_hz(@freq) + @fm_index1 * oscil(@md1, in_hz(@fm_ratio1 * @freq)) +
- @fm_index2 * oscil(@md2, in_hz(@fm_ratio2 * @freq)) +
- @fm_index3 * oscil(@md3, in_hz(@fm_ratio3 * @freq)))
+ def ffm_forever
+ @amp *
+ oscil(@car, hz2radians(@freq) +
+ @fm_index1 * oscil(@md1, hz2radians(@cm_ratio1 * @freq)) +
+ @fm_index2 * oscil(@md2, hz2radians(@cm_ratio2 * @freq)) +
+ @fm_index3 * oscil(@md3, hz2radians(@cm_ratio3 * @freq)))
end
+end
- def ffm
- ffm_c(@amp, @play, @freq, @fm_index1, @fm_index2, @fm_index3,
- @fm_ratio1, @fm_ratio2, @fm_ratio3, @osc, @md1, @md2, @md3)
- end
+# test functions
- rbm_require 'inline'
- include Inline
- inline do |ffm_c|
- fft_c.c "
-#include <sndlib.h>
-#include <clm.h>
-
-typedef struct {
- mus_any *gen;
- VALUE *vcts;
- int nvcts;
- void *input_ptree;
-} mus_xen;
-
-double
-fft_c(double amp,
- double play,
- double freq,
- double fm_index1,
- double fm_index2,
- double fm_index3,
- double fm_ratio1,
- double fm_ratio2,
- double fm_ratio3,
- mus_any *osc,
- mus_any *md1,
- mus_any *md2,
- mus_any *md3)
-{
- return (amp * play * mus_oscil(osc, mus_hz2radians(freq) +
- fm_index1 * mus_oscil(md1, mus_hz2radians(fm_ratio1 * freq), 0.0) +
- fm_index2 * mus_oscil(md2, mus_hz2radians(fm_ratio2 * freq), 0.0) +
- fm_index3 * mus_oscil(md3, mus_hz2radians(fm_ratio3 * freq), 0.0), 0.0));
-}"
- end
+def fm_forever
+ f = FM_Forever.new
+ f.make_fm_forever
+ f.start_dac do f.fm_forever end
end
-begin
- bess(banner, file) do ffm_rb() end
+def ffm_forever
+ f = FM_Forever.new
+ f.make_ffm_forever
+ f.start_dac do f.ffm_forever end
end
+# fm_forever
+# ffm_forever
+
# bess.rb ends here
diff --git a/bess.scm b/bess.scm
index 87c9b8f..275d7d4 100644
--- a/bess.scm
+++ b/bess.scm
@@ -1,12 +1,8 @@
-;;; this is obsolete -- it needs some replacement for the mus-audio* functions
-
(when (provided? 'snd-motif)
(with-let (sublet *motif*)
;; set up our user-interface
- (let* ((app (car (main-widgets)))
-
- (shell (let* ((xdismiss (XmStringCreate "Go away" XmFONTLIST_DEFAULT_TAG))
+ (let* ((shell (let* ((xdismiss (XmStringCreate "Go away" XmFONTLIST_DEFAULT_TAG))
(xhelp (XmStringCreate "Help" XmFONTLIST_DEFAULT_TAG))
(titlestr (XmStringCreate "FM Forever!" XmFONTLIST_DEFAULT_TAG))
(dialog (XmCreateTemplateDialog (cadr (main-widgets)) "FM Forever!"
@@ -14,6 +10,7 @@
XmNhelpLabelString xhelp
XmNautoUnmanage #f
XmNdialogTitle titlestr
+ XmNwidth 600
XmNresizePolicy XmRESIZE_GROW
XmNnoResize #f
XmNtransient #f))))
@@ -27,7 +24,6 @@
(dpy (XtDisplay shell))
(screen (DefaultScreenOfDisplay dpy))
- ;; (cmap (DefaultColormap dpy (DefaultScreen dpy)))
(black (BlackPixelOfScreen screen))
(white (WhitePixelOfScreen screen))
@@ -153,7 +149,7 @@
(let ((frequency 220.0)
(low-frequency 40.0)
(high-frequency 2000.0)
- (amplitude 0.5)
+ (amplitude 0.25)
(index 1.0)
(high-index 3.0)
(ratio 1)
@@ -189,6 +185,17 @@
(define (ratio-callback w c i)
(set! ratio (floor (* (.value i) (/ high-ratio 100.0))))
(set-ilabel cm-label ratio))
+
+ (define (fm)
+ (* amplitude playing
+ (oscil carosc
+ (+ (hz->radians frequency)
+ (* index
+ (oscil modosc
+ (hz->radians (* ratio frequency))))))))
+
+ ;; go-away button
+ (XtAddCallback shell XmNcancelCallback (lambda (w c i) (stop-playing) (XtUnmanageChild w)))
;; add scale-change (drag and value-changed) callbacks
(XtAddCallback freq-scale XmNdragCallback freq-callback)
@@ -204,6 +211,7 @@
(XtAddCallback cm-scale XmNvalueChangedCallback ratio-callback)
(XtAddCallback play-button XmNvalueChangedCallback (lambda (w c i) (set! playing (if (.set i) 1.0 0.0))))
+ (XmAddWMProtocolCallback (XtParent shell) (XmInternAtom (XtDisplay (cadr (main-widgets))) "WM_DELETE_WINDOW" #f) (lambda (w c i) (stop-playing)) #f)
;; set initial values
(set-flabel freq-label frequency)
@@ -219,34 +227,6 @@
(XtManageChild shell)
(XtRealizeWidget shell)
- ;; send fm data to dac
- (let ((bufsize 256)
- (work-proc #f))
- (let ((port (mus-audio-open-output mus-audio-default 22050 1 mus-lshort (* bufsize 2))))
- (if (< port 0)
- (format () "can't open DAC!"))
-
- (XmAddWMProtocolCallback (cadr (main-widgets)) ; shell
- (XmInternAtom dpy "WM_DELETE_WINDOW" #f)
- (lambda (w c i)
- (XtRemoveWorkProc work-proc) ; odd that there's no XtAppRemoveWorkProc
- (mus-audio-close port))
- #f)
- (XtAddCallback shell
- XmNcancelCallback (lambda (w context info)
- (XtRemoveWorkProc work-proc)
- (mus-audio-close port)
- (XtUnmanageChild shell)))
- (set! work-proc (XtAppAddWorkProc app
- (lambda (ignored-arg)
- (let ((data (make-float-vector bufsize)))
- (do ((i 0 (+ 1 i)))
- ((= i bufsize))
- (float-vector-set! data i (* amplitude playing
- (oscil carosc
- (+ (hz->radians frequency)
- (* index
- (oscil modosc
- (hz->radians (* ratio frequency)))))))))
- (mus-audio-write port data bufsize)
- #f)))))))))) \ No newline at end of file
+ (play fm)))))
+
+
diff --git a/bess1.rb b/bess1.rb
index 5e0f819..f7b5cc0 100644
--- a/bess1.rb
+++ b/bess1.rb
@@ -1,527 +1,212 @@
-#!/usr/bin/env ruby
-# bess1.rb -- some examples from clm/rt.lisp and clm/bess5.cl
+# bess1.rb -- examples from clm-2/rt.lisp and clm-2/bess5.cl
-# Copyright (C) 2002--2009 Michael Scholz
-
-# Author: Michael Scholz <mi-scholz@users.sourceforge.net>
-# Created: Sun Sep 15 19:11:12 CEST 2002
-# Changed: Tue Sep 29 02:05:49 CEST 2009
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
-# Commentary:
-
-# Requires sndlib.so and libxm.so!
+# Translator: Michael Scholz <mi-scholz@users.sourceforge.net>
+# Created: 2002/09/15 19:11:12
+# Changed: 2018/01/11 20:05:09
#
-# This file provides simple mono real time output to DAC. Tempo,
-# frequency, amplitude, and FM index can be controlled via sliders.
-# The music algorithms are taken from clm/rt.lisp and clm/bess5.cl.
-#
-# Bess.new.start -- starts a Motif widget with two DAC tests.
-#
-# Bess.new.start(:srate, $clm_srate # 22050
-# :bufsize, $clm_rt_bufsize # 128
-# :sample_type, $clm_sample_type # Mus_lshort
-# :which, :agn # :agn or :vct_test
-# :play, false)
-
-# Code:
-
-def warn(*args)
- str = format(*args) << ($! ? ": #{$!}" : "") << "\n"
- str << (($@ and $DEBUG) ? "\n[#{$@.join("\n")}]" : "")
- $stdout.print str
- $! = nil
-end
-
-def die(*args)
- warn(*args)
- exit 1
-end
+# snd-ruby-xm -batch bess1.rb -e agn
+# or
+# snd-ruby-xm bess1.rb
-def rbm_require(lib)
- puts "loading #{lib.inspect}" if $VERBOSE
- require lib.to_s
-rescue ScriptError
- die "\aScriptError"
-end
+require "snd-xm"
+require "v"
+require "env"
-rbm_require "sndlib"
-$output = nil # holds fd from mus_audio_open_output()
-$clm_srate = 22050
-$clm_sample_type = Mus_lshort
-$clm_rt_bufsize = 128
+class FM_Forever2
+ FM2name = "FM Forever!"
+ FM2info = "\
+bess1.rb provides mono real time output to DAC.
+Frequency, amplitude, FM index, and tempo
+can be controlled via slider."
-module Bess_utils
- def rbm_random(n)
- mus_random(n).abs
+ def initialize
+ @tempo = 0.1
+ @freq = 1.0
+ @amp = 1.0
+ @index = 1.0
+ @low_tempo = 0.05
+ @high_tempo = 0.5
+ @low_freq = 0.1
+ @high_freq = 4.0
+ @high_index = 2.0
end
-
- def get_args(args, key, val)
- if(key == :help and (args == key or args.member?(key) or args.assoc(key)))
- val = true
- elsif(args.member?(key))
- x = args[args.index(key) + 1]
- val = ((x == nil) ? val : x)
- elsif(args.assoc(key))
- val = (args.assoc(key)[1] rescue val)
+
+ def start_dac(&body)
+ set_playing(false)
+ freq = @freq
+ amp = @amp
+ tempo = @tempo
+ index = @index
+ s1, s2, s3, s4 = false
+ reset_cb = lambda do |w, c, i|
+ set_scale_value(s1.scale, @freq = freq, 100.0)
+ set_scale_value(s2.scale, @amp = amp, 100.0)
+ set_scale_value(s3.scale, @tempo = tempo, 100.0)
+ set_scale_value(s4.scale, @index = index, 100.0)
end
- val
- end
-
- def seconds2samples(sec)
- sr = (mus_srate() rescue $clm_srate)
- (sec * sr).round
- end
-
- def envelope_interp(*args)
- x = args[0]
- env = args[1]
- base = args[2]
- if (not env) or env.empty?
- 0.0
- elsif x <= env[0] or env[2..-1].empty?
- env[1]
- elsif env[2] > x
- if env[1] == env[3] or (base and base == 0.0)
- env[1]
- elsif (not base) or base == 1.0
- env[1] + (x - env[0]) * ((env[3] - env[1]) / (env[2] - env[0]))
+ help_cb = lambda do |w, c, i| info_dialog(FM2name, FM2info) end
+ #
+ # -batch sets XtSetMappedWhenManaged(shell, 0)
+ # The "Quit Snd" button is only realized if -batch was given.
+ #
+ if get_xtvalue(main_widgets[Top_level_shell], RXmNmappedWhenManaged)
+ clear_cb = false
+ else
+ clear_cb = lambda do |w, c, i| exit(0) end
+ end
+ d = make_dialog(FM2name,
+ :reset_cb, reset_cb,
+ :clear_cb, clear_cb,
+ :help_cb, help_cb) do |w, c, i|
+ if set_playing(!playing)
+ play(body)
+ d.doit_string("Pause")
else
- env[1] + ((env[3] - env[1]) / (base - 1.0)) *
- ((base ** ((x - env[0]) / (env[2] - env[0]))) - 1.0)
+ d.doit_string("Play")
end
- else
- envelope_interp(x, env[2..-1])
end
- end
-
- include Math
-
- # simple violin, see snd/fm.html
- def make_rt_violin(dur = 1.0, freq = 440.0, amp = 0.3, *args)
- fm_index = get_args(args, :fm_index, 1.0)
- amp_env = get_args(args, :amp_env, [0, 0, 25, 1, 75, 1, 100, 0])
- frq_scl = hz2radians(freq)
- maxdev = frq_scl * fm_index
- index1 = maxdev * (5.0 / log(freq))
- index2 = maxdev * 3.0 * ((8.5 - log(freq)) / (3.0 + freq / 1000.0))
- index3 = maxdev * (4.0 / sqrt(freq))
- carrier = make_oscil(:frequency, freq)
- fmosc1 = make_oscil(:frequency, freq)
- fmosc2 = make_oscil(:frequency, freq * 3.0)
- fmosc3 = make_oscil(:frequency, freq * 4.0)
- ampf = make_env(:envelope, amp_env, :scaler, amp, :duration, dur)
- indf1 = make_env(:envelope, [0, 1, 25, 0.4, 75, 0.6, 100, 0], :scaler, index1, :duration, dur)
- indf2 = make_env(:envelope, [0, 1, 25, 0.4, 75, 0.6, 100, 0], :scaler, index2, :duration, dur)
- indf3 = make_env(:envelope, [0, 1, 25, 0.4, 75, 0.6, 100, 0], :scaler, index3, :duration, dur)
- pervib = make_triangle_wave(:frequency, 0.5, :amplitude, 0.0025 * frq_scl)
- ranvib = make_rand_interp(:frequency, 16.0, :amplitude, 0.005 * frq_scl)
- lambda do | |
- vib = triangle_wave(pervib) + rand_interp(ranvib)
- env(ampf) * oscil(carrier,
- vib + env(indf1) * oscil(fmosc1, vib) +
- env(indf2) * oscil(fmosc2, 3.0 * vib) +
- env(indf3) * oscil(fmosc3, 4.0 * vib))
+ name = "carrier freqency"
+ s1 = d.add_slider(name, @low_freq, freq, @high_freq, 100) do |w, c, i|
+ @freq = get_scale_value(w, i, 100.0)
+ end
+ name = "amplitude"
+ s2 = d.add_slider(name, 0, amp, 1, 100) do |w, c, i|
+ @amp = get_scale_value(w, i, 100.0)
+ end
+ name = "tempo"
+ s3 = d.add_slider(name, @low_tempo, tempo, @high_tempo, 100) do |w, c, i|
+ @tempo = get_scale_value(w, i, 100.0)
+ end
+ name = "fm index"
+ s4 = d.add_slider(name, 0, index, @high_index, 100) do |w, c, i|
+ @index = get_scale_value(w, i, 100.0)
+ end
+ if clear_cb
+ d.clear_string("Quit Snd")
end
+ d.doit_string("Play")
+ set_sensitive(d.okay_button, true)
+ RXtManageChild(d.dialog)
end
-end
-# class Agn is a simplified translation of clm/bess5.cl and
-# clm/clm-example.lisp.
-class Agn
- include Bess_utils
-
- def initialize
- @tempo = 0.25
- @amp = 1.0
- @freq = 1.0
- @index = 1.0
- @play = false
- @lim = 256
- @time = 60
- @octs = Array.new(@lim + 1) do |i| (4 + 2 * rbell(rbm_random(1.0))).floor end
- @rhys = Array.new(@lim + 1) do |i| (4 + 6 * rbm_random(1.0)).floor end
- @amps = Array.new(@lim + 1) do |i| (1 + 8 * rbell(rbm_random(1.0))).floor end
- @pits = Array.new(@lim + 1) do |i|
- [0, 0, 2, 4, 11, 11, 5, 6, 7, 9, 2, 0, 0].at((12 * rbm_random(1.0)).floor)
+ # see clm-2/bess5.cl
+ def make_agn
+ lim = 256
+ mode = [0, 0, 2, 4, 11, 11, 5, 6, 7, 9, 2, 0, 0]
+ @octs = Array.new(lim + 1) do |i|
+ 4 + 2 * rbell(rbm_random(1.0)).floor
end
- @begs = Array.new(@lim + 1) do |i|
+ @pits = Array.new(lim + 1) do |i|
+ mode[(12.0 * rbm_random(1.0)).floor]
+ end
+ @rhys = Array.new(lim + 1) do |i|
+ 4 + 6 * rbm_random(1.0).floor
+ end
+ @begs = Array.new(lim + 1) do |i|
if rbm_random(1.0) < 0.9
- (4 + 2 * rbm_random(1.0)).floor
+ 4 + 2 * rbm_random(1.0).floor
else
- (6 * rbm_random(4.0)).floor
+ 6 * rbm_random(4.0).floor
end
end
- end
-
- # called by XtAppAddWorkProc
- def rt_send2dac(func)
- if @play
- mus_audio_write($output, vct2sound_data(vct_map!(make_vct($clm_rt_bufsize), func.call),
- make_sound_data(1, $clm_rt_bufsize), 0),
- $clm_rt_bufsize)
- false
- else
- mus_audio_close($output)
- $output = nil
- true
+ @amps = Array.new(lim + 1) do |i|
+ 1 + 8 * rbell(rbm_random(1.0)).floor
end
- end
-
- # see clm/rt.lisp
- def make_vct_test(*args)
- srate = get_args(args, :srate, $clm_srate)
- bufsize = get_args(args, :bufsize, $clm_rt_bufsize)
- sample_type = get_args(args, :sample_type, $clm_sample_type)
- $clm_srate = set_mus_srate(srate).to_i
- $clm_rt_bufsize = bufsize
- $output = mus_audio_open_output(Mus_audio_default, srate, 1, sample_type, bufsize * 2)
- mode = [0, 12, 2, 4, 14, 4, 5, 5, 0, 7, 7, 11, 11]
- pits = Array.new(@lim + 1) do rbm_random(12.0).floor end
- begs = Array.new(@lim + 1) do 1 + rbm_random(3.0).floor end
- cellbeg, cellsiz, cellctr = 0, 6, 0
- func = nil
- len = dur = 0
- lambda do | |
- if len > 1
- len -= 1
- else
- dur = @tempo * begs[cellctr + 1]
- cellctr += 1
- if cellctr > (cellsiz + cellbeg)
- cellbeg += 1 if rbm_random(1.0) > 0.5
- cellsiz += 1 if rbm_random(1.0) > 0.5
- cellctr = cellbeg
+ @cellctr = 0
+ @cellsiz = 1
+ @cellbeg = 0
+ @whichway = 1
+ @beg = 0.0
+ @len = 0
+ @v = lambda do |y| 0.0 end
+ end
+
+ def agn
+ if @len > 1
+ @len -= 1
+ else
+ bg = @beg
+ @beg += [0.025, @tempo * (0.95 + rbm_random(0.1)) * @begs[@cellctr]].max
+ dur = [0.025, @tempo * (0.85 + rbm_random(0.1)) * @rhys[@cellctr]].max
+ freq = @freq * 16.351 * tune(@pits[@cellctr]) * 2.0 ** @octs[@cellctr]
+ amp = @amp * [0.003, @amps[@cellctr] * 0.01].max
+ ind = @index * rbm_random(1.0) * 3.0
+ @len = seconds2samples(dur)
+ @v = make_fm_violin(bg, dur, freq, amp, :fm_index, ind)
+ @cellctr += 1
+ if @cellctr > (@cellsiz + @cellbeg)
+ @cellbeg += 1
+ if rbm_random(1.0) > 0.5
+ @cellsiz += @whichway
end
- func = make_rt_violin(dur, @freq * 16.351 * 16 * 2 ** (mode[pits[cellctr]] / 12.0),
- @amp * 0.3, :fm_index, @index)
- len = (seconds2samples(dur) / bufsize).ceil
- end
- func
- end
- end
-
- def tune(x)
- [1.0, 256.0 / 243, 9.0 / 8, 32.0 / 27, 81.0 / 64,
- 4.0 / 3, 1024.0 / 729, 3.0 / 2, 128.0 / 81, 27.0 / 16,
- 16.0 / 9, 243.0 / 128, 2.0].at(x % 12) * 2 ** x.divmod(12).first
- end
-
- def rbell(x)
- envelope_interp(x * 100, [0, 0, 10, 0.25, 90, 1.0, 100, 1.0])
- end
-
- # see clm/bess5.cl
- def make_agn(*args)
- srate = get_args(args, :srate, $clm_srate)
- bufsize = get_args(args, :bufsize, $clm_rt_bufsize)
- sample_type = get_args(args, :sample_type, $clm_sample_type)
- $clm_srate = set_mus_srate(srate).to_i
- $clm_rt_bufsize = bufsize
- $output = mus_audio_open_output(Mus_audio_default, srate, 1, sample_type, bufsize * 2)
- die("can't open DAC (%s)", $output.inspect) if $output < 0
- wins = [[0, 0, 40, 0.1, 60, 0.2, 75, 0.4, 82, 1, 90, 1, 100, 0],
- [0, 0, 60, 0.1, 80, 0.2, 90, 0.4, 95, 1, 100, 0],
- [0, 0, 10, 1, 16, 0, 32, 0.1, 50, 1, 56, 0, 60, 0, 90, 0.3, 100, 0],
- [0, 0, 30, 1, 56, 0, 60, 0, 90, 0.3, 100, 0],
- [0, 0, 50, 1, 80, 0.3, 100, 0],
- [0, 0, 40, 0.1, 60, 0.2, 75, 0.4, 82, 1, 90, 1, 100, 0],
- [0, 0, 40, 0.1, 60, 0.2, 75, 0.4, 82, 1, 90, 1, 100, 0],
- [0, 0, 10, 1, 32, 0.1, 50, 1, 90, 0.3, 100, 0],
- [0, 0, 60, 0.1, 80, 0.3, 95, 1, 100, 0],
- [0, 0, 80, 0.1, 90, 1, 100, 0]]
- cellbeg, cellsiz, cellctr, whichway = 0, 4, 0, 1
- nextbeg = beg = 0.0
- func = nil
- len = dur = 0
- lambda do | |
- if len > 1
- len -= 1
- else
- beg += nextbeg
- nextbeg += [0.025, @tempo * (0.95 + rbm_random(0.1)) * @begs[cellctr]].max
- dur = [0.025, @tempo * (0.85 + rbm_random(0.1)) * @rhys[cellctr]].max
- freq = @freq * 16.351 * tune(@pits[cellctr]) * 2 ** @octs[cellctr]
- dur += dur if freq < 100
- ampl = @amp * 10 * [0.003, @amps[cellctr] * 0.01].max
- ind = @index * rbm_random(1.0) * 3.0
- cellctr += 1
- if cellctr > (cellsiz + cellbeg)
- cellbeg += 1
- if rbm_random(1.0) > 0.5
- cellsiz += whichway
- end
- if cellsiz > 10 and rbm_random(1.0) > 0.99
- whichway = -2
- if cellsiz > 6 and rbm_random(1.0) > 0.999
- whichway = -1
- if cellsiz < 4
- whichway = 1
- end
- end
- end
- nextbeg += rbm_random(1.0)
- cellctr = cellbeg
+ if @cellsiz > 10 and rbm_random(1.0) > 0.99
+ @whichway = -2
+ elsif @cellsiz > 6 and rbm_random(1.0) > 0.999
+ @whichway = -1
+ elsif @cellsiz < 4
+ @whichway = 1
end
- func = make_rt_violin(dur, freq, ampl, :fm_index, ind,
- :amp_env, wins[(10 * (beg - beg.floor)).floor])
- len = (seconds2samples(dur) / bufsize).ceil
- end
- func
- end
- end
-end
-
-class Bess < Agn
- rbm_require "libxm"
-
- def initialize
- super
- @sliderback = "lightsteelblue"
- @background = "lightsteelblue1"
- @which = @proc = nil
- @shell_app = @form = nil
- @tl = @ts = @fl = @fs = @al = @as = @il = @is = nil
- 1.upto(15) do |i|
- trap(i) do |sig|
- puts "\nSignal #{sig} received. Process #{$$} canceled."
- RXtRemoveWorkProc(@proc) if @proc
- exit 0
+ @beg += rbm_random(1.0)
+ @cellctr = @cellbeg
end
end
- end
-
- def get_color(color)
- col = RXColor()
- dpy = RXtDisplay(@shell_app[0])
- cmap = RDefaultColormap(dpy, RDefaultScreen(dpy))
- warn("Can't allocate #{color.inspect}!") if RXAllocNamedColor(dpy, cmap, color, col, col).zero?
- Rpixel(col)
+ @v.call(0)
end
- def set_label(wid, *args)
- RXtVaSetValues(wid, [RXmNlabelString, RXmStringCreate(format(*args), RXmFONTLIST_DEFAULT_TAG)])
+ private
+ def rbm_random(r)
+ mus_random(r).abs
end
-
- def make_label(wid, name)
- RXtCreateManagedWidget(name, RxmLabelWidgetClass, @form,
- [RXmNleftAttachment, RXmATTACH_FORM,
- RXmNbottomAttachment, RXmATTACH_NONE,
- RXmNtopAttachment, RXmATTACH_WIDGET,
- RXmNtopWidget, wid,
- RXmNrightAttachment, RXmATTACH_NONE,
- RXmNalignment, RXmALIGNMENT_END,
- RXmNrecomputeSize, false,
- RXmNbackground, get_color(@background)])
- end
-
- def make_scale_label(wid)
- RXtCreateManagedWidget("label", RxmLabelWidgetClass, @form,
- [RXmNleftAttachment, RXmATTACH_WIDGET,
- RXmNleftWidget, wid,
- RXmNbottomAttachment, RXmATTACH_NONE,
- RXmNtopAttachment, RXmATTACH_OPPOSITE_WIDGET,
- RXmNtopWidget, wid,
- RXmNrightAttachment, RXmATTACH_NONE,
- RXmNbackground, get_color(@background)])
+
+ def tune(r)
+ [1.0, 256.0 / 243, 9.0 / 8, 32.0 / 27, 81.0 / 64,
+ 4.0 / 3, 1024.0 / 729, 3.0 / 2, 128.0 / 81, 27.0 / 16,
+ 16.0 / 9, 243.0 / 128, 2.0].at(r % 12) * 2.0 ** r.divmod(12).first
end
- def make_scale(wid)
- RXtCreateManagedWidget("scale", RxmScaleWidgetClass, @form,
- [RXmNleftAttachment, RXmATTACH_WIDGET,
- RXmNleftWidget, wid,
- RXmNbottomAttachment, RXmATTACH_NONE,
- RXmNtopAttachment, RXmATTACH_OPPOSITE_WIDGET,
- RXmNtopWidget, wid,
- RXmNrightAttachment, RXmATTACH_FORM,
- RXmNshowValue, false,
- RXmNorientation, RXmHORIZONTAL,
- RXmNheight, 20,
- RXmNbackground, get_color(@sliderback)])
+ def rbell(x)
+ envelope_interp(x * 100.0, [0, 0.0, 10, 0.25, 90, 1.0, 100, 1.0])
end
+end
- # return label and scale widget
- def make_scales(wid, name, val, callback)
- label = make_scale_label(make_label(wid, name))
- scale = make_scale(label)
- set_label(label, val.kind_of?(Integer) ? "%4d" : "%4.3f", val)
- RXtAddCallback(scale, RXmNdragCallback, callback, label)
- RXtAddCallback(scale, RXmNvalueChangedCallback, callback ,label)
- [label, scale]
- end
+def agn
+ f = FM_Forever2.new
+ f.make_agn
+ f.start_dac do f.agn end
+end
- def do_play(*args)
- if @play
- case @which
- when :agn
- func = make_agn(*args)
- when :vct_test
- func = make_vct_test(*args)
- else
- func = make_agn(*args)
+# see clm-2/rt.lisp
+def rt_test(time = 30)
+ lim = 256
+ mode = [0, 12, 2, 4, 14, 4, 5, 5, 0, 7, 7, 11, 11]
+ pits = Array.new(lim + 1) do
+ mus_random(12.0).abs.floor
+ end
+ begs = Array.new(lim + 1) do
+ 1 + mus_random(3.0).abs.floor
+ end
+ with_dac do
+ cellbeg = 0
+ cellsiz = 6
+ cellctr = 0
+ mytempo = 0.3
+ beg = 0.0
+ while beg < time and cellctr < lim
+ dur = mytempo * begs[cellctr + 1]
+ beg += dur
+ frq = 16.351 * 16.0 * 2.0 ** (mode[pits[cellctr]] / 12.0)
+ cellctr += 1
+ if cellctr > (cellsiz + cellbeg)
+ cellbeg += 1 if mus_random(1.0).abs > 0.5
+ cellsiz += 1 if mus_random(1.0).abs > 0.5
+ cellctr = cellbeg
end
- @proc = RXtAppAddWorkProc(@shell_app[1], lambda do |c| rt_send2dac(func) end)
- else
- RXtRemoveWorkProc(@proc) if @proc
+ fm_violin(beg, dur, frq, 0.25)
end
end
-
- def set_defaults(parent)
- @tempo = 0.25
- @amp = 1.0
- @freq = 1.0
- @index = 1.0
- low_tempo = 0.05
- high_tempo = 0.5
- low_freq = 0.1
- high_freq = 4.0
- high_index = 2.0
- set_label(@tl, "%4.3f", @tempo)
- RXmScaleSetValue(@ts, (100 * (@tempo - low_tempo) / (high_tempo - low_tempo)).round)
- set_label(@fl, "%4.3f", @freq)
- RXmScaleSetValue(@fs, (100 * (@freq - low_freq) / (high_freq - low_freq)).round)
- set_label(@al, "%4.3f", @amp)
- RXmScaleSetValue(@as, (100 * @amp).round)
- set_label(@il, "%4.3f", @index)
- RXmScaleSetValue(@is, (100 * (@index / high_index)).round)
- end
-
- def start(*args)
- @play = get_args(args, :play, false)
- @which = get_args(args, :which, :agn)
- # rest args are going to make_vct_test() or make_agn()
- cargs = [$0] + $*
- @shell_app = RXtVaOpenApplication("FM", cargs.length, cargs, RapplicationShellWidgetClass,
- [RXmNallowShellResize, true, RXmNtitle, "FM forever!"])
- RXtAddEventHandler(@shell_app[0], 0, true,
- lambda do |w, c, i, f| R_XEditResCheckMessages(w, c, i, f) end)
- @form = RXtCreateManagedWidget("form", RxmFormWidgetClass, @shell_app[0],
- [RXmNresizePolicy, RXmRESIZE_GROW,
- RXmNbackground, get_color(@background)])
- play = RXtCreateManagedWidget("play", RxmToggleButtonWidgetClass, @form,
- [RXmNtopAttachment, RXmATTACH_FORM,
- RXmNleftAttachment, RXmATTACH_FORM,
- RXmNrightAttachment, RXmATTACH_NONE,
- RXmNbottomAttachment, RXmATTACH_NONE,
- RXmNbackground, get_color(@background)])
- radio = RXmCreateRadioBox(@form, "radio",
- [RXmNorientation, RXmHORIZONTAL,
- RXmNtopAttachment, RXmATTACH_FORM,
- RXmNleftAttachment, RXmATTACH_WIDGET,
- RXmNleftWidget, play,
- RXmNrightAttachment, RXmATTACH_NONE,
- RXmNbottomAttachment, RXmATTACH_NONE,
- RXmNbackground, get_color(@background)])
- p_agn = RXtCreateManagedWidget("agn", RxmToggleButtonWidgetClass, radio,
- [RXmNtopAttachment, RXmATTACH_FORM,
- RXmNleftAttachment, RXmATTACH_FORM,
- RXmNrightAttachment, RXmATTACH_NONE,
- RXmNbottomAttachment, RXmATTACH_NONE,
- RXmNbackground, get_color(@background)])
- p_test = RXtCreateManagedWidget("test", RxmToggleButtonWidgetClass, radio,
- [RXmNtopAttachment, RXmATTACH_FORM,
- RXmNleftAttachment, RXmATTACH_WIDGET,
- RXmNleftWidget, p_agn,
- RXmNrightAttachment, RXmATTACH_NONE,
- RXmNbottomAttachment, RXmATTACH_NONE,
- RXmNbackground, get_color(@background)])
- quit = RXtCreateManagedWidget(" quit ", RxmPushButtonWidgetClass, @form,
- [RXmNtopAttachment, RXmATTACH_FORM,
- RXmNleftAttachment, RXmATTACH_WIDGET,
- RXmNleftWidget, radio,
- RXmNrightAttachment, RXmATTACH_FORM,
- RXmNbottomAttachment, RXmATTACH_NONE,
- RXmNbackground, get_color(@background)])
- sep = RXtCreateManagedWidget("sep", RxmSeparatorWidgetClass, @form,
- [RXmNleftAttachment, RXmATTACH_FORM,
- RXmNbottomAttachment, RXmATTACH_NONE,
- RXmNtopAttachment, RXmATTACH_WIDGET,
- RXmNtopWidget, radio,
- RXmNrightAttachment, RXmATTACH_FORM,
- RXmNheight, 4,
- RXmNorientation, RXmHORIZONTAL])
- RXmToggleButtonSetState(play, @play, true)
- RXtAddCallback(play, RXmNvalueChangedCallback,
- lambda do |w, c, i|
- @play = Rset(i)
- set_defaults(sep) if @play
- do_play(*args)
- end)
- RXmToggleButtonSetState(p_agn, @which == :agn, true)
- RXtAddCallback(p_agn, RXmNvalueChangedCallback,
- lambda do |w, c, i|
- @which = c if Rset(i)
- @play = false
- RXmToggleButtonSetState(play, @play, true)
- end, :agn)
- RXmToggleButtonSetState(p_test, @which == :vct_test, true)
- RXtAddCallback(p_test, RXmNvalueChangedCallback,
- lambda do |w, c, i|
- @which = c if Rset(i)
- @play = false
- RXmToggleButtonSetState(play, @play, true)
- end, :vct_test)
- RXtAddCallback(quit, RXmNactivateCallback,
- lambda do |w, c, i|
- RXtRemoveWorkProc(@proc) if @proc
- exit 0
- end)
- low_tempo = 0.05
- high_tempo = 0.5
- low_freq = 0.1
- high_freq = 4.0
- high_index = 2.0
- @tl, @ts = make_scales(sep, " tempo:", @tempo,
- lambda do |w, c, i|
- @tempo = low_tempo + Rvalue(i) * (high_tempo - low_tempo) * 0.01
- set_label(c, "%4.3f", @tempo)
- end)
- RXmScaleSetValue(@ts, (100 * (@tempo - low_tempo) / (high_tempo - low_tempo)).round)
- @fl, @fs = make_scales(@ts, " freq:", @freq,
- lambda do |w, c, i|
- @freq = low_freq + Rvalue(i) * ((high_freq - low_freq) * 0.01)
- set_label(c, "%4.3f", @freq)
- end)
- RXmScaleSetValue(@fs, (100 * (@freq - low_freq) / (high_freq - low_freq)).round)
- @al, @as = make_scales(@fs, " amp:", @amp,
- lambda do |w, c, i|
- @amp = Rvalue(i) * 0.01
- set_label(c, "%4.3f", @amp)
- end)
- RXmScaleSetValue(@as, (100 * @amp).round)
- @il, @is = make_scales(@as, " index:", @index,
- lambda do |w, c, i|
- @index = Rvalue(i) * high_index * 0.01
- set_label(c, "%4.3f", @index)
- end)
- RXmScaleSetValue(@is, (100 * (@index / high_index)).round)
- do_play(*args)
- RXtManageChild(radio)
- RXtRealizeWidget(@shell_app[0])
- RXtAppMainLoop(@shell_app[1])
- end
end
-begin
- # Bess.new.start(:srate, $clm_srate,
- # :bufsize, $clm_rt_bufsize,
- # :sample_type, $clm_sample_type,
- # :which, :agn,
- # :play, false)
- Bess.new.start
-end
+# agn
+# rt_test
# bess1.rb ends here
diff --git a/clm.c b/clm.c
index bc5e915..2e8f5d6 100644
--- a/clm.c
+++ b/clm.c
@@ -49,6 +49,35 @@
#define TWO_PI (2.0 * M_PI)
#endif
+#if (!USE_SND)
+#define mus_clear_floats(Arr, Len) \
+ do { \
+ mus_long_t K; \
+ mus_float_t *dst; \
+ dst = Arr; \
+ for (K = Len; K > 0; K--) \
+ *dst++ = 0.0; \
+ } while (0)
+#define mus_copy_floats(Dst, Src, Len) \
+ do { \
+ mus_long_t K; \
+ mus_float_t *dst, *src; \
+ dst = Dst; \
+ src = Src; \
+ for (K = Len; K > 0; K--) \
+ *dst++ = *src++; \
+ } while (0)
+#define mus_add_floats(Dst, Src, Len) \
+ do { \
+ mus_long_t K; \
+ mus_float_t *dst, *src; \
+ dst = Dst; \
+ src = Src; \
+ for (K = Len; K > 0; K--) \
+ *dst++ += *src++; \
+ } while (0)
+#endif
+
struct mus_any_class {
int type;
char *name;
diff --git a/clm.fs b/clm.fs
index 1235eb3..b57d0f7 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: 18/01/02 07:20:24
+\ Changed: 18/01/06 06:54:06
\
-\ @(#)clm.fs 2.2 1/2/18
+\ @(#)clm.fs 2.4 1/6/18
\ clm-print ( fmt :optional args -- )
\ clm-message ( fmt :optional args -- )
@@ -345,7 +345,7 @@ set-current
previous
\ === Global User Variables (settable in ~/.snd_forth or ~/.fthrc) ===
-"fth 2018/01/02" value *clm-version*
+"fth 2018/01/06" value *clm-version*
mus-lshort value *clm-audio-format*
#f value *clm-comment*
1.0 value *clm-decay-time*
@@ -1246,45 +1246,47 @@ set-current
<'> noop alias end-run-gen
<'> hash-ref alias args@
-: run-gen-body { samp y -- y' }
- 0 0 { beg end }
- nil nil { args prc }
+: run-gen-body { samp -- res }
+ nil nil 0 0 { args prc beg end }
+ 0.0 { sum }
*dac-instruments* each to args
args 0 array-ref to prc
args 1 array-ref to beg
args 2 array-ref to end
samp beg end within if
- samp prc execute y f+ to y
+ samp prc execute sum f+ to sum
then
end-each
- y
+ sum
;
\ Returns a proc ( y -- res ) for use with map-channel.
\ Requires a filled *dac-instruments* variable, usually done with
\ run-gen-instrument ... end-run-gen prepared functions, see simp-gen
\ and violin-gen at the end of this file.
-: run-gen ( -- prc; y self -- y' )
+: run-gen ( -- prc; y self -- res )
*dac-instruments* empty? if
'with-sound-error
#( "%s: filled *dac-instruments* required"
get-func-name ) fth-throw
then
- 0 { len }
- *dac-instruments* each { el }
- el 2 array-ref len max to len
+ nil nil 0 0 0 { args prc beg end len }
+ *dac-instruments* each to args
+ args 2 array-ref len max to len
+ end-each
+ len 0.0 make-vct { v }
+ *dac-instruments* each to args
+ args 0 array-ref to prc
+ args 1 array-ref to beg
+ args 2 array-ref to end
+ end beg ?do
+ i prc execute v i rot object-set+!
+ loop
end-each
1 proc-create ( prc )
- 0 , len ,
- does> { y self -- val }
- self @ { samp }
- self cell+ @ { len }
- samp len <= if
- samp y run-gen-body ( y' )
- samp 1+ self !
- else
- 0.0
- then
+ v ,
+ does> { y self -- res }
+ self @ ( v ) cycle-ref y f+
;
previous
@@ -1622,7 +1624,7 @@ hide
self @ { samp }
self cell+ @ { len }
samp len <= if
- samp 0.0 run-gen-body ( sum )
+ samp run-gen-body ( sum )
samp 1+ self !
else
#f
diff --git a/configure b/configure
index 57b7dde..d5f5715 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 18.0.
+# Generated by GNU Autoconf 2.69 for snd 18.1.
#
# 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-18.tar.gz'
-PACKAGE_VERSION='18.0'
-PACKAGE_STRING='snd 18.0'
+PACKAGE_VERSION='18.1'
+PACKAGE_STRING='snd 18.1'
PACKAGE_BUGREPORT='bil@ccrma.stanford.edu'
PACKAGE_URL=''
@@ -1324,7 +1324,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 18.0 to adapt to many kinds of systems.
+\`configure' configures snd 18.1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1395,7 +1395,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of snd 18.0:";;
+ short | recursive ) echo "Configuration of snd 18.1:";;
esac
cat <<\_ACEOF
@@ -1514,7 +1514,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-snd configure 18.0
+snd configure 18.1
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1975,7 +1975,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 18.0, which was
+It was created by snd $as_me 18.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3322,7 +3322,7 @@ LOCAL_LANGUAGE="None"
GRAPHICS_TOOLKIT="None"
PACKAGE=Snd
-VERSION=18.0
+VERSION=18.1
#--------------------------------------------------------------------------------
# configuration options
@@ -4254,7 +4254,7 @@ $as_echo_n "checking for fftw3... " >&6; }
FFTW_CFLAGS="`$PKG_CONFIG fftw3 --cflags`"
$as_echo "#define HAVE_FFTW3 1" >>confdefs.h
- OPTIONAL_LIBRARIES="$OPTIONAL_LIBRARIES fftw3"
+ OPTIONAL_LIBRARIES="$OPTIONAL_LIBRARIES fftw-`$PKG_CONFIG fftw3 --modversion`"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
else
@@ -4304,7 +4304,7 @@ $as_echo_n "checking for gsl... " >&6; }
GSL_CFLAGS="`$PKG_CONFIG gsl --cflags`"
$as_echo "#define HAVE_GSL 1" >>confdefs.h
- OPTIONAL_LIBRARIES="$OPTIONAL_LIBRARIES gsl"
+ OPTIONAL_LIBRARIES="$OPTIONAL_LIBRARIES gsl-`$PKG_CONFIG gsl --modversion`"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
else
@@ -5094,35 +5094,58 @@ fi
if test "$ac_snd_gui_choice" = none ; then
if test x$PKG_CONFIG != xno ; then
- if $PKG_CONFIG gtk+-3.0 --exists ; then
- GTK_CFLAGS="`$PKG_CONFIG gtk+-3.0 --cflags`"
- GTK_LIBS="`$PKG_CONFIG gtk+-3.0 --libs`"
- GTK_LD_LIBS="`$PKG_CONFIG gtk+-3.0 --libs-only-L` `$PKG_CONFIG gtk+-3.0 --libs-only-l`"
- ac_snd_gui_choice=gtk
- else
- if $PKG_CONFIG gtk+-2.0 --exists ; then
- GTK_CFLAGS="`$PKG_CONFIG gtk+-2.0 --cflags`"
- GTK_LIBS="`$PKG_CONFIG gtk+-2.0 --libs`"
- GTK_LD_LIBS="`$PKG_CONFIG gtk+-2.0 --libs-only-L` `$PKG_CONFIG gtk+-2.0 --libs-only-l`"
- ac_snd_gui_choice=gtk
- fi
- fi
- fi
- if test "$ac_snd_gui_choice" = gtk ; then
- GX_FILES="GTK_O_FILES"
- GX_HEADERS="SND_G_HEADERS"
- $as_echo "#define USE_GTK 1" >>confdefs.h
- GRAPHICS_TOOLKIT="Gtk"
- if test x$PKG_CONFIG != xno ; then
- CAIRO_CFLAGS="`$PKG_CONFIG cairo --cflags-only-I`"
+ if test "$ac_snd_gui_choice" = none ; then
+ if $PKG_CONFIG gtk+-4.0 --exists ; then
+ GTK_CFLAGS="`$PKG_CONFIG gtk+-4.0 --cflags`"
+ GTK_LIBS="`$PKG_CONFIG gtk+-4.0 --libs`"
+ GTK_LD_LIBS="`$PKG_CONFIG gtk+-4.0 --libs-only-L` `$PKG_CONFIG gtk+-4.0 --libs-only-l`"
+ ac_snd_gui_choice=gtk
+ GRAPHICS_TOOLKIT=Gtk+-`$PKG_CONFIG gtk+-4.0 --modversion`
+ fi
+ fi
+
+ if test "$ac_snd_gui_choice" = none ; then
+ if $PKG_CONFIG gtk+-3.0 --exists ; then
+ GTK_CFLAGS="`$PKG_CONFIG gtk+-3.0 --cflags`"
+ GTK_LIBS="`$PKG_CONFIG gtk+-3.0 --libs`"
+ GTK_LD_LIBS="`$PKG_CONFIG gtk+-3.0 --libs-only-L` `$PKG_CONFIG gtk+-3.0 --libs-only-l`"
+ ac_snd_gui_choice=gtk
+ GRAPHICS_TOOLKIT=Gtk+-`$PKG_CONFIG gtk+-3.0 --modversion`
+ fi
+ fi
+
+ if test "$ac_snd_gui_choice" = none ; then
+ if $PKG_CONFIG gtk+-2.0 --exists ; then
+ GTK_CFLAGS="`$PKG_CONFIG gtk+-2.0 --cflags`"
+ GTK_LIBS="`$PKG_CONFIG gtk+-2.0 --libs`"
+ GTK_LD_LIBS="`$PKG_CONFIG gtk+-2.0 --libs-only-L` `$PKG_CONFIG gtk+-2.0 --libs-only-l`"
+ ac_snd_gui_choice=gtk
+ GRAPHICS_TOOLKIT=Gtk+-`$PKG_CONFIG gtk+-2.0 --modversion`
+ fi
+ fi
+
+
+ if test "$ac_snd_gui_choice" = gtk ; then
+ GX_FILES="GTK_O_FILES"
+ GX_HEADERS="SND_G_HEADERS"
+ $as_echo "#define USE_GTK 1" >>confdefs.h
+
+
+ if test x$PKG_CONFIG != xno ; then
+ CAIRO_CFLAGS="`$PKG_CONFIG cairo --cflags-only-I`"
+ fi
fi
fi
fi
+#--------------------------------------------------------------------------------
+# no GUI
+#--------------------------------------------------------------------------------
+
if test "$ac_snd_gui_choice" = none ; then
$as_echo "#define USE_NO_GUI 1" >>confdefs.h
@@ -5130,7 +5153,6 @@ if test "$ac_snd_gui_choice" = none ; then
GX_HEADERS="NO_GUI_HEADERS"
fi
-
# fallback on no-gui
if test "$with_gui" = no ; then
$as_echo "#define USE_NO_GUI 1" >>confdefs.h
@@ -5153,6 +5175,7 @@ fi
+
#--------------------------------------------------------------------------------
# OpenGL
#--------------------------------------------------------------------------------
@@ -5218,6 +5241,8 @@ fi
# Ruby
#--------------------------------------------------------------------------------
+# Yuri suggests: ruby -r rbconfig -e 'C = RbConfig::CONFIG' -e 'puts C["ruby_version"]' | sed -E 's|([[:digit:]]+\.[[:digit:]]+).*|\1|'
+
if test "$with_ruby" = yes ; then
if test x$PKG_CONFIG != xno ; then
@@ -5228,7 +5253,7 @@ if test "$with_ruby" = yes ; then
XEN_CFLAGS="-fPIC `$PKG_CONFIG ruby-2.5 --cflags`"
# this depends on building ruby itself with the --enable-shared flag
XEN_LIBS="`$PKG_CONFIG ruby-2.5 --libs`"
- LOCAL_LANGUAGE="Ruby"
+ LOCAL_LANGUAGE=Ruby-`$PKG_CONFIG ruby-2.5 --modversion`
ac_snd_extension_language=Ruby
fi
fi
@@ -5240,7 +5265,7 @@ if test "$with_ruby" = yes ; then
XEN_CFLAGS="-fPIC `$PKG_CONFIG ruby-2.4 --cflags`"
# this depends on building ruby itself with the --enable-shared flag
XEN_LIBS="`$PKG_CONFIG ruby-2.4 --libs`"
- LOCAL_LANGUAGE="Ruby"
+ LOCAL_LANGUAGE=Ruby-`$PKG_CONFIG ruby-2.4 --modversion`
ac_snd_extension_language=Ruby
fi
fi
@@ -5252,7 +5277,7 @@ if test "$with_ruby" = yes ; then
XEN_CFLAGS="-fPIC `$PKG_CONFIG ruby-2.3 --cflags`"
# this depends on building ruby itself with the --enable-shared flag
XEN_LIBS="`$PKG_CONFIG ruby-2.3 --libs`"
- LOCAL_LANGUAGE="Ruby"
+ LOCAL_LANGUAGE=Ruby-`$PKG_CONFIG ruby-2.3 --modversion`
ac_snd_extension_language=Ruby
fi
fi
@@ -5264,7 +5289,7 @@ if test "$with_ruby" = yes ; then
XEN_CFLAGS="-fPIC `$PKG_CONFIG ruby-2.2 --cflags`"
# this depends on building ruby itself with the --enable-shared flag
XEN_LIBS="`$PKG_CONFIG ruby-2.2 --libs`"
- LOCAL_LANGUAGE="Ruby"
+ LOCAL_LANGUAGE=Ruby-`$PKG_CONFIG ruby-2.2 --modversion`
ac_snd_extension_language=Ruby
fi
fi
@@ -5276,7 +5301,7 @@ if test "$with_ruby" = yes ; then
XEN_CFLAGS="-fPIC `$PKG_CONFIG ruby-2.1 --cflags`"
# this depends on building ruby itself with the --enable-shared flag
XEN_LIBS="`$PKG_CONFIG ruby-2.1 --libs`"
- LOCAL_LANGUAGE="Ruby"
+ LOCAL_LANGUAGE=Ruby-`$PKG_CONFIG ruby-2.1 --modversion`
ac_snd_extension_language=Ruby
fi
fi
@@ -5288,7 +5313,7 @@ if test "$with_ruby" = yes ; then
XEN_CFLAGS="-fPIC `$PKG_CONFIG ruby-2.0 --cflags`"
# this depends on building ruby itself with the --enable-shared flag
XEN_LIBS="`$PKG_CONFIG ruby-2.0 --libs`"
- LOCAL_LANGUAGE="Ruby"
+ LOCAL_LANGUAGE=Ruby-`$PKG_CONFIG ruby-2.0 --modversion`
ac_snd_extension_language=Ruby
fi
fi
@@ -5300,7 +5325,7 @@ if test "$with_ruby" = yes ; then
XEN_CFLAGS="-fPIC `$PKG_CONFIG ruby --cflags`"
# this depends on building ruby itself with the --enable-shared flag
XEN_LIBS="`$PKG_CONFIG ruby --libs`"
- LOCAL_LANGUAGE="Ruby"
+ LOCAL_LANGUAGE=Ruby-`$PKG_CONFIG ruby --modversion`
ac_snd_extension_language=Ruby
fi
fi
@@ -5312,7 +5337,7 @@ if test "$with_ruby" = yes ; then
XEN_CFLAGS="-fPIC `$PKG_CONFIG ruby-1.9.3 --cflags`"
# this depends on building ruby itself with the --enable-shared flag
XEN_LIBS="`$PKG_CONFIG ruby-1.9.3 --libs`"
- LOCAL_LANGUAGE="Ruby"
+ LOCAL_LANGUAGE=Ruby-`$PKG_CONFIG ruby-1.9.3 --modversion`
ac_snd_extension_language=Ruby
fi
fi
@@ -5324,7 +5349,7 @@ if test "$with_ruby" = yes ; then
XEN_CFLAGS="-fPIC `$PKG_CONFIG ruby-1.9 --cflags`"
# this depends on building ruby itself with the --enable-shared flag
XEN_LIBS="`$PKG_CONFIG ruby-1.9 --libs`"
- LOCAL_LANGUAGE="Ruby"
+ LOCAL_LANGUAGE=Ruby-`$PKG_CONFIG ruby-1.9 --modversion`
ac_snd_extension_language=Ruby
fi
fi
@@ -5336,7 +5361,7 @@ if test "$with_ruby" = yes ; then
XEN_CFLAGS="-fPIC `$PKG_CONFIG ruby-1.8 --cflags`"
# this depends on building ruby itself with the --enable-shared flag
XEN_LIBS="`$PKG_CONFIG ruby-1.8 --libs`"
- LOCAL_LANGUAGE="Ruby"
+ LOCAL_LANGUAGE=Ruby-`$PKG_CONFIG ruby-1.8 --modversion`
ac_snd_extension_language=Ruby
fi
fi
@@ -6792,7 +6817,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 18.0, which was
+This file was extended by snd $as_me 18.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -6854,7 +6879,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 18.0
+snd config.status 18.1
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/configure.ac b/configure.ac
index 722d223..da0b15e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5,7 +5,7 @@
# gmp, mpfr, and mpc deliberately have none!
-AC_INIT(snd, 18.0, bil@ccrma.stanford.edu, ftp://ccrma-ftp.stanford.edu/pub/Lisp/snd-18.tar.gz)
+AC_INIT(snd, 18.1, bil@ccrma.stanford.edu, ftp://ccrma-ftp.stanford.edu/pub/Lisp/snd-18.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=18.0
+VERSION=18.1
#--------------------------------------------------------------------------------
# configuration options
@@ -113,7 +113,7 @@ if test "$with_fftw" != no; then
FFTW_LIBS="`$PKG_CONFIG fftw3 --libs`"
FFTW_CFLAGS="`$PKG_CONFIG fftw3 --cflags`"
AC_DEFINE(HAVE_FFTW3)
- OPTIONAL_LIBRARIES="$OPTIONAL_LIBRARIES fftw3"
+ OPTIONAL_LIBRARIES="$OPTIONAL_LIBRARIES fftw-`$PKG_CONFIG fftw3 --modversion`"
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
@@ -158,7 +158,7 @@ if test "$with_gsl" != no; then
GSL_LIBS="`$PKG_CONFIG gsl --libs`"
GSL_CFLAGS="`$PKG_CONFIG gsl --cflags`"
AC_DEFINE(HAVE_GSL)
- OPTIONAL_LIBRARIES="$OPTIONAL_LIBRARIES gsl"
+ OPTIONAL_LIBRARIES="$OPTIONAL_LIBRARIES gsl-`$PKG_CONFIG gsl --modversion`"
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
@@ -260,41 +260,44 @@ fi
if test "$ac_snd_gui_choice" = none ; then
if test x$PKG_CONFIG != xno ; then
- if $PKG_CONFIG gtk+-3.0 --exists ; then
- GTK_CFLAGS="`$PKG_CONFIG gtk+-3.0 --cflags`"
- GTK_LIBS="`$PKG_CONFIG gtk+-3.0 --libs`"
- GTK_LD_LIBS="`$PKG_CONFIG gtk+-3.0 --libs-only-L` `$PKG_CONFIG gtk+-3.0 --libs-only-l`"
- ac_snd_gui_choice=gtk
- else
- if $PKG_CONFIG gtk+-2.0 --exists ; then
- GTK_CFLAGS="`$PKG_CONFIG gtk+-2.0 --cflags`"
- GTK_LIBS="`$PKG_CONFIG gtk+-2.0 --libs`"
- GTK_LD_LIBS="`$PKG_CONFIG gtk+-2.0 --libs-only-L` `$PKG_CONFIG gtk+-2.0 --libs-only-l`"
- ac_snd_gui_choice=gtk
- fi
- fi
- fi
- if test "$ac_snd_gui_choice" = gtk ; then
- GX_FILES="GTK_O_FILES"
- GX_HEADERS="SND_G_HEADERS"
- AC_DEFINE(USE_GTK)
- GRAPHICS_TOOLKIT="Gtk"
- if test x$PKG_CONFIG != xno ; then
- CAIRO_CFLAGS="`$PKG_CONFIG cairo --cflags-only-I`"
- AC_SUBST(CAIRO_CFLAGS)
+ m4_foreach([gtk_version], [[gtk+-4.0], [gtk+-3.0], [gtk+-2.0]],
+ [
+ if test "$ac_snd_gui_choice" = none ; then
+ if $PKG_CONFIG gtk_version --exists ; then
+ GTK_CFLAGS="`$PKG_CONFIG gtk_version --cflags`"
+ GTK_LIBS="`$PKG_CONFIG gtk_version --libs`"
+ GTK_LD_LIBS="`$PKG_CONFIG gtk_version --libs-only-L` `$PKG_CONFIG gtk_version --libs-only-l`"
+ ac_snd_gui_choice=gtk
+ GRAPHICS_TOOLKIT=Gtk+-`$PKG_CONFIG gtk_version --modversion`
+ fi
+ fi
+ ])
+
+ if test "$ac_snd_gui_choice" = gtk ; then
+ GX_FILES="GTK_O_FILES"
+ GX_HEADERS="SND_G_HEADERS"
+ AC_DEFINE(USE_GTK)
+
+ if test x$PKG_CONFIG != xno ; then
+ CAIRO_CFLAGS="`$PKG_CONFIG cairo --cflags-only-I`"
+ AC_SUBST(CAIRO_CFLAGS)
+ fi
fi
fi
fi
+#--------------------------------------------------------------------------------
+# no GUI
+#--------------------------------------------------------------------------------
+
if test "$ac_snd_gui_choice" = none ; then
AC_DEFINE(USE_NO_GUI)
GX_FILES="NO_GUI_O_FILES"
GX_HEADERS="NO_GUI_HEADERS"
fi
-
# fallback on no-gui
if test "$with_gui" = no ; then
AC_DEFINE(USE_NO_GUI)
@@ -303,6 +306,7 @@ if test "$with_gui" = no ; then
ac_snd_gui_choice=no
fi
+
AC_SUBST(XLIBS)
AC_SUBST(XFLAGS)
@@ -390,7 +394,7 @@ if test "$with_ruby" = yes ; then
XEN_CFLAGS="-fPIC `$PKG_CONFIG ruby_version --cflags`"
# this depends on building ruby itself with the --enable-shared flag
XEN_LIBS="`$PKG_CONFIG ruby_version --libs`"
- LOCAL_LANGUAGE="Ruby"
+ LOCAL_LANGUAGE=Ruby-`$PKG_CONFIG ruby_version --modversion`
ac_snd_extension_language=Ruby
fi
fi
diff --git a/gl.c b/gl.c
index b168cf7..87e6ea4 100644
--- a/gl.c
+++ b/gl.c
@@ -4455,7 +4455,7 @@ static void define_functions(void)
{
#if HAVE_SCHEME
static s7_pointer s_boolean, s_integer, s_real, s_any;
-static s7_pointer pl_bi, pl_bit, 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_t, pl_iiiiiit, pl_iiiiitiiit, pl_iiiiiiiit, pl_iiiiiiiiiiit, pl_iiiiiiit, pl_iiiiiiiiiit, pl_iiiiiiiiit, pl_prrrt, pl_prrrrtttrrt, pl_i, pl_tb, pl_bt, pl_pit, pl_ttr, pl_ttb, pl_tti, pl_ttri, pl_ttit, pl_ttir, pl_piit, pl_piiit, pl_ttiti, pl_ttrri, pl_ttrrri, pl_ttrriir, pl_ttititi, pl_ttititiiti, pl_tr, pl_trrrrt;
+static s7_pointer pl_i, pl_tb, pl_bt, pl_tr, pl_trrrrt, pl_iiiiiit, pl_iiiiitiiit, pl_iiiiiiiit, pl_iiiiiiiiiiit, pl_iiiiiiit, pl_iiiiiiiiiit, pl_iiiiiiiiit, pl_t, pl_prrrt, pl_prrrrtttrrt, 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_tiirrrrt, pl_tiiiiiiit, pl_tiiiiiiiit, pl_tirriirriit, pl_tiiiiiiiiit, pl_tiiiiiiiiiit, pl_tiiiiiit, pl_pit, pl_piit, pl_piiit, pl_ttr, pl_ttb, pl_tti, pl_ttri, pl_ttit, pl_ttir, pl_ttiti, pl_ttrri, pl_ttrrri, pl_ttrriir, pl_ttititi, pl_ttititiiti, pl_bi, pl_bit;
#if USE_MOTIF
static s7_pointer pl_pt, pl_pttit, pl_tttti, pl_ttttb;
#endif
@@ -4465,15 +4465,21 @@ static s7_pointer pl_pt, pl_pttit, pl_tttti, pl_ttttb;
s_real = s7_make_symbol(s7, "real?");
s_any = s7_t(s7);
- pl_bi = s7_make_circular_signature(s7, 1, 2, s_boolean, s_integer);
- pl_bit = s7_make_circular_signature(s7, 2, 3, s_boolean, 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_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_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_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_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_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_tr = s7_make_circular_signature(s7, 1, 2, s_any, s_real);
+ pl_trrrrt = s7_make_circular_signature(s7, 5, 6, s_any, s_real, s_real, s_real, s_real, 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_t = s7_make_circular_signature(s7, 0, 1, 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_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);
@@ -4487,36 +4493,30 @@ static s7_pointer pl_pt, pl_pttit, pl_tttti, pl_ttttb;
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_t = s7_make_circular_signature(s7, 0, 1, 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_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_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_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_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_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_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_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_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_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_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);
- pl_tr = s7_make_circular_signature(s7, 1, 2, s_any, s_real);
- pl_trrrrt = s7_make_circular_signature(s7, 5, 6, s_any, s_real, s_real, s_real, s_real, s_any);
+ pl_bi = s7_make_circular_signature(s7, 1, 2, s_boolean, s_integer);
+ pl_bit = s7_make_circular_signature(s7, 2, 3, s_boolean, s_integer, s_any);
#if USE_MOTIF
pl_pt = s7_make_circular_signature(s7, 1, 2, s_any, s_any);
@@ -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("01-Jan-18"));
+ Xen_define("gl-version", C_string_to_Xen_string("11-Feb-18"));
gl_already_inited = true;
}
}
diff --git a/glistener.c b/glistener.c
index ccd0e5c..a008324 100644
--- a/glistener.c
+++ b/glistener.c
@@ -352,7 +352,9 @@ static int glistener_cursor(glistener *g, GtkTextIter *cursor)
void glistener_set_cursor_shape(glistener *g, GdkCursor *cursor_shape)
{
+#if (!GTK_CHECK_VERSION(3, 93, 0))
gdk_window_set_cursor(gtk_text_view_get_window(GTK_TEXT_VIEW(g->text), GTK_TEXT_WINDOW_TEXT), cursor_shape);
+#endif
}
diff --git a/grfsnd.html b/grfsnd.html
index ca35498..0f70459 100644
--- a/grfsnd.html
+++ b/grfsnd.html
@@ -1541,7 +1541,7 @@ if you have an executable file with:
</p>
<pre class="indented">
-#!/home/bil/test/snd-17/snd -l
+#!/home/bil/test/snd-18/snd -l
!#
(define a-test 32)
(display "hiho")
@@ -1552,12 +1552,12 @@ if you have an executable file with:
</p>
<pre class="indented">
-/home/bil/test/snd-17/ script
+/home/bil/test/snd-18/ script
hiho
&gt; a-test
32
&gt; (<a class=quiet href="extsnd.html#exit">exit</a>)
-/home/bil/test/snd-17/
+/home/bil/test/snd-18/
</pre>
<p>
@@ -1574,7 +1574,7 @@ writes the result as "test.snd":
<tr>
<td class="scheme">
<pre class="indented">
-#!/home/bil/snd-17/snd -l
+#!/home/bil/snd-18/snd -l
!#
(open-sound "oboe.snd")
(scale-by 2.0)
@@ -1585,7 +1585,7 @@ writes the result as "test.snd":
<td class="ruby">
<pre class="indented">
-#!/home/bil/snd-17/snd -batch
+#!/home/bil/snd-18/snd -batch
open_sound "oboe.snd"
scale_by 2.0
save_sound_as "test.snd"
@@ -1616,7 +1616,7 @@ as it scans the startup arguments (see snd-test.scm).
</p>
<pre class="indented">
-#!/home/bil/test/snd-17/snd -l
+#!/home/bil/test/snd-18/snd -l
!#
(if (= (length (<a class=quiet href="extsnd.html#scriptargs">script-args</a>)) 2) ;i.e. ("-l" "script")
(display "usage: script file-name...")
diff --git a/gtkex.scm b/gtkex.scm
index f88a993..f215ed7 100644
--- a/gtkex.scm
+++ b/gtkex.scm
@@ -1,4 +1,4 @@
-
+;;; this is not ready for use
(if (provided? 'gtk4)
(gtk_init)
(gtk_init 0 #f))
@@ -85,7 +85,8 @@
(if (provided? 'gtk4)
(gdk_window_set_event_compression (gtk_widget_get_window repl) #f)
- (gtk_widget_set_events repl GDK_ALL_EVENTS_MASK))
+ ;(gtk_widget_set_events repl GDK_ALL_EVENTS_MASK)
+ )
(g_signal_connect (G_OBJECT repl) "key_press_event" repl-key-press)
;; TODO in gtk4 I think repl-key-press receives 2 args
@@ -118,8 +119,10 @@ void libgtk_s7_init(s7_scheme *sc);
int main(int argc, char **argv)
{
s7_scheme *sc;
+
sc = s7_init();
libgtk_s7_init(sc);
+
s7_load(sc, "gtkex.scm");
}
diff --git a/index.html b/index.html
index 04b0c1a..7abc368 100644
--- a/index.html
+++ b/index.html
@@ -37,351 +37,352 @@
</head>
<body class="body">
<div class="topheader">Index</div>
-<!-- created 03-Oct-17 07:30 PDT -->
+<!-- created 04-Feb-18 09:32 PST -->
<table>
- <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><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#mainmenu">main-menu</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#scaleselectionby">scale-selection-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="extsnd.html#mainwidgets">main-widgets</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#scaleselectionto">scale-selection-to</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-abcos">make-abcos</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#scalesound">scale-sound</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-absin">make-absin</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#scaletempo">scale-tempo</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-sawtooth-wave">make-adjustable-sawtooth-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#scaleto">scale-to</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-square-wave">make-adjustable-square-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#scanchannel">scan-channel</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-adjustable-triangle-wave">make-adjustable-triangle-wave</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#dspdocscanned">scanned synthesis</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-all-pass">make-all-pass</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#scentroid">scentroid</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#makeallpassbank">make-all-pass-bank</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#scratch">scratch</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-asyfm">make-asyfm</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#scriptarg">script-arg</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#make-asymmetric-fm">make-asymmetric-fm</a></em></td><td></td><td><em class=tab> </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="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#makebandpass">make-bandpass</a></em></td><td></td><td class="green"><div class="centered">N</div></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#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="sndscm.html#makebandstop">make-bandstop</a></em></td><td></td><td><em class=tab> </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="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="sndclm.html#make-bess">make-bess</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#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#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#searchexamples"><b>Searching</b></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="sndscm.html#makebirds">make-birds</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="sndclm.html#secondstosamples">seconds-&gt;samples</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-blackman">make-blackman</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="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="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="extsnd.html#selectchannel">select-channel</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="s7.html#makebytevector">make-byte-vector</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#selectchannelhook">select-channel-hook</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="sndscm.html#makedropsite">make-channel-drop-site</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#selectsound">select-sound</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="extsnd.html#makecolor">make-color</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#selectsoundhook">select-sound-hook</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#make-comb">make-comb</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#selectedchannel">selected-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#makecombbank">make-comb-bank</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#selecteddatacolor">selected-data-color</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-convolve">make-convolve</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#selectedgraphcolor">selected-graph-color</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="sndclm.html#make-delay">make-delay</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#selectedsound">selected-sound</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="sndscm.html#makedifferentiator">make-differentiator</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#selection">selection</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-env">make-env</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#selectiontomix">selection-&gt;mix</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-eoddcos">make-eoddcos</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#selectionchans">selection-chans</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-ercos">make-ercos</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#selectioncolor">selection-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-erssb">make-erssb</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#selectioncontext">selection-context</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-fft-window">make-fft-window</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="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-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#selectionframples">selection-framples</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-filetosample">make-file-&gt;sample</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#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-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#selectionmaxampposition">selection-maxamp-position</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#make-filtered-comb">make-filtered-comb</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#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#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="sndscm.html#selectionmembers">selection-members</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-coeffs">make-fir-coeffs</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#selectionposition">selection-position</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-fir-filter">make-fir-filter</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="sndscm.html#selectionrms">selection-rms</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="sndclm.html#make-firmant">make-firmant</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#selectionsrate">selection-srate</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="extsnd.html#makefv">make-float-vector</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#selectionok">selection?</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-flocsig">make-flocsig</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#selectionstuff"><b>Selections</b></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-fmssb">make-fmssb</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#setsamples">set-samples</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#make-formant">make-formant</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="s7.html#setter">setter</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#makeformantbank">make-formant-bank</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#shortfilename">short-file-name</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-frampletofile">make-frample-&gt;file</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#showaxes">show-axes</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="sndclm.html#make-granulate">make-granulate</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#showcontrols">show-controls</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="extsnd.html#makegraphdata">make-graph-data</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="sndscm.html#showdiskspace">show-disk-space</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">make-green-noise</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#showfullduration">show-full-duration</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="sndclm.html#make-green-noise-interp">make-green-noise-interp</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#showfullrange">show-full-range</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="s7.html#makehashtable">make-hash-table</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="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#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#showindices">show-indices</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="sndscm.html#makehilberttransform">make-hilbert-transform</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#showlistener">show-listener</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="s7.html#makehook">make-hook</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="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="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#showmixwaveforms">show-mix-waveforms</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#makeintvector">make-int-vector</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#showselection">show-selection</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="s7.html#makeiterator">make-iterator</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#showselectiontransform">show-selection-transform</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-izcos">make-izcos</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#showsonogramcursor">show-sonogram-cursor</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-j0evencos">make-j0evencos</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#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-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#showwidget">show-widget</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-j2cos">make-j2cos</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="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-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="s7.html#signature">signature</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-jncos">make-jncos</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#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-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="sndscm.html#silencemixes">silence-mixes</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-jycos">make-jycos</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="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-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="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#filterwaveformcolor">filter-control-waveform-color</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#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="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-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="sndscm.html#sineenvchannel">sine-env-channel</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-k3sin">make-k3sin</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="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-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#singerdoc">singer</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="sndclm.html#make-locsig">make-locsig</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#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="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="extsnd.html#smoothselection">smooth-selection</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="extsnd.html#makemixsampler">make-mix-sampler</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="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-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#smoothexamples"><b>Smoothing</b></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-autocorrelation">make-moving-autocorrelation</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><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-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="sndscm.html#snapmarktobeat">snap-mark-to-beat</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-fft">make-moving-fft</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><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-max">make-moving-max</a></em></td><td></td><td class="green"><div class="centered">O</div></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="extsnd.html#finddialog">find-dialog</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><em class=tab> </em></td><td></td><td><em class=tab><a href="extsnd.html#sndtosample">snd-&gt;sample</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-pitch">make-moving-pitch</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#sndtosamplep">snd-&gt;sample?</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-scentroid">make-moving-scentroid</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#sndcolor">snd-color</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-moving-spectrum">make-moving-spectrum</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#snderror">snd-error</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-n1cos">make-n1cos</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#snderrorhook">snd-error-hook</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-nchoosekcos">make-nchoosekcos</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#sndfont">snd-font</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-ncos">make-ncos</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#sndgcs">snd-gcs</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-nkssb">make-nkssb</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#sndhelp">snd-help</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-noddcos">make-noddcos</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#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-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#sndopenedsound">*snd-opened-sound*</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-noddssb">make-noddssb</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#sndprint">snd-print</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-noid">make-noid</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="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-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#sndtempnam">snd-tempnam</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-nrcos">make-nrcos</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#sndurl">snd-url</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-nrsin">make-nrsin</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#sndurls">snd-urls</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-nrssb">make-nrssb</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#sndversion">snd-version</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-nrxycos">make-nrxycos</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#sndwarning">snd-warning</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-nrxysin">make-nrxysin</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#sndwarninghook">snd-warning-hook</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-nsin">make-nsin</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="sndscm.html#sndwarp">sndwarp</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-nsincos">make-nsincos</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="s7.html#sortb">sort!</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-nssb">make-nssb</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="sndclm.html#make-locsig"><b>Sound placement</b></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-nxy1cos">make-nxy1cos</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="sndscm.html#soundtoamp_env">sound-&gt;amp-env</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-nxy1sin">make-nxy1sin</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="extsnd.html#soundtointeger">sound-&gt;integer</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-nxycos">make-nxycos</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#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#fvmin">float-vector-min</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-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="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">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#soundfilesindirectory">sound-files-in-directory</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-pole-all-pass">make-one-pole-all-pass</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#soundinterp">sound-interp</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-one-zero">make-one-zero</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#soundloopinfo">sound-loop-info</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">make-oscil</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#soundproperties">sound-properties</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-bank">make-oscil-bank</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#soundproperty">sound-property</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-phase-vocoder">make-phase-vocoder</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#soundwidgets">sound-widgets</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="sndclm.html#make-pink-noise">make-pink-noise</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#soundp">sound?</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="sndscm.html#makepixmap">make-pixmap</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#soundfontinfo">soundfont-info</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="extsnd.html#makeplayer">make-player</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#sounds">sounds</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-polyoid">make-polyoid</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="sndscm.html#soundstosegmentdata">sounds-&gt;segment-data</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-polyshape">make-polyshape</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="extsnd.html#fvp">float-vector?</a></em></td><td></td><td><em class=tab><a href="sndclm.html#make-polywave">make-polywave</a></em></td><td></td><td class="green"><div class="centered">P</div></td><td></td><td><em class=tab><a href="sndscm.html#twotab">spectral interpolation</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-pulse-train">make-pulse-train</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="sndscm.html#spectralpolynomial">spectral-polynomial</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-pulsed-env">make-pulsed-env</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="extsnd.html#spectrohop">spectro-hop</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-r2k!cos">make-r2k!cos</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#spectroxangle">spectro-x-angle</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="sndclm.html#make-r2k2cos">make-r2k2cos</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#spectroxscale">spectro-x-scale</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="sndscm.html#makeramp">make-ramp</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#spectroyangle">spectro-y-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">make-rand</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#spectroyscale">spectro-y-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-rand-interp">make-rand-interp</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#spectrozangle">spectro-z-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-rcos">make-rcos</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#spectrozscale">spectro-z-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="sndclm.html#make-readin">make-readin</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="sndclm.html#spectrum">spectrum</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#makeregion">make-region</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="sndscm.html#spectrumtocoeffs">spectrum-&gt;coeffs</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="extsnd.html#makeregionsampler">make-region-sampler</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="extsnd.html#spectrumend">spectrum-end</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!cos">make-rk!cos</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#spectrumstart">spectrum-start</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-rk!ssb">make-rk!ssb</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#speedcontrol">speed-control</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-rkcos">make-rkcos</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#speedcontrolbounds">speed-control-bounds</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-rkoddssb">make-rkoddssb</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#speedstyle">speed-control-style</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-rksin">make-rksin</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#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-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="sndscm.html#spotfreq">spot-freq</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-round-interp">make-round-interp</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="sndclm.html#square-wave">square-wave</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-rssb">make-rssb</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="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-rxycos">make-rxycos</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="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!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="sndscm.html#squelchvowels">squelch-vowels</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-rxyk!sin">make-rxyk!sin</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#srate">srate</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-rxysin">make-rxysin</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#genericsrate"><b>srate (generic)</b></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="sndclm.html#make-sampletofile">make-sample-&gt;file</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="sndclm.html#src">src</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="extsnd.html#makesampler">make-sampler</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#srcchannel">src-channel</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="sndclm.html#make-sawtooth-wave">make-sawtooth-wave</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="sndscm.html#srcduration">src-duration</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="sndscm.html#makeselection">make-selection</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#srcfitenvelope">src-fit-envelope</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="sndclm.html#make-sinc-train">make-sinc-train</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#srcmixes">src-mixes</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="extsnd.html#makesndtosample">make-snd-&gt;sample</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="extsnd.html#srcsoundselection">src-selection</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#makesoundbox">make-sound-box</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#srcsound">src-sound</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="sndscm.html#makespencerfilter">make-spencer-filter</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="sndclm.html#src?">src?</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-square-wave">make-square-wave</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#ssb-am">ssb-am</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-src">make-src</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#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-ssb-am">make-ssb-am</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="sndscm.html#ssbbank">ssb-bank</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">make-table-lookup</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#ssbbankenv">ssb-bank-env</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-table-lookup-with-env">make-table-lookup-with-env</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#ssbfm">ssb-fm</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-tanhsin">make-tanhsin</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#startdac">start-dac</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-triangle-wave">make-triangle-wave</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="extsnd.html#startplaying">start-playing</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-pole">make-two-pole</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#startplayinghook">start-playing-hook</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="sndclm.html#make-two-zero">make-two-zero</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#startplayingselectionhook">start-playing-selection-hook</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="sndscm.html#makevariabledisplay">make-variable-display</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#startprogressreport">start-progress-report</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="extsnd.html#makevariablegraph">make-variable-graph</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#statusreport">status-report</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">make-wave-train</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#stdinprompt">stdin-prompt</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="sndclm.html#make-wave-train-with-env">make-wave-train-with-env</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="sndscm.html#stereotomono">stereo-&gt;mono</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="extsnd.html#mapchannel">map-channel</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#stereoflute">stereo-flute</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#mapsoundfiles">map-sound-files</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="extsnd.html#stopplayer">stop-player</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="sndscm.html#maracadoc">maracas</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#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#marktointeger">mark-&gt;integer</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#stopplayinghook">stop-playing-hook</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="extsnd.html#markclickhook">mark-click-hook</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#stopplayingselectionhook">stop-playing-selection-hook</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="sndscm.html#markclickinfo">mark-click-info</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#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#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="sndscm.html#stretchsoundviadft">stretch-sound-via-dft</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#markcontext">mark-context</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#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="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="s7.html#stringposition">string-position</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="sndscm.html#markexplode">mark-explode</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#sublet">sublet</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#markhome">mark-home</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="sndscm.html#superimposeffts">superimpose-ffts</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="extsnd.html#markhook">mark-hook</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="extsnd.html#swapchannels">swap-channels</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="sndscm.html#markloops">mark-loops</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#swapselectionchannels">swap-selection-channels</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#markname">mark-name</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="s7.html#symboltodynamicvalue">symbol-&gt;dynamic-value</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="sndscm.html#marknametoid">mark-name-&gt;id</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#symboltovalue">symbol-&gt;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#graph">graph</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#pqw">pqw</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="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#markproperty">mark-property</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#symboltable">symbol-table</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#marksample">mark-sample</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="extsnd.html#sync">sync</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="extsnd.html#marksync">mark-sync</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#genericsync"><b>sync (generic)</b></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="sndscm.html#marksynccolor">mark-sync-color</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="sndscm.html#sync-everything">sync-everything</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#marksyncmax">mark-sync-max</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#syncmax">sync-max</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#marktagheight">mark-tag-height</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#syncstyle">sync-style</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#marktagwidth">mark-tag-width</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#syncdmarks">syncd-marks</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#markp">mark?</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="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#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="sndscm.html#syncup">syncup</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="extsnd.html#emarks">marks</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="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#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 class="green"><div class="centered">T</div></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="sndscm.html#maxenvelope">max-envelope</a></em></td><td></td><td><em class=tab> </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#maxregions">max-regions</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#contrastcontrol">contrast-control</a></em></td><td></td><td><em class=tab> </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> </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#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#maxamp">maxamp</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="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#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#tanhsin?">tanhsin?</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#maxampposition">maxamp-position</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#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#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#tap?">tap?</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="extsnd.html#menuwidgets">menu-widgets</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="sndscm.html#telephone">telephone</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="sndscm.html#menusdoc">menus, optional</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#tempdir">temp-dir</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#mindb">min-dB</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#textfocuscolor">text-focus-color</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="extsnd.html#mix">mix</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#timegraphstyle">time-graph-style</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="sndscm.html#mixtofv">mix-&gt;float-vector</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="s7.html#hashtablep">hash-table?</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#timegraphp">time-graph?</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#mixamp">mix-amp</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="sndclm.html#timestosamples">times-&gt;samples</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="extsnd.html#mixampenv">mix-amp-env</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="extsnd.html#tinyfont">tiny-font</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="sndscm.html#mixchannel">mix-channel</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="sndscm.html#telephone">touch-tone</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="extsnd.html#mixclickhook">mix-click-hook</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="s7.html#trace">trace</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#mixclickinfo">mix-click-info</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#trackingcursors"><b>Tracking cursors</b></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="sndscm.html#mixclicksetsamp">mix-click-sets-amp</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="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#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#transformtofv">transform-&gt;float-vector</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#mixdialogmix">mix-dialog-mix</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#transformtointeger">transform-&gt;integer</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#mixdraghook">mix-drag-hook</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#transformdialog">transform-dialog</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#mixfiledialog">mix-file-dialog</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#transformframples">transform-framples</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#mixfv">mix-float-vector</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#transformgraphstyle">transform-graph-style</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#mixhome">mix-home</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#transformgraphtype">transform-graph-type</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="extsnd.html#mixlength">mix-length</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#transformgraphp">transform-graph?</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="sndscm.html#mixmaxamp">mix-maxamp</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#normalizefft">transform-normalization</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="extsnd.html#mixname">mix-name</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#transformsample">transform-sample</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="sndscm.html#mixnametoid">mix-name-&gt;id</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#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#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#transformtype">transform-type</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#mixproperties">mix-properties</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#transformp">transform?</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#mixproperty">mix-property</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="sndscm.html#transposemixes">transpose-mixes</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#mixregion">mix-region</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="s7.html#treecount">tree-count</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="s7.html#immutableb">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#regiontofv">region-&gt;float-vector</a></em></td><td></td><td><em class=tab><a href="s7.html#treecyclic">tree-cyclic?</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#immutablep">immutable?</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#regiontointeger">region-&gt;integer</a></em></td><td></td><td><em class=tab><a href="s7.html#treeleaves">tree-leaves</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="extsnd.html#gin">in</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#regionchans">region-chans</a></em></td><td></td><td><em class=tab><a href="s7.html#treememq">tree-memq</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#in-any">in-any</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#regionframples">region-framples</a></em></td><td></td><td><em class=tab><a href="s7.html#treesetmemq">tree-set-memq</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#ina">ina</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#regiongraphstyle">region-graph-style</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#inb">inb</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#regionhome">region-home</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="s7.html#cutlet">cutlet</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#mixsyncmax">mix-sync-max</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#tubebell">tubebell</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="grfsnd.html#initladspa">init-ladspa</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#regionmaxampposition">region-maxamp-position</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> </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#mixtagwidth">mix-tag-width</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-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#initialdur">initial-dur</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#regionposition">region-position</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="extsnd.html#initialgraphhook">initial-graph-hook</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="sndscm.html#regionrms">region-rms</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><a href="extsnd.html#dacfolding">dac-combines-channels</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#mixp">mix?</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="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="s7.html#inlet">inlet</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#regionsamplerQ">region-sampler?</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#datacolor">data-color</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#sndmixes"><b>Mixing</b></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="s7.html#typeof">type-of</a></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#insertfiledialog">insert-file-dialog</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#regionok">region?</a></em></td><td></td><td><em class=tab> </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#insertregion">insert-region</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#eregions">regions</a></em></td><td></td><td class="green"><div class="centered">U</div></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#insertsample">insert-sample</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#regionstuff"><b>Regions</b></a></em></td><td></td><td><em class=tab> </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#insertsamples">insert-samples</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#remembersoundstate">remember-sound-state</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="sndscm.html#variabledisplay"><b>Debugging (instruments)</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#mousedraghook">mouse-drag-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="s7.html#unboundvariablehook">*unbound-variable-hook*</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#insertsilence">insert-silence</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#removefrommenu">remove-from-menu</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#defaultoutputchans">default-output-chans</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#mouseenterlabelhook">mouse-enter-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#undo">undo</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#insertionexamples"><b>Insertions</b></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#reportmarknames">report-mark-names</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#defaultoutputsampletype">default-output-sample-type</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#mouseentertexthook">mouse-enter-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#undohook">undo-hook</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#intvectorref">int-vector-ref</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#resampleexamples"><b>Resampling</b></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="sndclm.html#defgenerator">defgenerator</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#mouseleavelabelhook">mouse-leave-label-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#unselectall">unselect-all</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#intvectorp">int-vector?</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="extsnd.html#resetcontrols">reset-controls</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#defineconstant">define-constant</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#mousleavetexthook">mouse-leave-text-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#updatehook">update-hook</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#integertomark">integer-&gt;mark</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="sndscm.html#reson">reson</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#expansion">define-expansion</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="sndclm.html#move-locsig">move-locsig</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="extsnd.html#updatesound">update-sound</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#integertoregion">integer-&gt;region</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="sndscm.html#reverbexamples"><b>Reverb</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="s7.html#definemacrostar">define-macro*</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="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><em class=tab><a href="extsnd.html#updatetransformgraph">update-transform-graph</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#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#reverbdecay">reverb-control-decay</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#definedp">defined?</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="sndscm.html#movesyncdmarks">move-syncd-marks</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#sndmotifdoc">user interface extensions</a></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#invertfilter">invert-filter</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> </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="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#reverbcontrollengthbounds">reverb-control-length-bounds</a></em></td><td></td><td class="green"><div class="centered">V</div></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#iterate">iterate</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> </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#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#reverbcontrolscale">reverb-control-scale</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#iteratorsequence">iterator-sequence</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#variablegraphp">variable-graph?</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#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#reverbcontrolp">reverb-control?</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#deletefilefilter">delete-file-filter</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="s7.html#reverseb">reverse!</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#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-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#viewfilesamp">view-files-amp</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-max?">moving-max?</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#viewfilesampenv">view-files-amp-env</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#deletemarks">delete-marks</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-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#viewfilesdialog">view-files-dialog</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> </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#reverseselection">reverse-selection</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#deletesamples">delete-samples</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#reversesound">reverse-sound</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#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-pitch?">moving-pitch?</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#viewfilesselectedfiles">view-files-selected-files</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#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#revertsound">revert-sound</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#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-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#viewfilesspeed">view-files-speed</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#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="sndclm.html#ring-modulate">ring-modulate</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#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-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="extsnd.html#viewmixesdialog">view-mixes-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="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#rk!cos?">rk!cos?</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#describemark">describe-mark</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-sum">moving-sum</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="extsnd.html#viewsound">view-sound</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#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#singerdoc">voice physical model</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="extsnd.html#musalsabuffersize">mus-alsa-buffer-size</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="sndscm.html#voicedtounvoiced">voiced-&gt;unvoiced</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#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><em class=tab><a href="sndscm.html#volterrafilter">volterra-filter</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#musalsacapturedevice">mus-alsa-capture-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="sndscm.html#fmvox">vox</a></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#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> </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#jpcos?">jpcos?</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#rksin">rksin</a></em></td><td></td><td class="green"><div class="centered">W</div></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="extsnd.html#justsounds">just-sounds</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> </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="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#rkssb">rkssb</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#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="sndclm.html#wave-train?">wave-train?</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-channel">mus-channel</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#wavelettype">wavelet-type</a></em></td></tr>
+ <tr><td><em class=tab><a href="sndscm.html#ditherchannel">dither-channel</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-channels">mus-channels</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="sndscm.html#pqwvox">waveshaping voice</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> </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#rmsenvelope">rms-envelope</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="s7.html#documentation">documentation</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="s7.html#rootlet">rootlet</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#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-close">mus-close</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="sndclm.html#weighted-moving-average">weighted-moving-average</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="sndclm.html#round-interp">round-interp</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="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-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#widgetsize">widget-size</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="sndclm.html#rssb">rssb</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#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="extsnd.html#muserrorhook">mus-error-hook</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#movingwindows"><b>Window size and position</b></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#rssb?">rssb?</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#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#musexpandfilename">mus-expand-filename</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="sndscm.html#windowsamples">window-samples</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="sndscm.html#kalmanfilterchannel">kalman-filter-channel</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="grfsnd.html#sndandruby"><b>Ruby</b></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#drawlines">draw-lines</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-feedforward">mus-feedforward</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#windowx">window-x</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#keybinding">key-binding</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#windowy">window-y</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#keypresshook">key-press-hook</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#rxyk!cos">rxyk!cos</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#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="sndclm.html#rxyk!cos?">rxyk!cos?</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="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="sndscm.html#musfilemix">mus-file-mix</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#withfilemonitor">with-file-monitor</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> </em></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="extsnd.html#withgl">with-gl</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#drophook">drop-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#musfloatequalfudgefactor">mus-float-equal-fudge-factor</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#withinsetgraph">with-inset-graph</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> </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#withinterrupts">with-interrupts</a></em></td></tr>
+ <tr><td><em class=tab> </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#musgeneratorp">mus-generator?</a></em></td><td></td><td><em class=tab> </em></td><td></td><td><em class=tab><a href="s7.html#with-let">with-let</a></em></td></tr>
+ <tr><td class="green"><div class="centered">E</div></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="extsnd.html#musheaderrawdefaults">mus-header-raw-defaults</a></em></td><td></td><td class="green"><div class="centered">S</div></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="s7.html#lambdastar">lambda*</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> </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><a href="extsnd.html#editlists"><b>Edit lists</b></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#musheadertypename">mus-header-type-name</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#withmixtags">with-mix-tags</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#leftsample">left-sample</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="extsnd.html#sample">sample</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#editheaderdialog">edit-header-dialog</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-increment">mus-increment</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#withrelativepanes">with-relative-panes</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#lettolist">let-&gt;list</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#withsmptelabel">with-smpte-label</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#letref">let-ref</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="extsnd.html#sampletype">sample-type</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#editposition">edit-position</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-interpolate">mus-interpolate</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="sndscm.html#withtemporaryselection">with-temporary-selection</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#lettemporarily">let-temporarily</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#samplerhome">sampler-home</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#editproperty">edit-property</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-location">mus-location</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#withtooltips">with-tooltips</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="sndclm.html#lineartodb">linear-&gt;db</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#samplerQ">sampler?</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#edits">edits</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#musmaxtablesize">mus-max-table-size</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#withverbosecursor">with-verbose-cursor</a></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#lintdoc">lint for scheme</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#samples">samples</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#lispgraphhook">lisp-graph-hook</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="sndclm.html#samplestoseconds">samples-&gt;seconds</a></em></td><td></td><td class="green"><div class="centered">X</div></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#lispgraphstyle">lisp-graph-style</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#sashcolor">sash-color</a></em></td><td></td><td><em class=tab> </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#lispgraphp">lisp-graph?</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#saveasdialogautocomment">save-as-dialog-auto-comment</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="sndclm.html#env">env</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="sndclm.html#mus-output?">mus-output?</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#xaxislabel">x-axis-label</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="grfsnd.html#listladspa">list-ladspa</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#savecontrols">save-controls</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="extsnd.html#envchannel">env-channel</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-ramp">mus-ramp</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#xbounds">x-bounds</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#listenercolor">listener-color</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#saveedithistory">save-edit-history</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="sndscm.html#envexptchannel">env-expt-channel</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-random">mus-random</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#xzoomslider">x-zoom-slider</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#listenerfont">listener-font</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#savehook">save-hook</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#envmixes">env-mixes</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-run">mus-run</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#xrampchannel">xramp-channel</a></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#listenerselection">listener-selection</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="sndscm.html#savemarkproperties">save-mark-properties</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#listenertextcolor">listener-text-color</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#savemarks">save-marks</a></em></td><td></td><td class="green"><div class="centered">Y</div></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#littleendianp">little-endian?</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#savemix">save-mix</a></em></td><td></td><td><em class=tab> </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#loadhook">*load-hook*</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#saveregion">save-region</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="sndclm.html#env?">env?</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#mussoundcomment">mus-sound-comment</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><a href="extsnd.html#yaxislabel">y-axis-label</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="sndscm.html#locatezero">locate-zero</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#saveselection">save-selection</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#envedclipping">enved-clip?</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#mussounddatumsize">mus-sound-datum-size</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="extsnd.html#ypositionslider">y-position-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-ref">locsig-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#savesound">save-sound</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#envedenvelope">enved-envelope</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#mussoundforget">mus-sound-forget</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> </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-reverb-set!">locsig-reverb-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#savesounddialog">save-sound-dialog</a></em></td><td></td><td class="green"><div class="centered">Z</div></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-set!">locsig-set!</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#savestate">save-state</a></em></td><td></td><td><em class=tab> </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-type">locsig-type</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#savestatefile">save-state-file</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#envedin-dB">enved-in-dB</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#mussoundloopinfo">mus-sound-loop-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#zecho">zecho</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="extsnd.html#logfreqstart">log-freq-start</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#saveexamples"><b>Saving</b></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#envedstyle">enved-style</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#mussoundmaxamp">mus-sound-maxamp</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#zeropad">zero-pad</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#lpcpredict">lpc-predict</a></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="sndclm.html#sawtooth-wave">sawtooth-wave</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#envedwaving">enved-wave?</a></em></td><td></td><td><em class=tab> </em></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="sndscm.html#zipsound">zip-sound</a></em></td></tr>
+ <tr><td><em class=tab><a href="extsnd.html#envedwaveformcolor">enved-waveform-color</a></em></td><td></td><td class="green"><div class="centered">M</div></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#scaleby">scale-by</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="sndclm.html#envelopeinterp">envelope-interp</a></em></td><td></td><td><em class=tab> </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#scalechannel">scale-channel</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="sndscm.html#envelopedmix">enveloped-mix</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#mussoundreportcache">mus-sound-report-cache</a></em></td><td></td><td><em class=tab><a href="sndscm.html#scaleenvelope">scale-envelope</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="extsnd.html#envexamples"><b>Envelopes</b></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#mussoundsampletype">mus-sound-sample-type</a></em></td><td></td><td><em class=tab><a href="sndscm.html#scalemixes">scale-mixes</a></em></td><td></td>
</tr>
</table>
diff --git a/libgtk_s7.c b/libgtk_s7.c
index 79e27ca..ede2aed 100644
--- a/libgtk_s7.c
+++ b/libgtk_s7.c
@@ -53,113 +53,113 @@ static void define_xm_obj(s7_scheme *sc)
s7_c_type_set_equal(sc, xm_obj_tag, s7_equalp_xm);
}
-static s7_pointer GtkContentFormats__sym, GtkStyleProvider__sym, GdkDisplay_gtk_invisible_get_display_sym, GtkInvisible__sym, GtkIconSize_sym,
- GValue_sym, GBytes__sym, GdkContentDeserializeFunc_sym, GdkContentDeserializer__sym, GdkContentSerializeFunc_sym,
- GdkContentSerializer__sym, GOutputStream__sym, GdkContentFormatsBuilder__sym, GdkContentFormatsBuilder_sym, GString__sym,
- va_list_sym, GdkTexture__sym, har___sym, GInputStream__sym, GAsyncResult__sym,
- GAsyncReadyCallback_sym, GCancellable__sym, GdkContentProvider__sym, GdkContentFormats__sym, GdkClipboard__sym,
- GdkAppLaunchContext__sym, GtkEventControllerScroll__sym, GtkEventControllerScrollFlags_sym, GtkSnapshot__sym, GdkTouchpadGesturePhase_sym,
- GdkNotifyType_sym, GdkCrossingMode_sym, GdkEventScroll__sym, GtkScrollbar__sym, GtkCenterBox__sym,
- GtkCheckButton__sym, GdkDrawContext__sym, GtkDrawingAreaDrawFunc_sym, GtkShortcutLabel__sym, GtkPadActionType_sym,
- GtkPadActionEntry__sym, GActionGroup__sym, GtkPadController__sym, GdkDevicePadFeature_sym, GdkDevicePad__sym,
- GdkDrawingContext__sym, GdkSubpixelLayout_sym, GdkMonitor__sym, GdkDeviceTool__sym, GdkAxisFlags_sym,
- GdkSeatGrabPrepareFunc_sym, GdkSeatCapabilities_sym, GdkGrabStatus_sym, GtkPopoverConstraint_sym, GtkShortcutsWindow__sym,
- GtkStackSidebar__sym, GtkSearchEntry__sym, GtkPopoverMenu__sym, GtkStyleContext__sym, GdkGLContext__sym,
- GtkGLArea__sym, GtkPropagationPhase_sym, GtkEventController__sym, GtkGestureZoom__sym, GtkGestureSwipe__sym,
- GtkGestureSingle__sym, GtkGestureRotate__sym, GtkGestureMultiPress__sym, GtkGesturePan__sym, GtkGestureDrag__sym,
- GdkEventSequence__sym, GtkEventSequenceState_sym, GtkGesture__sym, GtkAllocation__sym, GtkPopover__sym,
- GtkActionBar__sym, GtkFlowBox__sym, GtkFlowBoxChild__sym, GdkEventType_sym, GtkSearchBar__sym,
- GtkListBox__sym, GtkListBoxRow__sym, GtkHeaderBar__sym, GtkRevealerTransitionType_sym, GtkRevealer__sym,
- GtkStackTransitionType_sym, GtkStack__sym, GtkStackSwitcher__sym, GtkPlacesSidebar__sym, GtkPlacesOpenFlags_sym,
- GtkBaselinePosition_sym, GdkFullscreenMode_sym, GtkInputHints_sym, GtkInputPurpose_sym, GtkLevelBarMode_sym,
- GtkLevelBar__sym, GtkMenuButton__sym, GtkColorChooser__sym, GtkApplicationWindow__sym, GtkApplication__sym,
- GMenuModel__sym, guint___sym, GdkModifierIntent_sym, GtkFontChooser__sym, GdkScrollDirection_sym,
- GtkOverlay__sym, GtkWidgetPath__sym, GtkStateFlags_sym, GtkToolShell__sym, GtkWindowGroup__sym,
- GIcon__sym, GtkOrientable__sym, GtkCellArea__sym, GtkBorder__sym, GtkSwitch__sym,
- GtkScrollablePolicy_sym, GtkScrollable__sym, GtkGrid__sym, GdkRGBA__sym, GtkComboBoxText__sym,
- GtkAlign_sym, GtkSizeRequestMode_sym, cairo_region_overlap_t_sym, cairo_rectangle_int_t__sym, double__sym,
- cairo_rectangle_t__sym, cairo_device_t__sym, cairo_bool_t_sym, cairo_text_cluster_flags_t__sym, cairo_text_cluster_t___sym,
- cairo_glyph_t___sym, cairo_text_cluster_flags_t_sym, cairo_text_cluster_t__sym, cairo_region_t__sym, GtkMessageDialog__sym,
- GdkDevice__sym, GtkAccessible__sym, GdkModifierType__sym, GtkDestDefaults_sym, GtkToolPaletteDragTargets_sym,
- GtkToolItemGroup__sym, GtkToolPalette__sym, GtkPackType_sym, GtkSpinner__sym, GtkEntryBuffer__sym,
- GtkMessageType_sym, GtkInfoBar__sym, GtkEntryIconPosition_sym, GFile__sym, GtkScaleButton__sym,
- GtkCalendarDetailFunc_sym, GtkTooltip__sym, cairo_rectangle_list_t__sym, void__sym, cairo_filter_t_sym,
- cairo_extend_t_sym, cairo_format_t_sym, cairo_path_t__sym, cairo_destroy_func_t_sym, cairo_user_data_key_t__sym,
- cairo_text_extents_t__sym, cairo_font_extents_t__sym, cairo_font_face_t__sym, cairo_glyph_t__sym, cairo_scaled_font_t__sym,
- cairo_font_weight_t_sym, cairo_font_slant_t_sym, cairo_hint_metrics_t_sym, cairo_hint_style_t_sym, cairo_subpixel_order_t_sym,
- cairo_status_t_sym, bool_sym, cairo_matrix_t__sym, cairo_line_join_t_sym, cairo_line_cap_t_sym,
- cairo_fill_rule_t_sym, cairo_antialias_t_sym, cairo_operator_t_sym, cairo_pattern_t__sym, cairo_content_t_sym,
- GtkPageSet_sym, GtkPageRange__sym, GtkPrintPages_sym, GtkPrintQuality_sym, GtkPrintDuplex_sym,
- GtkPaperSize__sym, GtkPageOrientation_sym, GtkPrintSettingsFunc_sym, GtkPageSetupDoneFunc_sym, GtkPrintStatus_sym,
- GtkPrintOperationAction_sym, GtkPrintOperationResult_sym, GtkUnit_sym, GtkPrintSettings__sym, GtkPrintOperation__sym,
- GtkPageSetup__sym, GtkPrintContext__sym, cairo_surface_t__sym, GtkTreeViewGridLines_sym, GtkRecentData__sym,
- time_t_sym, GtkRecentChooserMenu__sym, GtkRecentManager__sym, GtkRecentFilter__sym, GtkRecentSortFunc_sym,
- GtkRecentSortType_sym, GtkRecentChooser__sym, GtkLinkButton__sym, GtkAssistantPageType_sym, GtkAssistantPageFunc_sym,
- GtkAssistant__sym, GDestroyNotify_sym, GtkTreeViewSearchPositionFunc_sym, GtkSensitivityType_sym, GtkMenuBar__sym,
- GtkPackDirection_sym, GtkIconViewDropPosition_sym, GValue__sym, GLogFunc_sym, PangoMatrix__sym,
- PangoRenderPart_sym, PangoRenderer__sym, GtkMenuToolButton__sym, GtkFileChooserButton__sym, PangoScriptIter__sym,
- PangoScript_sym, PangoAttrFilterFunc_sym, PangoEllipsizeMode_sym, GtkIconViewForeachFunc_sym, GtkAboutDialog__sym,
- GtkTreeViewRowSeparatorFunc_sym, GtkCellView__sym, GtkAccelMap__sym, GtkOrientation_sym, GtkToolButton__sym,
- GtkIconLookupFlags_sym, GtkIconInfo__sym, gchar___sym, GtkIconTheme__sym, GtkFileChooser__sym,
- GtkCellLayoutDataFunc_sym, GtkCellLayout__sym, GtkFileFilterFunc_sym, GtkFileFilterFlags_sym, GtkFileFilter__sym,
- GSourceFunc_sym, GtkToggleToolButton__sym, GtkSeparatorToolItem__sym, GtkRadioToolButton__sym, GtkEntryCompletionMatchFunc_sym,
- GtkFontButton__sym, GtkExpander__sym, GtkComboBox__sym, GtkTreeModelFilter__sym, GtkFileChooserAction_sym,
- GtkToolItem__sym, GtkCalendarDisplayOptions_sym, GdkDisplay__sym, PangoLayoutRun__sym, PangoLayoutIter__sym,
- PangoLayoutLine__sym, int__sym, PangoAlignment_sym, PangoWrapMode_sym, PangoItem__sym,
- PangoGlyphString__sym, PangoFontMap__sym, PangoGlyph_sym, PangoFontFace__sym, PangoFontFace___sym,
- PangoFontFamily__sym, PangoFontMask_sym, PangoFontDescription___sym, PangoCoverageLevel_sym, PangoCoverage__sym,
- PangoFontMetrics__sym, PangoFontset__sym, PangoFont__sym, PangoFontFamily___sym, PangoLogAttr__sym,
- PangoAnalysis__sym, PangoAttrList___sym, PangoAttrIterator__sym, PangoRectangle__sym, PangoUnderline_sym,
- PangoStretch_sym, PangoVariant_sym, PangoWeight_sym, PangoStyle_sym, guint16_sym,
- PangoAttribute__sym, PangoAttrType_sym, PangoColor__sym, GdkGravity_sym, GtkWindowPosition_sym,
- GtkWindowType_sym, GtkWindow__sym, GtkTextDirection_sym, PangoContext__sym, AtkObject__sym,
- GtkDirectionType_sym, GtkViewport__sym, GtkTreeViewSearchEqualFunc_sym, GtkTreeViewDropPosition_sym, GtkTreeViewMappingFunc_sym,
- GtkTreeViewColumnDropFunc_sym, GtkTreeViewColumnSizing_sym, GtkTreeCellDataFunc_sym, GtkTreeStore__sym, GtkTreeIterCompareFunc_sym,
- GtkSortType_sym, GtkTreeSortable__sym, GtkTreeSelectionForeachFunc_sym, GtkTreeModel___sym, GtkTreeSelectionFunc_sym,
- GtkSelectionMode_sym, GtkTreeModelSort__sym, GtkTreeModelForeachFunc_sym, GtkTreeModelFlags_sym, GtkTreeRowReference__sym,
- GtkTreeDragDest__sym, GtkTreeDragSource__sym, GtkToolbarStyle_sym, GtkToolbar__sym, GtkToggleButton__sym,
- PangoTabArray__sym, GtkWrapMode_sym, GtkTextWindowType_sym, GtkTextView__sym, GtkTextTagTableForeach_sym,
- GtkTextSearchFlags_sym, GtkTextCharPredicate_sym, GtkTextMark__sym, GtkTextChildAnchor__sym, GtkTextIter__sym,
- GtkTextTagTable__sym, GtkTextBuffer__sym, GtkStatusbar__sym, GtkSpinType_sym, GtkSpinButtonUpdatePolicy_sym,
- GtkSpinButton__sym, GtkSizeGroupMode_sym, GtkSizeGroup__sym, GtkSettings__sym, GtkCornerType_sym,
+static s7_pointer GMenu__sym, GtkApplicationInhibitFlags_sym, GApplicationFlags_sym, GtkContentFormats__sym, GtkStyleProvider__sym,
+ GdkAtom__sym, GdkDisplay_gtk_invisible_get_display_sym, GtkInvisible__sym, GtkIconSize_sym, GValue_sym,
+ GBytes__sym, GdkContentDeserializeFunc_sym, GdkContentDeserializer__sym, GdkContentSerializeFunc_sym, GdkContentSerializer__sym,
+ GOutputStream__sym, GdkContentFormatsBuilder__sym, GdkContentFormatsBuilder_sym, GString__sym, va_list_sym,
+ GdkTexture__sym, har___sym, GInputStream__sym, GAsyncResult__sym, GAsyncReadyCallback_sym,
+ GCancellable__sym, GdkContentProvider__sym, GdkContentFormats__sym, GdkClipboard__sym, GdkAppLaunchContext__sym,
+ GtkEventControllerScroll__sym, GtkEventControllerScrollFlags_sym, GtkSnapshot__sym, GdkTouchpadGesturePhase_sym, GdkNotifyType_sym,
+ GdkCrossingMode_sym, GdkEventScroll__sym, GtkScrollbar__sym, GtkCenterBox__sym, GtkCheckButton__sym,
+ GdkDrawContext__sym, GtkDrawingAreaDrawFunc_sym, GtkShortcutLabel__sym, GtkPadActionType_sym, GtkPadActionEntry__sym,
+ GActionGroup__sym, GtkPadController__sym, GdkDevicePadFeature_sym, GdkDevicePad__sym, GdkDrawingContext__sym,
+ GdkSubpixelLayout_sym, GdkMonitor__sym, GdkDeviceTool__sym, GdkAxisFlags_sym, GdkSeatGrabPrepareFunc_sym,
+ GdkSeatCapabilities_sym, GdkGrabStatus_sym, GtkPopoverConstraint_sym, GtkShortcutsWindow__sym, GtkStackSidebar__sym,
+ GtkSearchEntry__sym, GtkPopoverMenu__sym, GtkStyleContext__sym, GdkGLContext__sym, GtkGLArea__sym,
+ GtkPropagationPhase_sym, GtkEventController__sym, GtkGestureZoom__sym, GtkGestureSwipe__sym, GtkGestureSingle__sym,
+ GtkGestureRotate__sym, GtkGestureMultiPress__sym, GtkGesturePan__sym, GtkGestureDrag__sym, GdkEventSequence__sym,
+ GtkEventSequenceState_sym, GtkGesture__sym, GtkAllocation__sym, GtkPopover__sym, GtkActionBar__sym,
+ GtkFlowBox__sym, GtkFlowBoxChild__sym, GdkEventType_sym, GtkSearchBar__sym, GtkListBox__sym,
+ GtkListBoxRow__sym, GtkHeaderBar__sym, GtkRevealerTransitionType_sym, GtkRevealer__sym, GtkStackTransitionType_sym,
+ GtkStack__sym, GtkStackSwitcher__sym, GtkPlacesSidebar__sym, GtkPlacesOpenFlags_sym, GtkBaselinePosition_sym,
+ GdkFullscreenMode_sym, GtkInputHints_sym, GtkInputPurpose_sym, GtkLevelBarMode_sym, GtkLevelBar__sym,
+ GtkMenuButton__sym, GtkColorChooser__sym, GtkApplicationWindow__sym, GtkApplication__sym, GMenuModel__sym,
+ guint___sym, GdkModifierIntent_sym, GtkFontChooser__sym, GdkScrollDirection_sym, GtkOverlay__sym,
+ GtkWidgetPath__sym, GtkStateFlags_sym, GtkToolShell__sym, GtkWindowGroup__sym, GIcon__sym,
+ GtkOrientable__sym, GtkCellArea__sym, GtkBorder__sym, GtkSwitch__sym, GtkScrollablePolicy_sym,
+ GtkScrollable__sym, GtkGrid__sym, GdkRGBA__sym, GtkComboBoxText__sym, GtkAlign_sym,
+ GtkSizeRequestMode_sym, cairo_region_overlap_t_sym, cairo_rectangle_int_t__sym, double__sym, cairo_rectangle_t__sym,
+ cairo_device_t__sym, cairo_bool_t_sym, cairo_text_cluster_flags_t__sym, cairo_text_cluster_t___sym, cairo_glyph_t___sym,
+ cairo_text_cluster_flags_t_sym, cairo_text_cluster_t__sym, cairo_region_t__sym, GtkMessageDialog__sym, GdkDevice__sym,
+ GtkAccessible__sym, GdkModifierType__sym, GtkDestDefaults_sym, GtkToolPaletteDragTargets_sym, GtkToolItemGroup__sym,
+ GtkToolPalette__sym, GtkPackType_sym, GtkSpinner__sym, GtkEntryBuffer__sym, GtkMessageType_sym,
+ GtkInfoBar__sym, GtkEntryIconPosition_sym, GFile__sym, GtkScaleButton__sym, GtkCalendarDetailFunc_sym,
+ GtkTooltip__sym, cairo_rectangle_list_t__sym, void__sym, cairo_filter_t_sym, cairo_extend_t_sym,
+ cairo_format_t_sym, cairo_path_t__sym, cairo_destroy_func_t_sym, cairo_user_data_key_t__sym, cairo_text_extents_t__sym,
+ cairo_font_extents_t__sym, cairo_font_face_t__sym, cairo_glyph_t__sym, cairo_scaled_font_t__sym, cairo_font_weight_t_sym,
+ cairo_font_slant_t_sym, cairo_hint_metrics_t_sym, cairo_hint_style_t_sym, cairo_subpixel_order_t_sym, cairo_status_t_sym,
+ bool_sym, cairo_matrix_t__sym, cairo_line_join_t_sym, cairo_line_cap_t_sym, cairo_fill_rule_t_sym,
+ cairo_antialias_t_sym, cairo_operator_t_sym, cairo_pattern_t__sym, cairo_content_t_sym, GtkPageSet_sym,
+ GtkPageRange__sym, GtkPrintPages_sym, GtkPrintQuality_sym, GtkPrintDuplex_sym, GtkPaperSize__sym,
+ GtkPageOrientation_sym, GtkPrintSettingsFunc_sym, GtkPageSetupDoneFunc_sym, GtkPrintStatus_sym, GtkPrintOperationAction_sym,
+ GtkPrintOperationResult_sym, GtkUnit_sym, GtkPrintSettings__sym, GtkPrintOperation__sym, GtkPageSetup__sym,
+ GtkPrintContext__sym, cairo_surface_t__sym, GtkTreeViewGridLines_sym, GtkRecentData__sym, time_t_sym,
+ GtkRecentChooserMenu__sym, GtkRecentManager__sym, GtkRecentFilter__sym, GtkRecentSortFunc_sym, GtkRecentSortType_sym,
+ GtkRecentChooser__sym, GtkLinkButton__sym, GtkAssistantPageType_sym, GtkAssistantPageFunc_sym, GtkAssistant__sym,
+ GDestroyNotify_sym, GtkTreeViewSearchPositionFunc_sym, GtkSensitivityType_sym, GtkMenuBar__sym, GtkPackDirection_sym,
+ GtkIconViewDropPosition_sym, GValue__sym, GLogFunc_sym, PangoMatrix__sym, PangoRenderPart_sym,
+ PangoRenderer__sym, GtkMenuToolButton__sym, GtkFileChooserButton__sym, PangoScriptIter__sym, PangoScript_sym,
+ PangoAttrFilterFunc_sym, PangoEllipsizeMode_sym, GtkIconViewForeachFunc_sym, GtkAboutDialog__sym, GtkTreeViewRowSeparatorFunc_sym,
+ GtkCellView__sym, GtkAccelMap__sym, GtkOrientation_sym, GtkToolButton__sym, GtkIconLookupFlags_sym,
+ GtkIconInfo__sym, gchar___sym, GtkIconTheme__sym, GtkFileChooser__sym, GtkCellLayoutDataFunc_sym,
+ GtkCellLayout__sym, GtkFileFilterFunc_sym, GtkFileFilterFlags_sym, GtkFileFilter__sym, GSourceFunc_sym,
+ GtkToggleToolButton__sym, GtkSeparatorToolItem__sym, GtkRadioToolButton__sym, GtkEntryCompletionMatchFunc_sym, GtkFontButton__sym,
+ GtkExpander__sym, GtkComboBox__sym, GtkTreeModelFilter__sym, GtkFileChooserAction_sym, GtkToolItem__sym,
+ GtkCalendarDisplayOptions_sym, GdkDisplay__sym, PangoLayoutRun__sym, PangoLayoutIter__sym, PangoLayoutLine__sym,
+ int__sym, PangoAlignment_sym, PangoWrapMode_sym, PangoItem__sym, PangoGlyphString__sym,
+ PangoFontMap__sym, PangoGlyph_sym, PangoFontFace__sym, PangoFontFace___sym, PangoFontFamily__sym,
+ PangoFontMask_sym, PangoFontDescription___sym, PangoCoverageLevel_sym, PangoCoverage__sym, PangoFontMetrics__sym,
+ PangoFontset__sym, PangoFont__sym, PangoFontFamily___sym, PangoLogAttr__sym, PangoAnalysis__sym,
+ PangoAttrList___sym, PangoAttrIterator__sym, PangoRectangle__sym, PangoUnderline_sym, PangoStretch_sym,
+ PangoVariant_sym, PangoWeight_sym, PangoStyle_sym, guint16_sym, PangoAttribute__sym,
+ PangoAttrType_sym, PangoColor__sym, GdkGravity_sym, GtkWindowPosition_sym, GtkWindowType_sym,
+ GtkWindow__sym, GtkTextDirection_sym, PangoContext__sym, AtkObject__sym, GtkDirectionType_sym,
+ GtkViewport__sym, GtkTreeViewSearchEqualFunc_sym, GtkTreeViewDropPosition_sym, GtkTreeViewMappingFunc_sym, GtkTreeViewColumnDropFunc_sym,
+ GtkTreeViewColumnSizing_sym, GtkTreeCellDataFunc_sym, GtkTreeStore__sym, GtkTreeIterCompareFunc_sym, GtkSortType_sym,
+ GtkTreeSortable__sym, GtkTreeSelectionForeachFunc_sym, GtkTreeModel___sym, GtkTreeSelectionFunc_sym, GtkSelectionMode_sym,
+ GtkTreeModelSort__sym, GtkTreeModelForeachFunc_sym, GtkTreeModelFlags_sym, GtkTreeRowReference__sym, GtkTreeDragDest__sym,
+ GtkTreeDragSource__sym, GtkToolbarStyle_sym, GtkToolbar__sym, GtkToggleButton__sym, PangoTabArray__sym,
+ GtkWrapMode_sym, GtkTextWindowType_sym, GtkTextView__sym, GtkTextTagTableForeach_sym, GtkTextSearchFlags_sym,
+ GtkTextCharPredicate_sym, GtkTextMark__sym, GtkTextChildAnchor__sym, GtkTextIter__sym, GtkTextTagTable__sym,
+ GtkTextBuffer__sym, GtkStatusbar__sym, GtkSpinType_sym, GtkSpinButtonUpdatePolicy_sym, GtkSpinButton__sym,
+ GtkSizeGroupMode_sym, GtkSizeGroup__sym, GtkSettings__sym, GtkSelectionData__sym, GtkCornerType_sym,
GtkPolicyType_sym, GtkScrolledWindow__sym, GtkScale__sym, GtkRange__sym, GtkRadioMenuItem__sym,
GtkRadioButton__sym, GtkProgressBar__sym, GtkPaned__sym, GtkPositionType_sym, GtkNotebook__sym,
GtkMenuShell__sym, gint__sym, GtkMenuItem__sym, GtkMenu__sym, PangoLanguage__sym,
GtkListStore__sym, GtkLayout__sym, GtkJustification_sym, GtkLabel__sym, guint16__sym,
GtkIMContextSimple__sym, GdkEventKey__sym, PangoAttrList__sym, GtkIMContext__sym, GtkImageType_sym,
GtkImage__sym, GtkShadowType_sym, GtkFrame__sym, GtkFixed__sym, PangoLayout__sym,
- GtkEntry__sym, GtkEditable__sym, etc_sym, GtkDialog__sym, GtkCallback_sym,
- GtkContainer__sym, GtkCheckMenuItem__sym, GtkCellRendererToggle__sym, GtkCellRendererText__sym, GtkCellRendererState_sym,
- GtkCellEditable__sym, GtkCalendar__sym, GtkReliefStyle_sym, GtkButton__sym, GtkBox__sym,
- GtkBin__sym, GtkBindingSet__sym, GtkButtonBox__sym, GtkButtonBoxStyle_sym, GtkAspectFrame__sym,
- GtkAdjustment__sym, GtkAccelMapForeach_sym, GtkAccelLabel__sym, GtkAccelGroupEntry__sym, lambda3_sym,
- GSList__sym, GObject__sym, GtkAccelFlags_sym, GtkAccelGroup__sym, GdkInterpType_sym,
- double_sym, gfloat_sym, guchar_sym, char___sym, GdkPixbufDestroyNotify_sym,
- GError__sym, char__sym, guchar__sym, int_sym, GdkColorspace_sym,
- GdkCursor__sym, GdkWindowTypeHint_sym, GdkWindowHints_sym, GdkGeometry__sym, GdkWindowEdge_sym,
- GdkWMFunction_sym, GdkWMDecoration_sym, GdkEventMask_sym, GList__sym, GdkWindowState_sym,
- GdkFilterFunc_sym, GdkWindowType_sym, PangoDirection_sym, GdkKeymapKey__sym, GdkKeymap__sym,
- GdkRectangle__sym, GdkEventFunc_sym, gdouble_sym, guint32_sym, GdkDragAction_sym,
- GdkDragContext__sym, GSignalMatchType_sym, GConnectFlags_sym, GtkDestroyNotify_sym, GSignalEmissionHook_sym,
- gulong_sym, GSignalInvocationHint__sym, GQuark_sym, guint__sym, GSignalQuery__sym,
- GType__sym, GSignalCMarshaller_sym, gpointer_sym, GSignalAccumulator_sym, GSignalFlags_sym,
- GType_sym, GClosureNotify_sym, GCallback_sym, GNormalizeMode_sym, glong_sym,
- gssize_sym, gunichar__sym, void_sym, GtkDrawingArea__sym, GdkSeat__sym,
- GtkRecentInfo__sym, gsize_sym, guint8__sym, GdkAtom_sym, GLogLevelFlags_sym,
- GdkPixbuf__sym, GtkIconView__sym, GtkEntryCompletion__sym, GtkFileFilterInfo__sym, GtkTreeSelection__sym,
- GtkCellRenderer__sym, GtkTreeViewColumn__sym, GtkTreeView__sym, gunichar_sym, gint_sym,
- GdkAtom__sym, GtkSelectionData__sym, GtkClipboard__sym, GtkTreeIter__sym, GtkTreePath__sym,
- GtkTreeModel__sym, gboolean_sym, GdkModifierType_sym, guint_sym, gchar__sym,
- GtkTextTag__sym, GdkXEvent__sym, GtkWidget__sym, lambda_data_sym, GClosure__sym,
- GtkAccelKey__sym, GdkEventMotion__sym, gdouble__sym, GdkEventAny__sym, GdkEvent__sym,
- GdkWindow__sym, cairo_t__sym, cairo_font_options_t__sym, PangoFontDescription__sym, idler_sym,
- GtkCellRendererPixbuf__sym, GtkSeparator__sym, GtkSeparatorMenuItem__sym, GdkEventExpose__sym, GdkEventNoExpose__sym,
- GdkEventVisibility__sym, GdkEventButton__sym, GdkEventCrossing__sym, GdkEventFocus__sym, GdkEventConfigure__sym,
- GdkEventProperty__sym, GdkEventSelection__sym, GdkEventProximity__sym, GdkEventSetting__sym, GdkEventWindowState__sym,
- GdkEventDND__sym, GtkFileChooserDialog__sym, GtkFileChooserWidget__sym, GtkColorButton__sym, GtkAccelMap_sym,
- GtkCellRendererCombo__sym, GtkCellRendererProgress__sym, GtkCellRendererAccel__sym, GtkCellRendererSpin__sym, GtkRecentChooserDialog__sym,
- GtkRecentChooserWidget__sym, GtkCellRendererSpinner__sym, gboolean__sym, GtkFontChooserDialog__sym, GtkFontChooserWidget__sym,
- GtkColorChooserDialog__sym, GtkColorChooserWidget__sym, GtkColorWidget__sym, GtkGestureLongPress__sym;
+ GtkEntry__sym, GtkEditable__sym, GdkAtom_sym, etc_sym, GtkDialog__sym,
+ GtkCallback_sym, GtkContainer__sym, GtkCheckMenuItem__sym, GtkCellRendererToggle__sym, GtkCellRendererText__sym,
+ GtkCellRendererState_sym, GtkCellEditable__sym, GtkCalendar__sym, GtkReliefStyle_sym, GtkButton__sym,
+ GtkBox__sym, GtkBin__sym, GtkBindingSet__sym, GtkButtonBox__sym, GtkButtonBoxStyle_sym,
+ GtkAspectFrame__sym, GtkAdjustment__sym, GtkAccelMapForeach_sym, GtkAccelLabel__sym, GtkAccelGroupEntry__sym,
+ lambda3_sym, GSList__sym, GObject__sym, GtkAccelFlags_sym, GtkAccelGroup__sym,
+ GdkInterpType_sym, double_sym, gfloat_sym, guchar_sym, char___sym,
+ GdkPixbufDestroyNotify_sym, GError__sym, char__sym, guchar__sym, int_sym,
+ GdkPixbuf__sym, GdkColorspace_sym, GdkCursor__sym, GdkWindowTypeHint_sym, GdkWindowHints_sym,
+ GdkGeometry__sym, GdkWindowEdge_sym, GdkWMFunction_sym, GdkWMDecoration_sym, GdkEventMask_sym,
+ GList__sym, GdkWindowState_sym, GdkFilterFunc_sym, GdkWindowType_sym, PangoDirection_sym,
+ GdkKeymapKey__sym, GdkKeymap__sym, GdkRectangle__sym, GdkEventFunc_sym, gdouble_sym,
+ guint32_sym, GdkDragAction_sym, GdkDragContext__sym, GSignalMatchType_sym, GConnectFlags_sym,
+ GtkDestroyNotify_sym, GSignalEmissionHook_sym, gulong_sym, GSignalInvocationHint__sym, GQuark_sym,
+ guint__sym, GSignalQuery__sym, GType__sym, GSignalCMarshaller_sym, gpointer_sym,
+ GSignalAccumulator_sym, GSignalFlags_sym, GType_sym, GClosureNotify_sym, GCallback_sym,
+ GNormalizeMode_sym, glong_sym, gssize_sym, gsize_sym, gunichar__sym,
+ void_sym, GtkDrawingArea__sym, GdkSeat__sym, GtkRecentInfo__sym, GLogLevelFlags_sym,
+ GtkIconView__sym, GtkEntryCompletion__sym, GtkFileFilterInfo__sym, GtkTreeSelection__sym, GtkCellRenderer__sym,
+ gint_sym, GtkTreeViewColumn__sym, GtkTreeView__sym, gunichar_sym, GtkTreeIter__sym,
+ GtkTreePath__sym, GtkTreeModel__sym, gboolean_sym, GdkModifierType_sym, guint_sym,
+ gchar__sym, GtkTextTag__sym, GdkXEvent__sym, GtkWidget__sym, lambda_data_sym,
+ GClosure__sym, GtkAccelKey__sym, GdkEventMotion__sym, gdouble__sym, GdkEventAny__sym,
+ GdkEvent__sym, GdkWindow__sym, cairo_t__sym, cairo_font_options_t__sym, PangoFontDescription__sym,
+ idler_sym, GtkCellRendererPixbuf__sym, GtkSeparator__sym, GtkSeparatorMenuItem__sym, GdkEventExpose__sym,
+ GdkEventNoExpose__sym, GdkEventVisibility__sym, GdkEventButton__sym, GdkEventCrossing__sym, GdkEventFocus__sym,
+ GdkEventConfigure__sym, GdkEventProperty__sym, GdkEventSelection__sym, GdkEventProximity__sym, GdkEventSetting__sym,
+ GdkEventWindowState__sym, GdkEventDND__sym, GtkFileChooserDialog__sym, GtkFileChooserWidget__sym, GtkColorButton__sym,
+ GtkAccelMap_sym, GtkCellRendererCombo__sym, GtkCellRendererProgress__sym, GtkCellRendererAccel__sym, GtkCellRendererSpin__sym,
+ GtkRecentChooserDialog__sym, GtkRecentChooserWidget__sym, GtkCellRendererSpinner__sym, gboolean__sym, GtkFontChooserDialog__sym,
+ GtkFontChooserWidget__sym, GtkColorChooserDialog__sym, GtkColorChooserWidget__sym, GtkColorWidget__sym, GtkGestureLongPress__sym;
#define lg_is_list(Arg) s7_is_list(sc, Arg)
static s7_scheme *cbsc = NULL;
@@ -270,40 +270,6 @@ static void lg_tree_selection_func(GtkTreeModel* model, GtkTreePath* path, GtkTr
s7_cadr((s7_pointer)func_info)));
}
-static void lg_clip_received(GtkClipboard* clipboard, GtkSelectionData* selection_data, gpointer func_info)
-{
- if (!s7_is_list(cbsc, (s7_pointer)func_info)) return;
- s7_apply_function(cbsc,
- s7_car((s7_pointer)func_info),
- s7_list(cbsc, 3,
- s7_make_c_pointer(cbsc, clipboard),
- s7_make_c_pointer(cbsc, selection_data),
- s7_cadr((s7_pointer)func_info)));
-}
-
-static void lg_clip_text_received(GtkClipboard* clipboard, const gchar* text, gpointer func_info)
-{
- if (!s7_is_list(cbsc, (s7_pointer)func_info)) return;
- s7_apply_function(cbsc,
- s7_car((s7_pointer)func_info),
- s7_list(cbsc, 3,
- s7_make_c_pointer(cbsc, clipboard),
- s7_make_string(cbsc, text),
- s7_cadr((s7_pointer)func_info)));
-}
-
-static void lg_clip_targets_received(GtkClipboard* clipboard, GdkAtom* atoms, gint n_atoms, gpointer func_info)
-{
- if (!s7_is_list(cbsc, (s7_pointer)func_info)) return;
- s7_apply_function(cbsc,
- s7_car((s7_pointer)func_info),
- s7_list(cbsc, 4,
- s7_make_c_pointer(cbsc, clipboard),
- s7_make_c_pointer(cbsc, atoms),
- s7_make_integer(cbsc, n_atoms),
- s7_cadr((s7_pointer)func_info)));
-}
-
static gboolean lg_text_char_predicate(gunichar ch, gpointer func_info)
{
if (!s7_is_list(cbsc, (s7_pointer)func_info)) return((gboolean)0);
@@ -389,28 +355,6 @@ static gboolean lg_tree_selection(GtkTreeSelection* selection, GtkTreeModel* mod
s7_cadr((s7_pointer)func_info)))));
}
-static void lg_clip_get(GtkClipboard* clipboard, GtkSelectionData* selection_data, guint info, gpointer func_info)
-{
- if (!s7_is_list(cbsc, (s7_pointer)func_info)) return;
- s7_apply_function(cbsc,
- s7_car((s7_pointer)func_info),
- s7_list(cbsc, 4,
- s7_make_c_pointer(cbsc, clipboard),
- s7_make_c_pointer(cbsc, selection_data),
- s7_make_integer(cbsc, info),
- s7_cadr((s7_pointer)func_info)));
-}
-
-static void lg_clip_clear(GtkClipboard* clipboard, gpointer func_info)
-{
- if (!s7_is_list(cbsc, (s7_pointer)func_info)) return;
- s7_apply_function(cbsc,
- s7_caddr((s7_pointer)func_info),
- s7_list(cbsc, 2,
- s7_make_c_pointer(cbsc, clipboard),
- s7_cadr((s7_pointer)func_info)));
-}
-
static gboolean lg_file_filter(const GtkFileFilterInfo* info, gpointer func_info)
{
if (!s7_is_list(cbsc, (s7_pointer)func_info)) return((gboolean)0);
@@ -455,17 +399,6 @@ static void lg_icon_view_foreach(GtkIconView* icon_view, GtkTreePath* path, gpoi
s7_cadr((s7_pointer)func_info)));
}
-static void lg_clip_image_received(GtkClipboard* clipboard, GdkPixbuf* pixbuf, gpointer func_info)
-{
- if (!s7_is_list(cbsc, (s7_pointer)func_info)) return;
- s7_apply_function(cbsc,
- s7_car((s7_pointer)func_info),
- s7_list(cbsc, 3,
- s7_make_c_pointer(cbsc, clipboard),
- s7_make_c_pointer(cbsc, pixbuf),
- s7_cadr((s7_pointer)func_info)));
-}
-
static void lg_g_message_log_func(const gchar* domain, GLogLevelFlags log_level, const gchar* message, gpointer func_info)
{
if (!s7_is_list(cbsc, (s7_pointer)func_info)) return;
@@ -478,21 +411,6 @@ static void lg_g_message_log_func(const gchar* domain, GLogLevelFlags log_level,
s7_cadr((s7_pointer)func_info)));
}
-static void lg_clip_rich_text_received(GtkClipboard* clipboard, GdkAtom format, const guint8* text, gsize length, gpointer func_info)
-{
- if (!s7_is_list(cbsc, (s7_pointer)func_info)) return;
- #if (!(defined(__cplusplus)))
- s7_apply_function(cbsc,
- s7_car((s7_pointer)func_info),
- s7_list(cbsc, 5,
- s7_make_c_pointer(cbsc, clipboard),
- s7_make_c_pointer(cbsc, format),
- s7_make_c_pointer(cbsc, (void *)text),
- s7_make_integer(cbsc, length),
- s7_cadr((s7_pointer)func_info)));
- #endif
-}
-
static void lg_search_position(GtkTreeView* tree_view, GtkWidget* search_dialog, gpointer func_info)
{
if (!s7_is_list(cbsc, (s7_pointer)func_info)) return;
@@ -43340,6 +43258,181 @@ gchar** icons)"
return(s7_make_type_with_c_pointer(sc, GtkWidget__sym, gtk_scale_button_new(s7_real(min), s7_real(max), s7_real(step), (const gchar**)s7_c_pointer(icons))));
}
+static s7_pointer lg_gtk_application_new(s7_scheme *sc, s7_pointer args)
+{
+ #define H_gtk_application_new "GtkApplication* gtk_application_new(gchar* application_id, GApplicationFlags flags)"
+ s7_pointer _p;
+ s7_pointer application_id, flags;
+ _p = args;
+ application_id = s7_car(_p); _p = s7_cdr(_p);
+ if (!s7_is_string(application_id)) s7_wrong_type_arg_error(sc, "gtk_application_new", 1, application_id, "gchar*");
+ flags = s7_car(_p); _p = s7_cdr(_p);
+ if (!s7_is_c_pointer_of_type(flags, GApplicationFlags_sym)) s7_wrong_type_arg_error(sc, "gtk_application_new", 2, flags, "GApplicationFlags");
+ return(s7_make_type_with_c_pointer(sc, GtkApplication__sym, gtk_application_new((const gchar*)s7_string(application_id), s7_c_pointer(flags))));
+}
+
+static s7_pointer lg_gtk_application_add_window(s7_scheme *sc, s7_pointer args)
+{
+ #define H_gtk_application_add_window "void gtk_application_add_window(GtkApplication* application, \
+GtkWindow* window)"
+ s7_pointer _p;
+ s7_pointer application, window;
+ _p = args;
+ application = s7_car(_p); _p = s7_cdr(_p);
+ if (!s7_is_c_pointer_of_type(application, GtkApplication__sym)) s7_wrong_type_arg_error(sc, "gtk_application_add_window", 1, application, "GtkApplication*");
+ window = s7_car(_p); _p = s7_cdr(_p);
+ if (!s7_is_c_pointer_of_type(window, GtkWindow__sym)) s7_wrong_type_arg_error(sc, "gtk_application_add_window", 2, window, "GtkWindow*");
+ gtk_application_add_window(s7_c_pointer(application), s7_c_pointer(window));
+ return(lg_false);
+}
+
+static s7_pointer lg_gtk_application_remove_window(s7_scheme *sc, s7_pointer args)
+{
+ #define H_gtk_application_remove_window "void gtk_application_remove_window(GtkApplication* application, \
+GtkWindow* window)"
+ s7_pointer _p;
+ s7_pointer application, window;
+ _p = args;
+ application = s7_car(_p); _p = s7_cdr(_p);
+ if (!s7_is_c_pointer_of_type(application, GtkApplication__sym)) s7_wrong_type_arg_error(sc, "gtk_application_remove_window", 1, application, "GtkApplication*");
+ window = s7_car(_p); _p = s7_cdr(_p);
+ if (!s7_is_c_pointer_of_type(window, GtkWindow__sym)) s7_wrong_type_arg_error(sc, "gtk_application_remove_window", 2, window, "GtkWindow*");
+ gtk_application_remove_window(s7_c_pointer(application), s7_c_pointer(window));
+ return(lg_false);
+}
+
+static s7_pointer lg_gtk_application_get_windows(s7_scheme *sc, s7_pointer args)
+{
+ #define H_gtk_application_get_windows "GList* gtk_application_get_windows(GtkApplication* application)"
+ s7_pointer application;
+ application = s7_car(args);
+ if (!s7_is_c_pointer_of_type(application, GtkApplication__sym)) s7_wrong_type_arg_error(sc, "gtk_application_get_windows", 1, application, "GtkApplication*");
+ return(s7_make_type_with_c_pointer(sc, GList__sym, gtk_application_get_windows(s7_c_pointer(application))));
+}
+
+static s7_pointer lg_gtk_application_inhibit(s7_scheme *sc, s7_pointer args)
+{
+ #define H_gtk_application_inhibit "guint gtk_application_inhibit(GtkApplication* application, GtkWindow* window, \
+GtkApplicationInhibitFlags flags, gchar* reason)"
+ s7_pointer _p;
+ s7_pointer application, window, flags, reason;
+ _p = args;
+ application = s7_car(_p); _p = s7_cdr(_p);
+ if (!s7_is_c_pointer_of_type(application, GtkApplication__sym)) s7_wrong_type_arg_error(sc, "gtk_application_inhibit", 1, application, "GtkApplication*");
+ window = s7_car(_p); _p = s7_cdr(_p);
+ if (!s7_is_c_pointer_of_type(window, GtkWindow__sym)) s7_wrong_type_arg_error(sc, "gtk_application_inhibit", 2, window, "GtkWindow*");
+ flags = s7_car(_p); _p = s7_cdr(_p);
+ if (!s7_is_integer(flags)) s7_wrong_type_arg_error(sc, "gtk_application_inhibit", 3, flags, "GtkApplicationInhibitFlags");
+ reason = s7_car(_p); _p = s7_cdr(_p);
+ if (!s7_is_string(reason)) s7_wrong_type_arg_error(sc, "gtk_application_inhibit", 4, reason, "gchar*");
+ return(s7_make_integer(sc, gtk_application_inhibit(s7_c_pointer(application), s7_c_pointer(window), s7_integer(flags), (const gchar*)s7_string(reason))));
+}
+
+static s7_pointer lg_gtk_application_uninhibit(s7_scheme *sc, s7_pointer args)
+{
+ #define H_gtk_application_uninhibit "void gtk_application_uninhibit(GtkApplication* application, guint cookie)"
+ s7_pointer _p;
+ s7_pointer application, cookie;
+ _p = args;
+ application = s7_car(_p); _p = s7_cdr(_p);
+ if (!s7_is_c_pointer_of_type(application, GtkApplication__sym)) s7_wrong_type_arg_error(sc, "gtk_application_uninhibit", 1, application, "GtkApplication*");
+ cookie = s7_car(_p); _p = s7_cdr(_p);
+ if (!s7_is_integer(cookie)) s7_wrong_type_arg_error(sc, "gtk_application_uninhibit", 2, cookie, "guint");
+ gtk_application_uninhibit(s7_c_pointer(application), s7_integer(cookie));
+ return(lg_false);
+}
+
+static s7_pointer lg_gtk_application_get_window_by_id(s7_scheme *sc, s7_pointer args)
+{
+ #define H_gtk_application_get_window_by_id "GtkWindow* gtk_application_get_window_by_id(GtkApplication* application, \
+guint id)"
+ s7_pointer _p;
+ s7_pointer application, id;
+ _p = args;
+ application = s7_car(_p); _p = s7_cdr(_p);
+ if (!s7_is_c_pointer_of_type(application, GtkApplication__sym)) s7_wrong_type_arg_error(sc, "gtk_application_get_window_by_id", 1, application, "GtkApplication*");
+ id = s7_car(_p); _p = s7_cdr(_p);
+ if (!s7_is_integer(id)) s7_wrong_type_arg_error(sc, "gtk_application_get_window_by_id", 2, id, "guint");
+ return(s7_make_type_with_c_pointer(sc, GtkWindow__sym, gtk_application_get_window_by_id(s7_c_pointer(application), s7_integer(id))));
+}
+
+static s7_pointer lg_gtk_application_list_action_descriptions(s7_scheme *sc, s7_pointer args)
+{
+ #define H_gtk_application_list_action_descriptions "gchar** gtk_application_list_action_descriptions(GtkApplication* application)"
+ s7_pointer application;
+ application = s7_car(args);
+ if (!s7_is_c_pointer_of_type(application, GtkApplication__sym)) s7_wrong_type_arg_error(sc, "gtk_application_list_action_descriptions", 1, application, "GtkApplication*");
+ return(s7_make_type_with_c_pointer(sc, gchar___sym, gtk_application_list_action_descriptions(s7_c_pointer(application))));
+}
+
+static s7_pointer lg_gtk_application_get_accels_for_action(s7_scheme *sc, s7_pointer args)
+{
+ #define H_gtk_application_get_accels_for_action "gchar** gtk_application_get_accels_for_action(GtkApplication* application, \
+gchar* detailed_action_name)"
+ s7_pointer _p;
+ s7_pointer application, detailed_action_name;
+ _p = args;
+ application = s7_car(_p); _p = s7_cdr(_p);
+ if (!s7_is_c_pointer_of_type(application, GtkApplication__sym)) s7_wrong_type_arg_error(sc, "gtk_application_get_accels_for_action", 1, application, "GtkApplication*");
+ detailed_action_name = s7_car(_p); _p = s7_cdr(_p);
+ if (!s7_is_string(detailed_action_name)) s7_wrong_type_arg_error(sc, "gtk_application_get_accels_for_action", 2, detailed_action_name, "gchar*");
+ return(s7_make_type_with_c_pointer(sc, gchar___sym, gtk_application_get_accels_for_action(s7_c_pointer(application), (const gchar*)s7_string(detailed_action_name))));
+}
+
+static s7_pointer lg_gtk_application_get_actions_for_accel(s7_scheme *sc, s7_pointer args)
+{
+ #define H_gtk_application_get_actions_for_accel "gchar** gtk_application_get_actions_for_accel(GtkApplication* application, \
+gchar* accel)"
+ s7_pointer _p;
+ s7_pointer application, accel;
+ _p = args;
+ application = s7_car(_p); _p = s7_cdr(_p);
+ if (!s7_is_c_pointer_of_type(application, GtkApplication__sym)) s7_wrong_type_arg_error(sc, "gtk_application_get_actions_for_accel", 1, application, "GtkApplication*");
+ accel = s7_car(_p); _p = s7_cdr(_p);
+ if (!s7_is_string(accel)) s7_wrong_type_arg_error(sc, "gtk_application_get_actions_for_accel", 2, accel, "gchar*");
+ return(s7_make_type_with_c_pointer(sc, gchar___sym, gtk_application_get_actions_for_accel(s7_c_pointer(application), (const gchar*)s7_string(accel))));
+}
+
+static s7_pointer lg_gtk_application_set_accels_for_action(s7_scheme *sc, s7_pointer args)
+{
+ #define H_gtk_application_set_accels_for_action "void gtk_application_set_accels_for_action(GtkApplication* application, \
+gchar* detailed_action_name, gchar* accels)"
+ s7_pointer _p;
+ s7_pointer application, detailed_action_name, accels;
+ _p = args;
+ application = s7_car(_p); _p = s7_cdr(_p);
+ if (!s7_is_c_pointer_of_type(application, GtkApplication__sym)) s7_wrong_type_arg_error(sc, "gtk_application_set_accels_for_action", 1, application, "GtkApplication*");
+ detailed_action_name = s7_car(_p); _p = s7_cdr(_p);
+ if (!s7_is_string(detailed_action_name)) s7_wrong_type_arg_error(sc, "gtk_application_set_accels_for_action", 2, detailed_action_name, "gchar*");
+ accels = s7_car(_p); _p = s7_cdr(_p);
+ if (!s7_is_string(accels)) s7_wrong_type_arg_error(sc, "gtk_application_set_accels_for_action", 3, accels, "gchar*");
+ gtk_application_set_accels_for_action(s7_c_pointer(application), (const gchar*)s7_string(detailed_action_name), (const gchar*)s7_string(accels));
+ return(lg_false);
+}
+
+static s7_pointer lg_gtk_application_prefers_app_menu(s7_scheme *sc, s7_pointer args)
+{
+ #define H_gtk_application_prefers_app_menu "gboolean gtk_application_prefers_app_menu(GtkApplication* application)"
+ s7_pointer application;
+ application = s7_car(args);
+ if (!s7_is_c_pointer_of_type(application, GtkApplication__sym)) s7_wrong_type_arg_error(sc, "gtk_application_prefers_app_menu", 1, application, "GtkApplication*");
+ return(s7_make_boolean(sc, gtk_application_prefers_app_menu(s7_c_pointer(application))));
+}
+
+static s7_pointer lg_gtk_application_get_menu_by_id(s7_scheme *sc, s7_pointer args)
+{
+ #define H_gtk_application_get_menu_by_id "GMenu* gtk_application_get_menu_by_id(GtkApplication* application, \
+gchar* id)"
+ s7_pointer _p;
+ s7_pointer application, id;
+ _p = args;
+ application = s7_car(_p); _p = s7_cdr(_p);
+ if (!s7_is_c_pointer_of_type(application, GtkApplication__sym)) s7_wrong_type_arg_error(sc, "gtk_application_get_menu_by_id", 1, application, "GtkApplication*");
+ id = s7_car(_p); _p = s7_cdr(_p);
+ if (!s7_is_string(id)) s7_wrong_type_arg_error(sc, "gtk_application_get_menu_by_id", 2, id, "gchar*");
+ return(s7_make_type_with_c_pointer(sc, GMenu__sym, gtk_application_get_menu_by_id(s7_c_pointer(application), (const gchar*)s7_string(id))));
+}
+
#endif
static s7_pointer lg_cairo_create(s7_scheme *sc, s7_pointer args)
@@ -47027,6 +47120,7 @@ static s7_pointer lg_GDK_CLIPBOARD(s7_scheme *sc, s7_pointer args) {return(s7_ma
static s7_pointer lg_GDK_CONTENT_PROVIDER(s7_scheme *sc, s7_pointer args) {return(s7_make_c_pointer_with_type(sc, s7_c_pointer(s7_car(args)), GdkContentProvider__sym, lg_false));}
static s7_pointer lg_GDK_CONTENT_SERIALIZER(s7_scheme *sc, s7_pointer args) {return(s7_make_c_pointer_with_type(sc, s7_c_pointer(s7_car(args)), GdkContentSerializer__sym, lg_false));}
static s7_pointer lg_GDK_CONTENT_DESERIALIZER(s7_scheme *sc, s7_pointer args) {return(s7_make_c_pointer_with_type(sc, s7_c_pointer(s7_car(args)), GdkContentDeserializer__sym, lg_false));}
+static s7_pointer lg_GTK_APPLICATION(s7_scheme *sc, s7_pointer args) {return(s7_make_c_pointer_with_type(sc, s7_c_pointer(s7_car(args)), GtkApplication__sym, lg_false));}
#endif
static s7_pointer lg_GDK_IS_DRAG_CONTEXT(s7_scheme *sc, s7_pointer args)
@@ -47822,6 +47916,10 @@ static s7_pointer lg_GDK_IS_CONTENT_DESERIALIZER(s7_scheme *sc, s7_pointer args)
{
return(((s7_is_c_pointer(s7_car(args))) && (GDK_IS_CONTENT_DESERIALIZER((GTypeInstance *)s7_c_pointer(s7_car(args))))) ? lg_true : lg_false);
}
+static s7_pointer lg_GTK_IS_APPLICATION(s7_scheme *sc, s7_pointer args)
+{
+ return(((s7_is_c_pointer(s7_car(args))) && (GTK_IS_APPLICATION((GTypeInstance *)s7_c_pointer(s7_car(args))))) ? lg_true : lg_false);
+}
#endif
#if (!GTK_CHECK_VERSION(3, 90, 0))
@@ -47960,7 +48058,7 @@ static s7_pointer lg_gtk_text_view_get_iter_at_position(s7_scheme *sc, s7_pointe
}
#else
gtk_text_view_get_iter_at_position((GtkTextView*)s7_c_pointer(text_view), (GtkTextIter*)s7_c_pointer(iter), &ref_trailing, s7_integer(x), s7_integer(y));
- return(s7_list(sc, 1, s7_make_integer(sc, (ref_trailing)));
+ return(s7_list(sc, 1, s7_make_integer(sc, ref_trailing)));
#endif
}
@@ -48001,7 +48099,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_gu, pl_pg, pl_gus, pl_pgr, pl_pgu, pl_pgi, pl_gug, pl_gui, pl_guut, pl_pgbi, pl_guuut, pl_gussitu, pl_gurrsiu, pl_guugbuut, pl_b, pl_s, pl_t, pl_bsu, pl_bsigb, pl_gi, pl_bt, pl_tb, pl_igi, pl_ssi, pl_bti, pl_ssig, pl_btiib, pl_ts, pl_tsu, pl_tsi, pl_tsit, pl_tsig, pl_tsiu, pl_tsiuui, pl_tsiiuui, pl_tts, pl_tti, pl_p, pl_buuusuug, pl_bu, pl_pb, pl_bur, pl_bug, pl_bus, pl_bui, pl_bub, pl_busi, pl_buib, pl_busu, pl_buub, pl_buig, pl_buus, pl_buui, pl_buigu, pl_busib, pl_buuub, pl_buttu, pl_busgu, pl_buuig, pl_buuui, 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_tusiuiui, pl_tuurrrrg, pl_tuurrrrgr, pl_psgbiiiit, pl_tuiiiiui, pl_tuuiiiirrrrg, pl_tuuiiiirrrrgi, pl_psiiuusu, pl_pt, pl_tu, pl_tur, pl_tub, pl_tui, pl_tus, pl_tut, pl_tug, pl_turs, pl_tubu, pl_tusg, pl_tugb, pl_tugs, pl_tubi, pl_tuib, pl_tusr, pl_tusi, pl_turi, pl_tuui, pl_tuur, pl_tuig, pl_tusb, pl_tuub, pl_tuus, pl_tuug, pl_tugu, pl_tugr, pl_tugi, pl_tusu, pl_tuut, pl_tugt, pl_tuis, pl_tust, pl_tuiu, pl_tuit, pl_tuuiu, pl_tuiut, pl_tugug, pl_tussu, pl_tuuur, pl_tuusb, pl_tugui, pl_tuisi, pl_turgs, pl_tuurb, pl_tuuti, pl_tuuri, pl_tusri, pl_tuuut, pl_tuubr, pl_tuuub, pl_tuuir, pl_tuuui, pl_tuusi, pl_tuiiu, pl_tuugi, pl_tuiiut, pl_tuuiut, pl_tutisi, pl_tuuggu, pl_tugiis, pl_tuurru, pl_tuuuui, pl_tugiiu, pl_tuuugi, pl_tuuuub, pl_tuiggu, pl_turrrb, pl_tuusit, pl_tusiis, pl_tusuig, pl_tuuubr, pl_tuurbr, pl_tusuiut, pl_tusiiut, pl_tuuuggu, pl_tuuiuui, pl_tubiiiu, pl_i, pl_bi, pl_big, pl_si, pl_is, pl_isi, pl_sig, pl_isgt, pl_isigutttiiu, pl_ti, pl_it, pl_tiu, pl_tist, pl_itsub, pl_itiiub, pl_itstttg, pl_itgiiut, pl_pu, pl_pur, pl_pub, pl_pui, pl_pug, pl_pus, pl_put, pl_pugi, pl_pubi, pl_pusi, pl_puri, pl_pust, pl_pusu, pl_pugu, pl_puiu, pl_purru, pl_puuig, pl_puiig, pl_puigu, pl_pusiu, pl_pusub, pl_puiiu, pl_pussu, pl_puibu, pl_pusig, pl_puuiu, pl_puuugi, pl_pusiig, pl_puuiig, pl_puiiui, pl_puiigi, pl_puuubu, pl_pusigu, pl_pusiiu, pl_puuiiu, pl_pugiiu, pl_pusiigu, pl_pusiuiu, pl_pusiiugu, pl_puuusuug, pl_pusiuibu, pl_iu, pl_pi, pl_iur, pl_ius, pl_iui, pl_piu, pl_pit, pl_iug, pl_iugi, pl_iuis, pl_iusi, pl_iuui, pl_iuisi, pl_iuuui, pl_iuuuui, pl_iuisut, pl_g, pl_sg, pl_gs, pl_tg, pl_iit, pl_iiit, pl_du, pl_pr, pl_dus, pl_dui, pl_dusr, pl_dusi, pl_prrru, pl_bpt;
+ s7_pointer pl_bt, pl_tb, pl_bti, pl_btiib, pl_ts, pl_tsu, pl_tsi, pl_tsit, pl_tsig, pl_tsiu, pl_tsiuui, pl_tsiiuui, pl_buuusuug, pl_bu, pl_pb, pl_bur, pl_bug, pl_bus, pl_bui, pl_bub, pl_busi, pl_buib, pl_busu, pl_buub, pl_buig, pl_buus, pl_buui, pl_buigu, pl_busib, pl_buuub, pl_buttu, pl_busgu, pl_buuig, pl_buuui, pl_buiuig, pl_buusib, pl_buuuub, pl_buurbr, pl_su, pl_ps, pl_pst, 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_t, pl_p, pl_tts, pl_tti, pl_bi, pl_big, pl_sg, pl_pt, pl_tu, pl_si, pl_is, pl_gs, pl_isi, pl_tur, pl_tub, pl_tui, pl_tus, pl_tut, pl_tug, pl_sig, pl_turs, pl_tubu, pl_tusg, pl_tugb, pl_tugs, pl_tubi, pl_tuib, pl_tusr, pl_tusi, pl_turi, pl_tuui, pl_tuur, pl_tuig, pl_tusb, pl_tuub, pl_tuus, pl_tuug, pl_isgt, pl_tugu, pl_tugr, pl_tugi, pl_tusu, pl_tuut, pl_tugt, pl_tuis, pl_tust, pl_tuiu, pl_tuit, pl_tuuiu, pl_tuiut, pl_tugug, pl_tussu, pl_tuuur, pl_tuusb, pl_tugui, pl_tuisi, pl_turgs, pl_tuurb, pl_tuuti, pl_tuuri, pl_tusri, pl_tuuut, pl_tuubr, pl_tuuub, pl_tuuir, pl_tuuui, pl_tuusi, pl_tuiiu, pl_tuugi, pl_tuiiut, pl_tuuiut, pl_tutisi, pl_tuuggu, pl_tugiis, pl_tuurru, pl_tuuuui, pl_tugiiu, pl_tuuugi, pl_tuuuub, pl_tuiggu, pl_turrrb, pl_tuusit, pl_tusiis, pl_tusuig, pl_tuuubr, pl_tuurbr, pl_tusuiut, pl_tusiiut, pl_tuuuggu, pl_tuuiuui, pl_tubiiiu, pl_tusiuiui, pl_tuurrrrg, pl_tuurrrrgr, pl_isigutttiiu, pl_tuiiiiui, pl_tuuiiiirrrrg, pl_tuuiiiirrrrgi, pl_pu, pl_pur, pl_pub, pl_pui, pl_pug, pl_pus, pl_put, pl_pugi, pl_pubi, pl_pusi, pl_puri, pl_pust, pl_pusu, pl_pugu, pl_puiu, pl_purru, pl_puuig, pl_puiig, pl_puigu, pl_pusiu, pl_pusub, pl_puiiu, pl_pussu, pl_puibu, pl_pusig, pl_puuiu, pl_puuugi, pl_pusiig, pl_puuiig, pl_puiiui, pl_puiigi, pl_puuubu, pl_pusigu, pl_pusiiu, pl_puuiiu, pl_pugiiu, pl_pusiigu, pl_pusiuiu, pl_pusiiugu, pl_puuusuug, pl_pusiuibu, pl_i, pl_g, pl_ti, pl_it, pl_tg, pl_tiu, pl_tist, pl_itsub, pl_itiiub, pl_itstttg, pl_itgiiut, pl_iu, pl_gu, pl_pi, pl_pg, pl_iur, pl_gus, pl_pgr, pl_pgu, pl_pgi, pl_gug, pl_ius, pl_iui, pl_gui, pl_piu, pl_pit, pl_iug, pl_guut, pl_iugi, pl_pgbi, pl_iuis, pl_iusi, pl_iuui, pl_guuut, pl_iuugs, pl_iuisi, pl_iuuui, pl_iuuuui, pl_iuisut, pl_gussitu, pl_gurrsiu, pl_guugbuut, pl_gi, pl_igi, pl_iit, pl_iiit, pl_du, pl_pr, pl_dus, pl_dui, pl_dusr, pl_dusi, pl_prrru, pl_bsu, pl_bsigb, pl_ssi, pl_ssig, pl_b, pl_s, pl_bpt;
s_boolean = s7_make_symbol(sc, "boolean?");
s_integer = s7_make_symbol(sc, "integer?");
@@ -48013,32 +48111,9 @@ static void define_functions(s7_scheme *sc)
s_gtk_enum_t = s7_make_symbol(sc, "gtk_enum_t?");
s_any = s7_t(sc);
- 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_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_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_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_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_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_gi = s7_make_circular_signature(sc, 1, 2, s_gtk_enum_t, 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_igi = s7_make_circular_signature(sc, 2, 3, s_integer, s_gtk_enum_t, s_integer);
- pl_ssi = s7_make_circular_signature(sc, 2, 3, s_string, s_string, s_integer);
pl_bti = s7_make_circular_signature(sc, 2, 3, s_boolean, s_any, s_integer);
- pl_ssig = s7_make_circular_signature(sc, 3, 4, s_string, s_string, s_integer, s_gtk_enum_t);
pl_btiib = s7_make_circular_signature(sc, 4, 5, s_boolean, s_any, s_integer, s_integer, s_boolean);
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);
@@ -48048,9 +48123,6 @@ static void define_functions(s7_scheme *sc)
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_p = s7_make_circular_signature(sc, 0, 1, s_pair);
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);
@@ -48079,6 +48151,7 @@ static void define_functions(s7_scheme *sc)
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_pst = s7_make_circular_signature(sc, 2, 3, s_pair, s_string, s_any);
pl_sug = s7_make_circular_signature(sc, 2, 3, s_string, s_pair_false, s_gtk_enum_t);
pl_sui = s7_make_circular_signature(sc, 2, 3, s_string, s_pair_false, s_integer);
pl_psu = s7_make_circular_signature(sc, 2, 3, s_pair, s_string, s_pair_false);
@@ -48094,22 +48167,28 @@ static void define_functions(s7_scheme *sc)
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_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_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_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_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_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_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_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_t = s7_make_circular_signature(sc, 0, 1, s_any);
+ pl_p = s7_make_circular_signature(sc, 0, 1, s_pair);
+ 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_bi = s7_make_circular_signature(sc, 1, 2, s_boolean, s_integer);
+ pl_big = s7_make_circular_signature(sc, 2, 3, s_boolean, s_integer, s_gtk_enum_t);
+ pl_sg = s7_make_circular_signature(sc, 1, 2, s_string, s_gtk_enum_t);
pl_pt = s7_make_circular_signature(sc, 1, 2, s_pair, s_any);
pl_tu = s7_make_circular_signature(sc, 1, 2, s_any, s_pair_false);
+ 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_gs = s7_make_circular_signature(sc, 1, 2, s_gtk_enum_t, s_string);
+ pl_isi = s7_make_circular_signature(sc, 2, 3, s_integer, s_string, s_integer);
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_sig = s7_make_circular_signature(sc, 2, 3, s_string, s_integer, s_gtk_enum_t);
pl_turs = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_real, s_string);
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);
@@ -48127,6 +48206,7 @@ static void define_functions(s7_scheme *sc)
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_isgt = s7_make_circular_signature(sc, 3, 4, s_integer, s_string, s_gtk_enum_t, s_any);
pl_tugu = s7_make_circular_signature(sc, 3, 4, s_any, s_pair_false, s_gtk_enum_t, s_pair_false);
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);
@@ -48180,23 +48260,13 @@ static void define_functions(s7_scheme *sc)
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_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_i = s7_make_circular_signature(sc, 0, 1, s_integer);
- pl_bi = s7_make_circular_signature(sc, 1, 2, s_boolean, s_integer);
- 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_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_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_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_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_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_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_tiu = s7_make_circular_signature(sc, 2, 3, s_any, s_integer, s_pair_false);
- pl_tist = s7_make_circular_signature(sc, 3, 4, s_any, s_integer, s_string, 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_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_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_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_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);
@@ -48238,26 +48308,50 @@ static void define_functions(s7_scheme *sc)
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_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_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_i = s7_make_circular_signature(sc, 0, 1, s_integer);
+ pl_g = s7_make_circular_signature(sc, 0, 1, s_gtk_enum_t);
+ 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_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_tist = s7_make_circular_signature(sc, 3, 4, s_any, s_integer, s_string, 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_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_gu = s7_make_circular_signature(sc, 1, 2, s_gtk_enum_t, s_pair_false);
pl_pi = s7_make_circular_signature(sc, 1, 2, s_pair, s_integer);
+ pl_pg = s7_make_circular_signature(sc, 1, 2, s_pair, s_gtk_enum_t);
pl_iur = s7_make_circular_signature(sc, 2, 3, s_integer, s_pair_false, s_real);
+ 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_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_gui = s7_make_circular_signature(sc, 2, 3, s_gtk_enum_t, s_pair_false, s_integer);
pl_piu = s7_make_circular_signature(sc, 2, 3, s_pair, s_integer, s_pair_false);
pl_pit = s7_make_circular_signature(sc, 2, 3, s_pair, s_integer, s_any);
pl_iug = s7_make_circular_signature(sc, 2, 3, s_integer, s_pair_false, s_gtk_enum_t);
+ pl_guut = s7_make_circular_signature(sc, 3, 4, s_gtk_enum_t, s_pair_false, s_pair_false, s_any);
pl_iugi = s7_make_circular_signature(sc, 3, 4, s_integer, s_pair_false, s_gtk_enum_t, s_integer);
+ pl_pgbi = s7_make_circular_signature(sc, 3, 4, s_pair, s_gtk_enum_t, s_boolean, 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_guuut = s7_make_circular_signature(sc, 4, 5, s_gtk_enum_t, s_pair_false, s_pair_false, s_pair_false, s_any);
+ pl_iuugs = s7_make_circular_signature(sc, 4, 5, s_integer, s_pair_false, s_pair_false, s_gtk_enum_t, s_string);
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_g = s7_make_circular_signature(sc, 0, 1, s_gtk_enum_t);
- 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_tg = s7_make_circular_signature(sc, 1, 2, s_any, s_gtk_enum_t);
+ 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_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_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);
@@ -48267,6 +48361,12 @@ static void define_functions(s7_scheme *sc)
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_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_b = s7_make_circular_signature(sc, 0, 1, s_boolean);
+ pl_s = s7_make_circular_signature(sc, 0, 1, s_string);
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);
@@ -51643,6 +51743,19 @@ static void define_functions(s7_scheme *sc)
s7_define_typed_function(sc, "gtk_drag_source_get_target_list", lg_gtk_drag_source_get_target_list, 1, 0, 0, H_gtk_drag_source_get_target_list, pl_pu);
s7_define_typed_function(sc, "gtk_drag_source_set_target_list", lg_gtk_drag_source_set_target_list, 2, 0, 0, H_gtk_drag_source_set_target_list, pl_tu);
s7_define_typed_function(sc, "gtk_scale_button_new", lg_gtk_scale_button_new, 4, 0, 0, H_gtk_scale_button_new, pl_prrru);
+ s7_define_typed_function(sc, "gtk_application_new", lg_gtk_application_new, 2, 0, 0, H_gtk_application_new, pl_pst);
+ s7_define_typed_function(sc, "gtk_application_add_window", lg_gtk_application_add_window, 2, 0, 0, H_gtk_application_add_window, pl_tu);
+ s7_define_typed_function(sc, "gtk_application_remove_window", lg_gtk_application_remove_window, 2, 0, 0, H_gtk_application_remove_window, pl_tu);
+ s7_define_typed_function(sc, "gtk_application_get_windows", lg_gtk_application_get_windows, 1, 0, 0, H_gtk_application_get_windows, pl_pu);
+ s7_define_typed_function(sc, "gtk_application_inhibit", lg_gtk_application_inhibit, 4, 0, 0, H_gtk_application_inhibit, pl_iuugs);
+ s7_define_typed_function(sc, "gtk_application_uninhibit", lg_gtk_application_uninhibit, 2, 0, 0, H_gtk_application_uninhibit, pl_tui);
+ s7_define_typed_function(sc, "gtk_application_get_window_by_id", lg_gtk_application_get_window_by_id, 2, 0, 0, H_gtk_application_get_window_by_id, pl_pui);
+ s7_define_typed_function(sc, "gtk_application_list_action_descriptions", lg_gtk_application_list_action_descriptions, 1, 0, 0, H_gtk_application_list_action_descriptions, pl_pu);
+ s7_define_typed_function(sc, "gtk_application_get_accels_for_action", lg_gtk_application_get_accels_for_action, 2, 0, 0, H_gtk_application_get_accels_for_action, pl_pus);
+ s7_define_typed_function(sc, "gtk_application_get_actions_for_accel", lg_gtk_application_get_actions_for_accel, 2, 0, 0, H_gtk_application_get_actions_for_accel, pl_pus);
+ s7_define_typed_function(sc, "gtk_application_set_accels_for_action", lg_gtk_application_set_accels_for_action, 3, 0, 0, H_gtk_application_set_accels_for_action, pl_tus);
+ s7_define_typed_function(sc, "gtk_application_prefers_app_menu", lg_gtk_application_prefers_app_menu, 1, 0, 0, H_gtk_application_prefers_app_menu, pl_bu);
+ s7_define_typed_function(sc, "gtk_application_get_menu_by_id", lg_gtk_application_get_menu_by_id, 2, 0, 0, H_gtk_application_get_menu_by_id, pl_pus);
#endif
s7_define_typed_function(sc, "cairo_create", lg_cairo_create, 1, 0, 0, H_cairo_create, pl_pu);
@@ -52157,6 +52270,7 @@ static void define_functions(s7_scheme *sc)
s7_define_typed_function(sc, "GDK_CONTENT_PROVIDER", lg_GDK_CONTENT_PROVIDER, 1, 0, 0, "(GDK_CONTENT_PROVIDER obj) casts obj to GDK_CONTENT_PROVIDER", pl_bpt);
s7_define_typed_function(sc, "GDK_CONTENT_SERIALIZER", lg_GDK_CONTENT_SERIALIZER, 1, 0, 0, "(GDK_CONTENT_SERIALIZER obj) casts obj to GDK_CONTENT_SERIALIZER", pl_bpt);
s7_define_typed_function(sc, "GDK_CONTENT_DESERIALIZER", lg_GDK_CONTENT_DESERIALIZER, 1, 0, 0, "(GDK_CONTENT_DESERIALIZER obj) casts obj to GDK_CONTENT_DESERIALIZER", pl_bpt);
+ s7_define_typed_function(sc, "GTK_APPLICATION", lg_GTK_APPLICATION, 1, 0, 0, "(GTK_APPLICATION obj) casts obj to GTK_APPLICATION", pl_bpt);
#endif
s7_define_function(sc, "g_object_get", lg_g_object_get, 3, 0, 0, NULL);
@@ -52393,6 +52507,7 @@ static void define_functions(s7_scheme *sc)
s7_define_typed_function(sc, "GDK_IS_CONTENT_PROVIDER", lg_GDK_IS_CONTENT_PROVIDER, 1, 0, 0, "(GDK_IS_CONTENT_PROVIDER obj): #t if obj is a GdkContentProvider*", pl_bt);
s7_define_typed_function(sc, "GDK_IS_CONTENT_SERIALIZER", lg_GDK_IS_CONTENT_SERIALIZER, 1, 0, 0, "(GDK_IS_CONTENT_SERIALIZER obj): #t if obj is a GdkContentSerializer*", pl_bt);
s7_define_typed_function(sc, "GDK_IS_CONTENT_DESERIALIZER", lg_GDK_IS_CONTENT_DESERIALIZER, 1, 0, 0, "(GDK_IS_CONTENT_DESERIALIZER obj): #t if obj is a GdkContentDeserializer*", pl_bt);
+ s7_define_typed_function(sc, "GTK_IS_APPLICATION", lg_GTK_IS_APPLICATION, 1, 0, 0, "(GTK_IS_APPLICATION obj): #t if obj is a GtkApplication*", pl_bt);
#endif
}
@@ -53545,6 +53660,10 @@ static void define_integers(s7_scheme *sc)
s7_define(sc, cur_env, s7_make_symbol(sc, "GTK_STATE_FLAG_FOCUS_VISIBLE"), s7_make_integer(sc, GTK_STATE_FLAG_FOCUS_VISIBLE));
s7_define(sc, cur_env, s7_make_symbol(sc, "GTK_IMAGE_SURFACE"), s7_make_integer(sc, GTK_IMAGE_SURFACE));
s7_define(sc, cur_env, s7_make_symbol(sc, "GTK_IMAGE_TEXTURE"), s7_make_integer(sc, GTK_IMAGE_TEXTURE));
+ s7_define(sc, cur_env, s7_make_symbol(sc, "GTK_APPLICATION_INHIBIT_LOGOUT"), s7_make_integer(sc, GTK_APPLICATION_INHIBIT_LOGOUT));
+ s7_define(sc, cur_env, s7_make_symbol(sc, "GTK_APPLICATION_INHIBIT_SWITCH"), s7_make_integer(sc, GTK_APPLICATION_INHIBIT_SWITCH));
+ s7_define(sc, cur_env, s7_make_symbol(sc, "GTK_APPLICATION_INHIBIT_SUSPEND"), s7_make_integer(sc, GTK_APPLICATION_INHIBIT_SUSPEND));
+ s7_define(sc, cur_env, s7_make_symbol(sc, "GTK_APPLICATION_INHIBIT_IDLE"), s7_make_integer(sc, GTK_APPLICATION_INHIBIT_IDLE));
#endif
s7_define(sc, cur_env, s7_make_symbol(sc, "CAIRO_STATUS_SUCCESS"), s7_make_integer(sc, CAIRO_STATUS_SUCCESS));
@@ -53717,19 +53836,13 @@ static void define_doubles(s7_scheme *sc)
}
-static void define_atoms(s7_scheme *sc)
-{
- s7_pointer cur_env, gdkatom_symbol;
- cur_env = s7_curlet(sc);
- gdkatom_symbol = s7_make_symbol(sc, "GdkAtom");
-
-}
-
-
static void define_symbols(s7_scheme *sc)
{
+ GMenu__sym = s7_make_symbol(sc, "GMenu_");
+ GApplicationFlags_sym = s7_make_symbol(sc, "GApplicationFlags");
GtkContentFormats__sym = s7_make_symbol(sc, "GtkContentFormats_");
GtkStyleProvider__sym = s7_make_symbol(sc, "GtkStyleProvider_");
+ GdkAtom__sym = s7_make_symbol(sc, "GdkAtom_");
GdkDisplay_gtk_invisible_get_display_sym = s7_make_symbol(sc, "GdkDisplay_gtk_invisible_get_display");
GtkInvisible__sym = s7_make_symbol(sc, "GtkInvisible_");
GValue_sym = s7_make_symbol(sc, "GValue");
@@ -53967,6 +54080,7 @@ static void define_symbols(s7_scheme *sc)
GtkSpinButton__sym = s7_make_symbol(sc, "GtkSpinButton_");
GtkSizeGroup__sym = s7_make_symbol(sc, "GtkSizeGroup_");
GtkSettings__sym = s7_make_symbol(sc, "GtkSettings_");
+ GtkSelectionData__sym = s7_make_symbol(sc, "GtkSelectionData_");
GtkScrolledWindow__sym = s7_make_symbol(sc, "GtkScrolledWindow_");
GtkScale__sym = s7_make_symbol(sc, "GtkScale_");
GtkRange__sym = s7_make_symbol(sc, "GtkRange_");
@@ -53994,6 +54108,7 @@ static void define_symbols(s7_scheme *sc)
PangoLayout__sym = s7_make_symbol(sc, "PangoLayout_");
GtkEntry__sym = s7_make_symbol(sc, "GtkEntry_");
GtkEditable__sym = s7_make_symbol(sc, "GtkEditable_");
+ GdkAtom_sym = s7_make_symbol(sc, "GdkAtom");
etc_sym = s7_make_symbol(sc, "etc");
GtkDialog__sym = s7_make_symbol(sc, "GtkDialog_");
GtkCallback_sym = s7_make_symbol(sc, "GtkCallback");
@@ -54021,6 +54136,7 @@ static void define_symbols(s7_scheme *sc)
GdkPixbufDestroyNotify_sym = s7_make_symbol(sc, "GdkPixbufDestroyNotify");
GError__sym = s7_make_symbol(sc, "GError_");
guchar__sym = s7_make_symbol(sc, "guchar_");
+ GdkPixbuf__sym = s7_make_symbol(sc, "GdkPixbuf_");
GdkCursor__sym = s7_make_symbol(sc, "GdkCursor_");
GdkGeometry__sym = s7_make_symbol(sc, "GdkGeometry_");
GList__sym = s7_make_symbol(sc, "GList_");
@@ -54046,9 +54162,6 @@ static void define_symbols(s7_scheme *sc)
GtkDrawingArea__sym = s7_make_symbol(sc, "GtkDrawingArea_");
GdkSeat__sym = s7_make_symbol(sc, "GdkSeat_");
GtkRecentInfo__sym = s7_make_symbol(sc, "GtkRecentInfo_");
- guint8__sym = s7_make_symbol(sc, "guint8_");
- GdkAtom_sym = s7_make_symbol(sc, "GdkAtom");
- GdkPixbuf__sym = s7_make_symbol(sc, "GdkPixbuf_");
GtkIconView__sym = s7_make_symbol(sc, "GtkIconView_");
GtkEntryCompletion__sym = s7_make_symbol(sc, "GtkEntryCompletion_");
GtkFileFilterInfo__sym = s7_make_symbol(sc, "GtkFileFilterInfo_");
@@ -54056,9 +54169,6 @@ static void define_symbols(s7_scheme *sc)
GtkCellRenderer__sym = s7_make_symbol(sc, "GtkCellRenderer_");
GtkTreeViewColumn__sym = s7_make_symbol(sc, "GtkTreeViewColumn_");
GtkTreeView__sym = s7_make_symbol(sc, "GtkTreeView_");
- GdkAtom__sym = s7_make_symbol(sc, "GdkAtom_");
- GtkSelectionData__sym = s7_make_symbol(sc, "GtkSelectionData_");
- GtkClipboard__sym = s7_make_symbol(sc, "GtkClipboard_");
GtkTreeIter__sym = s7_make_symbol(sc, "GtkTreeIter_");
GtkTreePath__sym = s7_make_symbol(sc, "GtkTreePath_");
GtkTreeModel__sym = s7_make_symbol(sc, "GtkTreeModel_");
@@ -55112,6 +55222,10 @@ static enummer_t enum_info[] = {
{"GTK_STATE_FLAG_FOCUS_VISIBLE", "GtkStateFlags", GTK_STATE_FLAG_FOCUS_VISIBLE},
{"GTK_IMAGE_SURFACE", "GtkImageType", GTK_IMAGE_SURFACE},
{"GTK_IMAGE_TEXTURE", "GtkImageType", GTK_IMAGE_TEXTURE},
+ {"GTK_APPLICATION_INHIBIT_LOGOUT", "GtkApplicationInhibitFlags", GTK_APPLICATION_INHIBIT_LOGOUT},
+ {"GTK_APPLICATION_INHIBIT_SWITCH", "GtkApplicationInhibitFlags", GTK_APPLICATION_INHIBIT_SWITCH},
+ {"GTK_APPLICATION_INHIBIT_SUSPEND", "GtkApplicationInhibitFlags", GTK_APPLICATION_INHIBIT_SUSPEND},
+ {"GTK_APPLICATION_INHIBIT_IDLE", "GtkApplicationInhibitFlags", GTK_APPLICATION_INHIBIT_IDLE},
#endif
{NULL, NULL, 0}};
@@ -55235,7 +55349,6 @@ void libgtk_s7_init(s7_scheme *sc)
define_xm_obj(sc);
define_integers(sc);
define_doubles(sc);
- define_atoms(sc);
define_strings(sc);
define_symbols(sc);
define_lint(sc);
@@ -55253,7 +55366,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, "01-Jan-18"));
+ s7_define(sc, cur_env, s7_make_symbol(sc, "libgtk-version"), s7_make_string(sc, "11-Feb-18"));
}
/* 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 c48c523..2e40bb6 100644
--- a/lint.scm
+++ b/lint.scm
@@ -119,7 +119,7 @@
macro? magnitude make-byte-vector make-float-vector make-int-vector make-hash-table make-hook make-iterator make-list make-polar
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
+ object->let object->string odd? openlet? or outlet output-port? owlet
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
@@ -127,9 +127,9 @@
sequence? sin sinh square sqrt stacktrace string string->list string->number string->symbol string->keyword string-append
string-ci<=? string-ci<? string-ci=? string-ci>=? string-ci>? string-downcase string-length
string-position string-ref string-upcase string<=? string<? string=? string>=? string>? string?
- sublet substring symbol symbol->dynamic-value symbol->keyword symbol->string symbol->value symbol?
- tan tanh tree-leaves tree-memq truncate type-of
- unless
+ sublet substring symbol symbol->dynamic-value symbol->keyword symbol->string symbol->value symbol? syntax?
+ tan tanh tree-leaves tree-memq tree-set-memq tree-count tree-cyclic? truncate type-of
+ unless unspecified? undefined?
values vector vector-append vector->list vector-dimensions vector-length vector-ref vector?
when with-baffle with-let with-input-from-file with-input-from-string with-output-to-string
zero?
@@ -181,8 +181,9 @@
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 immutable! immutable?
- list-values apply-values unquote))
+ getenv directory? file-exists? type-of immutable! immutable? byte-vector-set! syntax?
+ list-values apply-values unquote set-current-output-port unspecified? undefined? byte-vector-ref
+ set-current-input-port set-current-error-port directory->list system tree-count tree-set-memq tree-cyclic?))
ht))
(makers (let ((h (make-hash-table)))
@@ -233,7 +234,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? immutable? constant?))
+ unspecified? c-object? immutable? constant? syntax? unspecified? undefined? tree-cyclic?))
h))
(booleans (let ((h (make-hash-table)))
@@ -244,7 +245,8 @@
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? immutable? constant? infinite? nan? char-upper-case? char-lower-case? directory? file-exists?))
+ negative? positive? zero? immutable? constant? syntax? unspecified? undefined?
+ infinite? nan? char-upper-case? char-lower-case? directory? file-exists?))
h))
(notables (let ((h (make-hash-table)))
@@ -333,7 +335,9 @@
(fragmin *fragment-max-size*)
(fragmax 0)
(*max-cdr-len* 16)) ; 40 is too high, 24 questionable, if #f the let+do rewrite is turned off
-
+
+ ;; (let ((st (symbol-table))) (for-each (lambda (x) (if (and (procedure? (symbol->value x)) (not (hash-table-ref built-in-functions x))) (format *stderr* "~A~%" x))) st))
+
(set! *e* (curlet))
(set! *lint* (curlet)) ; external access to (for example) the built-in-functions hash-table via (*lint* 'built-in-functions)
@@ -854,11 +858,10 @@
(symbol? (cadr x))))
(denote (just-symbols? form)
- (or (symbol? form)
- (do ((p form (cdr p)))
- ((not (and (pair? p)
- (symbol? (car p))))
- (null? p)))))
+ (do ((p form (cdr p)))
+ ((not (and (pair? p)
+ (symbol? (car p))))
+ (null? p))))
(denote (code-constant? x)
(and (constant? x)
@@ -902,8 +905,9 @@
sequence? sin sinh square sqrt string->number string->symbol
string-ci<=? string-ci<? string-ci=? string-ci>=? string-ci>? string-downcase string-length
string-position string-ref string-upcase string<=? string<? string=? string>=? string>? string?
- substring symbol symbol->keyword symbol->string symbol?
+ substring symbol symbol->keyword symbol->string symbol? syntax?
tan tanh tree-leaves tree-memq truncate
+ unspecified? undefined?
vector-dimensions vector-length vector-ref vector?
zero?))
ht)))
@@ -976,39 +980,51 @@
(cddr initial-value))))
(and (pair? body)
(let ((sig (let signer ((endb (last-ref body)))
- (and (not (side-effect? endb env))
- (cond ((not (pair? endb))
- (and (not (symbol? endb))
- (list (->lint-type endb))))
+ (cond ((not (pair? endb))
+ (and (not (symbol? endb))
+ (list (->lint-type endb))))
+
+ ((side-effect? endb env)
+ (list (case (car endb)
+ ((display write)
+ (->lint-type (cadr endb)))
+
+ ((write-char write-byte string-copy openlet float-vector-set! read-char read-byte
+ open-output-string open-input-file int-vector-set! dilambda open-input-string
+ get-output-string read-line newline close-output-port close-input-port coverlet
+ peek-char open-output-file string->byte-vector read-string file-exists? directory?)
+ (->lint-type (car endb)))
+
+ (else #t))))
+
+ ((arg-signature (car endb) env)
+ => (lambda (a)
+ (and (pair? a)
+ (list (car a)))))
+ (else
+ (let ((len (length endb)))
+ (case (car endb)
+ ((if)
+ (and (= len 4)
+ (let ((a1 (signer (caddr endb)))
+ (a2 (signer (cadddr endb))))
+ (and (equal? a1 a2) a1))))
+
+ ((let let* letrec letrec* unless when with-let let-temporarily with-baffle)
+ (and (> len 2)
+ (signer (list-ref endb (- len 1)))))
+
+ ((begin)
+ (and (> len 1)
+ (signer (list-ref endb (- len 1)))))
+
+ ((do)
+ (and (> len 2)
+ (pair? (caddr endb))
+ (pair? (cdaddr endb)) ; if nil -> unspecified?
+ (signer (last-ref (cdaddr endb)))))
- ((arg-signature (car endb) env)
- => (lambda (a)
- (and (pair? a)
- (list (car a)))))
- (else
- (let ((len (length endb)))
- (case (car endb)
- ((if)
- (and (= len 4)
- (let ((a1 (signer (caddr endb)))
- (a2 (signer (cadddr endb))))
- (and (equal? a1 a2) a1))))
-
- ((let let* letrec letrec* unless when with-let let-temporarily with-baffle)
- (and (> len 2)
- (signer (list-ref endb (- len 1)))))
-
- ((begin)
- (and (> len 1)
- (signer (list-ref endb (- len 1)))))
-
- ((do)
- (and (> len 2)
- (pair? (caddr endb))
- (pair? (cdaddr endb)) ; if nil -> unspecified?
- (signer (last-ref (cdaddr endb)))))
-
- (else #f)))))))))
+ (else #f))))))))
(if (not (pair? sig))
(set! sig (list #t)))
@@ -1053,20 +1069,19 @@
(define (out-vars func-name arglist body)
(let ((ref ())
(set ()))
- (let var-walk ((tree body)
- (e (cons func-name arglist)))
-
- (define (var-walk-body tree e)
- (when (pair? tree)
- (for-each (lambda (p) (set! e (var-walk p e))) tree)))
-
- (define (shadowed v)
- (if (and (or (memq v e)
- (memq v ref))
- (not (memq v set)))
- (set! set (cons v set)))
- v)
-
+
+ (define (var-walk-body tree e)
+ (when (pair? tree)
+ (for-each (lambda (p) (set! e (var-walk p e))) tree)))
+
+ (define (shadowed v e)
+ (if (and (or (memq v e)
+ (memq v ref))
+ (not (memq v set)))
+ (set! set (cons v set)))
+ v)
+
+ (define (var-walk tree e)
(if (symbol? tree)
(if (not (or (memq tree e)
(memq tree ref)
@@ -1093,14 +1108,14 @@
((let letrec)
(let* ((named (symbol? (cadr tree)))
(vars (if named
- (list (shadowed (cadr tree)))
+ (list (shadowed (cadr tree) e))
()))
(varlist ((if named caddr cadr) tree)))
(when (pair? varlist)
(for-each (lambda (v)
(when (len>1? v)
(var-walk (cadr v) e)
- (set! vars (cons (shadowed (car v)) vars))))
+ (set! vars (cons (shadowed (car v) e) vars))))
((if named caddr cadr) tree)))
(var-walk-body ((if named cdddr cddr) tree) (append vars e))))
@@ -1112,7 +1127,7 @@
(for-each (lambda (v)
(when (len>1? v)
(var-walk (cadr v) (append vars e))
- (set! vars (cons (shadowed (car v)) vars))))
+ (set! vars (cons (shadowed (car v) e) vars))))
varlist))
(var-walk-body ((if named cdddr cddr) tree) (append vars e))))
@@ -1131,7 +1146,7 @@
(for-each (lambda (v)
(when (len>1? v)
(var-walk (cadr v) e)
- (set! vars (cons (shadowed (car v)) vars))))
+ (set! vars (cons (shadowed (car v) e) vars))))
(cadr tree))
(for-each (lambda (v)
(if (len>2? v)
@@ -1160,6 +1175,7 @@
(var-walk (car tree) e)
(var-walk (cdr tree) e)))))))
e)
+ (var-walk body (cons func-name arglist))
(list ref set)))
(define (get-side-effect v)
@@ -4764,7 +4780,7 @@
(else (cons '* val)))))
- ((and (number? arg1) ; (* 2 (random 3.0)) -> (random 6.0)
+ ((and (number? arg1) ; (* 2 (random 3.0)) -> (random 6.0) [except for (random 1)...
(eq? (car arg2) 'random)
(pair? (cdr arg2))
(number? (cadr arg2))
@@ -5241,7 +5257,7 @@
(integer-length (cadr form))
form))
(hash-table-set! h 'integer-length numintlen))
-
+
(let ()
(define (numsqrt args form env)
(cond ((not (pair? args))
@@ -5391,13 +5407,13 @@
(cond ((not (and (len=1? args)
(number? (car args))))
(cons 'random args))
- ((eqv? (car args) 0)
+ ((memv (car args) '(0 1 -1))
0)
- ((morally-equal? (car args) 0.0)
+ ((zero? (car args))
0.0)
(else (cons 'random args))))
(hash-table-set! h 'random numran))
-
+
(let ()
(define (numcmplx args form env)
;; (complex (/ a b) (/ c b)) can't be simplified because a b c might be complex and
@@ -6515,6 +6531,12 @@
(if (len=3? arg)
(lint-format "perhaps ~A" caller (lists->string form (list 'list-ref (cadr arg) (caddr arg))))))
+ ((list) ; (car (list x ...)) -> x, (car (list)) is handled elsewhere, (car (cons...)) is below
+ (lint-format "perhaps ~A" caller (lists->string form (cadr arg))))
+
+ ((append) ; (car (append x ...)) -> (car x)
+ (lint-format "perhaps ~A" caller (lists->string form (list 'car (cadr arg)))))
+
((memq memv member assq assv assoc)
(if (pair? (cdr arg)) ; (car (memq x ...)) is either x or (car #f) -> error
(lint-format "~A is ~A, or an error" caller (truncated-list->string form) (cadr arg))))))
@@ -7254,8 +7276,9 @@
(for-each (lambda (f)
(hash-special f sp-symbol?))
'(symbol? rational? real? complex? float? keyword? gensym? byte-vector? proper-list? sequence? constant?
- char? boolean? float-vector? int-vector? vector? let? hash-table? input-port? c-object?
- output-port? iterator? continuation? dilambda? procedure? macro? random-state? eof-object? c-pointer?)))
+ char? boolean? float-vector? int-vector? vector? let? hash-table? input-port? c-object?
+ output-port? iterator? continuation? dilambda? procedure? macro? random-state? eof-object? c-pointer?
+ syntax? undefined? unspecified?)))
;; ---------------- pair? list? ----------------
(let ()
@@ -9810,12 +9833,12 @@
(let ((s7-fields (let ((h (make-hash-table)))
(for-each (lambda (f)
(hash-table-set! h f #t))
- '(print-length safety cpu-time heap-size free-heap-size gc-freed max-string-length max-list-length
+ '(print-length safety cpu-time heap-size max-heap-size free-heap-size gc-freed max-string-length max-list-length
max-vector-length max-vector-dimensions default-hash-table-length initial-string-port-length
gc-protected-objects file-names rootlet-size c-types stack-top stack-size stacktrace-defaults
max-stack-size stack catches exits float-format-precision bignum-precision default-rationalize-error
default-random-state morally-equal-float-epsilon hash-table-float-epsilon undefined-identifier-warnings
- gc-stats symbol-table-locked? c-objects history-size profile-info autoloading?))
+ gc-stats symbol-table-locked? c-objects history-size history profile-info autoloading?))
h)))
(lambda (caller head form env)
(if (len=2? form)
@@ -10350,6 +10373,18 @@
(when (pair? checkers)
(let ((arg-number 1)
(flen (- (length form) 1)))
+
+ (define (check-cond-arg expr checker)
+ (unless (symbol? expr)
+ (let ((op (->lint-type expr)))
+ (when (pair? op)
+ (set! op (remove 'boolean? op)) ; this is for cond test, no result -- returns test if not #f, so it can't be #f!
+ (if (null? (cdr op))
+ (set! op (car op))))
+ (if (not (or (memq op '(#f #t values))
+ (every-compatible? checker op)))
+ (report-arg-trouble caller form head arg-number checker expr op env)))))
+
(call-with-exit
(lambda (done)
(for-each
@@ -10363,18 +10398,7 @@
(if (not (or (memq op '(#f #t values))
(every-compatible? checker op)))
(report-arg-trouble caller form head arg-number checker expr op env)))))
-
- (define (check-cond-arg expr)
- (unless (symbol? expr)
- (let ((op (->lint-type expr)))
- (when (pair? op)
- (set! op (remove 'boolean? op)) ; this is for cond test, no result -- returns test if not #f, so it can't be #f!
- (if (null? (cdr op))
- (set! op (car op))))
- (if (not (or (memq op '(#f #t values))
- (every-compatible? checker op)))
- (report-arg-trouble caller form head arg-number checker expr op env)))))
-
+
;; special case checker?
(if (and (symbol? checker)
(not (memq checker '(unused-parameter? unused-set-parameter?)))
@@ -10492,7 +10516,7 @@
(if (and (not (eq? (cadr clause) '=>))
(proper-list? (cdr clause)))
(check-arg (last-ref clause)))
- (check-cond-arg (car clause)))))
+ (check-cond-arg (car clause) checker))))
(cdr arg))))
((call/cc call-with-exit call-with-current-continuation)
@@ -17750,7 +17774,10 @@
;; -------- walk-do-end+result --------
(define (walk-do-end+result caller form vars inner-env env)
;; walk the body and end stuff (it's too tricky to find infinite do loops)
- (when (pair? (caddr form))
+ (when (and (pair? (caddr form))
+ (or (null? (cadr form))
+ (and (proper-list? (cadr form))
+ (pair? (caadr form)))))
(let ((end+result (caddr form)))
(when (pair? end+result)
(let ((end (car end+result)))
@@ -17786,29 +17813,77 @@
(end ; it's not #f
(if (never-true end)
(lint-format "end test is never true: ~A" caller end)
- (let ((v (and (len>1? end)
- (memq (car end) '(< > <= >=))
- (symbol? (cadr end))
- (var-member (cadr end) vars))))
+ (begin
+
+ ;; (do ((i 0 (+ i 1))) ((= i 0)) ...)
+ (when (and (not (tree-memq 'eof-object? end))
+ (lint-every? (lambda (stepper)
+ (and (pair? stepper) ; (do ((i 0) ())...)
+ (pair? (cdr stepper)) ; (do ((i))...)
+ (not (and (symbol? (cadr stepper))
+ (tree-memq (car stepper) end)))))
+ (cadr form))
+ (let walk ((tree end))
+ (if (pair? tree)
+ (and (walk (car tree))
+ (walk (cdr tree)))
+ (or (constant? tree)
+ (hash-table-ref no-side-effect-functions tree)
+ (and (symbol? tree)
+ (var-member tree vars))))))
+ (let* ((new-end `(let (,@(map (lambda (stepper) ; -> (let ((i 0)) (= i 0)) using the example above
+ (if (tree-memq (car stepper) end)
+ (list (car stepper) (cadr stepper))
+ (values)))
+ (cadr form)))
+ ,end))
+ (val (catch #t
+ (lambda ()
+ ((lambda* args (car args)) (eval new-end (inlet)))) ; lambda* here and below to catch multiple values, if any
+ (lambda args
+ :eval-error))))
+ (if (and val (not (eq? val :eval-error)))
+ (lint-format "do is a no-op because ~A is true at the start: ~A" caller end form)
+ (let* ((step-end `(let (,@(map (lambda (stepper) ; -> (let ((i (+ 0 1))) (= i 0)) as above
+ (if (tree-memq (car stepper) end)
+ (if (pair? (cddr stepper))
+ (list (car stepper)
+ (tree-subst (cadr stepper) (car stepper) (caddr stepper)))
+ (cadr stepper))
+ (values)))
+ (cadr form)))
+ ,end))
+ (val (catch #t
+ (lambda ()
+ ((lambda* args (car args)) (eval step-end (inlet))))
+ (lambda args
+ :eval-error))))
+ (if (and val (not (eq? val :eval-error)))
+ (lint-format "do is unnecessary: ~A" caller form))))))
+
;; if found, v is the var info
- (when (pair? v)
- (let ((step (var-step v)))
- (when (pair? step)
- (let ((inc (and (memq (car step) '(+ -))
- (len>1? (cdr step))
- (or (and (real? (cadr step)) (cadr step))
- (and (real? (caddr step)) (caddr step))))))
- (when (and (real? inc)
- (case (car step)
- ((+) (and (positive? inc)
- (memq (car end) '(< <=))))
- ((-) (and (positive? inc)
- (memq (car end) '(> >=))))
- (else #f)))
- ;; (do ((i 0 (+ i 1))) ((< i len)) (display i)
- ;; (do ((i 0 (- i 1))) ((> i len)) (display i))
- (lint-format "do step looks like it doesn't match end test: ~A" caller
- (lists->string step end))))))))))
+ (let ((v (and (len>1? end)
+ (memq (car end) '(< > <= >=))
+ (symbol? (cadr end))
+ (var-member (cadr end) vars))))
+ (when (pair? v)
+ (let ((step (var-step v)))
+ (when (pair? step)
+ (let ((inc (and (memq (car step) '(+ -))
+ (len>1? (cdr step))
+ (or (and (real? (cadr step)) (cadr step))
+ (and (real? (caddr step)) (caddr step))))))
+ (when (and (real? inc)
+ (case (car step)
+ ((+) (and (positive? inc)
+ (memq (car end) '(< <=))))
+ ((-) (and (positive? inc)
+ (memq (car end) '(> >=))))
+ (else #f)))
+ ;; (do ((i 0 (+ i 1))) ((< i len)) (display i)
+ ;; (do ((i 0 (- i 1))) ((> i len)) (display i))
+ (lint-format "do step looks like it doesn't match end test: ~A" caller
+ (lists->string step end)))))))))))
((pair? (cdr end+result))
;; (do ((i 0 (+ i 1))) (#f i))
(lint-format "result is unreachable: ~A" caller end+result)))
@@ -21324,8 +21399,16 @@
(and (pair? a)
(pair? b)
(equal-ignoring-constants? (car a) (car b))
- (equal-ignoring-constants? (cdr a) (cdr b)))))))
-
+ (equal-ignoring-constants? (cdr a) (cdr b))))))
+ (constable? (lambda (cp)
+ (and (len>1? cp)
+ (memq (car cp) '(list vector int-vector float-vector byte-vector))
+ (lint-every? (lambda (inp)
+ (and (or (not (symbol? inp)) ; leave (list pi *stderr*) unrewritten
+ (keyword? inp))
+ (or (code-constant? inp)
+ (constable? inp))))
+ (cdr cp))))))
(lambda (caller head form env)
(let ((v (var-member head env)))
(when (and v (not (memq form (var-history v))))
@@ -21464,15 +21547,7 @@
(hash-table-ref no-side-effect-functions head)
(not (memq head unsafe-makers)))
(for-each (lambda (p)
- (when (let constable? ((cp p))
- (and (len>1? cp)
- (memq (car cp) '(list vector int-vector float-vector byte-vector))
- (lint-every? (lambda (inp)
- (and (or (not (symbol? inp)) ; leave (list pi *stderr*) unrewritten
- (keyword? inp))
- (or (code-constant? inp)
- (constable? inp))))
- (cdr cp))))
+ (when (constable? p)
(let ((pval (eval/error caller p)))
(if (not (eq? pval :error))
(lint-format "perhaps ~A -> ~A~A" caller
@@ -22617,4 +22692,3 @@
;;; 62 910885
-
diff --git a/peak-phases.scm b/peak-phases.scm
index 9742b9f..6085906 100644
--- a/peak-phases.scm
+++ b/peak-phases.scm
@@ -1477,21 +1477,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.299772 #(0.000000 0.386867 1.653764 1.366490 1.818957 1.170179 0.746011 1.244621 0.518713 0.125019 0.674384 1.904498 1.527512 0.082612 1.261964 0.908804 1.478919 0.659339 0.335306 0.893817 0.039604 1.753664 0.304702 1.455181 1.210349 1.722942 0.874204 0.692842 1.152493 0.333639 0.198413 0.574585 1.793774 1.692528 0.109057 1.300872 1.135949 1.738729 0.846005 0.611687 1.284908 0.353267 0.121224 0.785181 1.889524 1.643643 0.216178 1.390272 1.233329 1.684259 0.950760 0.838494 1.194686 0.536472 0.419880 0.848288 0.083689 0.018461 0.519133 1.642975 1.581227 0.082761 1.150942 1.105620 1.623148 0.727690 0.644645 1.116583 0.315144 0.219333 0.778983 -0.016249 1.868083 0.556306 1.733202 1.543639 0.230380 1.363258 1.229727 1.786609 0.917892 0.835861 1.337995 0.568455 0.464500 0.990659 0.357160 0.168560 0.728465 0.103760 1.869474 0.409622 1.729520 1.619029 0.155254 1.343230 1.406880 1.858807 0.997910 1.114858 1.581186 0.789136 0.801304 1.349932 0.575992 0.486203 1.072693 0.321756 0.304712 0.800152 0.061413 0.116895 0.582393 1.796183 1.832116 0.365832 1.602908 1.574644 0.159250 1.473171 1.367437 1.968767 1.313038 1.150495 1.813524 1.112722 0.997630 1.661252 0.976659 0.856130 1.451091 0.773899 0.705576 1.299185 0.528052 0.590311 1.133330 0.446161 0.467437 0.919881 0.293853 0.333210 0.887788 0.158282 0.213417 0.810749 0.088227 0.078554 0.641800 0.003392 0.024152 0.638942 1.945375 1.952353 0.567979 1.796186 1.868957 0.384160 1.714646 1.816815 0.359319 1.818367 1.704104 0.358628 1.775122 1.590345 0.316125 1.531330 1.611076 0.337439 1.505010 1.691221 0.378415 1.692246 1.679451 0.315028 1.838293 1.606981 0.284923 1.796870 1.613093 0.352021 1.621512 1.652141 0.312857 1.649903 1.644687 0.294116 1.777931 1.734554 0.475733 1.794350 1.831162 0.650501 1.743148 1.931773 0.635291 1.918172 -0.001249 0.603514 0.080947 0.147011 0.779708 0.246631 0.262703 0.882902 0.234058 0.327815 0.981935 0.282108 0.365100 1.126390 0.492709 0.546011 1.345411 0.752725 0.746311 1.482065 0.891452 0.977980 1.688653 1.038449 1.081657 1.824187 1.278595 1.149128 -0.020212 1.410878 1.306096 0.045200 1.506784 1.625233 0.323214 1.618253 1.925909 0.564542 0.057351 0.209289 0.932613 0.313158 0.243212 1.022397 0.619542 0.601466 1.359007 0.701112 0.739557 1.544056 0.938554 1.379866 1.977760 1.246572 1.386381 0.074300 1.688348 1.724083 0.495575 1.891252 -0.176740 0.666892 0.261792 0.401468 1.148564 0.411462 0.558164 1.438744 0.911699 1.019795 1.756921 1.181318 1.287771 0.079913 1.667824 1.732414 0.552403 0.001263 -0.029263 0.786376 0.305290 0.378021 1.294591 0.650345 0.692059 1.408668 1.020546 1.240107 0.127517 1.538393 1.651668 0.428778 1.851409 0.190968 0.874054 0.503894 0.524635 1.439819 0.740797 0.916046 1.664650 1.208531 1.493462 0.317220 1.794286 1.832534 0.667649 0.017192 0.378171 1.075960 0.899445 0.868669 1.818976 1.206372 1.234105 0.106640 1.585783 1.861491 0.768682 0.359215 0.329113 1.403666 0.580395 0.915306 1.747020 1.299636 1.499519 0.340156 1.965786 -0.065730 0.835157 0.287537 0.578570 1.345174 1.104840 1.297683 0.095494 1.580614 1.708048 0.732690 0.274559 0.521891 1.238159 0.648070 1.073873 1.920384 1.546034 1.498094 0.405171 -0.111723 0.279392 0.970776 0.681472 0.769716 1.640223 1.373362 1.456565 0.385381 1.882042 0.193384 1.127427 0.715098 0.973386 1.825854 1.389692 1.547269 0.466093 -0.005414 0.227318 1.208511 0.787993 0.956667 1.843825 1.433072 1.606493 0.570030 0.186871 0.454028 1.374845 0.840830 1.168267 0.122427 1.795252 0.012255 0.917339 0.420088 0.673910 1.628085 1.263288 1.504285 0.442148 -0.051930 0.380624 1.228797 0.807609 1.018720 -0.090053 1.578068 1.853101 0.684012 0.422285 0.620785 1.595449 1.134028 1.494760 0.647234 0.154948 0.429315 1.185286 0.917558 1.305853 0.209447 1.994428 -0.004619 1.001745 0.653040 0.855336 0.049797 1.586575 1.968552 0.987600 0.390944 0.867073 1.741306 1.509980 1.734500 0.537146 0.198797 0.487062 1.478397 1.227608 1.415524 0.494855 0.045893 0.451984 1.506378 1.205682 1.494139 0.349113 0.034369 0.344985 1.338910 0.960686 1.352588 0.302967 -0.183583 0.252702 1.311297 0.969424 1.268810 0.290973 0.110504 0.284687 1.315580 0.995060 1.453911 0.440530 0.047797 0.544504 1.383593 1.093896 1.395029 0.362279 0.297416 0.364840 1.455226 1.084062 1.386386 0.527002 0.204593 0.574567 1.665239 1.129179 1.676427 0.680383 0.414686 0.694543 1.767090 1.642062 1.924606 0.855396 0.604481 0.968244 -0.000461 1.745841 0.146160 1.168327 0.845103 1.276116 0.302137 0.006226 0.391359 1.497794 1.162035 1.543555 0.559514 0.335102 0.856044 1.838771 1.627771 0.011137 1.042457 0.828655 1.164141 0.331256 0.101556 0.485853 1.528598 1.297688 1.796647 0.829820 0.501243 1.019665 0.104593)
+ 23.253692 #(0.000000 0.387723 1.651937 1.362832 1.807877 1.170993 0.736471 1.247434 0.511307 0.096940 0.672253 1.898951 1.514310 0.070648 1.265667 0.890503 1.470038 0.664380 0.323802 0.894250 0.043626 1.750097 0.301055 1.456948 1.223360 1.714097 0.857359 0.680532 1.127725 0.311569 0.201616 0.549077 1.789504 1.675639 0.104902 1.295466 1.133846 1.741586 0.841622 0.602031 1.288917 0.347118 0.091034 0.794581 1.885340 1.640952 0.227324 1.401651 1.221417 1.701278 0.960792 0.813147 1.192533 0.538637 0.388082 0.841595 0.095295 0.013114 0.521962 1.662496 1.588698 0.101617 1.165547 1.103957 1.609402 0.729139 0.641263 1.142486 0.321520 0.224803 0.795116 0.011343 1.890483 0.545178 1.750091 1.565091 0.222135 1.356011 1.240091 1.775693 0.935372 0.836680 1.329026 0.585814 0.491615 0.973311 0.378280 0.175013 0.732903 0.133283 1.878867 0.426841 1.727388 1.629701 0.174120 1.328703 1.416458 1.888345 1.001430 1.100844 1.584413 0.794291 0.802430 1.334788 0.594705 0.487051 1.073821 0.325304 0.296144 0.808906 0.063053 0.092018 0.594256 1.798942 1.826378 0.358598 1.594851 1.578819 0.165444 1.478090 1.370911 1.968635 1.313513 1.153253 1.813096 1.105884 1.009617 1.676613 0.955785 0.864651 1.450518 0.772481 0.717015 1.287427 0.561637 0.594927 1.105821 0.433897 0.467927 0.923863 0.265089 0.341390 0.901563 0.174329 0.214074 0.782919 0.102365 0.102224 0.639637 0.013475 0.060693 0.645458 1.966108 1.960151 0.575661 1.794058 1.871573 0.391260 1.714275 1.825426 0.355960 1.826954 1.712769 0.358878 1.788465 1.593160 0.326713 1.516231 1.612968 0.347393 1.494193 1.705998 0.389410 1.717326 1.689605 0.322836 1.860448 1.623061 0.313724 1.785703 1.611601 0.381412 1.635193 1.630067 0.325400 1.643526 1.648936 0.279013 1.778108 1.727775 0.465863 1.804838 1.864915 0.643430 1.750491 1.950314 0.635412 1.893888 0.006272 0.594679 0.076258 0.128963 0.791450 0.267906 0.265959 0.892319 0.266131 0.354577 0.983909 0.305173 0.368871 1.122461 0.484773 0.553184 1.334714 0.757593 0.758134 1.509485 0.895266 1.017252 1.696165 1.031019 1.081595 1.838236 1.282879 1.127508 -0.023983 1.423159 1.278450 0.042802 1.505032 1.614503 0.316314 1.617678 1.907054 0.550030 0.045317 0.217385 0.953882 0.315763 0.265087 1.029614 0.608247 0.617152 1.359406 0.694478 0.745200 1.540790 0.946172 1.391597 1.976780 1.255728 1.365899 0.087603 1.708005 1.767344 0.483094 1.883700 -0.183696 0.677041 0.266674 0.429380 1.154792 0.392865 0.541867 1.450059 0.919087 1.035379 1.786651 1.180060 1.241222 0.071376 1.670924 1.744853 0.566816 -0.019522 -0.043629 0.765190 0.301036 0.374292 1.309529 0.637454 0.649717 1.389446 1.023734 1.245946 0.103075 1.543177 1.632992 0.433948 1.861802 0.191779 0.841859 0.504350 0.532054 1.479550 0.734807 0.927066 1.666604 1.213912 1.507296 0.322844 1.801240 1.837927 0.660379 0.005435 0.377619 1.067645 0.900947 0.872639 1.793898 1.207904 1.217040 0.104201 1.552239 1.870742 0.778386 0.374385 0.333993 1.389757 0.564317 0.911234 1.730740 1.280480 1.490791 0.350714 1.977492 -0.089186 0.808444 0.287991 0.565531 1.376876 1.114315 1.278801 0.091415 1.567483 1.686741 0.703904 0.311388 0.540543 1.284761 0.633118 1.082572 1.890816 1.544006 1.487525 0.420527 -0.133626 0.283808 0.970962 0.668756 0.755001 1.621999 1.391411 1.494385 0.393080 1.894797 0.170941 1.100265 0.703658 0.983646 1.819107 1.403267 1.553453 0.465637 -0.027610 0.242624 1.192800 0.763939 0.944774 1.823435 1.415886 1.586675 0.589506 0.177769 0.432714 1.382901 0.827163 1.162569 0.107718 1.834160 0.002796 0.914763 0.418776 0.673316 1.626998 1.268910 1.526299 0.441450 -0.057015 0.363193 1.246268 0.802151 1.030292 -0.104359 1.565299 1.845351 0.695004 0.424424 0.587595 1.583746 1.116747 1.508747 0.650747 0.154562 0.403403 1.169827 0.921741 1.325536 0.202923 0.001782 -0.029580 0.987628 0.619609 0.877610 0.040495 1.589394 1.963464 0.988466 0.402955 0.888947 1.743144 1.535087 1.729872 0.527504 0.175382 0.484302 1.511377 1.230666 1.392898 0.475334 0.047133 0.446103 1.479533 1.188504 1.491503 0.359140 0.029507 0.319461 1.341549 0.976917 1.365040 0.320360 -0.198519 0.238660 1.292831 0.954566 1.263449 0.286890 0.100581 0.280672 1.310422 0.985781 1.457681 0.410053 0.062091 0.548938 1.359615 1.103074 1.381865 0.358263 0.302463 0.367075 1.434195 1.082448 1.390876 0.531782 0.182805 0.583592 1.658162 1.101437 1.662383 0.675210 0.425952 0.691300 1.790490 1.645650 1.943435 0.854354 0.613819 0.952445 -0.019931 1.740351 0.156381 1.146694 0.840250 1.267502 0.329680 0.012263 0.382350 1.475972 1.157562 1.536593 0.553588 0.322839 0.866432 1.870438 1.614241 0.017190 1.069600 0.855362 1.145157 0.324338 0.132906 0.467964 1.559703 1.320696 1.808855 0.812050 0.515298 1.031085 0.092345)
)
;;; 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.132681 #(0.000000 0.217173 0.607027 0.972479 1.361857 1.687294 0.065420 0.468776 0.805816 1.190933 1.587423 1.927190 0.311095 0.728793 1.033496 1.437723 1.820386 0.240748 0.532565 0.946649 1.316451 1.735610 0.088752 0.514729 0.892769 1.302221 1.662633 0.107560 0.472262 0.870073 1.265298 1.741173 0.217231 0.600703 1.029604 1.377822 1.868069 0.241744 0.638097 1.108864 1.520613 1.949212 0.366898 0.824030 1.259529 1.731809 0.114270 0.573320 1.054606 1.440788 1.890393 0.338920 0.765035 1.257461 1.716957 0.136832 0.580013 1.043068 1.452323 1.940260 0.423137 0.900971 1.335233 1.848703 0.334501 0.855625 1.287757 1.763078 0.254645 0.691898 1.236975 1.740605 0.181843 0.648400 1.169385 1.630882 0.132572 0.616728 1.078352 1.602714 0.095075 0.573601 1.137904 1.645831 0.167694 0.689158 1.181072 1.699043 0.250090 0.769291 1.304475 1.816781 0.284733 0.847365 1.363820 1.895563 0.430585 0.972112 1.502425 0.045881 0.590882 1.174707 1.708632 0.275623 0.803960 1.345031 1.872767 0.428263 1.000004 1.554567 0.116393 0.619840 1.242735 1.804041 0.396790 0.960488 1.526716 0.138387 0.728692 1.273553 1.837797 0.406678 1.055083 1.581417 0.182720 0.802473 1.387787 -0.004316 0.571240 1.194250 1.795349 0.418162 0.971289 1.636503 0.209621 0.779815 1.389535 -0.012509 0.592628 1.240061 1.849547 0.532501 1.152349 1.759325 0.417762 1.016873 1.620885 0.261878 0.887607 1.540907 0.163403 0.847857 1.474219 0.119894 0.759041 1.401047 0.022316 0.667742 1.354864 -0.030960 0.677724 1.332019 0.013328 0.738833 1.385059 0.021089 0.672462 1.340080 -0.019770 0.669426 1.342604 0.004321 0.677481 1.396961 0.064852 0.784036 1.494869 0.162156 0.855287 1.542368 0.215132 0.944947 1.657055 0.317404 1.041807 1.733414 0.471294 1.240410 1.964805 0.646462 1.346437 0.016605 0.750291 1.491847 0.228574 0.990834 1.687725 0.446756 1.139807 1.863507 0.555633 1.283757 0.076035 0.866005 1.612183 0.327478 1.025663 1.811903 0.571516 1.349960 0.086188 0.780700 1.558746 0.362536 1.102309 1.889951 0.636161 1.399344 0.153056 0.936218 1.726788 0.468172 1.321029 0.044833 0.849848 1.623735 0.431622 1.251172 0.028407 0.792082 1.594580 0.363160 1.164028 -0.002558 0.786911 1.583355 0.396460 1.201689 -0.018551 0.844837 1.651868 0.464919 1.271856 0.074754 0.901578 1.744813 0.552207 1.383832 0.203951 1.058388 1.895941 0.718167 1.580958 0.402302 1.242864 0.034856 0.906800 1.766410 0.614782 1.490320 0.310934 1.180735 0.038240 0.892410 1.787874 0.659208 1.472267 0.336657 1.200042 0.061040 0.964933 1.805165 0.677552 1.553972 0.450708 1.307928 0.208048 1.089980 -0.012248 0.838756 1.763054 0.656871 1.574445 0.435437 1.365052 0.261561 1.146952 0.042157 0.933900 1.843753 0.737101 1.700565 0.626502 1.511064 0.411606 1.335500 0.318892 1.212979 0.140221 1.077795 -0.001641 0.936143 1.849935 0.818203 1.718975 0.680155 1.627401 0.548163 1.481074 0.457562 1.418668 0.361092 1.313891 0.261207 1.234041 0.183285 1.143454 0.130673 1.081824 0.029268 0.995954 0.021219 0.939780 1.908949 0.929247 1.898605 0.835145 1.828550 0.883223 1.823005 0.755077 1.798940 0.816641 1.798603 0.763744 1.777608 0.799508 1.798622 0.748861 1.767910 0.796149 1.787085 0.815590 1.812121 0.825872 1.855520 0.842734 1.870862 0.930186 -0.034522 0.952913 0.037668 1.059909 0.054142 1.105845 0.121581 1.140553 0.185698 1.283340 0.280216 1.352715 0.392116 1.413164 0.470780 1.584886 0.572491 1.641652 0.763528 1.798444 0.797445 1.903266 0.985584 0.042680 1.114216 0.188541 1.275594 0.318258 1.419639 0.523028 1.601146 0.659159 1.721399 0.859814 1.949698 1.034878 0.175517 1.260624 0.320703 1.436700 0.487888 1.615524 0.750283 1.855626 0.978693 0.058101 1.209343 0.308456 1.365058 0.527790 1.679994 0.800647 1.893562 1.025780 0.141530 1.286314 0.418661 1.600224 0.694209 1.815647 1.010339 0.161372 1.245108 0.397009 1.573078 0.767827 1.870076 1.034877 0.212492 1.363802 0.494957 1.669825 0.837885 0.024935 1.179215 0.314314 1.506583 0.652466 1.857694 1.052276 0.233879 1.415386 0.580418 1.746834 0.951381 0.113279 1.302374 0.544072 1.735515 0.922423 0.117696 1.341274 0.559648 1.738761 0.936570 0.117819 1.381955 0.633726 1.773057 1.009718 0.216348 1.461726 0.703615 1.922882 1.125463 0.370605 1.626911 0.870283 0.063549 1.270573 0.559087 1.759925 1.012664 0.272613 1.520665 0.768575 0.032132 1.262772 0.496254 1.728017 1.033265 0.267618 1.518734 0.800093 0.034761 1.319003 0.608969 1.870840 1.134745 0.429233 1.690176 1.017171 0.272815 1.541043 0.809350 0.156783 1.429771 0.681995 -0.015377 1.273310 0.615916 1.873520 1.200922 0.521669 1.776415 1.096919 0.391668 1.722264 1.049700 0.315892 1.605611 0.964686 0.272476 1.590767 0.940951 0.291914 1.578703 0.912805 0.285130 1.600025 0.932389 0.256990 1.592115 0.963937 0.288728 1.629409 0.984639 0.314683 1.653757 1.019805 0.433464 1.755035 1.068713 0.423034 1.802745 1.184472 0.576487 1.936994 1.280830 0.643226 0.049738 1.411068 0.759759 0.170659 1.562774 0.945182 0.314646 1.680014 1.085013 0.476476 1.836262 1.284555 0.666081 0.081852 1.472447 0.908178 0.272428 1.717592 1.089459 0.537212 1.923418 1.331039 0.738774 0.164906 1.571112 1.016992 0.443621 1.859672 1.299048 0.705188 0.118010 1.624083 1.017725 0.482789 1.865392 1.350327 0.752786 0.263784 1.658933 1.136258 0.560417 0.031765 1.489447 0.915179 0.399324 1.872572 1.362615 0.820841 0.264564 1.716215 1.200921 0.689350 0.189526 1.606884 1.118779 0.626826 0.083059 1.556372 1.058792 0.578071 0.021263 1.531528 0.983403 0.493391 0.025754 1.496399 1.026999 0.496643 0.019379 1.537266 1.068818 0.587303 0.061484 1.587159 1.106855 0.653453 0.164893 1.651293 1.191590 0.748916 0.259453 1.788464 1.310978 0.845774 0.419730 1.897029 1.503241 0.991529 0.535623 0.088784 1.624889 1.246329 0.758244 0.336737 1.873338 1.448656 1.000596 0.578027 0.129362 1.641791 1.259482 0.777603 0.398547 1.972538 1.517006 1.185867 0.696162 0.306629 1.852632 1.403764 1.035587 0.602872 0.202884 1.812309 1.398952 1.004340 0.634126 0.188372 1.837102 1.371768 1.011818 0.637624 0.287477 1.863350 1.459094 1.106345 0.668554 0.376924 1.950394 1.547916 1.185062 0.811421 0.445688 0.102494 1.748268 1.351713 1.022849 0.588509 0.272636 1.905016 1.513783 1.187514 0.816796 0.509700 0.176554 1.822648 1.508395 1.150531 0.825257 0.443409 0.170893 1.809424 1.445474 1.125434 0.782356 0.465314 0.118242 1.873926 1.515244 1.224422 0.892594 0.537731 0.257117 1.901138 1.645819 1.353377 1.052170 0.720351 0.401833 0.121486 1.810730 1.573373 1.212655 0.950796 0.625980 0.408298 0.046379 1.823981 1.469551 1.219974 0.945915 0.681348 0.436847 0.166787 1.847914 1.609890 1.353371 1.067480 0.879105 0.543117 0.356610 0.049285 1.788126 1.505143 1.301796 1.024068 0.798500 0.568852 0.249826 0.114192 1.760796 1.576227 1.359100 1.089203 0.896278 0.681306 0.411689 0.163179 0.012711 1.738873 1.549394 1.361625 1.128262 0.925643 0.708291 0.489038 0.314693 0.060323 1.844133 1.735673 1.483099 1.273076 1.103540 0.898161 0.695303 0.495661 0.298537 0.134826 -0.007350 1.751023 1.576817 1.412651 1.279772 0.997856 0.926411 0.728591 0.534777 0.420745 0.227057 0.074797 1.974146 1.753151 1.607375 1.413108 1.303424 1.070484 0.965524 0.817504 0.693866 0.535210 0.428228 0.255698 0.172450 -0.017926 1.872765 1.717717 1.636361 1.448256 1.446299 1.205281 1.115259 1.011116 0.897247 0.722493 0.662199 0.506317 0.386310 0.309670 0.145302 0.039676 1.959689 1.872008 1.770980 1.659838 1.625200 1.511496 1.433505 1.404463 1.258209 1.185437 1.072846 1.035546 0.874627 0.821587 0.741612 0.759819 0.648468 0.549314 0.517860 0.426372 0.428520 0.212821 0.254847 0.178375 0.125677 0.020239 -0.013980 -0.003252 1.950166 1.877076 1.804781 1.769723 1.767179 1.723024 1.638628 1.610236 1.619883 1.586691 1.520128 1.541362 1.462210 1.450955 1.421112 1.465086 1.447826 1.390620 1.404570 1.424133 1.400644 1.352164 1.398124 1.361696 1.313237 1.353677 1.364205 1.366321 1.385662 1.403004 1.366910 1.448189 1.459881 1.427059 1.433170 1.476735 1.429395 1.476242 1.500230 1.538894 1.588534 1.562998 1.659556 1.696925 1.737446 1.802759 1.809306 1.945211 1.864851 1.957566 -1.802263 0.054332 0.120735 0.153154 0.226812 0.324481 0.329983 0.439982 0.451511 0.498138 0.606000 0.661499 0.711943 0.792461 0.876919 0.930106 1.025684 1.034519 1.180714 1.286239 1.413699 1.430751 1.610752 1.644060 1.757511 1.845280 1.981240 0.046093 0.173740 0.257154 0.350407 0.459975 0.582308 0.757029 0.788514 0.928238 1.065315 1.202573 1.298704 1.441530 1.607786 1.670801 1.833086 1.978745 0.097800 0.212682 0.316098 0.435766 0.608084 0.755657 0.887240 1.061527 1.155438 1.347271 1.490831 1.607881 1.793881 -0.030738 0.174605 0.379814 0.509738 0.650740 0.855248 1.036000 1.230512 1.433013 1.570054 1.787900 1.944747 0.062432 0.291328 0.488339 0.634671 0.820973 1.057029 1.232998 1.357918 1.589879 1.737277 -0.040720 0.188791 0.365692 0.566726 0.814926 1.024932 1.262492 1.470933 1.659843 1.864302 0.124747 0.368000 0.575053 0.826411 1.094912 1.307502 1.553491 1.816900 -1.762686 0.196350 0.504623 0.710276 0.958657 1.153223 1.369048 1.711833 1.905100 0.179244 0.461195 0.703802 0.966810 1.196126 1.494768 1.737383 0.044103 0.298907 0.541580 0.795336 1.077912 1.356484 1.597433 1.905323 0.201517 0.457611 0.803201 1.118796 1.402951 1.704974 -0.014581 0.302903 0.612812 0.940448 1.199233 1.547568 1.862740 0.115820 0.492284 0.744439 1.062467 1.418499 1.676941 -0.005658 0.338294 0.695279 1.040270 1.377303 1.702710 0.113121)
+ 33.087483 #(0.000000 0.214442 0.609160 0.966485 1.354821 1.688970 0.067063 0.465485 0.809662 1.193886 1.589033 1.922571 0.307235 0.732679 1.034710 1.433407 1.823150 0.243307 0.531168 0.948363 1.309729 1.727523 0.087553 0.512717 0.890443 1.294453 1.664188 0.119412 0.476725 0.871642 1.262977 1.741427 0.227253 0.603317 1.025406 1.381063 1.869183 0.245136 0.644167 1.110324 1.520596 1.947576 0.368411 0.820728 1.259652 1.740057 0.115278 0.573101 1.049086 1.443362 1.894536 0.338618 0.766539 1.253878 1.719790 0.136740 0.579964 1.043545 1.449314 1.939025 0.420533 0.902030 1.336296 1.850646 0.341599 0.854681 1.288501 1.758504 0.256213 0.693820 1.240826 1.742034 0.174440 0.646616 1.164948 1.635815 0.132982 0.619433 1.079622 1.600520 0.096054 0.575855 1.132617 1.648007 0.164316 0.686061 1.183167 1.699161 0.255298 0.776227 1.306341 1.818469 0.292006 0.851694 1.366459 1.896984 0.434067 0.980785 1.509756 0.045295 0.593223 1.172305 1.711032 0.265188 0.806990 1.356740 1.872237 0.432218 1.007934 1.558190 0.116657 0.618754 1.234352 1.800114 0.393504 0.958622 1.530489 0.141076 0.728765 1.276320 1.837963 0.415837 1.053881 1.587851 0.180364 0.795179 1.389120 -0.006679 0.567661 1.192628 1.794505 0.421706 0.971558 1.626045 0.209775 0.775952 1.389528 -0.018141 0.589609 1.248252 1.856883 0.536866 1.152343 1.761943 0.419929 1.011032 1.617153 0.265962 0.888390 1.540037 0.167544 0.851675 1.473010 0.114216 0.755374 1.401929 0.019711 0.662638 1.352329 -0.032141 0.677339 1.329135 0.022250 0.737962 1.382388 0.023585 0.673586 1.336155 -0.024791 0.667892 1.341063 0.004409 0.676272 1.396535 0.071706 0.785107 1.486247 0.160485 0.849890 1.533784 0.216825 0.951514 1.663658 0.323698 1.045781 1.734888 0.467194 1.240473 1.973896 0.644432 1.346414 0.013665 0.749295 1.488676 0.226873 0.990325 1.686896 0.447786 1.141236 1.861849 0.556246 1.285166 0.080322 0.866443 1.606906 0.324852 1.021669 1.818057 0.575735 1.345602 0.083064 0.783324 1.566575 0.361656 1.105357 1.886730 0.636175 1.398868 0.152433 0.937852 1.717864 0.467190 1.321764 0.039894 0.856300 1.626136 0.434830 1.251977 0.029696 0.793743 1.594234 0.359629 1.168471 -0.001307 0.790806 1.586876 0.391434 1.200709 -0.018593 0.840457 1.654000 0.470330 1.273921 0.064184 0.900604 1.742284 0.558575 1.379096 0.198112 1.057334 1.892964 0.711287 1.579926 0.404172 1.247129 0.040503 0.911282 1.765063 0.614619 1.493217 0.309796 1.188804 0.042733 0.893084 1.785314 0.654255 1.475395 0.346624 1.203370 0.063959 0.961509 1.803939 0.675288 1.548803 0.450726 1.315013 0.205695 1.089067 -0.016522 0.836552 1.761714 0.654327 1.575712 0.430679 1.361361 0.262499 1.140452 0.045658 0.934913 1.851192 0.744428 1.699675 0.628285 1.516805 0.420750 1.346573 0.318775 1.214952 0.135490 1.072757 -0.006421 0.931610 1.857303 0.815606 1.714052 0.685911 1.626034 0.549516 1.481936 0.453470 1.418151 0.353363 1.311935 0.260664 1.236712 0.190629 1.139504 0.129140 1.072513 0.032680 1.004222 0.025859 0.950755 1.910603 0.935464 1.899218 0.829306 1.832590 0.886888 1.816964 0.758005 1.797153 0.816416 1.802054 0.770116 1.778426 0.797550 1.799184 0.749613 1.761991 0.795877 1.788449 0.810513 1.813364 0.825086 1.855268 0.846286 1.873577 0.931200 -0.032114 0.950189 0.037957 1.057394 0.049327 1.113825 0.125275 1.139976 0.188430 1.279463 0.282035 1.355237 0.391050 1.413855 0.470579 1.585733 0.576590 1.643349 0.764480 1.799584 0.801419 1.910172 0.985874 0.046270 1.116434 0.192643 1.273041 0.318883 1.418460 0.524244 1.601408 0.661213 1.729021 0.862057 1.944484 1.036971 0.169229 1.264413 0.326229 1.433815 0.487319 1.620213 0.748581 1.859861 0.979603 0.056598 1.208136 0.314814 1.365709 0.522403 1.683924 0.796408 1.893710 1.024052 0.141787 1.276698 0.415520 1.601857 0.694969 1.814045 1.019283 0.170728 1.244887 0.394760 1.571236 0.764136 1.866004 1.029935 0.209453 1.363410 0.500093 1.664939 0.838823 0.021895 1.173540 0.308763 1.504123 0.646909 1.846704 1.051429 0.240844 1.420245 0.583233 1.752179 0.954941 0.108200 1.299382 0.546966 1.736239 0.923098 0.122875 1.334684 0.556184 1.739491 0.928633 0.115422 1.386754 0.624774 1.775536 1.007512 0.218668 1.457732 0.702843 1.924599 1.126829 0.362290 1.626456 0.870761 0.061867 1.267616 0.551635 1.762593 1.012204 0.267850 1.515893 0.764893 0.029993 1.251280 0.498601 1.733992 1.031344 0.268161 1.515064 0.794590 0.037044 1.321541 0.608422 1.876118 1.134407 0.428921 1.690316 1.018031 0.272804 1.544353 0.816930 0.154301 1.430365 0.679789 -0.015844 1.276409 0.610497 1.875780 1.200494 0.527199 1.773325 1.089401 0.388863 1.725782 1.045094 0.319423 1.609943 0.963960 0.273710 1.592191 0.938802 0.289964 1.584182 0.917634 0.283674 1.596657 0.931883 0.264087 1.598402 0.959916 0.286607 1.634904 0.988684 0.314281 1.655582 1.023253 0.432016 1.762733 1.066023 0.420701 1.806197 1.186184 0.573493 1.934510 1.274331 0.645942 0.047095 1.414484 0.757752 0.169440 1.561770 0.942412 0.307663 1.686615 1.086449 0.473066 1.838974 1.283241 0.672974 0.086329 1.471314 0.905079 0.273988 1.710940 1.088164 0.541250 1.924043 1.327198 0.733191 0.170786 1.570474 1.013448 0.442185 1.860935 1.302684 0.708896 0.118419 1.620108 1.015089 0.478624 1.865630 1.350423 0.760133 0.257426 1.661903 1.134240 0.561228 0.032276 1.486594 0.912198 0.402073 1.878535 1.361871 0.814649 0.267508 1.717533 1.201848 0.688769 0.187907 1.605246 1.116395 0.625754 0.076584 1.554629 1.056692 0.581800 0.021196 1.536119 0.978827 0.492775 0.020383 1.497766 1.027829 0.495817 0.018208 1.531687 1.064472 0.582158 0.064068 1.585128 1.113034 0.646439 0.164166 1.653569 1.190959 0.746249 0.256658 1.788048 1.317249 0.850384 0.420550 1.897458 1.501251 0.993527 0.536316 0.088270 1.622446 1.249812 0.762559 0.337801 1.876871 1.443695 0.995169 0.572520 0.123744 1.642828 1.258964 0.779019 0.399172 1.972307 1.514158 1.189520 0.696774 0.305511 1.853563 1.398772 1.034766 0.599118 0.198363 1.810181 1.398225 1.002842 0.637120 0.184948 1.842840 1.376073 1.016840 0.629748 0.280655 1.862477 1.454466 1.107085 0.667936 0.378256 1.955020 1.550214 1.188019 0.804276 0.444709 0.103706 1.745349 1.353145 1.024968 0.581312 0.272927 1.903961 1.512614 1.189933 0.816685 0.512483 0.174501 1.824299 1.510300 1.153359 0.828728 0.442036 0.174370 1.815049 1.450444 1.127851 0.776856 0.471177 0.121082 1.877785 1.523298 1.225132 0.892877 0.536606 0.259125 1.900598 1.647838 1.362163 1.050725 0.723714 0.413690 0.117071 1.818804 1.573570 1.207737 0.954264 0.624157 0.411504 0.046933 1.831141 1.472147 1.218667 0.945526 0.685879 0.432188 0.170492 1.850806 1.610955 1.348090 1.065196 0.885250 0.545073 0.357805 0.049212 1.779175 1.507224 1.301615 1.025333 0.791338 0.573714 0.246155 0.117582 1.761084 1.578744 1.358575 1.086133 0.895129 0.679248 0.412785 0.160435 0.007860 1.736515 1.548049 1.356774 1.123880 0.924124 0.704722 0.494381 0.312392 0.061370 1.848282 1.728026 1.480833 1.275655 1.103058 0.892870 0.691817 0.496162 0.300767 0.133352 -0.007845 1.749328 1.572001 1.417873 1.279201 1.003137 0.927772 0.736844 0.532800 0.416954 0.233202 0.062909 1.977429 1.749409 1.607345 1.414884 1.309793 1.068701 0.972536 0.818498 0.690151 0.533509 0.427034 0.252603 0.168084 -0.015696 1.878185 1.719855 1.633050 1.453504 1.444267 1.208488 1.111590 1.015107 0.903228 0.723663 0.671857 0.507928 0.388685 0.304471 0.139359 0.037648 1.957679 1.866466 1.766919 1.656534 1.628471 1.508514 1.443279 1.408513 1.253630 1.189980 1.073301 1.037179 0.876315 0.821094 0.737723 0.768975 0.646932 0.551320 0.523324 0.425667 0.425311 0.217156 0.259647 0.176838 0.132554 0.018792 -0.015850 -0.000013 1.949427 1.877202 1.807110 1.771591 1.770009 1.723286 1.646124 1.606663 1.617968 1.592391 1.523120 1.546181 1.465151 1.455586 1.418838 1.463690 1.458605 1.397082 1.404217 1.422913 1.396752 1.354633 1.394735 1.357063 1.313474 1.359632 1.356418 1.363515 1.387980 1.405951 1.359633 1.452790 1.461674 1.431019 1.439503 1.473270 1.428780 1.476910 1.499239 1.538514 1.578029 1.561522 1.659351 1.696970 1.737417 1.802589 1.807245 1.949962 1.864782 1.963660 -1.804444 0.051318 0.126642 0.157324 0.224667 0.329733 0.333276 0.441448 0.447831 0.498495 0.606793 0.659965 0.715855 0.791846 0.878973 0.937612 1.015845 1.031310 1.178416 1.282412 1.416130 1.422456 1.611420 1.635534 1.762181 1.845633 1.983101 0.049818 0.175280 0.258845 0.352858 0.460525 0.579800 0.754869 0.792734 0.929947 1.060511 1.197132 1.304563 1.445414 1.603424 1.677766 1.833366 1.972943 0.100891 0.212286 0.323660 0.436555 0.602486 0.750873 0.883473 1.063497 1.159278 1.346558 1.492639 1.606159 1.793302 -0.032033 0.170595 0.383603 0.514482 0.651832 0.857935 1.037050 1.230340 1.438255 1.570306 1.789112 1.941789 0.062959 0.287876 0.484367 0.641147 0.824594 1.054347 1.236888 1.352328 1.595879 1.731932 -0.042750 0.188122 0.362735 0.567439 0.814226 1.022067 1.255608 1.473555 1.659726 1.859519 0.124937 0.364699 0.577007 0.822685 1.097459 1.314894 1.546792 1.810705 -1.764892 0.191648 0.500071 0.711584 0.958217 1.155524 1.361744 1.708150 1.910756 0.176689 0.455931 0.706405 0.978587 1.199103 1.489196 1.741575 0.046165 0.296179 0.544367 0.800895 1.071818 1.359357 1.596855 1.901063 0.203615 0.448620 0.805165 1.114068 1.404224 1.702021 -0.018096 0.303378 0.613975 0.934393 1.200540 1.543558 1.870434 0.117094 0.490414 0.745408 1.068795 1.418184 1.681145 0.004014 0.333992 0.695505 1.042859 1.378381 1.701042 0.115184)
)
;;; 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.193990 #(0.000000 0.403402 1.574421 1.330413 1.772571 0.972385 0.635888 1.070041 0.298876 0.001055 0.420507 1.630210 1.326857 1.801390 0.949923 0.661182 1.176680 0.277471 0.048113 0.534087 1.608168 1.330258 1.860828 0.988041 0.756673 1.204506 0.298812 0.068368 0.586948 1.661869 1.454509 1.910645 1.064037 0.861370 1.266045 0.389337 0.214355 0.658585 1.782851 1.531678 0.017540 1.137042 0.891163 1.409288 0.514386 0.291882 0.802033 1.853063 1.675698 0.133704 1.229704 1.033285 1.499027 0.607841 0.414480 0.869196 0.027939 1.780947 0.249207 1.388911 1.187076 1.613062 0.805070 0.566958 1.047848 0.180273 -0.015482 0.402227 1.589833 1.381934 1.773638 0.997943 0.731044 1.214010 0.376811 0.105136 0.653079 1.796798 1.541753 0.037607 1.160047 0.955025 1.456188 0.585213 0.392911 0.850441 1.967129 1.773433 0.256021 1.398587 1.228043 1.673846 0.803409 0.615220 1.085006 0.235831 0.035110 0.520211 1.635399 1.468665 1.934441 1.075872 0.892620 1.396250 0.489320 0.301830 0.852962 1.940463 1.698977 0.251233 1.350436 1.183483 1.670975 0.746002 0.589686 1.122369 0.220044 0.062058 0.498535 1.720645 1.514114 -0.004051 1.124480 0.947289 1.435590 0.591361 0.375361 0.870376 0.048213 1.853931 0.329612 1.491191 1.303404 1.766054 0.914361 0.775878 1.225838 0.342345 0.146212 0.734463 1.854896 1.671751 0.177074 1.306921 1.127169 1.578542 0.769630 0.597706 1.033732 0.206133 0.030261 0.532701 1.697100 1.488964 0.004353 1.154727 0.974021 1.434609 0.626102 0.466263 0.920410 0.126088 1.933259 0.450991 1.611387 1.399252 1.903040 1.095617 0.920610 1.432065 0.557180 0.412014 0.901526 0.038180 1.883696 0.348896 1.524706 1.402140 1.864435 1.063509 0.886500 1.356817 0.555490 0.349628 0.847903 0.056770 1.916998 0.424019 1.565402 1.384826 1.908363 1.045017 0.911107 1.374616 0.531948 0.385235 0.916316 0.076885 1.953630 0.429259 1.532123 1.403051 1.935926 1.079493 0.961566 1.429629 0.597456 0.453375 0.962813 0.085888 0.019830 0.497451 1.658156 1.505971 0.040460 1.159124 1.064921 1.581591 0.749504 0.546718 1.112637 0.262291 0.107710 0.654698 1.816980 1.627056 0.186345 1.333800 1.144227 1.732398 0.870638 0.728308 1.244302 0.419522 0.257648 0.748414 1.967784 1.813291 0.358994 1.520952 1.344497 1.870174 1.044684 0.924126 1.409275 0.608794 0.503913 0.987460 0.169454 0.059337 0.508019 1.730253 1.620842 0.114017 1.322548 1.137494 1.681748 0.897246 0.678218 1.265272 0.494796 0.268152 0.809623 -0.014763 1.885590 0.417258 1.579258 1.445705 1.972622 1.110324 1.036143 1.565096 0.732740 0.580406 1.084396 0.300668 0.163754 0.672222 1.861164 1.727785 0.255852 1.475400 1.321571 1.885574 1.034348 0.937273 1.476933 0.666718 0.514895 1.014043 0.271382 0.115882 0.695744 1.878998 1.693825 0.288902 1.425929 1.328151 1.889041 1.037753 0.931838 1.454431 0.660601 0.572929 1.086135 0.281715 0.190502 0.674390 1.903854 1.773696 0.308339 1.516382 1.397851 1.907924 1.072447 1.021446 1.558269 0.712397 0.638290 1.159681 0.364263 0.250285 0.791126 0.003709 1.909584 0.453202 1.647023 1.453041 0.102045 1.327326 1.106704 1.692198 0.901094 0.766821 1.285370 0.564785 0.365780 0.955489 0.152043 0.070632 0.580338 1.793623 1.685712 0.264983 1.444435 1.322927 1.880432 1.118018 1.013539 1.536934 0.780941 0.654444 1.224343 0.429404 0.289156 0.846942 0.119764 1.952255 0.473484 1.755671 1.594044 0.136715 1.381698 1.256459 1.831000 1.027870 0.968356 1.482848 0.705758 0.669610 1.150272 0.391089 0.310302 0.824945 0.082530 1.970216 0.461018 1.775354 1.637624 0.173911 1.412674 1.310911 1.919269 1.120617 0.998853 1.563288 0.802974 0.678686 1.258221 0.479284 0.352437 0.886373 0.166400 0.044262 0.592459 1.827965 1.717019 0.316315 1.549848 1.419410 -0.037394 1.253699 1.122094 1.698496 0.950132 0.838461 1.441963 0.694356 0.510921 1.145457 0.357789 0.235646 0.822745 0.031239 1.953323 0.488360 1.775401 1.672263 0.260905 1.487398 1.353322 1.965826 1.185114 1.096622 1.647200 0.893402 0.768486 1.349259 0.626520 0.512047 1.088744 0.372142 0.254572 0.825505 0.073726 0.002932 0.542046 1.787439 1.703298 0.243329 1.504422 1.491460 0.032794 1.259635 1.200184 1.791145 1.001660 0.958439 1.502249 0.783862 0.638180 1.258222 0.540363 0.371989 1.011954 0.268894 0.141237 0.743442 0.010185 1.944864 0.488067 1.726348 1.653027 0.258386 1.443845 1.431485 0.017840 1.240413 1.229274 1.772518 1.038969 0.947063 1.507174 0.787722 0.736245 1.271701 0.555075 0.450852 1.062909 0.333287 0.238429 0.870311 0.094805 0.019690 0.575868 1.857253 1.784293 0.336675 1.618213 1.566906 0.123513 1.403919 1.351661 1.957248 1.184383 1.106923 1.714572 0.946949 0.914876 1.469126 0.796154 0.679853 1.307634 0.563948 0.455095 1.073572 0.373960 0.236151 0.872690 0.118482 0.001308 0.649114 1.937318 1.837164 0.471525 1.678577 1.678691 0.288610 1.523981 1.454863 0.063452 1.335510 1.273017 1.864641 1.147745 1.076788 1.693584 0.950432 0.918360 1.513523 0.817788 0.743588 1.317159 0.656401 0.511773 1.148330 0.476965 0.387585 0.996061 0.207423 0.150741 0.803167 0.036854 -0.013026 0.623933 1.904817 1.834612 0.466854 1.778211 1.688330 0.345774 1.548935 1.524949 0.119812 1.369107 1.342653 1.927474 1.211052 1.209095 1.777503 1.022583 1.024589 1.669935 0.900601 0.918466 1.489107 0.769147 0.734245 1.311456 0.591553 0.545337 1.178188 0.407264 0.436907 1.058270 0.322172 0.302746 0.919581 0.197486 0.134388 0.773180 0.050719 -0.017724 0.643560 1.914735 1.869999 0.481105 1.796219 1.721839 0.358356 1.617170 1.587958 0.230190 1.496498 1.470597 0.067903 1.367693 1.330789 1.990006 1.258655 1.233773 1.893181 1.132002 1.150597 1.738806 1.013138 0.997179 1.659525 0.918339 0.902589 1.508013 0.814026 0.805683 1.378267 0.658383 0.698660 1.293305 0.552807 0.558740 1.155750 0.524368 0.447822 1.057410 0.387956 0.384040 0.974445 0.282711 0.266984 0.913618 0.173289 0.164950 0.819480 0.114969 0.045394 0.738573 -0.036138 0.022868 0.625873 1.934331 1.881085 0.533459 1.810410 1.818999 0.401481 1.741345 1.761985 0.355296 1.674108 1.672053 0.281691 1.623250 1.582948 0.229724 1.528026 1.479776 0.145924 1.463290 1.399411 0.087600 1.396618 1.355086 -0.026880 1.338833 1.277145 1.923912 1.241458 1.257253 1.895800 1.182393 1.219282 1.806110 1.165545 1.107580 1.770113 1.069438 1.007651 1.771538 1.061140 1.038453 1.640778 1.038821 0.964781 1.627647 0.974578 0.897728 1.575248 0.900011 0.903234 1.571309 0.910773 0.869278 1.478861 0.907729 0.779419 1.462327 0.813962 0.811309 1.411970 0.756365 0.752033 1.419165 0.719634 0.702965 1.399488 0.705607 0.682308 1.405039 0.650693 0.657550 1.352092 0.700628 0.652354 1.271081 0.657621 0.624603 1.280066 0.606215 0.617397 1.259666 0.607693 0.641931 1.229721 0.589695 0.609657 1.269216 0.595140 0.586587 1.245554 0.565877 0.571197 1.250622 0.571046 0.597936 1.249791 0.550412 0.587485 1.242845 0.557235 0.566776 1.275423 0.613773 0.571705 1.271405 0.580399 0.622078 1.259959 0.569634 0.618886 1.278667 0.610214 0.641136 1.300599 0.638952 0.699861 1.318163 0.666856 0.634026 1.314334 0.685299 0.650411 1.317001 0.723881 0.726207 1.384555 0.761348 0.740706 1.405596 0.756128 0.769236 1.406003 0.787381 0.797255 1.464616 0.851852 0.847834 1.521213 0.907968 0.863629 1.536331 0.896484 0.897305 1.647414 0.955569 0.957284 1.688883 1.011270 1.021636 1.670172 1.011430 1.069171 1.771611 1.106276 1.076404 1.777418 1.156016 1.162907 1.827262 1.238828 1.215191 1.928723 1.298220 1.258464 -0.029579 1.341911 1.344372 0.039909 1.439398 1.415855 0.128622 1.483419 1.523163 0.205091 1.544275 1.569697 0.292666 1.591494 1.659571 0.309116 1.696865 1.688308 0.435081 1.753538 1.807236 0.485361 1.822133 1.877662 0.523436 1.934033 -0.118899 0.685446 0.016388 0.042602 0.720082 0.128316 0.181947 0.847526 0.225978 0.244727 0.983940 0.304914 0.391407 0.988208 0.439136 0.437830 1.135301 0.524154 0.538194 1.274399 0.607434 0.655353 1.379347 0.763344 0.768244 1.481571 0.824124 0.870913 1.592414 0.962283 1.001172 1.665293 1.078385 1.152075 1.825969 1.219431 1.238914 1.946350 1.301919 1.309735 0.098607 1.447539 1.480945 0.180357 1.557953 1.645647 0.356814 1.670073 1.747931 0.436412 1.813599 1.868516 0.564561 1.947597 1.996271 0.781189 0.079051 0.156177 0.842715 0.196867 0.275633 0.955998 0.344887 0.407283 1.107692 0.532981 0.540751 1.286932 0.680111 0.711159 1.451723 0.781242 0.882619 1.539263 0.968138 1.005745 1.739949 1.095701 1.233158 1.892258 1.296431 1.356354 0.021789 1.423747 1.454934 0.216580 1.611957 1.673348 0.346072 1.749185 1.833237 0.575287 1.941618 0.023513 0.690425 0.141938 0.163923 0.882457 0.248916 0.335402 1.112522 0.482167 0.501852 1.254240 0.670427 0.708933 1.432169 0.818827 0.920560 1.658063 1.029530 1.098728 1.811773 1.187976 1.260799 0.001052 1.418597 1.463045 0.216712 1.600023 1.639800 0.407773 1.782708 1.863115 0.627368 -0.008823 0.069710 0.787205 0.200886 0.267369 0.996445 0.438471 0.490707 1.222051 0.619193 0.719352 1.463688 0.821720 0.917394 1.639104 1.017082 1.134203 1.860237 1.287537 1.291898 0.065152 1.464188 1.537774 0.259868 1.708532 1.782285 0.454301 1.933263 -0.001451 0.719510 0.137267 0.216820 0.999367 0.389186 0.462258 1.165365 0.609525 0.699105 1.449341 0.804334 0.880671 1.660332 1.074898 1.177621 1.921972 1.346101 1.436101 0.146860 1.662298 1.689844 0.394113 1.815128 1.879223 0.644316 0.081007 0.207763 0.937309 0.263519 0.397244 1.114812 0.594325 0.654006 1.396645 0.835815 0.933427 1.674686 1.129808 1.173092 1.991764 1.384199 1.425155 0.174269 1.636219 1.728152 0.469522 1.873654 0.009249 0.705313 0.203017 0.207627 1.019562 0.430223 0.534578 1.325122 0.736698 0.805890 1.544371 0.994993 1.082052 1.872366 1.300363 1.387013 0.147942 1.544372 1.638736 0.427715 1.831179 1.954162 0.674164 0.120674 0.246266 1.021931 0.471186 0.500766 1.263892 0.732065 0.795304 1.580297 1.023081 1.132340 1.903653 1.343835 1.420325 0.243000 1.651333 1.744471 0.495125 1.939958 0.047156 0.807403 0.227518 0.395447 1.113125 0.551804 0.668537 1.481752 0.828936 0.954295 1.752997 1.217916 1.339596 0.079019 1.505780 1.603990 0.425090 1.832130 1.930546 0.751521 0.167161 0.266727 1.038149 0.539963 0.602260 1.346242 0.789757 0.975581 1.746795 1.168498 1.226421 0.024320 1.516798 1.596219 0.424164 1.840191 1.954927 0.708612 0.202030 0.313221 1.100295 0.529771 0.635984 1.431617 0.849833 1.002506 1.813706 1.210257 1.374887 0.138555 1.537911 1.674468 0.484097 1.935056 0.033899 0.827068 0.300422 0.445160 1.190158 0.632594 0.754889 1.524887 0.929746 1.125816 1.976111 1.394432 1.491090 0.230412 1.767386 1.898611 0.674758 0.116741 0.241506 1.035762 0.527800 0.602634 1.409587 0.859332 0.975493 1.785493 1.286753 1.374478 0.156230 1.617047 1.793799 0.523652 0.003819 0.101227 0.947649 0.403822 0.560126 1.352291 0.778920 0.905156 1.682044 1.223768 1.327137 0.120179 1.561057 1.731901 0.497113 0.055835 0.114401 0.899623 0.360262 0.568978 1.370527 0.800547 0.972772 1.745901 1.224957 1.327309 0.154320 1.574857 1.753368 0.560849 0.065334 0.163137 0.991605 0.437296 0.621521 1.379381 0.904275 1.027317 1.824447 1.291163 1.423373 0.256093 1.728125 1.842377 0.656073 0.188622 0.250290 1.095683 0.570620 0.739192 1.551883 1.008878 1.155597 1.951881 1.453773 1.577395 0.421775 1.868583 0.046510 0.820426 0.316103 0.444047 1.254945 0.776900 0.903177 1.710724 1.195764 1.340923 0.153331 1.636060 1.795526 0.603644 0.086718 0.283527 1.108245 0.554608 0.671895 1.524950 0.965556 1.205536 1.951210 1.482201 1.661635 0.426888 1.941179 0.135483 0.882861 0.449291 0.566443 1.400047 0.827514 1.006228 1.886254 1.340917 1.492518 0.339077 1.814099 -0.014561 0.800423 0.293156 0.485693 1.317757 0.756170 0.955617 1.765637 1.275055 1.382524 0.233952 1.724729 1.932703 0.697959 0.284580 0.386269 1.215994 0.693958 0.871112 1.726880 1.228990 1.410515 0.238881 1.764498 1.872037 0.736922 0.198305 0.367173 1.204366 0.716060 0.805849 1.680642 1.192058 1.372880 0.202366 1.732258 1.913975 0.748035 0.242300 0.428991 1.229385 0.718413 0.923523 1.808367 1.241537 1.408436 0.271814 1.786360 1.951939 0.800163 0.288048 0.429506 1.316337 0.805805 0.975258 1.851820 1.326937 1.569160 0.362227 1.868539 0.034029 0.855127 0.429454 0.601760 1.386103 0.940649 1.070068 1.961970 1.459489 1.644799 0.505927 0.032266 0.182252 1.070947 0.568534 0.713016 1.612514 1.099905 1.248100 0.144885 1.649466 1.845690 0.607491 0.172473 0.368577 1.256826 0.696450 1.000022 1.783364 1.356855 1.482300 0.389455 1.855899 0.059381 0.871393 0.437859 0.626669 1.472290 0.986938 1.160649 0.044710 1.555710 1.726383 0.582184 0.113169 0.308196 1.204593 0.676411 0.904069 1.749963 1.284785 1.471654 0.320366 1.822050 0.071750 0.938392 0.440404 0.639345 1.464275 1.036762 1.209704 0.108042 1.577217 1.805613 0.638997 0.202317 0.394149 1.259270 0.794097 0.985343 1.860820 1.332740 1.564546 0.445216 1.936667 0.162630 1.018010 0.562036 0.759351 1.640140 1.174788 1.393150 0.193194 1.761434 -0.028342 0.843967 0.369422 0.574613 1.461200 1.025160 1.188192 0.062228 1.595974 1.807095 0.703772 0.248813 0.390651 1.288903 0.837748 1.009827 1.873606 1.490212 1.643478 0.536725 0.084376 0.285011 1.136722 0.696384 0.935730 1.801819 1.346746 1.540146 0.444178 1.926354 0.189217 1.008903 0.565661 0.823151 1.711982 1.255646 1.454300 0.334455 1.868663 0.159807 0.963781 0.517653 0.773811 1.577528 1.197894 1.400802 0.235517 1.833551 0.074426 0.904162 0.460295 0.686788 1.555042 1.120389 1.355179 0.224048 1.762951 0.005734 0.892651 0.453945 0.669302 1.565048 1.058581 1.297366 0.187243 1.763504 0.000110 0.886517 0.448473 0.665436 1.527009 1.144416 1.345976 0.208029 1.739543 0.009151 0.901911 0.455317 0.709002 1.563681 1.107969 1.338138 0.256075 1.779942 0.039898 0.909000 0.513147 0.727884 1.623469 1.210117 1.391918 0.312905 1.873965 0.110255 0.992809 0.559566 0.752488 1.673640 1.304061 1.494387 0.435113 1.937074 0.224882 1.074645 0.648592 0.865055 1.812572 1.303535 1.622839 0.492541 0.116126 0.296747 1.254116 0.736056 0.961823 1.909516 1.558690 1.767869 0.635807 0.181390 0.414262 1.351123 0.918536 1.159840 0.070110 1.682032 1.902872 0.768501 0.332623 0.579829 1.476151 1.100300 1.318383 0.230337 1.797775 0.060935 0.962739 0.564230 0.826290 1.716563 1.212238 1.541220 0.420744 -0.006198 0.212694 1.218296 0.752793 1.053668 1.898346 1.501560 1.764852 0.678508 0.166357 0.474779 1.408914 0.994480 1.261537 0.138824 1.704420 1.986765 0.890687 0.458767 0.718736 1.641178 1.235724 1.462959 0.400540 -0.010464 0.276093 1.197639 0.735190 1.029685 1.955275 1.535808 1.742875 0.702104 0.299573 0.559280 1.427673 1.057290 1.397463 0.250431 1.854239 0.059571 0.998282 0.593036 0.891174 1.741297 1.374460 1.655027 0.545510 0.159152 0.423954 1.354722 0.927302 1.181824 0.145064 1.763555 0.010391 0.926282 0.555133 0.789947 1.759257 1.298170 1.567590 0.536611 0.167085 0.375766 1.266103 0.883634 1.180887 0.109860 1.743087 1.987714 0.932282 0.510436 0.761363 1.682208 1.292257 1.560546 0.499992 0.115851 0.351137 1.331142 0.944044 1.220637 0.171199 1.742392 -0.015950 0.975379 0.558244 0.818563 1.778201 1.409720 1.626752 0.647674 0.174252 0.471319 1.372319 1.019171 1.271589 0.221916 1.867633 0.121099 1.066181 0.640547 0.959274 1.867046 1.470797 1.806259 0.709898 0.317787 0.595577 1.597788 1.179295 1.436662 0.382302 -0.020367 0.312913 1.249850 0.849863 1.128202 0.111011 1.707414 -0.002964 0.936579 0.584336 0.870256 1.780731 1.373714 1.672293 0.668929 0.273433 0.522378 1.475846 1.101979 1.456318 0.398345 0.020877 0.322284 1.223011 0.885807 1.139509 0.059658 1.706266 0.029106 0.975006 0.556237 0.824447 1.833962 1.444581 1.763718 0.639587 0.313527 0.621067 1.517273 1.183716 1.485567 0.462900 0.102210 0.361914 1.350611 0.981852 1.270975 0.219789 1.781735 0.102555 1.089699 0.684207 1.049353 -0.002526 1.636375 1.921655 0.829742 0.525888 0.745584 1.770626 1.344649 1.676198 0.621313 0.272114 0.551429 1.565678 1.162460 1.427687 0.450626 0.116540 0.390805 1.349355 0.967931 1.277240 0.247068 1.910440 0.209640 1.222241 0.799924 1.134098 0.167242 1.733575 0.097298 1.023861 0.687973 0.964127 1.910580 1.617110 1.882856 0.866813 0.526777 0.834891 1.797358 1.398134 1.710706 0.656757 0.347411 0.683191 1.642158 1.237614 1.552571 0.583248 0.183488 0.490582 1.537740 1.137122 1.449122 0.425814 0.087226 0.368226 1.301188 1.004447 1.367258 0.314846 1.937355 0.276100 1.274513 0.973625 1.262770 0.214149 1.872248 0.204072 1.206791 0.791981 1.140932 0.162755 1.816744 0.126021 1.095725 0.753332 1.057845 0.011636 1.711281 0.067861 0.916518 0.705294 0.966825 1.942922 1.658590 1.945892 0.929035 0.583970 0.913502 1.954910 1.513113 1.824745 0.894604 0.525570 0.864331 1.864252 1.469809 1.804679 0.807244 0.498844 0.778173 1.853237 1.476679 1.825117 0.812980 0.452850 0.776851 1.753419 1.426853 1.754429 0.702696 0.402091 0.733995 1.738373 1.408308 1.727135 0.738964 0.430716 0.736497 1.815923 1.431531 1.770930 0.740697 0.433743 0.778886 1.776614 1.457225 1.786693 0.807346 0.494220 0.801908 1.821476 1.486942 1.858075 0.805178 0.515453 0.835662 1.845272 1.517505 1.846042 0.845971 0.529488 0.889168 1.910676 1.499950 1.842179 0.884092 0.598629 0.936179 1.838265 1.594044 1.893181 0.910607 0.583899 0.896185 1.931174 1.628094 0.006721 0.995160 0.691700 0.988878 -0.039370 1.680353 0.031789 1.070689 0.670388 1.054758 0.103573 1.766511 0.092587 1.154420 0.783691 1.154727 0.163916 1.814135 0.214809 1.221017 0.976663 1.307480 0.311152 1.934208 0.341307 1.322250 1.043696 1.361225 0.390297 0.045618 0.422148 1.496187 1.150619 1.503691 0.539823 0.263869 0.568527 1.611124 1.350344 1.682127 0.646320 0.327642 0.723254 1.733235 1.446253 1.790972 0.804170 0.582608 0.867096 1.892819 1.546123 1.958018 1.030413 0.656261 0.994540 0.048458 1.765593 0.069591 1.156448 0.892195 1.238716 0.212402 1.872719 0.328822 1.310546 0.973843 1.316021 0.431408 0.160610 0.459116 1.526037 1.237244 1.544646 0.558182 0.324657 0.653998 1.655175 1.414974 1.820009 0.817181 0.506548 0.863124 1.881679 1.629736 1.971921 0.989514 0.687969 1.059799 0.135906 1.822122 0.241246 1.246607 0.952261 1.278783 0.322455 -0.006648 0.448647 1.460353 1.188541 1.505351 0.595776 0.268532 0.663185 1.725498 1.396316 1.882172 0.877225 0.593175 0.944548 -0.018528 1.686100 0.066178 1.162242 0.849813 1.219211 0.262944 1.914885 0.303351 1.437204 1.119358 1.443318 0.531438 0.231945 0.607793 1.714496 1.425412 1.803754 0.857340 0.529455 0.976736 -0.836695 1.685686 0.076458 1.081337 0.848491 1.207041 0.247790 0.070477 0.361858 1.410140 1.141008 1.560406 0.629451 0.358661 0.693566 1.773974 1.520055 1.872909 0.935495 0.672684 1.018100 0.090872 1.845243 0.220697 1.270124 1.048852 1.456499 0.438818 0.183275 0.598271 1.683438 1.372068 1.783626 0.873952 0.597897 1.024790 0.021030 1.827915 0.173186 1.231152 0.980653 1.361007 0.426898 0.167824 0.568818 1.648082 1.407691 1.762695 0.888747 0.626133 0.997402 0.019603)
+ 49.075611 #(0.000000 0.401460 1.572578 1.328837 1.775155 0.973858 0.643974 1.072672 0.301627 -0.004589 0.426003 1.627845 1.326511 1.795544 0.948365 0.658785 1.178635 0.278882 0.044771 0.535610 1.608935 1.330347 1.862478 0.987153 0.754902 1.203999 0.301415 0.067504 0.583502 1.665774 1.451206 1.913427 1.064116 0.856519 1.268628 0.392654 0.215134 0.655561 1.784385 1.534523 0.017835 1.138851 0.893377 1.410139 0.518979 0.297916 0.798204 1.855064 1.673121 0.131523 1.231659 1.033019 1.498785 0.609057 0.415358 0.863650 0.023271 1.782923 0.242548 1.389166 1.182027 1.616139 0.806877 0.571206 1.045734 0.177821 -0.015524 0.396828 1.588755 1.378755 1.770317 0.995782 0.733227 1.211815 0.374401 0.100052 0.649914 1.796771 1.546186 0.034484 1.160284 0.953317 1.453209 0.586357 0.397564 0.844562 1.969648 1.770807 0.255833 1.402128 1.233803 1.670051 0.807498 0.609731 1.074296 0.237336 0.035545 0.525018 1.636459 1.468982 1.932392 1.077313 0.887757 1.396556 0.487884 0.304692 0.850746 1.938980 1.696236 0.253710 1.357316 1.180037 1.671484 0.748223 0.591721 1.125475 0.219484 0.066941 0.494874 1.719670 1.516572 -0.013408 1.121795 0.945772 1.439503 0.594304 0.370019 0.870005 0.049428 1.851544 0.325733 1.486488 1.303416 1.767421 0.923922 0.769900 1.228715 0.341486 0.149677 0.737216 1.851138 1.668432 0.171696 1.302891 1.131327 1.583130 0.769633 0.600889 1.032946 0.207921 0.029285 0.533221 1.699905 1.494700 0.005649 1.156226 0.973705 1.432713 0.631648 0.468587 0.917838 0.133859 1.931748 0.449179 1.610519 1.398343 1.904414 1.096547 0.915799 1.428615 0.559797 0.416079 0.902882 0.040700 1.886901 0.347182 1.526032 1.405791 1.861584 1.057570 0.882716 1.354046 0.550725 0.355813 0.849652 0.057551 1.916957 0.424631 1.572268 1.377350 1.906241 1.044732 0.912083 1.380722 0.531586 0.377898 0.913955 0.079921 1.956314 0.430396 1.534933 1.403607 1.940129 1.077636 0.959061 1.429784 0.599348 0.459565 0.957385 0.079806 0.020318 0.500296 1.652856 1.506227 0.036152 1.156592 1.065843 1.577507 0.749434 0.544388 1.110423 0.264058 0.102642 0.658185 1.822295 1.621498 0.185470 1.334065 1.145927 1.735929 0.869030 0.724134 1.247603 0.416142 0.259274 0.750060 1.966278 1.808279 0.358567 1.517856 1.344567 1.866247 1.044609 0.921297 1.414806 0.607689 0.500792 0.990722 0.168439 0.061457 0.506709 1.731366 1.626002 0.116874 1.325626 1.135006 1.684701 0.898477 0.680370 1.270321 0.489363 0.264037 0.819799 -0.018131 1.885249 0.418541 1.575775 1.444865 1.966403 1.108831 1.034018 1.567821 0.732798 0.577271 1.084513 0.307350 0.162784 0.671540 1.865309 1.725691 0.257202 1.477677 1.320626 1.889490 1.039944 0.938625 1.480242 0.659633 0.513387 1.009650 0.272567 0.114378 0.696333 1.878254 1.700170 0.286575 1.435554 1.320444 1.890199 1.043899 0.932531 1.456571 0.662266 0.572065 1.085503 0.281246 0.187163 0.681643 1.905094 1.772142 0.313529 1.515419 1.390749 1.907695 1.071898 1.015202 1.561630 0.714434 0.639603 1.163071 0.362215 0.262654 0.794610 -0.002293 1.908847 0.452575 1.650036 1.455073 0.093385 1.333183 1.103847 1.697598 0.906259 0.757846 1.284970 0.567499 0.370146 0.958401 0.150559 0.070553 0.584791 1.791860 1.693480 0.265626 1.447804 1.322386 1.885453 1.118217 1.015753 1.539253 0.776077 0.649741 1.221924 0.428205 0.290856 0.845301 0.120607 1.950125 0.473770 1.753823 1.591533 0.140313 1.379312 1.255246 1.831982 1.024158 0.969374 1.482546 0.707194 0.669458 1.150147 0.394263 0.308018 0.823865 0.083707 1.970831 0.462762 1.774588 1.636942 0.175491 1.406474 1.310998 1.916820 1.119486 0.999342 1.564972 0.800402 0.675881 1.262948 0.477864 0.347605 0.891685 0.169286 0.040078 0.589439 1.830225 1.715429 0.312643 1.549083 1.424213 -0.041404 1.247762 1.123145 1.694527 0.948562 0.838823 1.441845 0.689020 0.503972 1.139960 0.357971 0.242472 0.825429 0.032705 1.954507 0.490941 1.773191 1.672244 0.258023 1.484235 1.352762 1.963937 1.186506 1.091245 1.645294 0.897637 0.774967 1.351808 0.625643 0.519376 1.093349 0.371915 0.258341 0.826348 0.074672 0.005377 0.543281 1.794926 1.703390 0.240956 1.508304 1.491574 0.029077 1.257519 1.202041 1.790449 0.999599 0.962774 1.496989 0.784133 0.641234 1.259285 0.540918 0.374850 1.009905 0.270490 0.147275 0.750040 0.016358 1.944131 0.486288 1.721923 1.660251 0.253849 1.444642 1.425968 0.017915 1.243517 1.229861 1.777676 1.043319 0.950719 1.505856 0.790364 0.735448 1.278201 0.558611 0.453798 1.064970 0.331605 0.235141 0.869707 0.094214 0.021984 0.573676 1.858963 1.781239 0.337545 1.619040 1.564357 0.126088 1.409494 1.348560 1.957919 1.183025 1.103698 1.714010 0.947497 0.915912 1.463182 0.797359 0.681231 1.310614 0.567690 0.453381 1.075482 0.370078 0.241214 0.873451 0.122023 0.002466 0.650107 1.937929 1.837245 0.472223 1.671585 1.676783 0.293493 1.518954 1.449758 0.058364 1.332625 1.269977 1.865089 1.144977 1.076097 1.699020 0.952901 0.915130 1.510097 0.818203 0.745068 1.307081 0.661850 0.515132 1.150927 0.474572 0.392503 0.993920 0.208084 0.147654 0.801595 0.036353 -0.018944 0.625415 1.906745 1.833415 0.467943 1.779385 1.685468 0.343975 1.548505 1.526816 0.118329 1.367474 1.346423 1.926527 1.202095 1.213132 1.776459 1.016135 1.021685 1.672170 0.902843 0.922082 1.484496 0.766824 0.737377 1.309850 0.588504 0.543554 1.181741 0.403595 0.434995 1.061996 0.319365 0.302109 0.916090 0.197606 0.129094 0.775288 0.048490 -0.019284 0.640990 1.915764 1.870777 0.483932 1.796018 1.722878 0.358679 1.621255 1.585059 0.234388 1.502066 1.467428 0.075617 1.365527 1.318752 1.994152 1.261532 1.237510 1.894217 1.127705 1.155107 1.742875 1.008425 0.996547 1.665420 0.921144 0.900553 1.514087 0.809557 0.801879 1.376538 0.657394 0.696463 1.291963 0.555020 0.559344 1.160925 0.524433 0.446766 1.057307 0.384961 0.379442 0.971346 0.281974 0.264236 0.914486 0.178704 0.169138 0.821980 0.118906 0.046583 0.736466 -0.031717 0.018919 0.626678 1.940929 1.883237 0.534606 1.815278 1.811743 0.400165 1.739409 1.758029 0.358763 1.668929 1.673849 0.277515 1.626386 1.589416 0.230339 1.529176 1.480630 0.146280 1.456083 1.404062 0.093081 1.393984 1.356670 -0.028798 1.343115 1.276534 1.926374 1.242955 1.255652 1.898452 1.183458 1.219849 1.810723 1.162593 1.111490 1.771630 1.066672 1.006804 1.770731 1.066480 1.037279 1.639507 1.043198 0.960793 1.629207 0.971260 0.898537 1.574030 0.897798 0.902839 1.567888 0.904563 0.870614 1.480691 0.904352 0.776976 1.459853 0.810434 0.812544 1.412370 0.760538 0.749219 1.416505 0.724507 0.702071 1.400666 0.701361 0.679905 1.405844 0.654018 0.658175 1.351457 0.699677 0.654055 1.273007 0.654855 0.621286 1.276326 0.608940 0.616017 1.259030 0.607968 0.646339 1.224695 0.585026 0.617433 1.264174 0.596482 0.585903 1.244269 0.567044 0.573409 1.251265 0.574643 0.601995 1.252297 0.552076 0.579862 1.246333 0.564843 0.566877 1.271146 0.610881 0.574222 1.273084 0.580493 0.619798 1.261801 0.572186 0.617353 1.272360 0.617015 0.642818 1.303359 0.642608 0.700281 1.321952 0.668204 0.639594 1.318657 0.680768 0.649238 1.315232 0.719595 0.723931 1.382249 0.766112 0.739204 1.403835 0.755217 0.768835 1.408677 0.788904 0.798264 1.465826 0.855641 0.845643 1.524704 0.912658 0.862799 1.537473 0.902567 0.898806 1.649466 0.950065 0.959880 1.688924 1.006977 1.022535 1.671304 1.012666 1.069565 1.768714 1.104013 1.077359 1.778063 1.156432 1.162552 1.832829 1.239727 1.215270 1.926869 1.296868 1.257165 -0.025474 1.341984 1.338084 0.040291 1.439627 1.416742 0.129674 1.482196 1.527384 0.200551 1.542197 1.570869 0.294711 1.591152 1.662497 0.308383 1.699900 1.691704 0.433301 1.752923 1.802057 0.482836 1.819740 1.878149 0.525659 1.934226 -0.115168 0.691800 0.023240 0.041263 0.713948 0.125982 0.180335 0.843779 0.226023 0.240953 0.988660 0.299156 0.389279 0.990872 0.439584 0.441498 1.134008 0.522760 0.533100 1.273049 0.610828 0.646829 1.376643 0.758872 0.767526 1.480720 0.820631 0.868718 1.596765 0.963633 0.992641 1.669768 1.078399 1.154741 1.833641 1.220954 1.241569 1.949122 1.303007 1.310380 0.105262 1.447285 1.479084 0.178261 1.558724 1.644715 0.355575 1.667450 1.741659 0.431658 1.816460 1.868987 0.564784 1.949019 0.000328 0.784594 0.078563 0.154485 0.843207 0.194650 0.276648 0.961360 0.342477 0.405133 1.107136 0.541693 0.534524 1.287429 0.683719 0.708954 1.452791 0.780784 0.885075 1.542123 0.965181 1.007533 1.742110 1.090968 1.234860 1.894300 1.297212 1.359442 0.019866 1.420602 1.458683 0.221098 1.616863 1.669892 0.343331 1.757894 1.828783 0.572875 1.937663 0.026066 0.683464 0.143014 0.163465 0.882660 0.245340 0.335901 1.115571 0.482980 0.503709 1.255055 0.669821 0.710094 1.429625 0.815837 0.917759 1.656134 1.027918 1.100299 1.808774 1.191366 1.258045 -0.004070 1.418356 1.468465 0.214289 1.601892 1.637600 0.402896 1.779968 1.865068 0.625413 -0.013148 0.064906 0.788674 0.202455 0.272358 0.998053 0.439202 0.489581 1.225448 0.622278 0.719913 1.461336 0.816034 0.921589 1.642096 1.022680 1.129387 1.859639 1.286753 1.296472 0.069148 1.465815 1.533116 0.259541 1.712898 1.786748 0.462548 1.935586 -0.004617 0.722469 0.138983 0.214248 1.001446 0.390774 0.466274 1.163161 0.606439 0.697923 1.451178 0.804159 0.881350 1.661080 1.070644 1.178230 1.922370 1.346886 1.435905 0.148979 1.660540 1.688834 0.386800 1.813847 1.876505 0.643553 0.081427 0.208314 0.939034 0.263742 0.398649 1.113490 0.591216 0.657308 1.400927 0.840693 0.928528 1.676756 1.136491 1.176099 1.994384 1.383853 1.425146 0.172691 1.637000 1.725565 0.472632 1.878619 0.008912 0.705881 0.201056 0.207508 1.017686 0.431837 0.532310 1.329522 0.739083 0.806181 1.551380 0.996628 1.080576 1.872461 1.299301 1.381303 0.144883 1.549769 1.644097 0.426207 1.830769 1.952737 0.679621 0.120332 0.244803 1.021363 0.474715 0.498450 1.265719 0.734336 0.790659 1.582201 1.025473 1.125569 1.901184 1.348807 1.419851 0.245842 1.653159 1.740750 0.496979 1.942435 0.043122 0.808207 0.221234 0.395906 1.115753 0.554813 0.670157 1.481485 0.828532 0.956872 1.754763 1.223326 1.339683 0.078859 1.505604 1.604521 0.424042 1.832888 1.928734 0.751361 0.167648 0.270754 1.038993 0.536879 0.607486 1.345935 0.787475 0.969360 1.745605 1.165975 1.230005 0.021290 1.519689 1.597125 0.424565 1.842236 1.951773 0.704451 0.205700 0.311813 1.094044 0.528800 0.629021 1.429977 0.847123 0.999448 1.805319 1.211183 1.377733 0.141312 1.543032 1.671622 0.482855 1.931698 0.038235 0.825429 0.300513 0.438514 1.190728 0.632705 0.758457 1.532292 0.933049 1.127991 1.973966 1.392402 1.494749 0.229774 1.770473 1.895486 0.678151 0.114141 0.239487 1.036697 0.528767 0.603213 1.407877 0.856927 0.982822 1.783553 1.286176 1.373877 0.156707 1.618506 1.795101 0.521176 0.000295 0.105022 0.950544 0.413029 0.563435 1.350614 0.774525 0.906278 1.683918 1.225726 1.321896 0.120641 1.560842 1.732270 0.496576 0.059229 0.114676 0.904417 0.362998 0.571358 1.366829 0.799510 0.965666 1.748977 1.219589 1.326876 0.153847 1.571604 1.749220 0.558118 0.062822 0.165926 0.985867 0.434262 0.623615 1.375232 0.905975 1.026967 1.821660 1.286700 1.427245 0.255056 1.728946 1.835886 0.650587 0.186419 0.251293 1.101672 0.574713 0.733279 1.559469 1.007840 1.152539 1.953767 1.457781 1.574212 0.421633 1.870433 0.044207 0.821380 0.320461 0.445147 1.256183 0.773826 0.897614 1.706885 1.198748 1.341627 0.158760 1.633367 1.794223 0.605792 0.089780 0.285334 1.115134 0.554234 0.673733 1.526363 0.965578 1.204413 1.956883 1.487005 1.661574 0.428896 1.942563 0.133770 0.887535 0.448524 0.560346 1.399382 0.825547 1.011553 1.887000 1.341297 1.493369 0.337893 1.814979 -0.013956 0.796953 0.293301 0.485104 1.323447 0.755420 0.962510 1.767080 1.279266 1.381267 0.236749 1.727121 1.934854 0.698370 0.288678 0.383898 1.218935 0.689075 0.875449 1.733442 1.223946 1.407819 0.236282 1.763583 1.875233 0.732350 0.194523 0.371524 1.201597 0.711492 0.808224 1.677033 1.188696 1.374124 0.204297 1.730308 1.914863 0.743094 0.242998 0.432601 1.232975 0.722065 0.922757 1.799171 1.250360 1.411578 0.274876 1.786028 1.947256 0.797600 0.283634 0.432219 1.316823 0.809202 0.968069 1.849609 1.330689 1.573968 0.359222 1.870016 0.040560 0.855912 0.428484 0.600255 1.388416 0.947214 1.069368 1.961359 1.460741 1.645730 0.507250 0.034882 0.175342 1.069941 0.567221 0.714220 1.612963 1.098537 1.250886 0.146327 1.649985 1.846031 0.609026 0.172335 0.365428 1.255012 0.693485 0.997235 1.779450 1.354301 1.481997 0.390199 1.850288 0.065576 0.875837 0.448548 0.629864 1.474559 0.989267 1.154569 0.042073 1.553361 1.727683 0.584536 0.114970 0.309342 1.205565 0.674276 0.907568 1.749905 1.287251 1.473723 0.318228 1.817309 0.069962 0.944796 0.437511 0.645024 1.461700 1.037439 1.207721 0.106388 1.573892 1.812876 0.634946 0.199130 0.392339 1.256950 0.788932 0.980136 1.862973 1.327820 1.565528 0.443317 1.931283 0.158477 1.018111 0.562963 0.761790 1.641432 1.175372 1.391749 0.195364 1.754471 -0.025995 0.839705 0.377999 0.573740 1.458089 1.024818 1.184617 0.064776 1.595577 1.808496 0.706698 0.248993 0.393019 1.290527 0.842400 1.011830 1.879674 1.491498 1.644992 0.538589 0.078381 0.281974 1.135559 0.703408 0.933513 1.806636 1.347138 1.536120 0.451065 1.925106 0.187907 1.010373 0.566089 0.826035 1.712588 1.250750 1.452397 0.332442 1.863249 0.158723 0.966032 0.520165 0.774185 1.576618 1.196329 1.394826 0.235682 1.832421 0.072746 0.909367 0.463959 0.691013 1.553444 1.120278 1.356329 0.220348 1.757864 0.005398 0.894793 0.453582 0.667202 1.570513 1.058971 1.294369 0.193398 1.755644 -0.005154 0.883788 0.446823 0.667295 1.525188 1.142553 1.349924 0.211191 1.745283 0.003949 0.906846 0.461988 0.710142 1.561898 1.107143 1.338229 0.257154 1.776666 0.037140 0.911415 0.513503 0.735371 1.626625 1.209519 1.392919 0.315738 1.874114 0.111957 0.991085 0.560372 0.754016 1.675611 1.304242 1.491342 0.431593 1.934791 0.228263 1.073110 0.650351 0.869190 1.814351 1.312055 1.617138 0.492952 0.116892 0.299148 1.248017 0.740146 0.958935 1.906939 1.555603 1.762975 0.635255 0.181989 0.412259 1.347295 0.921993 1.158359 0.065065 1.684937 1.905701 0.771480 0.326796 0.580863 1.477751 1.096092 1.318073 0.229945 1.792601 0.057692 0.958417 0.565535 0.826692 1.715995 1.212846 1.536659 0.425319 -0.007360 0.226272 1.218434 0.748523 1.055554 1.897130 1.503350 1.758087 0.672498 0.161550 0.476247 1.409805 1.003113 1.263904 0.134516 1.701453 1.983245 0.891614 0.458584 0.726253 1.643044 1.235041 1.462669 0.400610 -0.005661 0.275819 1.194434 0.735089 1.027057 1.958988 1.539897 1.741495 0.703032 0.294025 0.559145 1.429196 1.064401 1.393447 0.249164 1.855858 0.056841 0.999782 0.590473 0.887508 1.740673 1.369265 1.654378 0.545775 0.152922 0.421070 1.356479 0.929581 1.181447 0.144060 1.758543 0.016462 0.932626 0.556265 0.784742 1.759089 1.291940 1.576470 0.532647 0.171089 0.376061 1.264234 0.876721 1.182532 0.105542 1.747565 1.984642 0.930508 0.508470 0.752408 1.685142 1.288315 1.559702 0.499605 0.107360 0.355776 1.330008 0.948197 1.221707 0.171580 1.744427 -0.019047 0.978134 0.561640 0.816193 1.777819 1.411042 1.636825 0.645270 0.169930 0.472263 1.369993 1.015252 1.269554 0.221322 1.871684 0.116890 1.058835 0.639831 0.966650 1.865276 1.475005 1.809024 0.705879 0.314720 0.589513 1.596863 1.174681 1.440826 0.390076 -0.017772 0.314635 1.251319 0.852089 1.128111 0.112130 1.707696 0.000748 0.938164 0.582621 0.873963 1.779844 1.372728 1.675357 0.667908 0.281197 0.520966 1.480324 1.098030 1.458773 0.399309 0.018397 0.323557 1.226446 0.889277 1.141920 0.052690 1.707976 0.031386 0.973716 0.556432 0.828440 1.830462 1.442480 1.765954 0.641070 0.312917 0.623332 1.520639 1.185486 1.489141 0.460032 0.104670 0.356312 1.354642 0.978899 1.274024 0.213993 1.785563 0.101125 1.089231 0.683680 1.051892 0.001110 1.638534 1.920774 0.835971 0.521093 0.748115 1.774312 1.345037 1.668804 0.613573 0.272492 0.551600 1.566174 1.166280 1.427987 0.450366 0.119541 0.395033 1.342832 0.964093 1.271401 0.249652 1.906997 0.210843 1.227541 0.807276 1.133098 0.167247 1.732706 0.089079 1.025961 0.688095 0.964859 1.909286 1.614635 1.883536 0.864299 0.526600 0.833861 1.797851 1.397798 1.709634 0.661852 0.350685 0.680444 1.644484 1.240982 1.558562 0.585070 0.183753 0.489914 1.536994 1.133681 1.447672 0.427116 0.087786 0.368722 1.303115 0.997542 1.367244 0.309350 1.931657 0.277652 1.271411 0.975224 1.262637 0.209622 1.871266 0.206185 1.208090 0.791770 1.139694 0.158603 1.810593 0.134074 1.095642 0.749371 1.054982 0.017096 1.716919 0.066562 0.917712 0.704895 0.960746 1.943937 1.657288 1.948115 0.933453 0.582586 0.911918 1.950533 1.518118 1.819834 0.896816 0.529950 0.866333 1.863532 1.463620 1.802832 0.812939 0.495929 0.780429 1.848363 1.475892 1.818187 0.812491 0.455130 0.774551 1.754260 1.432450 1.755333 0.702298 0.402030 0.731168 1.736052 1.410179 1.727082 0.740694 0.428952 0.733928 1.813932 1.431569 1.770580 0.742496 0.433553 0.776042 1.774116 1.462355 1.781128 0.809218 0.496372 0.804623 1.820285 1.484626 1.865159 0.808811 0.520054 0.834917 1.845456 1.517679 1.844980 0.853646 0.528703 0.881352 1.912506 1.495083 1.840286 0.879551 0.601907 0.938484 1.836825 1.595776 1.892243 0.908486 0.582800 0.900818 1.937047 1.627559 0.008642 0.987022 0.690837 0.992076 -0.038837 1.686570 0.025077 1.072134 0.664879 1.052764 0.102153 1.764050 0.092154 1.149149 0.783596 1.158651 0.165116 1.812701 0.216150 1.217957 0.974734 1.302009 0.312054 1.934755 0.339462 1.318485 1.039475 1.360555 0.389538 0.048248 0.417981 1.498361 1.147989 1.497938 0.537440 0.263890 0.568540 1.613709 1.348296 1.684650 0.640724 0.330882 0.727056 1.740641 1.444869 1.794947 0.805065 0.585580 0.862837 1.895257 1.546416 1.962076 1.025971 0.658919 0.989248 0.051128 1.768014 0.067075 1.152618 0.886129 1.234226 0.206486 1.868740 0.322658 1.308919 0.976872 1.316043 0.435690 0.156123 0.456522 1.522974 1.236388 1.539177 0.557256 0.328675 0.648413 1.650598 1.406858 1.822993 0.816511 0.501706 0.858652 1.884264 1.631757 1.974003 0.988228 0.690253 1.053175 0.135213 1.817904 0.242544 1.247654 0.953375 1.284374 0.325189 -0.003814 0.449839 1.464160 1.182226 1.497936 0.596055 0.272125 0.664098 1.722437 1.398630 1.880388 0.872410 0.586897 0.949757 -0.014924 1.687728 0.067402 1.165485 0.847831 1.222271 0.270354 1.919262 0.301590 1.435942 1.118241 1.443242 0.538245 0.233468 0.607731 1.714202 1.428410 1.804310 0.855744 0.530536 0.976316 -0.835837 1.685113 0.081922 1.071534 0.846661 1.213546 0.248812 0.069470 0.363443 1.417063 1.138863 1.561766 0.631475 0.359672 0.695021 1.774722 1.522626 1.876602 0.930931 0.670898 1.022212 0.087818 1.838440 0.220384 1.266658 1.051353 1.449139 0.430844 0.182509 0.602533 1.690624 1.374541 1.786842 0.872499 0.596109 1.021648 0.024308 1.823582 0.173829 1.233097 0.981610 1.366061 0.428379 0.168549 0.566700 1.650637 1.412796 1.763140 0.888921 0.629851 1.005120 0.024353)
)
@@ -2410,28 +2410,28 @@
;;; 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.289874 #(0.000000 0.462326 1.659916 -0.128549 1.564294 -0.605434 1.705265 -0.191584 1.653523 0.519338 0.161069 0.130469 1.641645 1.700628 0.747087 1.298900 0.083406 0.481497 0.595950 -0.168433 0.943293 0.128602 1.426023 1.657471 0.716818 1.652245 0.278018 0.501654 0.573596 -0.052550 -0.015452 0.807444 1.942233 1.418719 1.634457 1.316028 1.259744 1.812974 0.011529 0.039074 1.397193 1.066792 0.750803 0.927470 0.947131 0.878204 1.169555 0.004185 1.106533 0.964704 0.078915 1.213605 1.829790 0.073085 0.167442 0.037992 -0.024818 1.647199 0.121969 0.526405 0.038653 1.249618 1.640945 0.645096 0.049183 0.261638 0.231218 1.240454 1.714785 0.237012 1.074030 0.614811 0.599207 -0.076392 0.476692 0.539091 0.747140 -0.056785 -0.016250 0.892118 1.779112 -0.255774 0.447605 1.468133 -0.130385 1.500349 0.572255 0.173502 0.008022 0.963255 0.311388 0.140659 1.722019 0.263642 1.721758 0.111950 0.188453 0.496607 1.619854 -0.030422 1.152500 1.301889 1.447899 1.595917 0.196952 0.272842 1.324120 -0.080552 0.142590 0.908007 0.966789 0.883115 1.256864 1.381782 1.655597 0.219447 1.650651 1.852289 1.310419 1.718758 0.604128 1.386491 1.019377 1.459482 0.597119 1.057320 0.534825 0.884208 0.073749 1.362088 1.553308 1.638136 0.593930 0.759941 0.215071 0.797517 1.883907 1.671510 0.722022 1.784651 0.446749 0.272815 0.261847 1.353417 1.337214 1.766200 1.279250 1.180469 0.161270 0.415791 1.470299 1.414667 1.196099 1.867011 1.049418 -0.076711 1.097316 1.680734 0.218547 0.155395 1.588745 0.570741 1.332372 1.089112 0.567625 1.714104 1.243210 0.068229 0.926789 0.298214 1.175765 0.647078 0.306445 0.271878 1.367813 0.559187 1.882352 -0.141655 -0.424354 1.539246 0.877887 0.642923 0.593610 1.879663 0.946530 -0.023812 -0.112957 0.747594 0.363104 -0.379283 0.770738 -0.047317 1.136336 0.028335 0.646746 0.148009 0.549161 0.740845 1.179171 -0.476892 0.199381 0.432902 1.279666 1.469346 1.202572 0.444997 0.072755 0.445013 1.833871 1.190650 1.150484 1.810494 0.348333 0.982363 0.125006 0.949733 1.454588 0.812573 1.531823 1.388558 0.751132 0.958616 0.753174 -0.519431 0.742541 1.597885 0.620613 0.036680 -0.152405 -0.045326 1.481291 0.468765 0.769942 1.743684 1.031611 1.030088 0.084240 0.693146 1.141461 1.209946 0.466305 1.587682 1.601016 -0.155266 0.465228 1.268919 1.159997 1.709173 1.830998 1.893894 1.605793 0.682775 0.203765 -0.173269 0.731321 0.668619)
+ 16.265425 #(0.000000 0.453126 1.676247 -0.124684 1.562955 -0.610153 1.709255 -0.196814 1.653325 0.521654 0.166400 0.138383 1.658408 1.699249 0.757364 1.299565 0.079577 0.482511 0.593961 -0.161187 0.938525 0.138648 1.428695 1.651868 0.705033 1.659883 0.285273 0.499428 0.568285 -0.050901 -0.003773 0.813565 1.951019 1.413660 1.633529 1.327435 1.268935 1.827941 -0.005313 0.037749 1.402320 1.068773 0.753700 0.926572 0.952320 0.880705 1.188601 -0.012093 1.081422 0.977300 0.082499 1.222180 1.839692 0.075135 0.156073 0.054160 -0.032418 1.642737 0.114022 0.518666 0.040857 1.238352 1.655920 0.635051 0.061029 0.251147 0.234924 1.252413 1.719378 0.232309 1.061479 0.618633 0.600242 -0.072673 0.473497 0.538169 0.748532 -0.041579 -0.019786 0.902660 1.773560 -0.258844 0.452159 1.468074 -0.123651 1.508332 0.574656 0.187760 0.012187 0.974273 0.324837 0.126773 1.713593 0.275982 1.734682 0.115520 0.188794 0.487753 1.628238 -0.034224 1.157182 1.292347 1.454129 1.600114 0.187932 0.264869 1.331687 -0.072625 0.139900 0.913859 0.958242 0.885809 1.260008 1.378713 1.655240 0.226278 1.671420 1.845855 1.312053 1.718015 0.607808 1.387793 1.020436 1.469931 0.608914 1.060003 0.529260 0.884519 0.065672 1.358648 1.550481 1.619744 0.594012 0.750790 0.232913 0.806230 1.888381 1.678882 0.727422 1.791364 0.455982 0.264029 0.252920 1.369212 1.335851 1.780139 1.272343 1.174525 0.139401 0.422246 1.478311 1.413149 1.207796 1.861189 1.035723 -0.053798 1.100297 1.678390 0.204642 0.161513 1.606911 0.562000 1.335187 1.090021 0.562571 1.711780 1.248810 0.081899 0.931387 0.308112 1.171565 0.641792 0.311836 0.281044 1.370970 0.565644 1.876590 -0.131386 -0.416818 1.529688 0.869144 0.633922 0.611350 1.891358 0.953094 -0.027685 -0.110897 0.735296 0.356997 -0.373401 0.764480 -0.045396 1.148157 0.023739 0.654339 0.144776 0.542736 0.732873 1.180065 -0.489318 0.202797 0.437129 1.278316 1.463843 1.191200 0.448928 0.071825 0.438711 1.835754 1.198045 1.170310 1.827876 0.341266 0.991126 0.131498 0.946988 1.470583 0.817386 1.562782 1.397276 0.755907 0.961599 0.755514 -0.512670 0.737017 1.596602 0.625995 0.041446 -0.141973 -0.038344 1.483918 0.463881 0.774087 1.760706 1.026560 1.030436 0.077183 0.695876 1.142108 1.203837 0.465495 1.580984 1.587187 -0.146522 0.470082 1.272710 1.163568 1.712957 1.819822 1.894312 1.611869 0.691959 0.203124 -0.182708 0.728556 0.648757)
)
;;; 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.543834 #(0.000000 1.399505 0.700824 -0.021986 1.301629 0.609444 -0.054122 1.281498 0.678901 0.039662 1.439331 0.840612 0.173885 1.564048 0.890321 0.267562 1.612780 0.991340 0.354268 1.769476 1.196500 0.591361 0.019993 1.368814 0.748950 0.166605 1.600023 1.033422 0.462371 1.916994 1.375058 0.795400 0.179455 1.631683 1.044013 0.485823 -0.077697 1.406881 0.873323 0.379041 1.900776 1.352026 0.856732 0.317669 1.815854 1.271650 0.711332 0.233055 1.705458 1.221250 0.717747 0.221353 1.740324 1.237153 0.742565 0.285815 1.818412 1.350972 0.932450 0.506641 0.033880 1.600520 1.136635 0.710374 0.230715 1.747313 1.283290 0.832303 0.413919 -0.004987 1.635116 1.232082 0.772472 0.375001 1.945500 1.558237 1.175379 0.768235 0.323965 1.912985 1.547081 1.218910 0.854028 0.480445 0.076665 1.703009 1.374836 1.026140 0.635092 0.270441 -0.031713 1.648536 1.294716 0.938402 0.563097 0.236022 1.918294 1.634223 1.362443 1.042751 0.687877 0.376110 0.092769 1.778059 1.470422 1.142369 0.878677 0.646600 0.401591 0.087670 1.815401 1.546668 1.265069 0.996295 0.716447 0.479073 0.223217 1.963176 1.724275 1.469400 1.231052 0.967946 0.742583 0.561920 0.342010 0.101711 1.882519 1.696008 1.522713 1.300593 1.053827 0.870945 0.709088 0.492229 0.303316 0.178437 -0.005409 1.728183 1.558814 1.478988 1.307358 1.114460 0.981990 0.840356 0.624948 0.514114 0.424108 0.279507 0.118194 -0.046305 1.788738 1.639538 1.536169 1.474964 1.409750 1.301247 1.112329 1.016842 0.976416 0.894601 0.750012 0.663771 0.591097 0.517345 0.427286 0.346418 0.322105 0.252996 0.163145 0.072309 0.037283 -0.033136 1.903951 1.947413 1.958472 1.847381 1.820761 1.821755 1.763402 1.731965 1.750006 1.742534 1.690964 1.684267 1.702023 1.675352 1.698938 1.720585 1.714953 1.709260 1.736613 1.781948 1.785626 1.861263 1.915421 1.903004 -0.054380 0.027146 0.092845 0.115875 0.166880 0.204285 0.264994 0.356421 0.443441 0.522910 0.585967 0.712027 0.776662 0.808856 0.915519 1.041791 1.183110 1.269231 1.324936 1.417090 1.546524 1.685817 1.804988 1.955419 0.089493 0.225809 0.408487 0.507727 0.605888 0.816482 0.973680 1.146003 1.265073 1.406607 1.595315 1.784955 1.944157 0.110758 0.264309 0.484894 0.673603 0.870330 1.055329 1.256990 1.443001 1.706299 1.917043 0.135386 0.325162 0.578439 0.778748 1.030765 1.195613 1.536614 1.728756 0.017534 0.197284 0.516565 0.672222 0.990424 1.193606 1.513039 1.765930 0.096090 0.340450 0.626924 0.945057 1.200724 1.470738 1.721257 0.060573 0.334117 0.721917 1.003223 1.368872 1.618488 -0.004373 0.249633 0.636183 0.954412 1.297347 1.630392 1.923575 0.367921 0.635812 1.078837 1.331828 1.716375 0.071146 0.444491 0.843619 1.222450 1.592092 0.087261 0.383514 0.859004 1.095906 1.610388 1.957801 0.413257 0.807764 1.180327 1.619330 -0.027262 0.518803 0.870865 1.384976 1.722013 0.229230 0.614933 1.112025 1.517406 0.026098 0.433882 0.952084 1.400216 1.813073 0.315769 0.731352 1.345664 1.757465 0.308431 0.693675 1.234408 1.729222 0.270013 0.780953 1.317925 1.720626 0.279221 0.797295 1.310174 1.937746 0.403555 0.935277 1.477156 -0.010526 0.534122 1.168821 1.605330 0.331126 0.714365 1.377079 1.946162 0.508272 1.068459 1.754038 0.182274 0.816117 1.469638 -0.009941 0.590063 1.229837 1.782190 0.350493 1.012281 1.671002 0.240499 0.940210 1.581114 0.140426 0.830498 1.407304 0.101340 0.706262 1.378259 0.022743 0.656899 1.331795 -0.048234 0.667042 1.413843 -0.012820 0.680500 1.401491 0.002891 0.775876 1.446820 0.157619 0.918642 1.584069 0.236653 0.995297 1.646196 0.377228 1.110651 1.846065 0.661409 1.328085 0.121238 0.825157 1.604882 0.326253 1.034532 1.790154 0.551996 1.419114 0.047755 0.889903 1.683768 0.361213 1.251254 1.942436 0.757410 1.595110 0.362459 1.199366 -0.009650 0.856886 1.557941 0.465074 1.242663 0.100533 0.813149 1.772631 0.546753 1.426465 0.206774 1.127242 1.874475 0.780357 1.563380 0.460767 1.348786 0.187563 1.043474 0.000389 0.859275 1.728101 0.622186 1.508303 0.433268 1.231918 0.164691 1.066840 0.047194 0.851393 1.781763 0.717894 1.740516 0.553158 1.551919 0.465029 1.419084 0.276529 1.286867 0.258620 1.100346 0.113834 1.049671 0.039293 0.986792 1.902050 0.986504 1.935989 0.984667 1.870813 0.871984 1.889744 0.916720 1.908661 0.938108 1.859659 0.922528 1.878694 0.888537 1.920115 0.936960 -0.043635 0.995797 0.036469 1.039098 0.136934 1.216958 0.283475 1.314550 0.418392 1.401602 0.447191 1.529278 0.606890 1.726145 0.792752 1.907179 0.949306 0.008750 1.129112 0.253229 1.323655 0.386609 1.527972 0.586817 1.749053 0.888757 0.035020 1.140422 0.278043 1.415922 0.531386 1.669038 0.812350 0.017010 1.138549 0.326727 1.450645 0.666960 1.761690 1.028696 0.207601 1.324085 0.548067 1.784095 0.997054 0.266229 1.476335 0.747167)
+ 23.520651 #(0.000000 1.404497 0.710537 -0.018870 1.305304 0.609091 -0.053242 1.276966 0.672250 0.040855 1.434611 0.833400 0.178175 1.556937 0.887977 0.268006 1.606653 0.994948 0.365369 1.773172 1.198478 0.584944 0.013663 1.382516 0.761965 0.181004 1.605368 1.040498 0.478449 1.921027 1.373671 0.793236 0.180121 1.629796 1.033305 0.477128 -0.084630 1.416599 0.884572 0.383492 1.898227 1.356027 0.855383 0.316438 1.809950 1.270969 0.709665 0.227008 1.711814 1.219711 0.727029 0.231821 1.744740 1.233030 0.737624 0.277045 1.815191 1.361164 0.931788 0.497654 0.036744 1.599449 1.142667 0.711652 0.240825 1.748343 1.287598 0.816963 0.404114 -0.004444 1.641059 1.233956 0.776442 0.374085 1.953374 1.567277 1.177170 0.769384 0.322328 1.917461 1.546812 1.221125 0.853082 0.478900 0.076742 1.705846 1.375470 1.024417 0.643039 0.266630 -0.021153 1.660417 1.298178 0.935738 0.560604 0.229104 1.914594 1.628931 1.360148 1.044731 0.695171 0.373454 0.090449 1.780710 1.472725 1.141711 0.886755 0.652685 0.410461 0.096192 1.825356 1.548547 1.258916 0.986380 0.719554 0.479118 0.221331 1.955317 1.714044 1.465835 1.219474 0.975292 0.750391 0.569645 0.353034 0.108521 1.881815 1.697047 1.522227 1.306409 1.057540 0.871632 0.715601 0.489487 0.292652 0.169570 -0.007263 1.716259 1.555131 1.488008 1.316813 1.110122 0.983860 0.842655 0.629249 0.514745 0.431325 0.281639 0.116172 -0.061900 1.761299 1.625747 1.528873 1.467115 1.394425 1.305226 1.117594 1.015812 0.977605 0.903904 0.754753 0.670624 0.592825 0.514115 0.427513 0.352146 0.312352 0.239438 0.160208 0.075369 0.031719 -0.026645 1.908475 1.945792 1.964296 1.850613 1.820772 1.817478 1.770925 1.742108 1.745663 1.744321 1.690404 1.678564 1.697732 1.679969 1.698581 1.713149 1.714180 1.701345 1.732333 1.773190 1.791665 1.870490 1.911439 1.910506 -0.056911 0.029566 0.096589 0.116073 0.176503 0.208417 0.264509 0.358448 0.436429 0.512813 0.599244 0.721192 0.778572 0.809230 0.907827 1.043500 1.186900 1.269517 1.330617 1.423710 1.552236 1.688194 1.799757 1.949209 0.087755 0.233506 0.415747 0.515273 0.608574 0.813522 0.973202 1.151438 1.270386 1.412731 1.594434 1.786842 1.942649 0.110556 0.265414 0.474616 0.665489 0.867256 1.053645 1.259858 1.451216 1.718699 1.917185 0.139260 0.315777 0.579619 0.774035 1.044024 1.198949 1.540929 1.716133 0.014502 0.201648 0.520474 0.672609 0.985379 1.195177 1.507341 1.764103 0.097426 0.342245 0.627704 0.945299 1.202356 1.475847 1.721182 0.072210 0.320282 0.723105 0.994212 1.376639 1.628569 0.004411 0.252506 0.634414 0.950473 1.300359 1.631513 1.931070 0.366990 0.637810 1.076572 1.332064 1.713142 0.077940 0.436056 0.848424 1.208181 1.601286 0.086755 0.381353 0.872396 1.089994 1.614456 1.961419 0.423320 0.808469 1.175283 1.623133 -0.034180 0.506785 0.864122 1.390181 1.717961 0.230211 0.616172 1.096084 1.517261 0.012613 0.448736 0.956866 1.397282 1.810278 0.311045 0.728715 1.348824 1.754839 0.313735 0.681997 1.237185 1.720115 0.276424 0.775577 1.316471 1.714264 0.282977 0.800786 1.303450 1.939274 0.394499 0.938275 1.470438 -0.014368 0.541175 1.166921 1.594106 0.341168 0.702121 1.381163 1.956250 0.500123 1.080291 1.762881 0.171705 0.814910 1.474785 -0.013740 0.585853 1.246776 1.767419 0.350300 1.010893 1.661131 0.230045 0.941038 1.597291 0.139768 0.831825 1.417226 0.089114 0.710224 1.377864 0.025167 0.667600 1.338913 -0.044894 0.664479 1.414364 -0.004385 0.668067 1.415540 -0.000809 0.770039 1.445636 0.150982 0.919390 1.589526 0.225526 0.992070 1.640611 0.372696 1.114936 1.833617 0.675244 1.327015 0.127548 0.818367 1.617381 0.322338 1.043459 1.790554 0.551337 1.420928 0.047044 0.901160 1.685817 0.373197 1.236078 1.953290 0.751404 1.588723 0.373017 1.193997 0.002039 0.862586 1.549309 0.474445 1.237850 0.118839 0.812461 1.782583 0.543197 1.435068 0.190790 1.126890 1.879059 0.785282 1.563439 0.456633 1.345309 0.193406 1.046090 -0.000297 0.849296 1.727941 0.620057 1.520403 0.445484 1.236203 0.154174 1.067712 0.048353 0.844038 1.774049 0.732049 1.725713 0.564864 1.542403 0.468608 1.420749 0.276301 1.292865 0.256339 1.098336 0.100868 1.053698 0.044775 0.983152 1.898195 0.982545 1.947169 0.999660 1.873571 0.869452 1.887707 0.915903 1.902504 0.946236 1.867534 0.923687 1.867965 0.890188 1.919061 0.929976 -0.034342 1.005189 0.042721 1.037644 0.138466 1.210111 0.270832 1.316659 0.419832 1.413859 0.442547 1.533032 0.594425 1.712421 0.786432 1.899524 0.948012 0.009827 1.132500 0.248382 1.321340 0.382235 1.517837 0.586195 1.758558 0.892697 0.040696 1.145952 0.278666 1.402603 0.522137 1.662461 0.804524 0.011241 1.141464 0.329501 1.443598 0.663135 1.768452 1.037512 0.207802 1.328042 0.541286 1.777693 0.998280 0.274417 1.474374 0.747120)
)
;;; 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:
- 33.807201 #(0.000000 1.364142 0.675113 1.983577 1.254294 0.552329 1.836743 1.192409 0.484634 1.801533 1.172566 0.466483 1.828751 1.135181 0.472840 1.760159 1.095778 0.457855 1.784750 1.097435 0.425212 1.789789 1.135510 0.477321 1.851375 1.178611 0.580958 1.895610 1.262044 0.621204 1.940570 1.336164 0.716678 0.079611 1.459665 0.794577 0.160789 1.506831 0.918691 0.277786 1.674486 1.073116 0.407339 1.834209 1.226386 0.561498 1.936202 1.346414 0.761610 0.161533 1.567155 0.988407 0.385930 1.759693 1.189891 0.596762 1.964884 1.408838 0.805682 0.208528 1.638408 1.022041 0.449073 1.877688 1.290483 0.710597 0.118907 1.604347 1.036344 0.437007 1.870216 1.279646 0.714185 0.181876 1.603225 1.060701 0.516902 1.943455 1.352162 0.854959 0.278554 1.759323 1.206344 0.648705 0.112478 1.593480 1.081783 0.535465 1.983045 1.480521 0.898870 0.368148 1.804509 1.288994 0.794865 0.261963 1.767905 1.218193 0.742589 0.253127 1.714849 1.235497 0.715457 0.184149 1.674275 1.146285 0.645897 0.166841 1.710680 1.198433 0.677299 0.186226 1.674915 1.199136 0.721300 0.262563 1.790743 1.314432 0.809315 0.288571 1.828209 1.387199 0.896357 0.437605 1.960099 1.483803 1.028106 0.584458 0.146819 1.709447 1.230858 0.733909 0.306513 1.850441 1.427304 0.992892 0.510099 0.065866 1.631296 1.178126 0.777301 0.345046 1.900495 1.476859 1.038599 0.572586 0.149186 1.721605 1.305591 0.886100 0.457098 0.037433 1.638899 1.197425 0.790088 0.377839 1.989780 1.558203 1.156485 0.781870 0.404317 1.973835 1.554358 1.170233 0.771615 0.374277 0.018493 1.594123 1.242513 0.854619 0.461795 0.081110 1.709280 1.301002 0.923569 0.562176 0.240831 1.868645 1.467942 1.043506 0.700191 0.373186 0.020901 1.660798 1.253399 0.883421 0.565536 0.228833 1.855303 1.456208 1.135323 0.876583 0.521252 0.177034 1.833435 1.455770 1.125916 0.805724 0.491845 0.160671 1.828987 1.465590 1.155785 0.817746 0.521332 0.235426 1.887966 1.575223 1.257205 0.969169 0.641354 0.337266 0.021962 1.715940 1.432962 1.130802 0.833072 0.542765 0.257276 1.961983 1.645176 1.332410 1.073812 0.812059 0.494499 0.209301 1.908095 1.631186 1.353093 1.111512 0.827999 0.575490 0.300653 0.031163 1.773109 1.512681 1.250107 0.966897 0.721390 0.462299 0.215499 1.939259 1.677678 1.457396 1.248037 0.965584 0.701309 0.468425 0.220869 1.947613 1.740789 1.544693 1.309081 1.029906 0.793064 0.610826 0.390206 0.164853 1.929700 1.691873 1.499022 1.289892 1.071540 0.841105 0.632207 0.426445 0.234765 0.030096 1.800259 1.605596 1.441473 1.246927 1.017050 0.863186 0.644309 0.447349 0.290887 0.123873 1.918826 1.712423 1.551871 1.363485 1.174755 1.008922 0.834264 0.655134 0.468710 0.329933 0.142069 1.972940 1.818013 1.673571 1.540238 1.342087 1.205880 1.061367 0.897784 0.719658 0.579367 0.442314 0.296625 0.129827 0.017638 1.911483 1.754803 1.591958 1.513209 1.336162 1.182556 1.082715 0.960545 0.847392 0.701142 0.585862 0.484740 0.370327 0.206932 0.117826 0.013386 1.890380 1.793457 1.704658 1.586803 1.511827 1.409979 1.273336 1.222449 1.111527 1.023000 0.924913 0.792137 0.742634 0.678038 0.578023 0.516957 0.424087 0.345217 0.272108 0.159530 0.094246 0.043689 1.948288 1.921275 1.871901 1.801095 1.715747 1.629669 1.611307 1.562035 1.484941 1.444552 1.396826 1.342300 1.308525 1.259733 1.187530 1.141791 1.123593 1.081080 1.019739 1.021993 1.004057 0.941054 0.899743 0.899757 0.869793 0.851618 0.834755 0.804474 0.792500 0.765680 0.792527 0.797054 0.745563 0.712647 0.780858 0.773019 0.716983 0.739835 0.744593 0.725716 0.753125 0.739631 0.700381 0.740051 0.796021 0.797779 0.773341 0.815539 0.818404 0.839560 0.861041 0.896510 0.975994 0.961304 0.961600 1.010461 1.085676 1.119417 1.102104 1.186440 1.253285 1.264452 1.276904 1.352625 1.428826 1.470120 1.480053 1.545121 1.643816 1.703297 1.684862 1.768694 1.862439 1.944457 0.006758 0.079527 0.149665 0.178903 0.225964 0.370916 0.477795 0.511178 0.548206 0.672042 0.792219 0.842319 0.905728 1.025895 1.158540 1.211987 1.295255 1.402468 1.514037 1.591998 1.690262 1.832834 1.926728 0.063512 0.198714 0.262129 0.396070 0.490506 0.616295 0.752364 0.863755 1.033368 1.102982 1.183924 1.392415 1.517478 1.634591 1.766292 1.906988 0.084784 0.205199 0.325843 0.466764 0.624717 0.761767 0.890311 1.082167 1.196327 1.369408 1.529028 1.716948 1.888984 0.035238 0.174108 0.353212 0.538144 0.707038 0.863433 1.051814 1.230131 1.410797 1.569966 1.776113 1.943480 0.099064 0.295267 0.460289 0.674408 0.891305 1.105514 1.293793 1.464341 1.675349 1.851695 0.076190 0.293742 0.486290 0.684082 0.952904 1.128080 1.330015 1.557054 1.757259 -0.000160 0.192871 0.402308 0.664868 0.894446 1.116479 1.353592 1.598826 1.836131 0.080652 0.297534 0.527974 0.765866 1.057519 1.308261 1.502691 1.750665 -0.004866 0.289087 0.518195 0.789721 1.023266 1.265193 1.548023 1.836315 0.113253 0.337725 0.619232 0.873943 1.165135 1.439196 1.712255 0.017596 0.281853 0.557727 0.844713 1.122423 1.402075 1.732865 0.011167 0.341737 0.563808 0.879213 1.198923 1.499889 1.805064 0.086808 0.436206 0.707039 1.025966 1.290207 1.644101 1.962475 0.304593 0.612903 0.928215 1.263726 1.582130 1.907083 0.221768 0.575600 0.856485 1.216670 1.542706 1.941964 0.203742 0.564046 0.870370 1.245288 1.573141 1.960601 0.289011 0.653033 1.041331 1.370599 1.754559 0.124181 0.426777 0.768538 1.199117 1.567754 1.930155 0.269838 0.659090 1.012819 1.447503 1.794922 0.162749 0.518626 0.905358 1.303064 1.709632 0.089012 0.482385 0.858049 1.296207 1.676969 0.062655 0.425077 0.874674 1.232563 1.702537 0.090740 0.504071 0.906185 1.309105 1.780201 0.147011 0.568476 0.990269 1.453814 1.864334 0.242282 0.714175 1.072219 1.535826 1.979966 0.468443 0.836885 1.305549 1.728427 0.180916 0.639670 1.073029 1.553181 -0.013990 0.422336 0.867137 1.362744 1.782288 0.240301 0.715703 1.155397 1.655084 0.129248 0.566924 1.094135 1.490246 0.018046 0.492444 0.915165 1.490795 1.877542 0.415843 0.897385 1.317431 1.829075 0.364171 0.808186 1.356320 1.821870 0.342919 0.787957 1.373223 1.814983 0.358066 0.850998 1.366152 1.856595 0.355262 0.880172 1.414365 1.890741 0.441154 0.931104 1.471844 1.988022 0.515346 1.079368 1.596651 0.122556 0.664854 1.186099 1.760906 0.307243 0.819982 1.367234 1.871831 0.466685 0.994866 1.536088 0.118594 0.640521 1.207741 1.770347 0.284239 0.901822 1.425460 0.032668 0.581952 1.160019 1.693478 0.342805 0.854242 1.390962 0.072136 0.591534 1.214554 1.769960 0.381022 0.911387 1.525435 0.130168 0.709749 1.304380 1.944143 0.512838 1.116298 1.701519 0.319478 0.870758 1.527435 0.133727 0.729695 1.337227 1.962810 0.585600 1.215358 1.861923 0.453889 1.079368 1.708606 0.341804 0.970869 1.590377 0.245121 0.844160 1.524942 0.109206 0.769494 1.401830 0.043767 0.697198 1.348548 0.030318 0.682970 1.343183 1.914450 0.671342 1.249942 1.963139 0.647820 1.254756 1.968937 0.616436 1.279137 -0.029384 0.635615 1.302204 1.978592 0.687906 1.345327 0.046217 0.716075 1.431101 0.083754 0.787286 1.507245 0.211682 0.828351 1.585830 0.236341 0.960573 1.643088 0.370235 1.112464 1.766554 0.531174 1.209737 1.927741 0.669593 1.392110 0.116911 0.837259 1.566247 0.260629 0.977443 1.692982 0.446387 1.215331 1.872659 0.704760 1.415722 0.153617 0.930927 1.600729 0.362462 1.106049 1.868684 0.610565 1.344107 0.141591 0.861464 1.648732 0.381553 1.158301 1.918480 0.712617 1.445393 0.216297 0.965357 1.782848 0.594341 1.346741 0.074197 0.864382 1.691699 0.410247 1.233141 -0.004147 0.841003 1.591546 0.457770 1.215653 1.954201 0.801638 1.587249 0.395877 1.200874 -0.010640 0.833424 1.602919 0.453105 1.251358 0.046499 0.873036 1.708851 0.495477 1.345559 0.133497 1.020585 1.804492 0.669347 1.473663 0.305578 1.154572 -1.854652 0.779343 1.663216 0.514170 1.380322 0.272202 1.056906 1.921665 0.795442 1.648164 0.491956 1.316913 0.220141 1.060149 1.917795 0.771623 1.611339 0.567911 1.404698 0.270716 1.137148 0.034888 0.863030 1.782767 0.652700 1.541481 0.355583 1.288636 0.183521 1.069037 1.972003 0.883088 1.803269 0.714866 1.637207 0.490856 1.422715 0.290341 1.237152 0.160309 1.021480 1.929743 0.839606 1.744676 0.699515 1.607392 0.534060 1.441879 0.390403 1.319232 0.231115 1.163302 0.094795 1.038485 1.961654 0.890703 1.805967 0.766100 1.710181 0.653018 1.626373 0.564645 1.563912 0.521212 1.455550 0.422007 1.383186 0.347200 1.309652 0.227292 1.226388 0.159001 1.144739 0.144679 1.073533 0.064753 1.025375 -0.010642 1.041892 -0.004919 0.976692 -0.012333 0.933242 1.935626 0.960595 1.891870 0.940076 1.930117 0.869449 1.891019 0.849805 1.910019 0.887879 1.913739 0.939523 1.953445 0.989130 -0.034537 1.005728 0.036075 1.090591 0.067074 1.125818 0.158382 1.155301 0.225366 1.267224 0.306773 1.350335 0.366526 1.436229 0.475969 1.543457 0.477220 1.518721 0.621278 1.631869 0.705848 1.771754 0.835906 1.875550 0.914503 -0.041325 1.041952 0.115262 1.170309 0.261849 1.348972 0.441300 1.480514 0.585036 1.693141 0.766205 1.825257 0.935409 -1.636490 1.040667 0.161590 1.239848 0.402403 1.483900 0.512738 1.678468 0.794899 1.874475 0.918188 0.062839 1.171276 0.256973 1.341711 0.518613 1.522865 0.715619 1.798978 0.942901 0.051817 1.229116 0.358913 1.377242 0.564138 1.671838 0.826468 -0.019171 1.110194 0.244180 1.363911 0.535253 1.745156 0.846222 -0.021966 1.141211 0.256711 1.494572 0.580680 1.751231 0.889159 0.070102 1.224402 0.406286 1.517793 0.755202 1.924435 1.101743 0.284905 1.482753 0.682407 1.824435 1.017306 0.289082 1.515064)
+ 33.770929 #(0.000000 1.368943 0.675117 1.977783 1.254906 0.548655 1.838483 1.189066 0.485454 1.800708 1.174038 0.467001 1.826678 1.133090 0.471772 1.759895 1.099569 0.459093 1.782501 1.096871 0.428194 1.789283 1.137384 0.475536 1.851985 1.182689 0.576219 1.893441 1.261843 0.623830 1.941546 1.336071 0.718196 0.081062 1.458816 0.793102 0.161060 1.508841 0.916532 0.275718 1.671805 1.076783 0.411274 1.835564 1.231630 0.563148 1.933718 1.347768 0.758323 0.160032 1.565562 0.989245 0.385389 1.759392 1.190420 0.595854 1.966951 1.405437 0.802356 0.208813 1.641688 1.022729 0.444787 1.878766 1.293403 0.712629 0.124103 1.605028 1.039207 0.435124 1.871798 1.279891 0.713632 0.179305 1.601528 1.060153 0.519904 1.948673 1.352344 0.853021 0.279151 1.756526 1.204726 0.651922 0.107571 1.590870 1.083816 0.536718 1.982816 1.478543 0.899404 0.370044 1.803610 1.288800 0.787875 0.258826 1.767666 1.217457 0.742116 0.253539 1.717490 1.239922 0.716751 0.184399 1.674112 1.142066 0.647532 0.167657 1.711644 1.196212 0.677242 0.187369 1.674252 1.199857 0.725802 0.263439 1.792002 1.314959 0.809416 0.287314 1.827070 1.390435 0.896974 0.434172 1.952517 1.482347 1.028979 0.586246 0.148914 1.707574 1.231502 0.732660 0.306545 1.849474 1.427734 0.992551 0.509938 0.068731 1.636075 1.181861 0.775252 0.348792 1.900072 1.476510 1.040322 0.571925 0.146728 1.725060 1.302794 0.882508 0.462262 0.036974 1.639969 1.197715 0.788505 0.379958 1.985945 1.558113 1.162003 0.783301 0.404645 1.971354 1.555878 1.169648 0.769364 0.374040 0.017438 1.595253 1.238747 0.855952 0.456366 0.081456 1.705524 1.299345 0.921303 0.559137 0.239502 1.872324 1.466528 1.042323 0.704584 0.373690 0.030517 1.662715 1.254713 0.884191 0.565159 0.230527 1.851661 1.451994 1.135886 0.877807 0.525333 0.179890 1.831910 1.453683 1.123862 0.805507 0.491362 0.161316 1.828037 1.464630 1.155688 0.819362 0.520691 0.232899 1.888418 1.568648 1.256972 0.968204 0.639661 0.338415 0.025493 1.712366 1.430486 1.132106 0.830859 0.546353 0.259199 1.960946 1.648158 1.334819 1.072518 0.807416 0.494366 0.208056 1.907309 1.631812 1.351833 1.108941 0.822549 0.578110 0.299881 0.030223 1.773098 1.507658 1.247993 0.966970 0.719073 0.459154 0.215391 1.943081 1.679785 1.455279 1.244452 0.965315 0.702461 0.469503 0.221006 1.945497 1.735323 1.546098 1.304611 1.027659 0.793700 0.610098 0.388978 0.170391 1.932861 1.690413 1.494993 1.288369 1.069234 0.841800 0.631338 0.427539 0.228669 0.030646 1.798065 1.603362 1.440511 1.242225 1.020407 0.864593 0.649385 0.451564 0.290987 0.126664 1.922771 1.715707 1.550168 1.360631 1.176174 1.007512 0.833468 0.657642 0.467459 0.329963 0.141925 1.974528 1.812856 1.671343 1.541244 1.346180 1.204272 1.061730 0.901338 0.720173 0.582111 0.444554 0.293113 0.129278 0.023115 1.911874 1.756478 1.592826 1.511000 1.332922 1.179017 1.080214 0.959217 0.844423 0.704003 0.584030 0.486133 0.372105 0.204888 0.118109 0.015267 1.891308 1.793617 1.707831 1.585923 1.513748 1.409924 1.270775 1.220169 1.105990 1.017594 0.923110 0.795539 0.745038 0.678752 0.579953 0.517205 0.424708 0.346701 0.274697 0.156666 0.089596 0.041405 1.951842 1.922547 1.870185 1.804757 1.710221 1.631731 1.608863 1.559787 1.488873 1.443429 1.398878 1.343564 1.308090 1.262007 1.188366 1.143434 1.123178 1.079539 1.020597 1.026789 1.006755 0.940838 0.904845 0.898750 0.865919 0.854549 0.833874 0.805315 0.789623 0.763709 0.794387 0.800661 0.742706 0.711242 0.777995 0.769681 0.716113 0.734770 0.742629 0.726019 0.753328 0.737232 0.701427 0.742006 0.795556 0.798518 0.773582 0.812750 0.819399 0.838632 0.863436 0.892753 0.982254 0.962164 0.959769 1.009564 1.085485 1.114795 1.105008 1.186734 1.247154 1.263919 1.278166 1.354607 1.434308 1.466575 1.478665 1.545400 1.647422 1.699741 1.687292 1.770150 1.862252 1.944039 -0.000723 0.078356 0.148358 0.177243 0.225721 0.368558 0.481162 0.515264 0.547766 0.672058 0.791818 0.839457 0.902189 1.028276 1.161591 1.210635 1.296794 1.406403 1.510510 1.589676 1.687864 1.830542 1.924297 0.057934 0.198427 0.264667 0.395278 0.488986 0.615803 0.753709 0.863481 1.027764 1.098716 1.185645 1.397360 1.516597 1.631563 1.763763 1.905503 0.085374 0.202087 0.323249 0.463925 0.622358 0.762567 0.889164 1.084069 1.198820 1.370310 1.523841 1.721800 1.894156 0.030697 0.172148 0.352542 0.533721 0.713271 0.860953 1.048066 1.228654 1.414490 1.573317 1.777359 1.947150 0.099507 0.292853 0.464535 0.676301 0.887089 1.105097 1.295840 1.459153 1.679117 1.853149 0.074460 0.296809 0.487607 0.680912 0.957136 1.127539 1.334450 1.555591 1.756530 -0.000175 0.190222 0.401222 0.667374 0.896211 1.118454 1.351827 1.597647 1.838228 0.077372 0.300928 0.528253 0.766152 1.058166 1.306393 1.503628 1.750652 -0.006637 0.288129 0.515686 0.790370 1.024873 1.267557 1.548173 1.843210 0.108573 0.337129 0.619321 0.875959 1.164257 1.435767 1.712536 0.014650 0.283645 0.558644 0.842156 1.125941 1.404136 1.735347 0.011092 0.340899 0.568771 0.877889 1.202373 1.494888 1.807268 0.083368 0.435118 0.704804 1.019399 1.287446 1.647326 1.962659 0.303967 0.615191 0.929552 1.263907 1.581270 1.903642 0.217513 0.576591 0.858494 1.221849 1.542827 1.944478 0.201800 0.566068 0.873196 1.239055 1.575048 1.956285 0.289003 0.649844 1.038186 1.371915 1.752510 0.121506 0.427051 0.767565 1.203521 1.561628 1.930089 0.272543 0.656223 1.012325 1.445985 1.797449 0.163032 0.521024 0.905387 1.302986 1.715904 0.091014 0.481206 0.855966 1.295032 1.677239 0.061830 0.423585 0.873408 1.233396 1.699159 0.092671 0.499103 0.904362 1.311520 1.781853 0.153499 0.569201 0.993162 1.452206 1.865781 0.246482 0.713016 1.066286 1.539744 1.980194 0.469033 0.840907 1.308450 1.728934 0.185586 0.643187 1.075591 1.556092 -0.016793 0.423410 0.867299 1.361811 1.786990 0.237669 0.718541 1.158094 1.653217 0.129187 0.567935 1.092997 1.490248 0.018478 0.490904 0.915060 1.490683 1.879002 0.419239 0.897042 1.320185 1.832159 0.363480 0.804716 1.354321 1.819758 0.348449 0.788231 1.375694 1.816714 0.357656 0.850674 1.361190 1.852209 0.356176 0.876795 1.416278 1.888198 0.439905 0.926745 1.469461 1.988055 0.512851 1.079107 1.592810 0.125624 0.664421 1.188993 1.760791 0.309518 0.818530 1.368172 1.875783 0.470038 0.995999 1.538787 0.118634 0.646499 1.210334 1.770181 0.280828 0.901139 1.424572 0.035592 0.580789 1.157098 1.696759 0.338264 0.859067 1.391459 0.073185 0.589708 1.211648 1.774196 0.381624 0.909074 1.528569 0.132194 0.712566 1.306540 1.947987 0.514268 1.119307 1.700562 0.321871 0.869112 1.525636 0.136583 0.729756 1.341501 1.959394 0.585688 1.213241 1.863089 0.455468 1.078994 1.702661 0.344414 0.976627 1.593097 0.246236 0.846225 1.521360 0.108258 0.773024 1.398804 0.040316 0.697340 1.345824 0.027371 0.679643 1.344231 1.915329 0.670481 1.252696 1.963365 0.646724 1.257016 1.968012 0.616278 1.280491 -0.028970 0.636753 1.301447 1.978063 0.686197 1.351856 0.053441 0.718081 1.434604 0.086625 0.782287 1.508880 0.210063 0.824189 1.583766 0.232178 0.961392 1.645275 0.369609 1.111309 1.766974 0.531358 1.206647 1.934800 0.671894 1.391218 0.115251 0.839914 1.566100 0.264995 0.974377 1.692213 0.442966 1.218701 1.871485 0.706461 1.414063 0.152958 0.932935 1.600030 0.363232 1.110358 1.864489 0.608390 1.341844 0.144597 0.862629 1.648565 0.382052 1.159599 1.915591 0.714723 1.451397 0.216861 0.966084 1.780644 0.596881 1.343957 0.074314 0.868369 1.691076 0.406381 1.231053 -0.003769 0.845046 1.586319 0.452039 1.217879 1.952753 0.803580 1.584545 0.395351 1.198777 -0.007688 0.831927 1.603188 0.452735 1.251144 0.044204 0.876579 1.706095 0.492956 1.347687 0.131617 1.021201 1.804465 0.669142 1.475004 0.305552 1.149250 -1.857760 0.778452 1.664520 0.510934 1.383516 0.274399 1.052959 1.921571 0.798648 1.645962 0.492319 1.319147 0.219099 1.060907 1.918305 0.770356 1.612957 0.566748 1.404300 0.269924 1.136136 0.035195 0.866413 1.785041 0.648182 1.539067 0.350872 1.295454 0.181437 1.070139 1.970874 0.880942 1.800040 0.720439 1.639475 0.492624 1.424301 0.291832 1.232171 0.160637 1.021629 1.929500 0.838428 1.746582 0.697988 1.604275 0.534733 1.443642 0.391394 1.317828 0.230591 1.161165 0.090655 1.040177 1.965493 0.895467 1.805158 0.765594 1.705852 0.652311 1.627403 0.565563 1.562586 0.519363 1.453910 0.418801 1.385244 0.347104 1.308424 0.226972 1.230339 0.162040 1.145383 0.145033 1.074749 0.058807 1.025821 -0.006348 1.042123 -0.006515 0.975392 -0.015083 0.935123 1.941369 0.956528 1.890240 0.936598 1.930853 0.868601 1.890268 0.845309 1.909419 0.888126 1.915377 0.940067 1.957264 0.994922 -0.039993 1.002254 0.037555 1.089581 0.072800 1.124256 0.158295 1.157028 0.226259 1.265676 0.310052 1.345057 0.365159 1.439572 0.475517 1.543816 0.479880 1.522876 0.623841 1.628857 0.702959 1.773991 0.835123 1.875972 0.913719 -0.041721 1.038108 0.118092 1.165931 0.264262 1.348850 0.438095 1.485934 0.583833 1.690661 0.765691 1.830368 0.940487 -1.636431 1.033485 0.162009 1.236751 0.402732 1.484269 0.511854 1.675105 0.794834 1.873853 0.917624 0.064531 1.171594 0.256854 1.344117 0.518903 1.519155 0.710940 1.794173 0.938448 0.050255 1.227932 0.359134 1.375235 0.557953 1.671331 0.826411 -0.018966 1.110570 0.242238 1.362496 0.539817 1.742211 0.843155 -0.019887 1.138417 0.254435 1.489564 0.580095 1.750584 0.885431 0.072042 1.220245 0.403447 1.516629 0.748667 1.920260 1.105358 0.284650 1.481357 0.683918 1.826463 1.018165 0.287982 1.520735)
)
;;; 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.440861 #(0.000000 1.166677 0.303300 1.383578 0.540087 1.671739 0.820385 1.930085 1.073367 0.212481 1.354898 0.499986 1.624152 0.734669 1.922998 1.067909 0.165728 1.326150 0.481666 1.609145 0.769585 1.918272 1.075119 0.212182 1.339989 0.519647 1.660924 0.811002 1.970204 1.134967 0.310529 1.469460 0.616259 1.764067 0.908854 0.086641 1.274727 0.383361 1.556192 0.757713 1.913046 1.116246 0.284849 1.426950 0.573269 1.742169 0.949253 0.085863 1.277368 0.432421 1.620645 0.807257 1.934705 1.159891 0.317508 1.529270 0.702022 1.884352 1.086654 0.239097 1.426699 0.600202 1.779349 0.950217 0.175834 1.363184 0.553935 1.730602 0.957927 0.145937 1.297604 0.511289 1.728736 0.943493 0.143700 1.309757 0.528521 1.709702 0.957203 0.119987 1.319567 0.517483 1.746004 0.943571 0.142813 1.365751 0.553159 1.786189 0.993000 0.185220 1.431138 0.642168 1.857404 1.053583 0.302185 1.472502 0.722455 1.900111 1.158010 0.366340 1.582632 0.823365 0.021209 1.261109 0.495050 1.697850 0.933672 0.158143 1.437519 0.626535 1.863798 1.097451 0.307621 1.545592 0.805679 0.013257 1.278740 0.497331 1.756202 0.969388 0.238956 1.461040 0.704091 1.985075 1.179273 0.441127 1.698591 0.943598 0.194205 1.451589 0.667235 1.933843 1.190080 0.451557 1.712915 0.942642 0.205057 1.445265 0.729609 1.968702 1.209669 0.513148 1.766881 1.009391 0.292014 1.537573 0.833027 0.077253 1.369435 0.612242 1.904399 1.150670 0.409684 1.651954 0.941795 0.262250 1.504782 0.786762 0.043708 1.344514 0.646012 1.881767 1.182381 0.448428 1.722428 1.020418 0.331856 1.583427 0.901814 0.186224 1.465585 0.750330 0.046577 1.348911 0.635484 1.913358 1.187409 0.501609 1.749492 1.027917 0.378108 1.676982 0.994765 0.274923 1.591202 0.884676 0.198857 1.489394 0.828151 0.074336 1.409933 0.700217 0.045106 1.298849 0.643460 1.926519 1.244494 0.585903 1.885876 1.222768 0.506500 1.829484 1.176622 0.471530 1.762510 1.106195 0.437799 1.733750 1.089695 0.378966 1.719670 1.061635 0.372820 1.682787 1.063035 0.399634 1.679921 0.997220 0.343238 1.664154 1.035566 0.361904 1.697663 1.040273 0.382856 1.696721 1.040064 0.376939 1.742049 1.086079 0.424366 1.753871 1.055124 0.427213 1.781870 1.144577 0.505810 1.858525 1.184719 0.555227 1.885098 1.221434 0.589076 -0.021157 1.291884 0.650433 0.035552 1.394547 0.763375 0.115594 1.472058 0.840256 0.200811 1.566615 0.946996 0.310280 1.667456 1.055467 0.419724 1.764202 1.147843 0.537859 1.905667 1.267824 0.645591 0.015943 1.409377 0.794287 0.158115 1.550491 0.926791 0.309691 1.699665 1.055743 0.459094 1.844926 1.220540 0.602967 1.984320 1.371506 0.804176 0.179421 1.584079 0.944141 0.349994 1.762365 1.157413 0.558484 1.966348 1.335839 0.723291 0.121908 1.526812 0.947922 0.329068 1.748747 1.117848 0.560407 1.959291 1.360752 0.794444 0.182936 1.599049 1.014607 0.442516 1.848404 1.255063 0.653452 0.086259 1.512777 0.932853 0.319130 1.749264 1.132585 0.574786 0.032915 1.443541 0.849920 0.286454 1.735380 1.140041 0.581475 0.000141 1.433385 0.874438 0.307496 1.727845 1.182095 0.608867 0.030632 1.478771 0.952287 0.346992 1.803799 1.230733 0.687127 0.117745 1.566716 1.000311 0.441030 1.902399 1.326748 0.780310 0.253399 1.693504 1.149092 0.610110 0.027085 1.500735 0.957738 0.374956 1.837578 1.323165 0.797878 0.269270 1.690229 1.132707 0.618681 0.089433 1.568637 0.989109 0.468807 1.936865 1.397746 0.858168 0.350395 1.800953 1.297245 0.742257 0.252791 1.748223 1.210626 0.675439 0.144549 1.600058 1.088706 0.578909 0.080411 1.542734 1.010971 0.525317 0.003065 1.436783 0.940512 0.430244 1.984220 1.423574 0.933619 0.429525 1.915123 1.414454 0.876114 0.381790 1.877904 1.386136 0.871395 0.365728 1.894450 1.381209 0.878519 0.364300 1.839804 1.379835 0.878369 0.376460 1.888498 1.386829 0.940281 0.452665 1.961333 1.470103 0.950468 0.498020 -0.014195 1.530105 1.026940 0.531523 0.051369 1.604646 1.093845 0.602015 0.140982 1.650675 1.201988 0.720732 0.237404 1.741139 1.295144 0.836264 0.343639 1.886209 1.404544 0.933189 0.477384 0.024844 1.556392 1.098985 0.611513 0.144644 1.661236 1.225258 0.764822 0.339085 1.852954 1.409406 0.924060 0.477910 0.034741 1.587741 1.145965 0.660661 0.220165 1.780755 1.305983 0.878564 0.419878 1.975892 1.559953 1.079754 0.647900 0.220923 1.789550 1.348992 0.895156 0.449459 0.030966 1.573079 1.125150 0.713492 0.286745 1.856753 1.425168 0.995854 0.537163 0.124677 1.670280 1.259302 0.849633 0.417404 1.990882 1.525079 1.135552 0.742149 0.330440 1.871980 1.471922 1.053074 0.664780 0.216305 1.805559 1.395603 0.984384 0.571339 0.150416 1.754569 1.321164 0.900639 0.523644 0.113898 1.716705 1.295838 0.931932 0.517248 0.099996 1.706907 1.299725 0.890259 0.507047 0.116893 1.712974 1.302098 0.913922 0.502154 0.142309 1.767743 1.340128 0.949452 0.551508 0.204042 1.799222 1.391522 1.020944 0.634366 0.241486 1.863100 1.489679 1.108783 0.736706 0.367374 1.967102 1.597193 1.226608 0.874759 0.494520 0.111071 1.735538 1.331716 0.991419 0.614697 0.250091 1.882711 1.503505 1.146013 0.776745 0.406082 0.064917 1.704310 1.386888 0.997465 0.611276 0.270502 1.895546 1.563501 1.200654 0.866598 0.518378 0.130522 1.820438 1.431927 1.079496 0.723847 0.399232 0.050658 1.706516 1.382904 0.997761 0.643890 0.330874 1.979712 1.630538 1.298066 0.934308 0.628064 0.308635 1.964958 1.634692 1.297182 0.965595 0.626304 0.299651 1.962627 1.652640 1.350232 1.025828 0.677246 0.320389 0.024262 1.685204 1.359565 1.018133 0.734525 0.408370 0.057075 1.761915 1.433867 1.114488 0.832309 0.502807 0.187929 1.880920 1.565992 1.260327 0.971782 0.633236 0.339368 0.026642 1.737305 1.425940 1.109968 0.791978 0.525580 0.206786 1.927034 1.598137 1.325707 1.019526 0.724889 0.446458 0.130333 1.803046 1.530207 1.261958 0.956295 0.668188 0.382413 0.081863 1.799264 1.526013 1.251288 0.978811 0.645794 0.344531 0.091420 1.838340 1.562903 1.300926 0.993456 0.697963 0.455720 0.146962 1.878816 1.600939 1.367223 1.079962 0.816511 0.556442 0.271481 -0.001200 1.741300 1.479383 1.196187 0.956311 0.683874 0.412780 0.184541 1.891704 1.611098 1.389404 1.148268 0.878891 0.603240 0.341262 0.080372 1.859630 1.631424 1.316521 1.114973 0.888971 0.610369 0.353448 0.095020 1.862190 1.621065 1.410138 1.128569 0.910134 0.678497 0.458622 0.180998 1.942084 1.713517 1.465412 1.221672 1.014252 0.787490 0.546288 0.286448 0.059215 1.879355 1.608671 1.392679 1.168848 0.954486 0.734594 0.505989 0.267089 0.066022 1.830517 1.570160 1.373105 1.165960 0.958474 0.745972 0.531315 0.324410 0.109237 1.870956 1.697394 1.477739 1.244130 1.046117 0.835182 0.634056 0.463297 0.227917 0.004552 1.809079 1.616074 1.451001 1.194379 0.985845 0.820457 0.604687 0.453915 0.230778 0.010241 1.830158 1.657972 1.447791 1.265673 1.078313 0.887751 0.718755 0.497398 0.334189 0.158216 1.958261 1.803962 1.580322 1.409764 1.250996 1.020353 0.877569 0.701819 0.503878 0.330963 0.155828 -0.004494 1.825082 1.637363 1.478665 1.314441 1.142931 0.981390 0.823969 0.603913 0.474378 0.319996 0.153525 1.979023 1.817297 1.661152 1.498327 1.340982 1.166801 1.028501 0.882980 0.714216 0.587894 0.414402 0.270591 0.120969 1.955941 1.787376 1.668458 1.487620 1.341772 1.210822 1.078772 0.922201 0.772971 0.637672 0.486912 0.375702 0.250965 0.070758 1.912632 1.786231 1.672643 1.531432 1.394214 1.298809 1.119445 1.000817 0.893120 0.739056 0.624672 0.505967 0.390312 0.213286 0.092045 0.004639 1.845622 1.732048 1.630620 1.489559 1.374287 1.300575 1.175002 1.027138 0.945780 0.827976 0.707325 0.609825 0.484997 0.381699 0.260360 0.152786 0.035890 1.928839 1.811665 1.711213 1.618190 1.503798 1.386999 1.313346 1.190890 1.114951 0.996366 0.888074 0.820583 0.732793 0.605191 0.523299 0.426216 0.327898 0.279093 0.171712 0.072650 1.971599 1.897979 1.820522 1.736375 1.664804 1.578844 1.479489 1.407695 1.328096 1.285134 1.165058 1.052108 1.014182 0.941998 0.872409 0.788336 0.717887 0.633117 0.566962 0.496297 0.417723 0.359801 0.297968 0.227186 0.143212 0.110141 0.056509 1.971603 1.911728 1.841726 1.804266 1.755530 1.652110 1.601007 1.567180 1.478433 1.423649 1.408496 1.320938 1.278885 1.239326 1.184941 1.124918 1.070158 1.048929 1.010980 0.947109 0.925841 0.859963 0.828911 0.801857 0.760553 0.702759 0.667944 0.612393 0.597089 0.537183 0.517846 0.469876 0.435094 0.415774 0.390514 0.338970 0.296481 0.307068 0.250256 0.216557 0.231136 0.207191 0.173287 0.120345 0.125729 0.131999 0.067129 0.078481 0.043777 -0.007503 0.008440 0.041067 1.967749 1.936696 1.941074 1.939901 1.956299 1.953237 1.934733 1.907111 1.903020 1.916201 1.924214 1.886237 1.882969 1.882269 1.893971 1.869803 1.874413 1.896512 1.932675 1.922339 1.935149 1.885092 1.901243 1.915876 1.919397 1.935866 1.966164 1.947373 1.961936 1.986213 0.013738 0.039069 0.033933 0.045905 0.085563 0.088269 0.103986 0.138799 0.123409 0.179635 0.183919 0.207668 0.265177 0.273454 0.291176 0.301317 0.322299 0.360884 0.382231 0.452383 0.473796 0.500142 0.526837 0.565457 0.621086 0.631883 0.679514 0.711739 0.770914 0.827935 0.865734 0.875114 0.912711 0.969438 1.011609 1.073618 1.115037 1.177936 1.212091 1.268898 1.307640 1.369622 1.449142 1.473012 1.517904 1.578947 1.643274 1.739366 1.774074 1.793191 1.890187 1.943942 0.014511 0.065851 0.130565 0.177749 0.211052 0.328886 0.377276 0.425953 0.541324 0.615318 0.678256 0.747859 0.793762 0.860690 0.964076 1.045998 1.106453 1.195855 1.284210 1.333222 1.438121 1.529799 1.610229 1.695222 1.751416 1.833261 1.914482 0.045399 0.123009 0.208942 0.306303 0.416725 0.505769 0.557007 0.652440 0.773672 0.871376 0.948087 1.044106 1.169622 1.261777 1.340833 1.432641 1.547525 1.672760 1.761180 1.869760 1.983715 0.097497 0.200003 0.307820 0.421244 0.522702 0.641612 0.756079 0.822673 0.978351 1.097194 1.186778 1.300094 1.434261 1.557338 1.672359 1.788829 1.903462 0.049292 0.160321 0.302844 0.401477 0.531012 0.653986 0.809452 0.929242 1.054525 1.201008 1.354311 1.448841 1.576825 1.754099 1.893518 0.005454 0.132515 0.269950 0.440055 0.573059 0.694492 0.859942 0.996234 1.130180 1.286257 1.425795 1.566790 1.742708 1.852580 0.036001 0.158458 0.334473 0.484804 0.648230 0.799893 0.935934 1.084555 1.254484 1.438756 1.587639 1.744273 1.883505 0.069124 0.194535 0.391483 0.576693 0.708094 0.874044 1.064695 1.239675 1.397729 1.570118 1.728220 1.911770 0.057998 0.242184 0.441196 0.592889 0.786092 0.973270 1.120555 1.278862 1.483942 1.656081 1.869599 0.060126 0.220416 0.392539 0.617807 0.793925 0.983094 1.154054 1.360372 1.548808 1.762739 1.944219 0.135991 0.340502 0.509425 0.715914 0.925630 1.094319 1.315655 1.530226 1.721996 1.916919 0.119449 0.315838 0.489794 0.718746 0.931744 1.160597 1.369842 1.555573 1.803654 1.974709 0.218450 0.409389 0.622683 0.837304 1.087640 1.269691 1.511365 1.717145 1.915472 0.153622 0.361279 0.581809 0.831577 1.065899 1.294147 1.491611 1.754800 1.963983 0.194331 0.423266 0.641105 0.905746 1.079021 1.349621 1.595065 1.808483 0.051437 0.304998 0.522710 0.791517 0.997150 1.268272 1.484701 1.735145 1.953492 0.224374 0.472039 0.700489 0.962413 1.227196 1.436175 1.732612 1.986157 0.233374 0.511645 0.724856 1.006889 1.261406 1.479317 1.738763 0.015018 0.293652 0.544060 0.783194 1.049940 1.334356 1.597132 1.884915 0.116144 0.407952 0.655098 0.934475 1.203977 1.470158 1.734466 0.021507 0.299847 0.574329 0.854575 1.133294 1.378519 1.691597 1.949419 0.223771 0.531325 0.799232 1.092956 1.356357 1.661985 1.962701 0.227211 0.521885 0.804200 1.100362 1.422682 1.690005 1.980499 0.269029 0.558070 0.860270 1.144847 1.486403 1.742330 0.045615 0.350472 0.683688 1.002092 1.250129 1.573602 1.836737 0.141047 0.509187 0.784330 1.083480 1.413786 1.712836 0.025033 0.335420 0.680826 0.914375 1.293843 1.583251 1.947420 0.229253 0.564323 0.892944 1.191672 1.532158 1.813873 0.173205 0.525221 0.793819 1.160640 1.454620 1.814804 0.121488 0.465413 0.806723 1.108266 1.438579 1.812867 0.096087 0.451078 0.783599 1.151779 1.492017 1.819757 0.159666 0.501859 0.810260 1.188495 1.536837 1.884079 0.208972 0.535366 0.906536 1.251003 1.618849 1.988211 0.303094 0.680020 1.030974 1.364115 1.716547 0.084761 0.452540 0.754497 1.143303 1.524222 1.899677 0.233427 0.612343 0.950729 1.343976 1.712577 0.077702 0.443919 0.785367 1.164705 1.525317 1.920704 0.231559 0.650099 1.029537 1.395581 1.755513 0.152404 0.540871 0.918818 1.284992 1.679205 0.039302 0.431666 0.829377 1.220832 1.592402 1.978317 0.367456 0.769458 1.155807 1.536839 1.941056 0.331519 0.716955 1.067037 1.507890 1.871311 0.274965 0.682417 1.077954 1.485062 1.893290 0.276059 0.676110 1.121911 1.479134 1.854333 0.313859 0.705038 1.133161 1.524553 1.924434 0.353511 0.729333 1.171388 1.582535 -0.011939 0.375159 0.827180 1.211505 1.662939 0.076452 0.518735 0.922405 1.330730 1.763082 0.186444 0.618302 1.054355 1.472689 1.908276 0.342575 0.756872 1.185316 1.641176 0.043738 0.488972 0.911107 1.347850 1.757336 0.227821 0.644258 1.134032 1.539309 1.961120 0.426614 0.850622 1.299194 1.768191 0.196910 0.617335 1.085005 1.504833 1.978811 0.443881 0.893122 1.336094 1.802839 0.227109 0.677062 1.136925 1.608413 0.055940 0.537200 0.998663 1.452160 1.930206 0.356537 0.837268 1.284826 1.776189 0.237393 0.685896 1.159977 1.617364 0.090132 0.567382 1.065855 1.511033 1.994963 0.421026 0.953073 1.400408 1.897164 0.364092 0.841380 1.315490 1.769241 0.257158 0.768313 1.251460 1.767382 0.243683 0.704113 1.174416 1.664632 0.168029 0.651899 1.149612 1.630230 0.131384 0.619814 1.114540 1.622458 0.122874 0.626299 1.094590 1.598573 0.083510 0.614256 1.087849 1.584856 0.106403 0.626100 1.128450 1.611809 0.146752 0.630125 1.150369 1.677910 0.163147 0.671741 1.207025 1.704864 0.230414 0.782042 1.257249 1.805772 0.310334 0.820407 1.344190 1.874163 0.375651 0.898803 1.400155 1.954054 0.481477 0.984936 1.546456 0.051904 0.600097 1.127591 1.631048 0.209400 0.734849 1.261283 1.777143 0.349027 0.853014 1.422646 1.943953 0.478144 1.027085 1.568085 0.105833 0.655019 1.234134 1.764008 0.298884 0.833532 1.388596 1.984683 0.508554 1.042108 1.611467 0.094904 0.688659 1.277276 1.819804 0.394553 0.936998 1.505170 0.025738 0.626884 1.176794 1.748665 0.311064 0.877970 1.447900 0.003331 0.542725 1.134801 1.687317 0.271830 0.850699 1.408344 -0.003648 0.562225 1.105301 1.705305 0.299504 0.873882 1.470736 0.009023 0.597564 1.191235 1.773459 0.356008 0.935585 1.539926 0.063318 0.715216 1.257275 1.874460 0.461080 1.054581 1.635914 0.181373 0.821301 1.418311 0.008058 0.636610 1.222004 1.809867 0.412347 1.010095 1.609602 0.213264 0.806597 1.416339 0.041598 0.593382 1.228350 1.843186 0.427865 1.066375 1.675399 0.293871 0.888172 1.528525 0.114609 0.721244 1.345110 1.969812 0.585961 1.218291 1.804763 0.438733 1.062254 1.692721 0.326055 0.942128 1.584778 0.174877 0.811485 1.432641 0.078034 0.678527 1.326068 1.968833 0.597746 1.243399 1.855829 0.534007 1.153750 1.758411 0.424048 1.025660 1.692489 0.328085 0.979173 1.614488 0.258282 0.903585 1.538025 0.220781 0.834767 1.465463 0.149212 0.792549 1.478728 0.115609 0.739825 1.402040 0.055039 0.728920 1.332996 0.023625 0.704446 1.351918 -0.001142 0.690175 1.341718 1.973909 0.673744 1.337746 0.009131 0.689654 1.351301 0.000356 0.673411 1.354537 0.030079 0.683844 1.342349 0.036649 0.734133 1.391040 0.056325 0.738255 1.427216 0.131094 0.772026 1.449852 0.121300 0.834024 1.515842 0.185369 0.904247 1.597807 0.257034 0.982249 1.648827 0.323134 1.003118 1.679959 0.428396 1.112456 1.835229 0.514437 1.209163 1.913549 0.622556 1.314966 -0.015395 0.689295 1.421196 0.128085 0.832279 1.514039 0.248659 0.955740 1.650447 0.361867 1.102952 1.785726 0.516932 1.248975 1.899920 0.630541 1.364804 0.069454 0.823726 1.498788 0.249298 0.953313 1.681883 0.427401 1.164113 1.849382 0.574386 1.275928 0.013412 0.789116 1.528548 0.199282 0.940444 1.713067 0.443217 1.197593 1.851806 0.633910 1.329213 0.095547 0.845591 1.552104 0.326149 1.030520 1.816486 0.560702 1.315356 0.036745 0.808846 1.545206 0.282656 1.024478 1.777105 0.541883 1.256450 0.027230 0.807039 1.510542 0.278374 1.094357 1.844642 0.565970 1.373861 0.096040 0.851468 1.631039 0.397939 1.158425 1.903462 0.687135 1.394673 0.195555 0.993586 1.769418 0.544258 1.313431 0.071841 0.835294 1.644885 0.395546 1.161456 1.990446 0.708938 1.499503 0.271243 1.054079 1.878805 0.659129 1.407458 0.212837 1.040241 1.756264 0.570322 1.379894 0.142870 0.911582 1.729085 0.514916 1.294185 0.099570 0.888691 1.679182 0.487504 1.301557 0.078621 0.870363 1.684169 0.520974 1.318615 0.056138 0.913965 1.723763 0.540905 1.314156 0.093355 0.933654 1.779947 0.539765 1.363072 0.167923 0.995418 1.803496 0.650591 1.430245 0.265711 1.102379 1.899134 0.745585 1.560261 0.355892 1.154667 0.030105 0.809123 1.633462 0.492336 1.321502 0.138888 0.978988 1.805425 0.652222 1.471313 0.311540 1.138819 1.979735 0.806576 1.651080 0.501708 1.337146 0.171730 0.993840 1.855565 0.707758 1.541932 0.373136 1.221639 0.029492 0.913412 1.721887 0.631550 1.482332 0.304253 1.154006 0.031330 0.860015 1.714918 0.590694 1.457171 0.290495 1.157203 0.017988 0.885443 1.738898 0.585906 1.436315 0.288443 1.172322 0.058447 0.877937 1.793604 0.645338 1.523803 0.378122 1.279210 0.143233 1.014958 1.909578 0.782125 1.683944 0.544721 1.423254 0.259936 1.163284 0.058975 0.937388 1.769720 0.695388 1.600181 0.452934 1.335942 0.244447 1.143889 0.017558 0.909436 1.758149 0.689566 1.579332 0.450667 1.372292 0.251425 1.164274 0.059548 0.985154 1.872348 0.778470 1.657978 0.585003 1.500443 0.369633 1.264702 0.204913 1.103903 -0.006997 0.891398 1.797890 0.753883 1.639428 0.555888 1.449705 0.366943 1.275458 0.191315 1.090054 0.048919 0.997346 1.870278 0.808909 1.743398 0.635918 1.570176 0.520661 1.423004 0.364086 1.310244 0.238214 1.184336 0.065001 1.003926 1.963983 0.924394 1.857407 0.744443 1.726713 0.618632 1.570741 0.511697 1.420378 0.371329 1.306641 0.265352 1.211438 0.111350 1.050632 0.042200 0.933403 1.912850 0.863485 1.792856 0.760255 1.745424 0.663318 1.618361 0.592471 1.542787 0.502537 1.483297 0.452593 1.401569 0.352803 1.335461 0.299454 1.239232 0.195022 1.183291 0.153298 1.113235 0.074032 1.068069 0.018046 0.981381 1.940654 0.923797 1.895824 0.841413 1.876575 0.857102 1.803101 0.783251 1.748938 0.693361 1.720728 0.712641 1.647363 0.641848 1.636060 0.619009 1.602990 0.595414 1.595524 0.589995 1.540299 0.522249 1.527233 0.491378 1.513030 0.480173 1.481967 0.502063 1.498098 0.474857 1.496300 0.483889 1.521546 0.479098 1.482683 0.480855 1.537279 0.515153 1.508524 0.558683 1.565975 0.605874 1.596984 0.594628 1.626648 0.583923 1.632378 0.605864 1.640720 0.690229 1.673651 0.698487 1.718793 0.756128 1.761542 0.815306 1.814831 0.848832 1.877616 0.949032 1.956851 1.001150 -0.761620 0.998126 0.051465 1.104025 0.095056 1.190916 0.192268 1.281736 0.289295 1.339903 0.400683 1.483565)
+ 48.345300 #(0.000000 1.168460 0.305776 1.383055 0.542182 1.670924 0.822054 1.928398 1.078644 0.216184 1.353719 0.499302 1.623916 0.737648 1.923111 1.071834 0.165758 1.324191 0.483303 1.608420 0.769833 1.918511 1.074498 0.213012 1.345467 0.518772 1.661136 0.811217 1.969906 1.134174 0.308599 1.468616 0.612829 1.763352 0.908784 0.088012 1.272292 0.384591 1.560211 0.757207 1.913215 1.114429 0.281382 1.426831 0.570700 1.744439 0.949063 0.081443 1.276021 0.433269 1.619633 0.805566 1.935648 1.158758 0.316177 1.529408 0.702013 1.881584 1.084009 0.237299 1.426590 0.598249 1.781835 0.948977 0.175347 1.362269 0.552525 1.728600 0.957094 0.146301 1.295670 0.508450 1.724963 0.940546 0.141914 1.310121 0.528603 1.713490 0.955566 0.121196 1.321555 0.520122 1.748703 0.943316 0.140069 1.365681 0.556257 1.786575 0.994245 0.184752 1.433659 0.639266 1.855095 1.055403 0.298346 1.470067 0.720218 1.898854 1.158283 0.368882 1.582143 0.822871 0.020760 1.262516 0.492663 1.702266 0.937159 0.158372 1.434865 0.626722 1.862922 1.097788 0.309072 1.544774 0.801061 0.013966 1.277093 0.496772 1.758698 0.967330 0.236690 1.461426 0.702897 1.987636 1.180238 0.441629 1.697673 0.947011 0.195615 1.450737 0.666237 1.937820 1.189218 0.453911 1.712023 0.942243 0.204578 1.446265 0.731339 1.968132 1.212011 0.511139 1.766517 1.011279 0.293911 1.535424 0.831172 0.077162 1.366855 0.610293 1.905025 1.148209 0.409776 1.652492 0.942513 0.266061 1.502029 0.791274 0.047709 1.346152 0.649995 1.880181 1.182512 0.443561 1.721516 1.022181 0.328824 1.584742 0.902571 0.183888 1.468029 0.751471 0.048178 1.349852 0.633137 1.911845 1.187002 0.498334 1.753923 1.027972 0.381702 1.677558 0.993616 0.273581 1.595001 0.887091 0.199458 1.490644 0.825515 0.077956 1.411128 0.696228 0.039225 1.298376 0.641525 1.926615 1.245519 0.584586 1.887774 1.226103 0.508797 1.826958 1.177838 0.473368 1.763495 1.104552 0.439431 1.732341 1.085377 0.375244 1.717605 1.062273 0.368903 1.685294 1.063081 0.399608 1.680878 0.998266 0.340929 1.666775 1.034452 0.361099 1.697102 1.040788 0.380454 1.695554 1.039242 0.372757 1.746317 1.083249 0.422222 1.755909 1.056775 0.427967 1.780055 1.144081 0.503923 1.856046 1.183283 0.557021 1.883345 1.223932 0.587701 -0.022905 1.294668 0.649571 0.037599 1.393921 0.764745 0.115320 1.471289 0.840732 0.197346 1.561338 0.952047 0.310775 1.669866 1.055581 0.418602 1.768184 1.150701 0.536763 1.901926 1.269972 0.646893 0.014547 1.411684 0.793031 0.160872 1.548982 0.926507 0.310955 1.700172 1.056246 0.461492 1.846841 1.220040 0.604015 1.983916 1.372780 0.807263 0.180065 1.584955 0.945688 0.349802 1.761302 1.157577 0.561482 1.963517 1.337006 0.727664 0.122034 1.527101 0.948643 0.327031 1.751253 1.117363 0.563625 1.962844 1.360262 0.793014 0.182118 1.598961 1.014216 0.439417 1.851898 1.250964 0.654031 0.086062 1.513196 0.935294 0.323630 1.747405 1.136544 0.577739 0.033438 1.440085 0.853760 0.285212 1.737081 1.143040 0.578574 -0.002277 1.432018 0.870942 0.311254 1.729328 1.180338 0.606727 0.032467 1.476735 0.951582 0.350610 1.804140 1.230643 0.685068 0.115210 1.565737 0.994502 0.442651 1.904907 1.329686 0.777341 0.252920 1.695052 1.146813 0.610773 0.027518 1.500000 0.955849 0.374169 1.837743 1.326525 0.801946 0.269768 1.692586 1.132961 0.617415 0.085796 1.567600 0.993385 0.469429 1.937379 1.399894 0.857347 0.352729 1.804999 1.297732 0.743991 0.249936 1.748371 1.211341 0.675436 0.141625 1.599473 1.084759 0.582016 0.078778 1.542445 1.008733 0.523921 0.003764 1.436348 0.941683 0.435402 1.981329 1.423257 0.933349 0.428913 1.914955 1.416575 0.877800 0.378197 1.878422 1.384550 0.867584 0.364608 1.892190 1.382698 0.878475 0.363488 1.838516 1.380734 0.881805 0.377086 1.888200 1.385740 0.938804 0.445984 1.961269 1.471621 0.950886 0.499787 -0.011498 1.527691 1.025282 0.533006 0.051816 1.600639 1.093670 0.603379 0.140212 1.652403 1.204859 0.720470 0.233578 1.743946 1.293190 0.835711 0.343976 1.885106 1.405995 0.935390 0.473678 0.023920 1.556652 1.102495 0.609192 0.149042 1.660077 1.225901 0.764894 0.339222 1.849531 1.405225 0.924831 0.479485 0.036466 1.586198 1.148674 0.660324 0.220454 1.779996 1.309394 0.882359 0.423292 1.973814 1.559756 1.081735 0.643069 0.217493 1.787966 1.350665 0.896734 0.451819 0.030053 1.571791 1.121905 0.711784 0.289613 1.856436 1.426072 0.989804 0.540452 0.122449 1.672046 1.258715 0.852750 0.416905 1.985328 1.525783 1.136213 0.743712 0.333094 1.870806 1.468606 1.051034 0.665311 0.214301 1.803402 1.393694 0.983968 0.570617 0.153095 1.754162 1.319915 0.899131 0.522692 0.115580 1.716374 1.297978 0.930767 0.516445 0.099367 1.706055 1.298179 0.892946 0.504210 0.113972 1.716449 1.304110 0.916728 0.506358 0.141917 1.766723 1.339444 0.946271 0.550089 0.202369 1.801392 1.390988 1.022696 0.633819 0.240778 1.862400 1.488869 1.110878 0.737299 0.367294 1.969121 1.601209 1.224778 0.879620 0.492220 0.111078 1.733844 1.333671 0.987313 0.615351 0.253965 1.878221 1.502906 1.148295 0.775174 0.411712 0.061601 1.702118 1.382063 0.994999 0.612943 0.271143 1.895295 1.559788 1.201959 0.868588 0.518040 0.128692 1.823830 1.431129 1.081274 0.724396 0.398053 0.048364 1.709134 1.384260 0.999430 0.645185 0.330415 1.978011 1.632287 1.299615 0.933448 0.627710 0.308568 1.966398 1.633956 1.299488 0.966440 0.627071 0.302064 1.964693 1.651555 1.348041 1.027579 0.675976 0.317792 0.023963 1.683457 1.359742 1.016401 0.734999 0.411286 0.060875 1.763671 1.432617 1.115352 0.831591 0.502929 0.190340 1.881488 1.566193 1.259092 0.971578 0.631052 0.336584 0.028708 1.739656 1.421075 1.108912 0.791486 0.522569 0.209477 1.927515 1.602244 1.322786 1.018538 0.724475 0.443254 0.132524 1.800577 1.532171 1.260961 0.955076 0.673258 0.387898 0.078128 1.805646 1.525179 1.254294 0.979587 0.647778 0.343709 0.093736 1.841855 1.558690 1.297223 0.991517 0.699852 0.451836 0.145351 1.875498 1.602043 1.363645 1.077462 0.816561 0.554231 0.271202 -0.001185 1.735673 1.479281 1.196824 0.953459 0.681796 0.410551 0.187103 1.890593 1.609937 1.390091 1.147998 0.880701 0.601270 0.340318 0.083304 1.860278 1.634270 1.318425 1.118469 0.884171 0.606840 0.352329 0.092363 1.857578 1.620377 1.411787 1.132902 0.908015 0.678183 0.458819 0.180006 1.940349 1.710263 1.461648 1.223419 1.015345 0.784206 0.545414 0.284842 0.059045 1.880840 1.612026 1.396175 1.173741 0.953951 0.735817 0.504183 0.264884 0.067928 1.829760 1.569658 1.368645 1.164752 0.959531 0.744832 0.531420 0.323162 0.107260 1.869371 1.691858 1.476156 1.246477 1.050443 0.832875 0.632885 0.463456 0.228630 0.006001 1.807789 1.616538 1.446076 1.193586 0.989110 0.822620 0.604144 0.450138 0.228684 0.012451 1.833069 1.658701 1.448887 1.265562 1.074257 0.889350 0.719480 0.499231 0.332584 0.160828 1.953167 1.802767 1.580292 1.408156 1.250974 1.023925 0.873773 0.700677 0.504012 0.331271 0.154380 -0.006894 1.822798 1.636087 1.476986 1.313749 1.143142 0.981990 0.822438 0.605105 0.479974 0.319775 0.155226 1.981145 1.813868 1.660435 1.498682 1.338819 1.168051 1.027993 0.879328 0.713785 0.588816 0.415506 0.270060 0.117599 1.956644 1.788797 1.668490 1.487967 1.340721 1.210412 1.075288 0.920216 0.775490 0.639085 0.491819 0.371630 0.250081 0.067134 1.912032 1.787716 1.673701 1.528234 1.392300 1.296916 1.118036 0.998936 0.891334 0.742363 0.628432 0.504144 0.389776 0.211331 0.093391 0.003704 1.844715 1.732768 1.629446 1.491005 1.373872 1.296562 1.174532 1.026420 0.948137 0.828504 0.704140 0.607536 0.484482 0.378485 0.259769 0.151484 0.033694 1.931286 1.814759 1.712836 1.618661 1.503556 1.383572 1.312931 1.194082 1.115815 0.998968 0.888437 0.820461 0.734412 0.602011 0.523367 0.426017 0.327139 0.274310 0.171419 0.068732 1.973398 1.894969 1.819570 1.735929 1.667144 1.579554 1.475923 1.405713 1.326947 1.281290 1.162880 1.051245 1.012536 0.941033 0.870225 0.786008 0.719400 0.632373 0.567404 0.493119 0.412129 0.361770 0.296497 0.225855 0.142703 0.107293 0.059827 1.968729 1.913703 1.842504 1.800615 1.757116 1.650230 1.600103 1.565101 1.478800 1.426097 1.409400 1.324724 1.276956 1.240145 1.182326 1.121646 1.070753 1.047128 1.010834 0.947871 0.924827 0.865178 0.825782 0.804756 0.760343 0.707063 0.668475 0.612567 0.598975 0.537712 0.518858 0.470112 0.435582 0.418958 0.392318 0.344113 0.295542 0.308559 0.249289 0.215526 0.230190 0.206081 0.174971 0.118409 0.128297 0.134902 0.066486 0.080398 0.042577 -0.002837 0.009925 0.042129 1.970262 1.936234 1.942082 1.939969 1.956716 1.952309 1.934021 1.907360 1.905296 1.919892 1.923862 1.885902 1.888385 1.882605 1.892342 1.868786 1.875111 1.897609 1.928540 1.922469 1.935903 1.888975 1.896080 1.918134 1.918749 1.935482 1.967810 1.951821 1.961368 1.989466 0.015329 0.038880 0.032597 0.044949 0.082527 0.089508 0.104928 0.138798 0.122259 0.179831 0.185374 0.205582 0.265785 0.271152 0.290632 0.302073 0.323834 0.359746 0.381789 0.454417 0.473430 0.502638 0.525522 0.562593 0.621809 0.629746 0.679042 0.710808 0.770839 0.829004 0.865197 0.879087 0.913403 0.970694 1.013688 1.069470 1.114939 1.179373 1.209952 1.268550 1.308617 1.369999 1.446917 1.471276 1.515939 1.581173 1.644988 1.740218 1.774482 1.794531 1.889306 1.939575 0.019941 0.068223 0.134507 0.177924 0.209923 0.326620 0.379065 0.423365 0.539017 0.613988 0.680194 0.750647 0.792265 0.863019 0.963338 1.045772 1.108959 1.193363 1.284248 1.335021 1.438289 1.530641 1.614312 1.695541 1.752455 1.830868 1.915615 0.046517 0.124459 0.204974 0.306977 0.414739 0.505346 0.554750 0.652117 0.776968 0.869691 0.947905 1.046935 1.170566 1.261349 1.345623 1.431609 1.546311 1.673289 1.759767 1.869729 1.985303 0.096177 0.198300 0.305853 0.421566 0.523297 0.642325 0.755568 0.822755 0.981204 1.101038 1.191356 1.300852 1.434920 1.559288 1.670944 1.788883 1.901718 0.051235 0.156966 0.303610 0.402859 0.530592 0.652541 0.805859 0.931971 1.053703 1.201589 1.352391 1.451948 1.576866 1.756619 1.895758 0.003883 0.132311 0.272467 0.441168 0.574632 0.698499 0.862572 0.996469 1.127517 1.285212 1.430390 1.567020 1.743093 1.852460 0.034059 0.161134 0.331601 0.484393 0.651763 0.800302 0.934708 1.084933 1.253813 1.437937 1.586827 1.741749 1.888774 0.068104 0.191093 0.390788 0.576302 0.707479 0.872797 1.064194 1.235867 1.394949 1.571071 1.726589 1.909505 0.058685 0.238509 0.438960 0.591827 0.786658 0.973635 1.125000 1.276947 1.480658 1.655681 1.873151 0.061929 0.222075 0.392539 0.618224 0.789336 0.985118 1.156597 1.360670 1.550641 1.762595 1.944734 0.136274 0.341395 0.505689 0.715838 0.928846 1.089297 1.314500 1.529494 1.721922 1.914288 0.115668 0.317387 0.486965 0.718907 0.931453 1.163986 1.374079 1.554881 1.803654 1.975281 0.220411 0.410164 0.622818 0.838405 1.085934 1.270506 1.512720 1.719054 1.916818 0.151036 0.362948 0.580325 0.832036 1.071295 1.293933 1.492977 1.751468 1.965130 0.196322 0.424830 0.639643 0.905716 1.077921 1.348456 1.592183 1.806849 0.048038 0.307029 0.522897 0.789424 0.995877 1.272870 1.483210 1.733506 1.955857 0.221214 0.472300 0.704164 0.963879 1.227398 1.435122 1.731016 1.985335 0.234564 0.513579 0.722469 1.007343 1.264501 1.477934 1.737636 0.011208 0.290205 0.543071 0.782755 1.049609 1.335382 1.599130 1.887424 0.116554 0.409403 0.656469 0.934358 1.203796 1.468059 1.734066 0.014976 0.296175 0.577997 0.856483 1.133376 1.373827 1.689989 1.948494 0.224652 0.529297 0.797197 1.093027 1.356458 1.661321 1.960141 0.227089 0.519840 0.808030 1.099132 1.423698 1.692566 1.981389 0.268986 0.559953 0.863410 1.146035 1.480830 1.744977 0.051460 0.350221 0.685433 1.002846 1.251483 1.572320 1.837065 0.141445 0.507180 0.785301 1.088904 1.414335 1.710496 0.027136 0.332124 0.680211 0.913156 1.292315 1.580318 1.948345 0.230882 0.565626 0.890734 1.186887 1.530866 1.813425 0.170704 0.523799 0.791462 1.158600 1.455396 1.813875 0.123591 0.465357 0.807662 1.108037 1.439005 1.811526 0.093929 0.452441 0.786865 1.153997 1.495199 1.820609 0.157391 0.504096 0.809646 1.188774 1.534099 1.880356 0.211156 0.535459 0.909887 1.251393 1.619872 1.989463 0.307440 0.682100 1.030019 1.363512 1.717391 0.087455 0.452191 0.757041 1.145022 1.526593 1.902902 0.234320 0.615609 0.952454 1.349728 1.715202 0.074091 0.446889 0.782728 1.165355 1.523409 1.919638 0.233924 0.647814 1.032777 1.400629 1.757600 0.151883 0.545224 0.916685 1.284420 1.674366 0.036094 0.430615 0.829328 1.220561 1.596967 1.981018 0.365782 0.772758 1.153193 1.533142 1.944499 0.330658 0.718863 1.063674 1.511330 1.870975 0.279068 0.684446 1.074960 1.484687 1.896749 0.278371 0.676561 1.127024 1.477991 1.851333 0.314574 0.703862 1.133830 1.525996 1.925160 0.352791 0.725393 1.167159 1.578559 -0.008977 0.376020 0.825081 1.214282 1.663223 0.080729 0.516036 0.920852 1.331285 1.761674 0.185299 0.619936 1.055823 1.474867 1.905726 0.343951 0.755732 1.191189 1.634891 0.042167 0.487713 0.911081 1.345683 1.754209 0.228770 0.640767 1.134545 1.540286 1.960266 0.425506 0.850573 1.303922 1.769589 0.193631 0.620046 1.083483 1.504866 1.978098 0.443222 0.895572 1.338609 1.802222 0.228190 0.675684 1.141246 1.606999 0.055886 0.541158 1.000208 1.450332 1.929289 0.354227 0.836785 1.286409 1.777268 0.238244 0.687351 1.160164 1.622855 0.087800 0.566737 1.066445 1.508820 1.993037 0.422453 0.954259 1.400504 1.897996 0.362609 0.842850 1.315484 1.769436 0.258679 0.772744 1.251632 1.766937 0.243964 0.708569 1.173907 1.667841 0.168261 0.650451 1.146356 1.633479 0.130118 0.621393 1.113133 1.622089 0.123909 0.626202 1.090743 1.601186 0.079505 0.614996 1.087458 1.583970 0.104617 0.624188 1.126684 1.613682 0.143541 0.629257 1.148268 1.680002 0.161939 0.672367 1.206672 1.707434 0.228456 0.779772 1.260466 1.804298 0.307630 0.818210 1.345177 1.869144 0.375313 0.896342 1.398903 1.957402 0.479944 0.985901 1.550744 0.051672 0.602805 1.129538 1.629512 0.207279 0.737197 1.263005 1.775660 0.350179 0.854941 1.422582 1.946969 0.475704 1.027896 1.565328 0.108045 0.658083 1.236913 1.762343 0.295759 0.836056 1.383728 1.984363 0.505782 1.041626 1.610724 0.096583 0.687619 1.278608 1.818031 0.396321 0.937483 1.502483 0.023574 0.626818 1.175314 1.746706 0.312275 0.871781 1.447181 0.004357 0.545415 1.138725 1.687476 0.268329 0.852072 1.403249 0.000394 0.559400 1.103638 1.704983 0.301842 0.871070 1.467966 0.010185 0.595401 1.189720 1.773194 0.357208 0.935636 1.538840 0.062988 0.712932 1.258493 1.871995 0.462086 1.053625 1.638360 0.180259 0.820265 1.419446 0.010667 0.634661 1.223444 1.810903 0.415962 1.007612 1.612545 0.214636 0.809237 1.416881 0.040373 0.591910 1.229149 1.841388 0.428730 1.066017 1.680036 0.290549 0.887412 1.525243 0.117548 0.720839 1.341930 1.965807 0.585977 1.218815 1.804988 0.441959 1.059987 1.691914 0.324673 0.943996 1.583486 0.177818 0.812557 1.435387 0.078894 0.676510 1.326826 1.969653 0.597740 1.243296 1.854775 0.532769 1.154121 1.758792 0.425166 1.026141 1.692687 0.330766 0.977658 1.613932 0.255364 0.904039 1.535716 0.220858 0.837178 1.467869 0.147883 0.794350 1.478811 0.115026 0.740659 1.399023 0.056882 0.726578 1.335192 0.022286 0.703320 1.355094 -0.003028 0.693094 1.340800 1.976308 0.674264 1.334948 0.009604 0.685495 1.350536 -0.000046 0.675114 1.354742 0.029307 0.681787 1.341815 0.037605 0.736514 1.393136 0.057831 0.739584 1.427493 0.135139 0.774809 1.449916 0.121175 0.832919 1.518703 0.189850 0.905839 1.595979 0.258951 0.982233 1.647273 0.326718 1.004291 1.677590 0.427708 1.111187 1.840530 0.515668 1.210677 1.913602 0.621577 1.318591 -0.018262 0.687601 1.415912 0.126408 0.831694 1.515701 0.251074 0.959732 1.650738 0.365981 1.100822 1.785861 0.516752 1.246879 1.905236 0.631292 1.362647 0.072251 0.822040 1.501474 0.251395 0.955738 1.685165 0.426939 1.161333 1.852970 0.574609 1.277935 0.016120 0.790157 1.527478 0.200546 0.941346 1.716085 0.445475 1.194358 1.856426 0.633625 1.327912 0.094643 0.845487 1.549179 0.322102 1.025582 1.813736 0.563645 1.320860 0.035797 0.810444 1.540318 0.282028 1.025603 1.778513 0.542203 1.255268 0.028928 0.806374 1.509494 0.278330 1.094323 1.847751 0.566516 1.376191 0.094253 0.853344 1.634901 0.397461 1.158637 1.900741 0.688927 1.391243 0.193305 0.996345 1.766182 0.543068 1.314169 0.069302 0.834617 1.646749 0.394319 1.160292 1.988515 0.709568 1.497615 0.269972 1.056253 1.878457 0.657206 1.404905 0.214809 1.042162 1.756877 0.571344 1.379571 0.141968 0.910254 1.726691 0.512750 1.292854 0.102754 0.888358 1.679582 0.488232 1.304591 0.078172 0.871144 1.684612 0.524330 1.317117 0.054362 0.915834 1.725768 0.542414 1.314056 0.096813 0.932859 1.782144 0.539057 1.362065 0.167835 0.993453 1.803741 0.652350 1.431174 0.266639 1.101484 1.902439 0.747560 1.559086 0.358623 1.154866 0.027845 0.807054 1.631076 0.492351 1.322008 0.138935 0.979008 1.804812 0.652835 1.466881 0.312021 1.137335 1.980898 0.809390 1.650155 0.498417 1.337234 0.170964 0.995359 1.856000 0.706631 1.542838 0.371547 1.218348 0.029000 0.911023 1.722363 0.627561 1.480622 0.303339 1.155716 0.031594 0.863604 1.715505 0.588233 1.458298 0.289910 1.155961 0.019748 0.884482 1.738429 0.583218 1.434421 0.285615 1.169633 0.055623 0.879741 1.793533 0.640880 1.525212 0.378162 1.278789 0.141135 1.014875 1.911520 0.783867 1.683096 0.548107 1.422707 0.261062 1.165863 0.061620 0.936490 1.769477 0.697656 1.598413 0.456354 1.337182 0.242630 1.145564 0.018545 0.910885 1.760690 0.691163 1.578744 0.452558 1.372244 0.252070 1.161949 0.057254 0.990272 1.872400 0.775940 1.658263 0.585039 1.501014 0.372325 1.265217 0.209919 1.102034 -0.007486 0.891765 1.798637 0.751357 1.639809 0.555914 1.446616 0.365347 1.274225 0.192070 1.089338 0.053005 0.996135 1.870670 0.809159 1.739845 0.635079 1.569804 0.522661 1.422840 0.362572 1.310958 0.238257 1.184778 0.067352 1.003716 1.962424 0.922379 1.859133 0.746754 1.728907 0.617142 1.571840 0.509091 1.422412 0.372982 1.304938 0.269076 1.205436 0.111169 1.049439 0.039662 0.931865 1.915271 0.863987 1.795718 0.761531 1.748065 0.664542 1.618277 0.589114 1.538785 0.500808 1.482652 0.451304 1.399623 0.358285 1.335169 0.300655 1.238849 0.196595 1.186341 0.152455 1.115684 0.077688 1.070384 0.016123 0.983610 1.941110 0.923114 1.894777 0.841633 1.875620 0.854126 1.801500 0.778985 1.755062 0.693300 1.721119 0.713906 1.642587 0.648581 1.638863 0.617317 1.609655 0.595635 1.594341 0.586351 1.538188 0.521032 1.524623 0.491307 1.510974 0.482060 1.482134 0.499360 1.497404 0.475407 1.494344 0.482511 1.522659 0.478434 1.482203 0.483741 1.536719 0.514767 1.505667 0.556628 1.569664 0.602771 1.596096 0.594796 1.626765 0.587366 1.635254 0.606482 1.641630 0.686969 1.675479 0.696586 1.718434 0.757572 1.759796 0.815962 1.816894 0.849219 1.877628 0.949926 1.954360 1.004257 -0.756526 0.992042 0.048718 1.104534 0.097961 1.191099 0.193056 1.285154 0.292105 1.340781 0.404377 1.486212)
)
))
@@ -4895,16 +4895,16 @@
<1> (load "test-phases.scm")
test-all-phases
<2> (test-all-phases #f)
-;all peaks... Mon 27-Nov-2017 04:04
-(0.00149573739942177 101)
-;odd peaks... Mon 27-Nov-2017 04:06
-;odd 2048: peak-phases value: 48.594051, current: 48.5913389371348, diff: -0.002712062865199982
-(0.002712062865199982 2048)
-;even peaks... Mon 27-Nov-2017 04:07
+;all peaks... Mon 08-Jan-2018 04:47
+;all 2048: peak-phases value: 49.189455, current: 49.18738892355548, diff: -0.002066076444521059
+(0.002066076444521059 2048)
+;odd peaks... Mon 08-Jan-2018 04:49
+(0.001687315629254726 125)
+;even peaks... Mon 08-Jan-2018 04:50
(0.001467169674692848 4)
-;prime peaks... Mon 27-Nov-2017 04:08
+;prime peaks... Mon 08-Jan-2018 04:51
(0.001975582609148319 2048)
-;all done! Mon 27-Nov-2017 04:11
+;all done! Mon 08-Jan-2018 04:55
|#
;;; gad161: clean-up-evens
diff --git a/repl.scm b/repl.scm
index 21a1a95..04b5124 100644
--- a/repl.scm
+++ b/repl.scm
@@ -28,8 +28,8 @@
(call-with-exit
(lambda (return)
(for-each
- (lambda (symbol)
- (let* ((sym (symbol->string symbol))
+ (lambda (par)
+ (let* ((sym (symbol->string par))
(sym-len (length sym)))
(when (and (>= sym-len text-len)
(string=? text (substring sym 0 text-len)))
diff --git a/s7.c b/s7.c
index 3fab933..1593650 100644
--- a/s7.c
+++ b/s7.c
@@ -284,9 +284,10 @@
/* debugging aid if using s7 in a multithreaded program -- this code courtesy of Kjetil Matheussen */
#endif
-#ifndef DEBUGGING
- #define DEBUGGING 0
+#ifndef S7_DEBUGGING
+ #define S7_DEBUGGING 0
#endif
+
#ifndef OP_NAMES
#define OP_NAMES 0
#endif
@@ -379,6 +380,7 @@ static int32_t float_format_precision = WRITE_REAL_PRECISION;
#endif
#define DISPLAY(Obj) s7_object_to_c_string(sc, Obj)
+#define OPT_DISPLAY(Obj) s7_object_to_c_string(cur_sc, Obj)
#define DISPLAY_80(Obj) object_to_truncated_string(sc, Obj, 80)
typedef intptr_t opcode_t;
@@ -455,9 +457,8 @@ typedef intptr_t opcode_t;
/* T_STACK, T_SLOT, T_BAFFLE, T_DYNAMIC_WIND, T_OPTLIST, and T_COUNTER are internal */
-typedef enum {TOKEN_EOF, TOKEN_LEFT_PAREN, TOKEN_RIGHT_PAREN, TOKEN_DOT, TOKEN_ATOM, TOKEN_QUOTE, TOKEN_DOUBLE_QUOTE,
- TOKEN_BACK_QUOTE, TOKEN_COMMA, TOKEN_AT_MARK, TOKEN_SHARP_CONST,
- TOKEN_VECTOR, TOKEN_BYTE_VECTOR, TOKEN_INT_VECTOR, TOKEN_FLOAT_VECTOR} token_t;
+typedef enum {TOKEN_EOF, TOKEN_LEFT_PAREN, TOKEN_RIGHT_PAREN, TOKEN_DOT, TOKEN_ATOM, TOKEN_QUOTE, TOKEN_DOUBLE_QUOTE, TOKEN_BACK_QUOTE,
+ TOKEN_COMMA, TOKEN_AT_MARK, TOKEN_SHARP_CONST, TOKEN_VECTOR, TOKEN_BYTE_VECTOR, TOKEN_INT_VECTOR, TOKEN_FLOAT_VECTOR} token_t;
typedef enum {FILE_PORT, STRING_PORT, FUNCTION_PORT} port_type_t;
@@ -623,7 +624,7 @@ typedef union {
typedef struct {
vunion v1, v2, v3, v4, v5, v6, v7, v8;
-#if DEBUGGING
+#if S7_DEBUGGING
s7_pointer expr;
#endif
} opt_info;
@@ -769,7 +770,7 @@ typedef struct s7_cell {
s7_pointer unused_car, unused_cdr;
uint64_t hash;
const char *fstr;
- uint32_t op, line; /* op=optimize_op, line=pair_line or saved symbol_ctr */
+ uint32_t op, line; /* op=optimize_op, line=pair_line */
} sym_cons;
struct { /* scheme functions */
@@ -890,7 +891,7 @@ typedef struct s7_cell {
#if WITH_PROFILE
int32_t file_and_line;
#endif
-#if DEBUGGING
+#if S7_DEBUGGING
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;
@@ -946,7 +947,7 @@ struct s7_scheme {
uint32_t op_stack_size, max_stack_size;
s7_cell **heap, **free_heap, **free_heap_top, **free_heap_trigger, **previous_free_heap_top;
- int64_t heap_size, gc_freed;
+ int64_t heap_size, gc_freed, max_heap_size;
#if WITH_HISTORY
s7_pointer eval_history1, eval_history2, error_history;
@@ -964,7 +965,7 @@ struct s7_scheme {
uint32_t *gpofl;
uint32_t protected_objects_size, protected_setters_size, protected_setters_loc;
int32_t gpofl_loc;
-#if DEBUGGING
+#if S7_DEBUGGING
int *protected_lines;
#endif
@@ -1032,7 +1033,7 @@ struct s7_scheme {
uint32_t read_line_buf_size;
s7_pointer v, w, x, y, z; /* evaluator local vars */
- s7_pointer temp1, temp2, temp3, temp4, temp5, temp6, temp7, temp8, temp9, temp10, temp11;
+ s7_pointer temp1, temp2, temp3, temp4, temp6, temp7, temp8, temp9, temp10, temp11;
s7_pointer temp_cell, temp_cell_1, temp_cell_2;
s7_pointer d1, d2, d3, d4;
s7_pointer t1_1, t2_1, t2_2, t3_1, t3_2, t3_3, z2_1, z2_2;
@@ -1068,7 +1069,6 @@ struct s7_scheme {
int32_t ht_iter_tag, baffle_ctr, bignum_precision;
s7_pointer default_rng;
- /* these symbols are primarily for the generic function search */
s7_pointer abs_symbol, acos_symbol, acosh_symbol, add_symbol, angle_symbol, append_symbol, apply_symbol, apply_values_symbol, arity_symbol,
ash_symbol, asin_symbol, asinh_symbol, assoc_symbol, assq_symbol, assv_symbol, atan_symbol, atanh_symbol,
autoload_symbol, autoloader_symbol,
@@ -1125,7 +1125,7 @@ struct s7_scheme {
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, tree_leaves_symbol, tree_memq_symbol, tree_set_memq_symbol, truncate_symbol, type_of_symbol,
+ tree_count_symbol, tree_leaves_symbol, tree_memq_symbol, tree_set_memq_symbol, tree_is_cyclic_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,
@@ -1145,7 +1145,7 @@ struct s7_scheme {
/* *s7* fields */
s7_pointer stack_top_symbol, heap_size_symbol, gc_freed_symbol, gc_protected_objects_symbol,
- free_heap_size_symbol, file_names_symbol, symbol_table_symbol, cpu_time_symbol, float_format_precision_symbol,
+ free_heap_size_symbol, file_names_symbol, symbol_table_symbol, cpu_time_symbol, float_format_precision_symbol, max_heap_size_symbol,
stack_size_symbol, rootlet_size_symbol, c_types_symbol, safety_symbol, max_stack_size_symbol, gc_stats_symbol, autoloading_symbol,
catches_symbol, exits_symbol, stack_symbol, default_rationalize_error_symbol, max_string_length_symbol, default_random_state_symbol,
max_list_length_symbol, max_vector_length_symbol, max_vector_dimensions_symbol, default_hash_table_length_symbol, profile_info_symbol,
@@ -1209,8 +1209,7 @@ struct s7_scheme {
set_pair_symbol, set_dilambda_symbol, set_dilambda_z_symbol, set_pair_z_symbol, set_pair_za_symbol,
set_pws_symbol, set_symbol_a_symbol, set_symbol_c_symbol,
set_symbol_opcq_symbol, set_symbol_opsq_symbol, set_symbol_opssq_symbol, set_symbol_opsssq_symbol, set_symbol_p_symbol,
- set_symbol_oplq_symbol, set_symbol_opllq_symbol,
- set_symbol_q_symbol, set_symbol_s_symbol, set_symbol_l_symbol, set_symbol_z_symbol, set_unchecked_symbol,
+ set_symbol_q_symbol, set_symbol_s_symbol, set_symbol_z_symbol, set_unchecked_symbol,
simple_do_symbol, unless_s_symbol, unless_a_symbol, unless_unchecked_symbol,
when_s_symbol, when_a_symbol, when_p_symbol, when_unchecked_symbol,
with_baffle_unchecked_symbol, with_let_s_symbol, with_let_unchecked_symbol,
@@ -1264,9 +1263,7 @@ struct s7_scheme {
/* (*s7* 'safety) settings */
#define NO_SAFETY 0
-#define CLM_OPTIMIZATION_SAFETY 1
-#define ALL_OPTIMIZATION_SAFETY 2
-#define IMMUTABLE_VECTOR_SAFETY 3
+#define IMMUTABLE_VECTOR_SAFETY 1
typedef enum {USE_DISPLAY, USE_WRITE, USE_READABLE_WRITE, USE_WRITE_WRONG} use_write_t;
@@ -1445,9 +1442,8 @@ static void init_types(void)
static s7_scheme *cur_sc = NULL;
-#if DEBUGGING
+#if S7_DEBUGGING
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);
static s7_pointer check_ref(s7_pointer p, uint8_t expected_type, const char *func, int32_t line, const char *func1, const char *func2);
static s7_pointer check_ref2(s7_pointer p, uint8_t expected_type, int32_t other_type, const char *func, int32_t line, const char *func1, const char *func2);
static s7_pointer check_ref3(s7_pointer p, const char *func, int32_t line);
@@ -1561,13 +1557,11 @@ static s7_scheme *cur_sc = NULL;
#define _TApp(P) check_ref11(P, __func__, __LINE__) /* setter (any_procedure or #f) */
#define _NFre(P) check_nref(P, __func__, __LINE__) /* not free */
#define _Cell(P) check_cell(P, __func__, __LINE__) /* any cell */
- #define _TSet(P) check_seti(sc, P, __func__, __LINE__) /* set of immutable value */
#else
#define unchecked_type(p) ((p)->tf.type_field)
#define type(p) ((p)->tf.type_field)
#define set_type(p, f) typeflag(p) = f
- #define _TSet(P) P
#define _TI(P) P
#define _TR(P) P
#define _TF(P) P
@@ -1664,11 +1658,10 @@ static s7_scheme *cur_sc = NULL;
#define T_SYNTACTIC (1 << (TYPE_BITS + 1))
#define is_syntactic(p) ((typesflag(_NFre(p)) & T_SYNTACTIC) != 0)
-#define is_syntactic_symbol(p) ((typesflag(_NFre(p)) & (T_SYNTACTIC | 0xff)) == (T_SYMBOL | T_SYNTACTIC))
-#define SYNTACTIC_TYPE (uint16_t)(T_SYMBOL | T_DONT_EVAL_ARGS | T_SYNTACTIC)
-#define SYNTACTIC_PAIR (uint16_t)(T_PAIR | T_SYNTACTIC)
+#define is_syntactic_symbol(p) (typesflag(_NFre(p)) == (uint16_t)(T_SYMBOL | T_SYNTACTIC))
+#define is_syntactic_pair(p) (typesflag(_NFre(p)) == (uint16_t)(T_PAIR | T_SYNTACTIC))
+#define set_syntactic_pair(p) typeflag(_TPair(p)) = (T_PAIR | T_SYNTACTIC | (typeflag(p) & 0xffff0000))
/* this marks symbols that represent syntax objects, it should be in the second byte */
-#define set_syntactic_pair(p) typeflag(_TPair(p)) = (SYNTACTIC_PAIR | (typeflag(p) & 0xffff0000))
#define T_SIMPLE_ARG_DEFAULTS (1 << (TYPE_BITS + 2))
@@ -1748,7 +1741,15 @@ 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))
- fprintf(stderr, "%s[%d]: %s%s%s in %s\n", func, line, BOLD_TEXT, DISPLAY(symbol), UNBOLD_TEXT, DISPLAY_80(sc->cur_code));
+ {
+ s7_pointer val;
+ val = s7_symbol_value(sc, s7_make_symbol(sc, "str"));
+ if (val != sc->undefined)
+ {
+ fprintf(stderr, "%s[%d]: %s%s%s in %s\n", func, line, BOLD_TEXT, DISPLAY(symbol), UNBOLD_TEXT, DISPLAY_80(sc->cur_code));
+ fprintf(stderr, " %s\n", DISPLAY(val));
+ }
+ }
typeflag(symbol) = (typeflag(symbol) & ~(T_DONT_EVAL_ARGS | T_GLOBAL | T_SYNTACTIC));
}
#define set_local(Symbol) set_local_1(sc, Symbol, __func__, __LINE__)
@@ -1899,7 +1900,6 @@ static s7_scheme *cur_sc = NULL;
#define T_MUTABLE (1 << (TYPE_BITS + 18))
#define is_mutable(p) ((typeflag(_TNum(p)) & T_MUTABLE) != 0)
-/* #define set_mutable(p) typeflag(_TNum(p)) |= T_MUTABLE */
/* used for mutable numbers */
#define T_HAS_KEYWORD T_MUTABLE
@@ -1922,7 +1922,6 @@ static s7_scheme *cur_sc = NULL;
#define set_step_end(p) typeflag(_TSlt(p)) |= T_STEP_END
/* marks a slot that holds a do-loop's step-or-end variable, numerator=current, denominator=end */
-
#define T_PAIR_NO_OPT T_MUTABLE
#define set_pair_no_opt(p) typeflag(_TPair(p)) |= T_PAIR_NO_OPT
#define pair_no_opt(p) ((typeflag(_TPair(p)) & T_PAIR_NO_OPT) != 0)
@@ -1952,7 +1951,6 @@ static s7_scheme *cur_sc = NULL;
#define is_safe_stepper(p) ((typeflag(_TSlp(p)) & T_SAFE_STEPPER) != 0)
#define set_safe_stepper(p) typeflag(_TSlp(p)) |= T_SAFE_STEPPER
#define clear_safe_stepper(p) typeflag(_NFre(p)) &= (~T_SAFE_STEPPER)
-/* an experiment */
#define T_PRINT_NAME T_SAFE_STEPPER
#define has_print_name(p) ((typeflag(_TNum(p)) & T_PRINT_NAME) != 0)
@@ -1976,10 +1974,6 @@ static s7_scheme *cur_sc = NULL;
#define needs_copied_args(p) ((typeflag(_NFre(p)) & T_COPY_ARGS) != 0)
/* this marks something that might mess with its argument list, it should not be in the second byte */
-#define T_LOCAL_SYMBOL T_COPY_ARGS
-#define is_local_symbol(p) ((typeflag(_NFre(p)) & T_LOCAL_SYMBOL) != 0)
-#define set_local_symbol(p) typeflag(_TPair(p)) |= T_LOCAL_SYMBOL
-
#define T_GENSYM (1 << (TYPE_BITS + 21))
#define is_gensym(p) ((typeflag(_TSym(p)) & T_GENSYM) != 0)
/* symbol is from gensym (GC-able etc) */
@@ -2029,6 +2023,11 @@ static s7_scheme *cur_sc = NULL;
#define is_s7_let_field(p) ((typeflag(_TSym(p)) & T_S7_LET_FIELD) != 0)
#define set_s7_let_field(p) typeflag(_TSym(p)) |= T_S7_LET_FIELD
+#define T_HAS_LET_FILE T_S7_LET_FIELD
+#define has_let_file(p) ((typeflag(_TLet(p)) & T_HAS_LET_FILE) != 0)
+#define set_has_let_file(p) typeflag(_TLet(p)) |= T_HAS_LET_FILE
+#define clear_has_let_file(p) typeflag(_TLet(p)) &= (~T_HAS_LET_FILE)
+
#define T_DEFINER (1LL << (TYPE_BITS + 26))
#define is_definer(p) ((typeflag(_NFre(p)) & T_DEFINER) != 0)
@@ -2067,7 +2066,7 @@ static int64_t not_heap = -1;
#define raw_opt1(p) ((p)->object.cons.opt1)
-#if (!DEBUGGING)
+#if (!S7_DEBUGGING)
#define opt1(p, r) ((p)->object.cons.opt1)
#define set_opt1(p, x, r) (p)->object.cons.opt1 = x
@@ -2131,7 +2130,8 @@ static int64_t not_heap = -1;
#define F_CON (1 << 22) /* constant as above */
#define F_CALL (1 << 23) /* c-func */
#define F_LAMBDA (1 << 24) /* lambda form */
-#define F_MASK (F_KEY | F_SLOW | F_SYM | F_PAIR | F_CON | F_CALL | F_LAMBDA | S_NAME)
+#define F_ID (1 << 31) /* symbol id */
+#define F_MASK (F_KEY | F_SLOW | F_SYM | F_PAIR | F_CON | F_CALL | F_LAMBDA | F_ID | S_NAME)
#define opt2_is_set(p) (((p)->debugger_bits & F_SET) != 0)
#define set_opt2_is_set(p) (p)->debugger_bits |= F_SET
@@ -2195,8 +2195,8 @@ static int64_t not_heap = -1;
#define opt_slot1(P) _TSlt(opt1(P, E_SLOT))
#define set_opt_slot1(P, X) set_opt1(P, _TSlt(X), E_SLOT)
-#define opt_any2(P) _NFre(opt2(P, F_KEY))
-#define set_opt_any2(P, X) set_opt2(P, _NFre(X), F_KEY)
+#define opt_any2(P) _NFre(opt2(P, F_KEY))
+#define set_opt_any2(P, X) set_opt2(P, _NFre(X), F_KEY)
#define opt_slow(P) _TLst(opt2(P, F_SLOW))
#define set_opt_slow(P, X) set_opt2(P, _TPair(X), F_SLOW)
#define opt_sym2(P) _TSym(opt2(P, F_SYM))
@@ -2209,6 +2209,16 @@ static int64_t not_heap = -1;
#define set_opt_lambda2(P, X) set_opt2(P, _TPair(X), F_LAMBDA)
#define opt_direct_x_call(P) opt2(P, F_LAMBDA)
#define set_opt_direct_x_call(P, X) set_opt2(P, (s7_pointer)(X), F_LAMBDA)
+#if POINTER_32
+/* I don't think this can work -- in a long run, we'll be truncating the symbol_id etc
+ * but I only noticed this late in the day... I'll make a better fix in 18.2
+ */
+#define opt_id2(P) (intptr_t)(opt2(P, F_ID))
+#define set_opt_id2(P, X) set_opt2(P, (s7_pointer)((uint32_t)(X)), F_ID)
+#else
+#define opt_id2(P) (int64_t)(opt2(P, F_ID))
+#define set_opt_id2(P, X) set_opt2(P, (s7_pointer)(X), F_ID)
+#endif
#define arglist_length(P) _TI(opt3(cdr(P), G_ARGLEN))
#define set_arglist_length(P, X) set_opt3(cdr(P), _TI(X), G_ARGLEN)
@@ -2226,7 +2236,7 @@ static int64_t not_heap = -1;
#define c_callee(f) ((s7_function)opt2(f, F_CALL))
#define c_call(f) ((s7_function)opt2(f, F_CALL))
-#if DEBUGGING
+#if S7_DEBUGGING
#define set_c_call(f, _X_) do {s7_pointer X; X = (s7_pointer)(_X_); if (!(X)) fprintf(stderr, "%s[%d] c_call null\n", __func__, __LINE__); set_opt2(f, X, F_CALL);} while (0)
#define set_x_call_checked(f, _X_) do {s7_pointer X; X = (s7_pointer)(_X_); if ((!(X)) && (strcmp(__func__, "check_and") != 0) && (strcmp(__func__, "check_or") != 0)) fprintf(stderr, "%s[%d] x_call null\n", __func__, __LINE__); set_opt2(f, X, F_CALL); if (X) set_has_all_x(f); else clear_has_all_x(f);} while (0)
#define set_x_call(f, _X_) do {s7_pointer X; X = (s7_pointer)(_X_); if (!(X)) fprintf(stderr, "%s[%d] x_call null: %s\n", __func__, __LINE__, DISPLAY(f)); set_opt2(f, X, F_CALL); if (X) set_has_all_x(f); else clear_has_all_x(f);} while (0)
@@ -2316,7 +2326,7 @@ static int64_t not_heap = -1;
#define character_name(p) (_TChr(p))->object.chr.c_name
#define character_name_length(p) (_TChr(p))->object.chr.length
-#if (!DEBUGGING)
+#if (!S7_DEBUGGING)
#define optimize_op(p) (_TPair(p))->object.sym_cons.op
#define set_optimize_op(P, Op) optimize_op(P) = Op
#else
@@ -2332,7 +2342,7 @@ static int64_t not_heap = -1;
#define set_unsafe_optimize_op(P, Q) do {set_unsafely_optimized(P); set_optimize_op(P, Q); /* if (is_unknown_op(Q)) fprintf(stderr, "%d %s %s\n", __LINE__, opt_names[Q], DISPLAY_80(P)); */ } while (0)
#define is_symbol(p) (type(p) == T_SYMBOL)
-#define is_safe_symbol(p) ((is_symbol(p)) && (is_slot(find_symbol(sc, p))))
+#define is_safe_symbol(p) ((is_symbol(p)) && (is_slot(symbol_to_slot(sc, p))))
#define symbol_name_cell(p) _TStr((_TSym(p))->object.sym.name)
#define symbol_set_name_cell(p, S) (_TSym(p))->object.sym.name = _TStr(S)
#define symbol_name(p) string_value(symbol_name_cell(p))
@@ -2386,12 +2396,6 @@ static int64_t not_heap = -1;
#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))
-#else
- #define local_symbol_value(Sym) slot_value(local_slot(Sym))
-#endif
-
#define is_syntax(p) (type(p) == T_SYNTAX)
#define syntax_symbol(p) _TSym((_TSyn(p))->object.syn.symbol)
#define syntax_set_symbol(p, Sym) (_TSyn(p))->object.syn.symbol = _TSym(Sym)
@@ -2400,7 +2404,7 @@ static int64_t not_heap = -1;
#define syntax_max_args(p) (_TSyn(p))->object.syn.max_args
#define syntax_documentation(p) sc->syn_docs[syntax_opcode(p)]
-#if (!DEBUGGING)
+#if (!S7_DEBUGGING)
#define pair_syntax_op(p) (p)->object.sym_cons.op
#define pair_set_syntax_op(p, X) do {unoptimize(p); (p)->object.sym_cons.op = X;} while (0)
#else
@@ -2734,12 +2738,12 @@ static void set_print_name(s7_pointer p, const char *name, int32_t len)
}
#if WITH_GCC
-#define make_integer(Sc, N) ({ s7_int _N_; _N_ = (N); (is_small(_N_) ? small_int(_N_) : ({ s7_pointer _X_; new_cell(Sc, _X_, T_INTEGER); integer(_X_) = _N_; _X_;}) ); })
+#define make_integer(Sc, N) ({ s7_int _N_; _N_ = (N); (is_small(_N_) ? small_int(_N_) : ({ s7_pointer _I_; new_cell(Sc, _I_, T_INTEGER); integer(_I_) = _N_; _I_;}) ); })
-#define make_real(Sc, X) ({ s7_pointer _X_; s7_double _N_ = (X); new_cell(Sc, _X_, T_REAL); set_real(_X_, _N_); _X_;})
+#define make_real(Sc, X) ({ s7_pointer _R_; s7_double _N_ = (X); new_cell(Sc, _R_, T_REAL); set_real(_R_, _N_); _R_;})
#define make_complex(Sc, R, I) \
- ({ s7_double im; im = (I); ((im == 0.0) ? make_real(Sc, R) : ({ s7_pointer _X_; new_cell(Sc, _X_, T_COMPLEX); set_real_part(_X_, R); set_imag_part(_X_, im); _X_;}) ); })
+ ({ s7_double im; im = (I); ((im == 0.0) ? make_real(Sc, R) : ({ s7_pointer _C_; new_cell(Sc, _C_, T_COMPLEX); set_real_part(_C_, R); set_imag_part(_C_, im); _C_;}) ); })
#define real_to_double(Sc, X, Caller) ({ s7_pointer _x_; _x_ = (X); ((type(_x_) == T_REAL) ? real(_x_) : s7_number_to_real_with_caller(Sc, _x_, Caller)); })
#define rational_to_double(Sc, X) ({ s7_pointer _x_; _x_ = (X); ((type(_x_) == T_INTEGER) ? (s7_double)integer(_x_) : fraction(_x_)); })
@@ -2913,6 +2917,7 @@ static s7_pointer prepackaged_type_name(s7_scheme *sc, s7_pointer x);
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 cons_unchecked_with_type(s7_scheme *sc, s7_pointer p, s7_pointer a, s7_pointer b);
static s7_pointer permanent_cons(s7_pointer a, s7_pointer b, uint64_t type);
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);
@@ -2950,25 +2955,24 @@ static s7_int big_integer_to_s7_int(mpz_t n);
static double next_random(s7_pointer r);
#endif
-#if DEBUGGING && WITH_GCC
- static s7_pointer find_symbol_unchecked_1(s7_scheme *sc, s7_pointer symbol);
- #define find_symbol_unchecked(Sc, Sym) check_null_sym(Sc, find_symbol_unchecked_1(Sc, Sym), Sym, __LINE__, __func__)
+#if S7_DEBUGGING && WITH_GCC
+ static s7_pointer symbol_to_value_unchecked_1(s7_scheme *sc, s7_pointer symbol);
+ #define symbol_to_value_unchecked(Sc, Sym) check_null_sym(Sc, symbol_to_value_unchecked_1(Sc, Sym), Sym, __LINE__, __func__)
static s7_pointer check_null_sym(s7_scheme *sc, s7_pointer p, s7_pointer sym, int32_t line, const char *func);
- #define find_symbol_unexamined(Sc, Sym) find_symbol_unchecked_1(Sc, Sym)
- static s7_pointer check_sym(s7_scheme *sc, s7_pointer sym);
+ #define symbol_to_value_unexamined(Sc, Sym) symbol_to_value_unchecked_1(Sc, Sym)
#else
- static inline s7_pointer find_symbol_unchecked(s7_scheme *sc, s7_pointer symbol);
- #define find_symbol_unexamined(Sc, Sym) find_symbol_unchecked(Sc, Sym)
+ static inline s7_pointer symbol_to_value_unchecked(s7_scheme *sc, s7_pointer symbol);
+ #define symbol_to_value_unexamined(Sc, Sym) symbol_to_value_unchecked(Sc, Sym)
#endif
#if WITH_GCC
- #if DEBUGGING
- #define find_symbol_checked(Sc, Sym) ({s7_pointer _x_; _x_ = find_symbol_unchecked_1(Sc, Sym); ((_x_) ? _x_ : unbound_variable(Sc, Sym));})
+ #if S7_DEBUGGING
+ #define symbol_to_value_checked(Sc, Sym) ({s7_pointer _x_; _x_ = symbol_to_value_unchecked_1(Sc, Sym); ((_x_) ? _x_ : unbound_variable(Sc, Sym));})
#else
- #define find_symbol_checked(Sc, Sym) ({s7_pointer _x_; _x_ = find_symbol_unchecked(Sc, Sym); ((_x_) ? _x_ : unbound_variable(Sc, Sym));})
+ #define symbol_to_value_checked(Sc, Sym) ({s7_pointer _x_; _x_ = symbol_to_value_unchecked(Sc, Sym); ((_x_) ? _x_ : unbound_variable(Sc, Sym));})
#endif
#else
- #define find_symbol_checked(Sc, Sym) find_symbol_unchecked(Sc, Sym)
+ #define symbol_to_value_checked(Sc, Sym) symbol_to_value_unchecked(Sc, Sym)
#endif
static s7_pointer find_method(s7_scheme *sc, s7_pointer env, s7_pointer symbol);
@@ -3059,9 +3063,8 @@ enum {OP_NO_OP, OP_GC_PROTECT,
OP_QUOTE_UNCHECKED, OP_LAMBDA_UNCHECKED, OP_LET_UNCHECKED, OP_CASE_UNCHECKED, OP_WHEN_UNCHECKED, OP_UNLESS_UNCHECKED,
- OP_SET_UNCHECKED, OP_SET_SYMBOL_C, OP_SET_SYMBOL_L, OP_SET_SYMBOL_S, OP_SET_SYMBOL_Q, OP_SET_SYMBOL_P, OP_SET_SYMBOL_Z, OP_SET_SYMBOL_A,
+ OP_SET_UNCHECKED, OP_SET_SYMBOL_C, OP_SET_SYMBOL_S, OP_SET_SYMBOL_Q, OP_SET_SYMBOL_P, OP_SET_SYMBOL_Z, OP_SET_SYMBOL_A,
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_SETTER, OP_SET_PWS, OP_SET_LET_S, OP_SET_LET_ALL_X,
OP_SET_SAFE,
@@ -3135,10 +3138,10 @@ typedef enum{E_C_P, E_C_PP, E_C_CP, E_C_SP, E_C_PC, E_C_PS} combine_op_t;
enum {OP_SAFE_C_C, HOP_SAFE_C_C,
OP_SAFE_C_AND2, HOP_SAFE_C_AND2, OP_SAFE_C_OR2, HOP_SAFE_C_OR2,
- OP_SAFE_C_S, HOP_SAFE_C_S, OP_SAFE_C_L, HOP_SAFE_C_L,
+ OP_SAFE_C_S, HOP_SAFE_C_S,
OP_SAFE_CAR_S, HOP_SAFE_CAR_S, OP_SAFE_CDR_S, HOP_SAFE_CDR_S, OP_SAFE_CADR_S, HOP_SAFE_CADR_S,
OP_SAFE_IS_PAIR_S, HOP_SAFE_IS_PAIR_S, OP_SAFE_IS_NULL_S, HOP_SAFE_IS_NULL_S, OP_SAFE_IS_SYMBOL_S, HOP_SAFE_IS_SYMBOL_S, /* order matters here */
- OP_SAFE_C_SS, HOP_SAFE_C_SS, OP_SAFE_C_LL, HOP_SAFE_C_LL,
+ OP_SAFE_C_SS, HOP_SAFE_C_SS,
OP_SAFE_C_SC, HOP_SAFE_C_SC, OP_SAFE_C_CS, HOP_SAFE_C_CS,
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,
@@ -3193,7 +3196,7 @@ enum {OP_SAFE_C_C, HOP_SAFE_C_C,
OP_CLOSURE_S, HOP_CLOSURE_S, OP_CLOSURE_C, HOP_CLOSURE_C, OP_CLOSURE_P, HOP_CLOSURE_P,
OP_CLOSURE_SS, HOP_CLOSURE_SS, OP_CLOSURE_SS_P, HOP_CLOSURE_SS_P,
OP_CLOSURE_SC, HOP_CLOSURE_SC, OP_CLOSURE_CS, HOP_CLOSURE_CS,
- OP_CLOSURE_A, HOP_CLOSURE_A, OP_CLOSURE_AA, HOP_CLOSURE_AA, OP_CLOSURE_A_P, HOP_CLOSURE_A_P,
+ OP_CLOSURE_A, HOP_CLOSURE_A, OP_CLOSURE_AA, HOP_CLOSURE_AA, OP_CLOSURE_A_P, HOP_CLOSURE_A_P, OP_CLOSURE_AA_P, HOP_CLOSURE_AA_P,
OP_CLOSURE_ALL_X, HOP_CLOSURE_ALL_X, OP_CLOSURE_ALL_S, HOP_CLOSURE_ALL_S, OP_CLOSURE_ALL_S_P, HOP_CLOSURE_ALL_S_P,
OP_CLOSURE_FA, HOP_CLOSURE_FA,
OP_CLOSURE_AP, HOP_CLOSURE_AP, OP_CLOSURE_PA, HOP_CLOSURE_PA,
@@ -3201,22 +3204,22 @@ enum {OP_SAFE_C_C, HOP_SAFE_C_C,
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,
- OP_SAFE_THUNK_P, HOP_SAFE_THUNK_P, OP_SAFE_LTHUNK_P, HOP_SAFE_LTHUNK_P,
+ OP_SAFE_THUNK, HOP_SAFE_THUNK, OP_SAFE_THUNK_E, HOP_SAFE_THUNK_E, OP_SAFE_THUNK_P, HOP_SAFE_THUNK_P,
OP_SAFE_CLOSURE_S, HOP_SAFE_CLOSURE_S,
OP_SAFE_CLOSURE_C, HOP_SAFE_CLOSURE_C, OP_SAFE_CLOSURE_P, HOP_SAFE_CLOSURE_P,
OP_SAFE_CLOSURE_SS, HOP_SAFE_CLOSURE_SS, OP_SAFE_CLOSURE_SS_B, HOP_SAFE_CLOSURE_SS_B,
OP_SAFE_CLOSURE_SC, HOP_SAFE_CLOSURE_SC, OP_SAFE_CLOSURE_CS, HOP_SAFE_CLOSURE_CS,
- OP_SAFE_CLOSURE_A, HOP_SAFE_CLOSURE_A, OP_SAFE_LCLOSURE_A, HOP_SAFE_LCLOSURE_A, OP_SAFE_LCLOSURE_A_P, HOP_SAFE_LCLOSURE_A_P,
+ OP_SAFE_CLOSURE_A, HOP_SAFE_CLOSURE_A,
OP_SAFE_CLOSURE_SA, HOP_SAFE_CLOSURE_SA,
- OP_SAFE_CLOSURE_S_P, HOP_SAFE_CLOSURE_S_P, OP_SAFE_LCLOSURE_L_P, HOP_SAFE_LCLOSURE_L_P,
+ OP_SAFE_CLOSURE_S_P, HOP_SAFE_CLOSURE_S_P,
OP_SAFE_CLOSURE_SAA, HOP_SAFE_CLOSURE_SAA, OP_SAFE_CLOSURE_S_C, HOP_SAFE_CLOSURE_S_C,
OP_SAFE_CLOSURE_A_C, HOP_SAFE_CLOSURE_A_C,
- OP_SAFE_CLOSURE_ALL_X, HOP_SAFE_CLOSURE_ALL_X, OP_SAFE_CLOSURE_AA, HOP_SAFE_CLOSURE_AA,
+ OP_SAFE_CLOSURE_ALL_X, HOP_SAFE_CLOSURE_ALL_X, OP_SAFE_CLOSURE_AA, HOP_SAFE_CLOSURE_AA, OP_SAFE_CLOSURE_AA_P, HOP_SAFE_CLOSURE_AA_P,
OP_SAFE_CLOSURE_AP, HOP_SAFE_CLOSURE_AP, OP_SAFE_CLOSURE_PA, HOP_SAFE_CLOSURE_PA,
+ OP_SAFE_FUN_A, HOP_SAFE_FUN_A,
+
OP_SAFE_CLOSURE_STAR_A, HOP_SAFE_CLOSURE_STAR_A, OP_SAFE_CLOSURE_STAR_AA, HOP_SAFE_CLOSURE_STAR_AA,
OP_SAFE_CLOSURE_STAR_S0, HOP_SAFE_CLOSURE_STAR_S0, OP_SAFE_CLOSURE_STAR_ALL_X, HOP_SAFE_CLOSURE_STAR_ALL_X,
@@ -3232,7 +3235,7 @@ enum {OP_SAFE_C_C, HOP_SAFE_C_C,
OP_GOTO, HOP_GOTO, OP_GOTO_C, HOP_GOTO_C, OP_GOTO_S, HOP_GOTO_S, OP_GOTO_A, HOP_GOTO_A,
OP_ITERATE, HOP_ITERATE,
OP_CONTINUATION_A, HOP_CONTINUATION_A,
- OP_VECTOR_A, HOP_VECTOR_A, OP_CVECTOR_A, HOP_CVECTOR_A,
+ OP_VECTOR_A, HOP_VECTOR_A,
OP_STRING_A, HOP_STRING_A,
OP_C_OBJECT_A, HOP_C_OBJECT_A, OP_PAIR_A, HOP_PAIR_A, OP_HASH_TABLE_A, HOP_HASH_TABLE_A,
OP_ENVIRONMENT_Q, HOP_ENVIRONMENT_Q, OP_ENVIRONMENT_A, HOP_ENVIRONMENT_A,
@@ -3250,7 +3253,7 @@ enum {OP_SAFE_C_C, HOP_SAFE_C_C,
OPT_MAX_DEFINED
};
-#if DEBUGGING || OP_NAMES
+#if S7_DEBUGGING || OP_NAMES
static const char *op_names[OP_MAX_DEFINED_1] = {
"no_op", "gc_protect",
@@ -3287,9 +3290,8 @@ static const char *op_names[OP_MAX_DEFINED_1] = {
"quote_unchecked", "lambda_unchecked", "let_unchecked", "case_unchecked", "when_unchecked", "unless_unchecked",
- "set_unchecked", "set_symbol_c", "set_symbol_l", "set_symbol_s", "set_symbol_q", "set_symbol_p", "set_symbol_z", "set_symbol_a",
+ "set_unchecked", "set_symbol_c", "set_symbol_s", "set_symbol_q", "set_symbol_p", "set_symbol_z", "set_symbol_a",
"set_symbol_opsq", "set_symbol_opcq", "set_symbol_opssq", "set_symbol_opsssq",
- "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_setter", "set_pws", "set_let_s", "set_let_all_x",
@@ -3361,10 +3363,10 @@ static const char *op_names[OP_MAX_DEFINED_1] = {
static const char* opt_names[OPT_MAX_DEFINED] =
{"safe_c_c", "h_safe_c_c",
"safe_c_and2", "h_safe_c_and2", "safe_c_or2", "h_safe_c_or2",
- "safe_c_s", "h_safe_c_s", "safe_c_l", "h_safe_c_l",
+ "safe_c_s", "h_safe_c_s",
"safe_car_s", "h_safe_car_s", "safe_cdr_s", "h_safe_cdr_s", "safe_cadr_s", "h_safe_cadr_s",
"safe_is_pair_s", "h_safe_is_pair_s", "safe_is_null_s", "h_safe_is_null_s", "safe_is_symbol_s", "h_safe_is_symbol_s",
- "safe_c_ss", "h_safe_c_ss", "safe_c_ll", "h_safe_c_ll",
+ "safe_c_ss", "h_safe_c_ss",
"safe_c_sc", "h_safe_c_sc", "safe_c_cs", "h_safe_c_cs",
"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",
@@ -3419,7 +3421,7 @@ static const char* opt_names[OPT_MAX_DEFINED] =
"closure_s", "h_closure_s", "closure_c", "h_closure_c", "closure_p", "h_closure_p",
"closure_ss", "h_closure_ss", "closure_ss_p", "h_closure_ss_p",
"closure_sc", "h_closure_sc", "closure_cs", "h_closure_cs",
- "closure_a", "h_closure_a", "closure_aa", "h_closure_aa", "closure_a_p", "h_closure_a_p",
+ "closure_a", "h_closure_a", "closure_aa", "h_closure_aa", "closure_a_p", "h_closure_a_p", "closure_aa_p", "h_closure_aa_p",
"closure_all_x", "h_closure_all_x", "closure_all_s", "h_closure_all_s", "closure_all_s_p", "h_closure_all_s_p",
"closure_fa", "h_closure_fa",
"closure_ap", "h_closure_ap", "closure_pa", "h_closure_pa",
@@ -3427,21 +3429,21 @@ static const char* opt_names[OPT_MAX_DEFINED] =
"closure*_a", "h_closure*_a", "closure*_all_x", "h_closure*_all_x",
- "safe_thunk", "h_safe_thunk",
- "safe_thunk_e", "h_safe_thunk_e",
- "safe_thunk_p", "h_safe_thunk_p", "safe_lthunk", "h_safe_lthunk",
+ "safe_thunk", "h_safe_thunk", "safe_thunk_e", "h_safe_thunk_e", "safe_thunk_p", "h_safe_thunk_p",
"safe_closure_s", "h_safe_closure_s",
"safe_closure_c", "h_safe_closure_c", "safe_closure_p", "h_safe_closure_p",
"safe_closure_ss", "h_safe_closure_ss", "safe_closure_ss_b", "h_safe_closure_ss_b",
"safe_closure_sc", "h_safe_closure_sc", "safe_closure_cs", "h_safe_closure_cs",
- "safe_closure_a", "h_safe_closure_a", "safe_lclosure_a", "h_safe_lclosure_a", "safe_lclosure_a_p", "h_safe_lclosure_a_p",
+ "safe_closure_a", "h_safe_closure_a",
"safe_closure_sa", "h_safe_closure_sa",
- "safe_closure_s_p", "h_safe_closure_s_p", "safe_lclosure_l_p", "h_safe_lclosure_l_p",
+ "safe_closure_s_p", "h_safe_closure_s_p",
"safe_closure_saa", "h_safe_closure_saa", "safe_closure_s_c", "h_safe_closure_s_c",
"safe_closure_a_c", "h_safe_closure_a_c",
- "safe_closure_all_x", "h_safe_closure_all_x", "safe_closure_aa", "h_safe_closure_aa",
+ "safe_closure_all_x", "h_safe_closure_all_x", "safe_closure_aa", "h_safe_closure_aa", "safe_closure_aa_p", "h_safe_closure_aa_p",
"safe_closure_ap", "h_safe_closure_ap", "safe_closure_pa", "h_safe_closure_pa",
+ "safe_fun_a", "h_safe_fun_a",
+
"safe_closure*_a", "h_safe_closure*_a", "safe_closure*_aa", "h_safe_closure*_aa",
"safe_closure*_s0", "h_safe_closure*_s0", "safe_closure*_all_x", "h_safe_closure*_all_x",
@@ -3456,7 +3458,7 @@ static const char* opt_names[OPT_MAX_DEFINED] =
"goto", "h_goto", "goto_c", "h_goto_c", "goto_s", "h_goto_s", "goto_a", "h_goto_a",
"iterate", "h_iterate",
"continuation_a", "h_continuation_a",
- "vector_a", "h_vector_a", "cvector_a", "h_cvector_a",
+ "vector_a", "h_vector_a",
"string_a", "h_string_a",
"c_object_a", "h_c_object_a", "pair_a", "h_pair_a", "hash_table_a", "h_hash_table_a",
"environment_q", "h_environment_q", "environment_a", "h_environment_a",
@@ -3557,23 +3559,12 @@ static s7_pointer missing_method_error(s7_scheme *sc, s7_pointer method, s7_poin
#define check_boolean_not_method(Sc, Checker, Method, Args) \
{ \
s7_pointer p; \
- p = find_symbol_unchecked(sc, cadar(Args)); \
+ p = symbol_to_value_unchecked(sc, cadar(Args)); \
if (Checker(p)) return(Sc->F); \
if (!has_methods(p)) return(Sc->T); \
return((apply_boolean_method(Sc, p, Method) == sc->F) ? sc->T : sc->F); \
}
-#define eval_boolean_method(Sc, Checker, Method, Arg) \
- if (Checker(Arg)) \
- Sc->value = Sc->T; \
- else \
- { \
- s7_pointer func; \
- if ((has_methods(Arg)) && ((func = find_method(Sc, find_let(Sc, Arg), Method)) != Sc->undefined)) \
- Sc->value = s7_apply_function(Sc, func, list_1(Sc, Arg)); \
- else Sc->value = Sc->F; \
- }
-
static s7_pointer find_and_apply_method(s7_scheme *sc, s7_pointer lt, s7_pointer sym, s7_pointer args)
{
s7_pointer func;
@@ -3807,7 +3798,7 @@ static s7_pointer g_is_boolean(s7_scheme *sc, s7_pointer args)
check_boolean_method(sc, s7_is_boolean, sc->is_boolean_symbol, args);
}
-static s7_pointer find_symbol(s7_scheme *sc, s7_pointer symbol);
+static s7_pointer symbol_to_slot(s7_scheme *sc, s7_pointer symbol);
static bool is_constant_symbol(s7_scheme *sc, s7_pointer sym)
{
if (is_immutable_symbol(sym)) /* for keywords */
@@ -3815,7 +3806,7 @@ static bool is_constant_symbol(s7_scheme *sc, s7_pointer sym)
if (is_possibly_constant(sym))
{
s7_pointer slot;
- slot = find_symbol(sc, sym);
+ slot = symbol_to_slot(sc, sym);
return((is_slot(slot)) && (is_immutable_slot(slot)));
}
return(false);
@@ -3843,9 +3834,21 @@ s7_pointer s7_immutable(s7_pointer 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 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)));
+ s7_pointer p;
+ p = car(args);
+ if (is_symbol(p))
+ {
+ s7_pointer slot;
+ slot = symbol_to_slot(sc, p);
+ if (is_slot(slot))
+ {
+ set_immutable(slot);
+ return(p);
+ }
+ }
+ return(s7_immutable(p));
}
static s7_pointer g_is_immutable(s7_scheme *sc, s7_pointer args)
@@ -3864,7 +3867,7 @@ static s7_pointer g_is_immutable(s7_scheme *sc, s7_pointer args)
* case) to manage them in the sweep process by tracking lets.
*/
-#if DEBUGGING
+#if S7_DEBUGGING
static uint32_t s7_gc_protect_2(s7_scheme *sc, s7_pointer x, int line)
{
uint32_t loc;
@@ -3890,7 +3893,7 @@ uint32_t s7_gc_protect(s7_scheme *sc, s7_pointer x)
vector_length(sc->protected_objects) = new_size;
sc->protected_objects_size = new_size;
sc->gpofl = (uint32_t *)realloc(sc->gpofl, new_size * sizeof(uint32_t));
-#if DEBUGGING
+#if S7_DEBUGGING
sc->protected_lines = (int *)realloc(sc->protected_lines, new_size * sizeof(int));
for (i = size; i < new_size; i++) sc->protected_lines[i] = -1;
{
@@ -3914,7 +3917,7 @@ uint32_t s7_gc_protect(s7_scheme *sc, s7_pointer x)
}
loc = sc->gpofl[sc->gpofl_loc--];
-#if DEBUGGING
+#if S7_DEBUGGING
if (loc >= sc->protected_objects_size)
fprintf(stderr, "sc->gpofl loc: %u (%d)\n", loc, sc->protected_objects_size);
if (vector_element(sc->protected_objects, loc) != sc->gc_nil)
@@ -4566,7 +4569,7 @@ static void mark_pair(s7_pointer p)
for (x = cdr(p); (is_pair(x)) && (!is_marked(x)); x = cdr(x))
{
set_mark(x);
- S7_MARK(car(x));
+ S7_MARK(car(x)); /* this can be expanded into an embedded mark_pair call, but the savings is miniscule (.1%) */
}
S7_MARK(x);
}
@@ -4839,7 +4842,7 @@ static void unmark_permanent_objects(s7_scheme *sc)
#endif
-#if DEBUGGING
+#if S7_DEBUGGING
static int32_t last_gc_line = 0;
static const char *last_gc_func = NULL;
static char *describe_type_bits(s7_scheme *sc, s7_pointer obj);
@@ -4858,7 +4861,7 @@ static int32_t gc(s7_scheme *sc)
{
s7_cell **old_free_heap_top;
/* mark all live objects (the symbol table is in permanent memory, not the heap) */
-#if DEBUGGING
+#if S7_DEBUGGING
#define gc_call(P, Tp) \
p = (*tp++); \
if (is_marked(_Cell(p))) \
@@ -4880,7 +4883,7 @@ static int32_t gc(s7_scheme *sc)
if (show_gc_stats(sc))
{
fprintf(stdout, "gc ");
-#if DEBUGGING
+#if S7_DEBUGGING
fprintf(stdout, "%s[%d] ", last_gc_func, last_gc_line);
#endif
#if (!MS_WINDOWS)
@@ -4929,7 +4932,6 @@ static int32_t gc(s7_scheme *sc)
S7_MARK(sc->temp2);
S7_MARK(sc->temp3);
S7_MARK(sc->temp4);
- S7_MARK(sc->temp5);
S7_MARK(sc->temp6);
S7_MARK(sc->temp7);
S7_MARK(sc->temp8);
@@ -4948,6 +4950,7 @@ static int32_t gc(s7_scheme *sc)
S7_MARK(sc->autoload_table);
S7_MARK(sc->default_rng);
+ /* permanent lists that might escape and therefore need GC protection */
mark_pair(sc->temp_cell_1);
mark_pair(sc->temp_cell_2);
S7_MARK(car(sc->t1_1));
@@ -4965,13 +4968,25 @@ static int32_t gc(s7_scheme *sc)
S7_MARK(car(sc->plist_1));
S7_MARK(car(sc->plist_2));
S7_MARK(cadr(sc->plist_2));
- S7_MARK(car(sc->plist_3));
- S7_MARK(cadr(sc->plist_3));
- S7_MARK(caddr(sc->plist_3));
S7_MARK(car(sc->qlist_2));
S7_MARK(cadr(sc->qlist_2));
{
+ s7_pointer p;
+ for (p = sc->wrong_type_arg_info; is_pair(p); p = cdr(p)) S7_MARK(car(p));
+ for (p = sc->simple_wrong_type_arg_info; is_pair(p); p = cdr(p)) S7_MARK(car(p));
+ for (p = sc->out_of_range_info; is_pair(p); p = cdr(p)) S7_MARK(car(p));
+ for (p = sc->simple_out_of_range_info; is_pair(p); p = cdr(p)) S7_MARK(car(p));
+ S7_MARK(car(sc->elist_1));
+ S7_MARK(car(sc->elist_2));
+ S7_MARK(cadr(sc->elist_2));
+ for (p = sc->plist_3; is_pair(p); p = cdr(p)) S7_MARK(car(p));
+ for (p = sc->elist_3; is_pair(p); p = cdr(p)) S7_MARK(car(p));
+ for (p = sc->elist_4; is_pair(p); p = cdr(p)) S7_MARK(car(p));
+ for (p = sc->elist_5; is_pair(p); p = cdr(p)) S7_MARK(car(p));
+ }
+
+ {
uint32_t i;
s7_pointer p;
/* perhaps: if (sc->current_safe_list > 0) ... but this loop is down in the noise */
@@ -5039,7 +5054,7 @@ static int32_t gc(s7_scheme *sc)
{
if (!is_free_and_clear(p)) /* if T_FREE, it's an already-free object -- the free_heap is usually not empty when we call the GC */
{
-#if DEBUGGING
+#if S7_DEBUGGING
p->debugger_bits = 0;
p->gc_line = last_gc_line;
p->gc_func = last_gc_func;
@@ -5131,7 +5146,7 @@ int64_t s7_gc_freed(s7_scheme *sc) {return(sc->gc_freed);}
* does not return it to the free list: a memory leak.
*/
-#if (!DEBUGGING)
+#if (!S7_DEBUGGING)
#define new_cell(Sc, Obj, Type) \
do { \
if (Sc->free_heap_top <= Sc->free_heap_trigger) try_to_call_gc(Sc); \
@@ -5160,7 +5175,6 @@ int64_t s7_gc_freed(s7_scheme *sc) {return(sc->gc_freed);}
} while (0)
#endif
-/* static s7_pointer describe_memory_usage(s7_scheme *sc); */
static void resize_heap_to(s7_scheme *sc, int64_t size)
{
@@ -5195,8 +5209,7 @@ static void resize_heap_to(s7_scheme *sc, int64_t size)
sc->free_heap_trigger = (s7_cell **)(sc->free_heap + GC_TRIGGER_SIZE);
sc->free_heap_top = sc->free_heap + old_free; /* incremented below, added old_free 21-Aug-12?!? */
- /* optimization suggested by K Matheussen */
- cells = (s7_cell *)calloc(sc->heap_size - old_size, sizeof(s7_cell));
+ cells = (s7_cell *)calloc(sc->heap_size - old_size, sizeof(s7_cell)); /* optimization suggested by K Matheussen */
for (p = cells, k = old_size; k < sc->heap_size;)
{
sc->heap[k] = p;
@@ -5215,24 +5228,16 @@ static void resize_heap_to(s7_scheme *sc, int64_t size)
sc->previous_free_heap_top = sc->free_heap_top;
if (show_heap_stats(sc))
+ fprintf(stderr, "heap grows to %" PRId64 " (old free/size: %" PRId64 "/%" PRId64 ")\n", sc->heap_size, old_free, old_size);
+
+ if (sc->heap_size >= sc->max_heap_size)
{
- fprintf(stderr, "heap grows to %" PRId64 " (old free/size: %" PRId64 "/%" PRId64 ")\n", sc->heap_size, old_free, old_size);
-#if 0
- {
- s7_pointer old_out;
- old_out = sc->output_port;
- sc->output_port = sc->standard_error;
- describe_memory_usage(sc);
- sc->output_port = old_out;
- }
-#endif
-#if DEBUGGING
- if (sc->heap_size > 50000000) /* maybe a max-heap-size? */
- {
- s7_show_let(sc);
- abort();
- }
+#if S7_DEBUGGING
+ fprintf(stderr, "heap %" PRId64 ", %s\n", sc->heap_size, DISPLAY(sc->cur_code));
+ s7_show_let(sc);
+ abort();
#endif
+ s7_error(sc, s7_make_symbol(sc, "heap-too-big"), set_elist_1(sc, s7_make_string_wrapper(sc, "heap has grown past (*s7* 'max-heap-size)")));
}
}
@@ -5248,7 +5253,7 @@ static void try_to_call_gc(s7_scheme *sc)
}
else
{
-#if (!DEBUGGING)
+#if (!S7_DEBUGGING)
int64_t freed_heap;
freed_heap = gc(sc);
if ((freed_heap < sc->heap_size / 2) &&
@@ -5283,7 +5288,7 @@ Evaluation produces a surprising amount of garbage, so don't leave the GC off fo
if (sc->gc_off)
return(sc->F);
}
-#if DEBUGGING
+#if S7_DEBUGGING
last_gc_line = __LINE__;
last_gc_func = __func__;
#endif
@@ -5329,14 +5334,14 @@ static void add_permanent_object(s7_scheme *sc, s7_pointer obj)
sc->permanent_objects = g;
}
-#if DEBUGGING
+#if S7_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
+#if S7_DEBUGGING
p->debugger_bits = 0;
p->explicit_free_line = line;
#endif
@@ -5435,7 +5440,6 @@ static void s7_remove_from_heap(s7_scheme *sc, s7_pointer x)
free_cell(sc, sc->heap[loc]);
heap_location(sc->heap[loc]) = loc;
- /* unheap(x); */
heap_location(x) = -heap_location(x);
/* if gensym is a hash-table key, then is removed from the heap, we need to be sure the hash-table map to it
* continues to be valid. symbol_hmap is abs(heap_location), and the possible overlap with other not-in-heap
@@ -5478,7 +5482,7 @@ static void s7_remove_from_heap(s7_scheme *sc, s7_pointer x)
#define OP_STACK_INITIAL_SIZE 32
-#if DEBUGGING
+#if S7_DEBUGGING
#define stop_at_error true
static void push_op_stack(s7_scheme *sc, s7_pointer op)
@@ -5538,7 +5542,7 @@ static void resize_op_stack(s7_scheme *sc)
#define stack_args(Stack, Loc) vector_element(_TStk(Stack), Loc - 1)
#define stack_op(Stack, Loc) ((opcode_t)(vector_element(_TStk(Stack), Loc)))
-#if DEBUGGING
+#if S7_DEBUGGING
static void pop_stack(s7_scheme *sc)
{
sc->stack_end -= 4;
@@ -5705,8 +5709,13 @@ static void resize_stack(s7_scheme *sc)
vector_elements(sc->stack) = (s7_pointer *)realloc(vector_elements(sc->stack), new_size * sizeof(s7_pointer));
if (!vector_elements(sc->stack))
- s7_error(sc, s7_make_symbol(sc, "stack-too-big"), set_elist_1(sc, s7_make_string_wrapper(sc, "no room to expand stack?")));
-
+ {
+ fprintf(stderr, "can't allocate additional stack\n");
+#if S7_DEBUGGING
+ abort();
+#endif
+ s7_error(sc, s7_make_symbol(sc, "stack-too-big"), set_elist_1(sc, s7_make_string_wrapper(sc, "no room to expand stack?")));
+ }
for (i = sc->stack_size; i < new_size; i++)
vector_element(sc->stack, i) = sc->nil;
vector_length(sc->stack) = new_size;
@@ -5781,7 +5790,7 @@ static s7_pointer new_symbol(s7_scheme *sc, const char *name, uint32_t len, uint
size = sizeof(s7_cell) * 3 + sizeof(symbol_info_t) + len + 1;
base = (unsigned char *)malloc(size);
-#if DEBUGGING
+#if S7_DEBUGGING
/* clear at least debugger_bits here and below */
memset((void *)base, 0, size);
#endif
@@ -6018,7 +6027,7 @@ static void remove_gensym_from_symbol_table(s7_scheme *sc, s7_pointer sym)
return;
}
}
-#if DEBUGGING
+#if S7_DEBUGGING
fprintf(stderr, "could not remove %s?\n", string_value(name));
#endif
}
@@ -6084,11 +6093,11 @@ static s7_pointer g_gensym(s7_scheme *sc, s7_pointer args)
/* get symbol name */
if (is_not_null(args))
{
- s7_pointer name;
- name = car(args);
- if (!is_string(name))
- method_or_bust_one_arg(sc, name, sc->gensym_symbol, args, T_STRING);
- prefix = string_value(name);
+ s7_pointer gname;
+ gname = car(args);
+ if (!is_string(gname))
+ method_or_bust_one_arg(sc, gname, sc->gensym_symbol, args, T_STRING);
+ prefix = string_value(gname);
}
else prefix = "gensym";
plen = safe_strlen(prefix);
@@ -6107,13 +6116,13 @@ static s7_pointer g_gensym(s7_scheme *sc, s7_pointer args)
location = hash % SYMBOL_TABLE_SIZE;
/* make-string for symbol name */
-#if DEBUGGING
+#if S7_DEBUGGING
str = (s7_cell *)calloc(1, sizeof(s7_cell));
#else
str = (s7_cell *)malloc(sizeof(s7_cell));
#endif
unheap(str);
-#if DEBUGGING
+#if S7_DEBUGGING
typeflag(str) = 0;
#endif
set_type(str, T_STRING | T_IMMUTABLE);
@@ -6132,12 +6141,12 @@ static s7_pointer g_gensym(s7_scheme *sc, s7_pointer args)
symbol_set_ctr(x, 0);
/* place new symbol in symbol-table, but using calloc so we can easily free it (remove it from the table) in GC sweep */
-#if DEBUGGING
+#if S7_DEBUGGING
stc = (s7_cell *)calloc(1, sizeof(s7_cell));
#else
stc = (s7_cell *)malloc(sizeof(s7_cell));
#endif
-#if DEBUGGING
+#if S7_DEBUGGING
typeflag(stc) = 0;
#endif
unheap(stc);
@@ -6277,17 +6286,17 @@ static s7_pointer g_symbol(s7_scheme *sc, s7_pointer args)
}
-static s7_pointer add_symbol_to_list(s7_scheme *sc, s7_pointer sym)
+static inline s7_pointer add_symbol_to_list(s7_scheme *sc, s7_pointer sym)
{
symbol_set_tag(sym, sc->syms_tag);
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
+static inline void clear_symbol_list(s7_scheme *sc)
+{
+ sc->syms_tag++;
+ if (sc->syms_tag == 0) sc->syms_tag = 1; /* we're assuming (in let_equal) that this tag is not 0 */
+}
#define symbol_is_in_list(Sc, Sym) (symbol_tag(Sym) == Sc->syms_tag)
@@ -6400,7 +6409,7 @@ static inline s7_pointer make_simple_let(s7_scheme *sc)
static s7_pointer reuse_as_let(s7_scheme *sc, s7_pointer frame, s7_pointer next_frame)
{
/* we're reusing frame here as a let -- it was probably a pair */
-#if DEBUGGING
+#if S7_DEBUGGING
frame->debugger_bits = 0;
#endif
set_type(frame, T_LET | T_SAFE_PROCEDURE);
@@ -6412,7 +6421,7 @@ static s7_pointer reuse_as_let(s7_scheme *sc, s7_pointer frame, s7_pointer next_
static s7_pointer reuse_as_slot(s7_pointer slot, s7_pointer symbol, s7_pointer value)
{
-#if DEBUGGING
+#if S7_DEBUGGING
slot->debugger_bits = 0;
#endif
set_type(slot, T_SLOT);
@@ -6651,15 +6660,15 @@ static void remove_let_from_heap(s7_scheme *sc, s7_pointer lt)
if ((is_hash_table(val)) &&
(!hash_table_removed(val)))
{
- s7_pointer iterator, p;
+ s7_pointer iterator, ip;
uint32_t gc_iter;
int32_t i, len;
len = hash_table_entries(val);
iterator = s7_make_iterator(sc, val);
gc_iter = s7_gc_protect_1(sc, iterator);
- p = cons(sc, sc->F, sc->F);
- iterator_current(iterator) = p;
+ ip = cons(sc, sc->F, sc->F);
+ iterator_current(iterator) = ip;
set_mark_seq(iterator);
for (i = 0; i < len; i++)
{
@@ -6672,7 +6681,7 @@ static void remove_let_from_heap(s7_scheme *sc, s7_pointer lt)
hash_table_set_removed(val);
s7_gc_unprotect_at(sc, gc_iter);
iterator_current(iterator) = sc->nil;
- free_cell(sc, p);
+ free_cell(sc, ip);
free_cell(sc, iterator);
}
}
@@ -6818,7 +6827,7 @@ static void save_unlet(s7_scheme *sc)
* if these initial_slot values are added to unlet, they need explicit GC protection.
*/
/* (let ((begin +)) (with-let (unlet) (begin 1 2))) */
-#if DEBUGGING
+#if S7_DEBUGGING
if (k >= UNLET_ENTRIES)
fprintf(stderr, "unlet overflow\n");
#endif
@@ -6855,7 +6864,7 @@ 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_immutable(sym))
+ if (!is_immutable_symbol(sym))
{
if (is_t_procedure(x))
{
@@ -7037,11 +7046,9 @@ to the let env, and returns env."
check_method(sc, e, sc->varlet_symbol, args);
if (!is_let(e))
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"));
}
-
- 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);
@@ -7120,15 +7127,14 @@ static s7_pointer g_cutlet(s7_scheme *sc, s7_pointer args)
check_method(sc, e, sc->cutlet_symbol, args);
if (!is_let(e))
return(wrong_type_argument_with_type(sc, sc->cutlet_symbol, 1, e, a_let_string));
+ if (is_immutable(e))
+ return(immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->cutlet_symbol, e)));
}
/* besides removing the slot we have to make sure the symbol_id does not match else
* 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;
@@ -7201,6 +7207,7 @@ static s7_pointer sublet_1(s7_scheme *sc, s7_pointer e, s7_pointer bindings, s7_
p = car(x);
switch (type(p))
{
+ /* should this insist on one style of field arg? i.e. (cons sym val) throughout, or :sym val etc? */
case T_SYMBOL:
if (is_keyword(p))
sym = keyword_symbol(p);
@@ -7536,7 +7543,7 @@ static s7_pointer lint_let_ref;
static s7_pointer g_lint_let_ref(s7_scheme *sc, s7_pointer args)
{
s7_pointer lt;
- lt = find_symbol_unchecked(sc, opt_sym2(args)); /* cadar */
+ lt = symbol_to_value_unchecked(sc, opt_sym2(args)); /* cadar */
if (is_pair(lt))
{
lt = cdr(lt);
@@ -7554,35 +7561,10 @@ static s7_pointer g_lint_let_ref(s7_scheme *sc, s7_pointer args)
return(simple_wrong_type_argument(sc, sc->cdr_symbol, lt, T_PAIR));
}
-static s7_pointer local_lint_let_ref;
-static s7_pointer g_local_lint_let_ref(s7_scheme *sc, s7_pointer args)
-{
- s7_pointer lt;
- lt = local_symbol_value(opt_sym2(args));
- if (is_pair(lt))
- {
- lt = cdr(lt);
- if (is_let(lt))
- {
- s7_pointer y, sym;
- sym = opt_sym3(args);
- for (y = let_slots(lt); is_slot(y); y = next_slot(y))
- if (slot_symbol(y) == sym)
- return(slot_value(y));
- return(lint_let_ref_1(sc, outlet(lt), sym));
- }
- return(wrong_type_argument_with_type(sc, sc->let_ref_symbol, 1, lt, a_let_string));
- }
- return(simple_wrong_type_argument(sc, sc->cdr_symbol, lt, T_PAIR));
-}
-
-
static s7_pointer let_ref_chooser(s7_scheme *sc, s7_pointer f, int32_t args, s7_pointer expr, bool ops)
{
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)))
+ if ((is_h_safe_c_c(expr)) && (raw_opt1(expr) == lint_let_ref))
return(raw_opt1(expr));
if (optimize_op(expr) == HOP_SAFE_C_opSq_Q)
@@ -7597,8 +7579,6 @@ static s7_pointer let_ref_chooser(s7_scheme *sc, s7_pointer f, int32_t args, s7_
set_optimize_op(expr, HOP_SAFE_C_C);
set_opt_sym2(cdr(expr), cadr(arg1));
set_opt_sym3(cdr(expr), cadr(arg2));
- if (is_local_symbol(cdr(arg1)))
- return(local_lint_let_ref);
return(lint_let_ref);
}
}
@@ -7668,9 +7648,13 @@ static s7_pointer let_set_1(s7_scheme *sc, s7_pointer env, s7_pointer symbol, s7
{
if (is_constant_symbol(sc, symbol)) /* (let-set! (rootlet) 'pi #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 (is_syntax(slot_value(y)))
+ return(wrong_type_argument_with_type(sc, sc->let_set_symbol, 2, symbol, s7_make_string_wrapper(sc, "a non-syntactic keyword")));
+
if (slot_has_setter(y))
slot_set_value(y, call_setter(sc, y, value));
else slot_set_value(y, value);
@@ -7696,20 +7680,6 @@ static s7_pointer let_set_1(s7_scheme *sc, s7_pointer env, s7_pointer symbol, s7
if (has_let_set_fallback(env))
apply_known_method(sc, env, sc->let_set_fallback_symbol, sc->w = list_3(sc, env, symbol, value));
}
-#if 0
- /* why this? (let-ref (inlet 'a 1) 'lambda) -> lambda, but surely (let-set! (inlet 'a 1) 'lambda #f) should not clobber lambda! */
- else
- {
- y = global_slot(symbol);
- if (is_slot(y))
- {
- if (slot_has_setter(y))
- slot_set_value(y, call_setter(sc, y, value));
- else slot_set_value(y, value);
- return(slot_value(y));
- }
- }
-#endif
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)));
@@ -7762,7 +7732,7 @@ static s7_pointer let_set_p_ppp_2(s7_pointer p1, s7_pointer p2, s7_pointer p3)
return(let_set_1(cur_sc, p1, p2, p3));
}
-static s7_pointer lint_let_set, local_lint_let_set;
+static s7_pointer lint_let_set;
static s7_pointer g_lint_let_set_1(s7_scheme *sc, s7_pointer lt1, s7_pointer sym, s7_pointer val)
{
s7_pointer lt, x, y;
@@ -7771,7 +7741,7 @@ 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 S7_DEBUGGING
if (has_methods(lt))
fprintf(stderr, "has methods %s\n", __func__);
#endif
@@ -7824,21 +7794,13 @@ static s7_pointer g_lint_let_set_1(s7_scheme *sc, s7_pointer lt1, s7_pointer sym
static s7_pointer g_lint_let_set(s7_scheme *sc, s7_pointer args)
{
- return(g_lint_let_set_1(sc, find_symbol_checked(sc, opt_sym2(args)), opt_sym3(args), find_symbol_unchecked(sc, caddr(args))));
+ return(g_lint_let_set_1(sc, symbol_to_value_checked(sc, opt_sym2(args)), opt_sym3(args), symbol_to_value_unchecked(sc, caddr(args))));
}
-static s7_pointer g_local_lint_let_set(s7_scheme *sc, s7_pointer args)
-{
- return(g_lint_let_set_1(sc, local_symbol_value(opt_sym2(args)), opt_sym3(args), local_symbol_value(caddr(args))));
-}
-
-
static s7_pointer let_set_chooser(s7_scheme *sc, s7_pointer f, int32_t args, s7_pointer expr, bool ops)
{
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)))
+ if ((is_h_safe_c_c(expr)) && (raw_opt1(expr) == lint_let_set))
return(raw_opt1(expr));
if (optimize_op(expr) == HOP_SAFE_C_opSq_QS)
@@ -7856,9 +7818,6 @@ static s7_pointer let_set_chooser(s7_scheme *sc, s7_pointer f, int32_t args, s7_
set_optimize_op(expr, HOP_SAFE_C_C);
set_opt_sym2(cdr(expr), cadr(arg1));
set_opt_sym3(cdr(expr), cadr(arg2));
- if ((is_local_symbol(cdr(arg1))) &&
- (is_local_symbol(cdddr(expr))))
- return(local_lint_let_set);
return(lint_let_set);
}
}
@@ -8042,8 +8001,7 @@ static s7_pointer g_set_outlet(s7_scheme *sc, s7_pointer args)
return(new_outer);
}
-
-static s7_pointer find_symbol(s7_scheme *sc, s7_pointer symbol)
+static s7_pointer symbol_to_slot(s7_scheme *sc, s7_pointer symbol)
{
s7_pointer x;
@@ -8066,10 +8024,10 @@ static s7_pointer find_symbol(s7_scheme *sc, s7_pointer symbol)
return(global_slot(symbol));
}
-#if WITH_GCC && DEBUGGING
-static s7_pointer find_symbol_unchecked_1(s7_scheme *sc, s7_pointer symbol)
+#if WITH_GCC && S7_DEBUGGING
+static s7_pointer symbol_to_value_unchecked_1(s7_scheme *sc, s7_pointer symbol)
#else
-static inline s7_pointer find_symbol_unchecked(s7_scheme *sc, s7_pointer symbol) /* find_symbol_checked includes the unbound_variable call */
+static inline s7_pointer symbol_to_value_unchecked(s7_scheme *sc, s7_pointer symbol) /* symbol_to_value_checked includes the unbound_variable call */
#endif
{
s7_pointer x;
@@ -8108,7 +8066,7 @@ static inline s7_pointer find_symbol_unchecked(s7_scheme *sc, s7_pointer symbol)
s7_pointer s7_slot(s7_scheme *sc, s7_pointer symbol)
{
- return(find_symbol(sc, symbol));
+ return(symbol_to_slot(sc, symbol));
}
@@ -8131,7 +8089,7 @@ void s7_slot_set_real_value(s7_scheme *sc, s7_pointer slot, s7_double value)
}
-static s7_pointer find_local_symbol(s7_scheme *sc, s7_pointer symbol, s7_pointer e)
+static s7_pointer symbol_to_local_slot(s7_scheme *sc, s7_pointer symbol, s7_pointer e)
{
if (!is_let(e))
return(global_slot(symbol));
@@ -8151,7 +8109,7 @@ s7_pointer s7_symbol_value(s7_scheme *sc, s7_pointer sym)
{
s7_pointer x;
- x = find_symbol(sc, sym);
+ x = symbol_to_slot(sc, sym);
if (is_slot(x))
return(slot_value(x));
@@ -8194,7 +8152,7 @@ s7_pointer s7_symbol_local_value(s7_scheme *sc, s7_pointer sym, s7_pointer local
/* -------------------------------- symbol->value -------------------------------- */
-#define find_global_symbol_checked(Sc, Sym) ((is_global(Sym)) ? slot_value(global_slot(Sym)) : find_symbol_checked(Sc, Sym))
+#define find_global_symbol_checked(Sc, Sym) ((is_global(Sym)) ? slot_value(global_slot(Sym)) : symbol_to_value_checked(Sc, Sym))
static s7_pointer g_s7_let_ref_fallback(s7_scheme *sc, s7_pointer args);
@@ -8239,7 +8197,7 @@ s7_pointer s7_symbol_set_value(s7_scheme *sc, s7_pointer sym, s7_pointer val)
{
s7_pointer x;
/* if immutable should this return an error? */
- x = find_symbol(sc, sym);
+ x = symbol_to_slot(sc, sym);
if (is_slot(x))
slot_set_value(x, val); /* with_hook? */
return(val);
@@ -8334,7 +8292,7 @@ static bool do_symbol_is_safe(s7_scheme *sc, s7_pointer sym, s7_pointer e)
{
return((is_slot(global_slot(sym))) ||
(direct_assq(sym, e)) ||
- (is_slot(find_symbol(sc, sym))));
+ (is_slot(symbol_to_slot(sc, sym))));
}
static bool let_symbol_is_safe(s7_scheme *sc, s7_pointer sym, s7_pointer e)
@@ -8344,14 +8302,14 @@ static bool let_symbol_is_safe(s7_scheme *sc, s7_pointer sym, s7_pointer e)
if (is_null(e))
e = sc->rootlet;
return((!is_with_let_let(e)) &&
- (is_slot(find_symbol(sc, sym))));
+ (is_slot(symbol_to_slot(sc, sym))));
}
static bool let_star_symbol_is_safe(s7_scheme *sc, s7_pointer sym, s7_pointer e)
{
return((symbol_is_in_list(sc, sym)) ||
(is_slot(global_slot(sym))) ||
- ((is_let(e)) && (!is_with_let_let(e)) && (is_slot(find_symbol(sc, sym)))));
+ ((is_let(e)) && (!is_with_let_let(e)) && (is_slot(symbol_to_slot(sc, sym)))));
}
static bool pair_symbol_is_safe(s7_scheme *sc, s7_pointer sym, s7_pointer e)
@@ -8394,8 +8352,6 @@ static s7_pointer collect_parameters(s7_scheme *sc, s7_pointer lst, s7_pointer e
}
-/* make macros and closures */
-
typedef enum {OPT_F, OPT_T, OPT_OOPS} opt_t;
static opt_t optimize(s7_scheme *sc, s7_pointer code, int32_t hop, s7_pointer e);
@@ -8462,7 +8418,7 @@ static s7_pointer make_macro(s7_scheme *sc, opcode_t op)
(!is_let(sc->envir)))
set_type(sc->code, T_EXPANSION | T_SYMBOL); /* see comment under READ_TOK */
/* symbol? macro name has already been checked, find name in environment, and define it */
- cx = find_local_symbol(sc, sc->code, sc->envir);
+ cx = symbol_to_local_slot(sc, sc->code, sc->envir);
if (is_slot(cx))
slot_set_value_with_hook(cx, mac);
else s7_make_slot(sc, sc->envir, sc->code, mac); /* was current but we've checked immutable already */
@@ -8519,17 +8475,38 @@ static int32_t closure_length(s7_scheme *sc, s7_pointer e)
if ((has_closure_let(Fnc)) && (is_let(closure_let(Fnc)))) \
{ \
s7_pointer val; \
- val = find_local_symbol(Sc, Sym, closure_let(Fnc)); \
+ val = symbol_to_local_slot(Sc, Sym, closure_let(Fnc)); \
if ((!is_slot(val)) && (is_let(outlet(closure_let(Fnc))))) \
- val = find_local_symbol(Sc, Sym, outlet(closure_let(Fnc))); \
+ val = symbol_to_local_slot(Sc, Sym, outlet(closure_let(Fnc))); \
if (is_slot(val)) \
return(slot_value(val)); \
}
+
+static s7_pointer copy_tree_with_type(s7_scheme *sc, s7_pointer tree)
+{
+ /* if sc->safety > NO_SAFETY, '(1 2) is set immutable by the reader, but eval (in that safety case) calls
+ * copy_body on the incoming tree, so we have to preserve T_IMMUTABLE in that case.
+ */
+#if WITH_GCC
+ #define COPY_TREE_WITH_TYPE(P) ({s7_pointer _p; _p = P; \
+ cons_unchecked_with_type(sc, _p, (is_pair(car(_p))) ? copy_tree_with_type(sc, car(_p)) : car(_p), \
+ (is_pair(cdr(_p))) ? copy_tree_with_type(sc, cdr(_p)) : cdr(_p));})
+#else
+ #define COPY_TREE_WITH_TYPE(P) copy_tree_with_type(sc, P)
+#endif
+
+ return(cons_unchecked_with_type(sc, tree,
+ (is_pair(car(tree))) ? COPY_TREE_WITH_TYPE(car(tree)) : car(tree),
+ (is_pair(cdr(tree))) ? COPY_TREE_WITH_TYPE(cdr(tree)) : cdr(tree)));
+}
+
static s7_pointer copy_tree(s7_scheme *sc, s7_pointer tree)
{
#if WITH_GCC
- #define COPY_TREE(P) ({s7_pointer _p; _p = P; cons_unchecked(sc, (is_pair(car(_p))) ? copy_tree(sc, car(_p)) : car(_p), (is_pair(cdr(_p))) ? copy_tree(sc, cdr(_p)) : cdr(_p));})
+ #define COPY_TREE(P) ({s7_pointer _p; _p = P; \
+ cons_unchecked(sc, (is_pair(car(_p))) ? copy_tree(sc, car(_p)) : car(_p), \
+ (is_pair(cdr(_p))) ? copy_tree(sc, cdr(_p)) : cdr(_p));})
#else
#define COPY_TREE(P) copy_tree(sc, P)
#endif
@@ -8544,6 +8521,8 @@ static inline void annotate_expansion(s7_pointer p)
if ((is_symbol(car(p))) &&
(is_pair(cdr(p))))
{
+ if (is_syntactic(car(p)))
+ set_car(p, syntax_symbol(slot_value(initial_slot(car(p))))); /* clear syntax opt */
set_opt_back(p);
set_overlay(cdr(p));
}
@@ -8557,16 +8536,23 @@ static inline void annotate_expansion(s7_pointer p)
annotate_expansion(car(p));
}
+
+static bool tree_is_cyclic(s7_scheme *sc, s7_pointer tree);
+
static s7_pointer copy_body(s7_scheme *sc, s7_pointer p)
{
- /* ideally we'd use tree_len here, but it currently does not protect against cycles */
+ if ((sc->safety > NO_SAFETY) &&
+ (tree_is_cyclic(sc, p)))
+ s7_error(sc, sc->wrong_type_arg_symbol, s7_make_string_wrapper(sc, "copy: tree is cyclic"));
if (8192 >= (sc->free_heap_top - sc->free_heap))
{
gc(sc);
while (8192 >= (sc->free_heap_top - sc->free_heap))
resize_heap(sc);
}
- sc->w = copy_tree(sc, p);
+ if (sc->safety > NO_SAFETY)
+ sc->w = copy_tree_with_type(sc, p);
+ else sc->w = copy_tree(sc, p);
annotate_expansion(sc->w);
p = sc->w;
sc->w = sc->nil;
@@ -8588,6 +8574,7 @@ static s7_pointer copy_closure(s7_scheme *sc, s7_pointer fnc)
return(x);
}
+
/* -------------------------------- defined? -------------------------------- */
static s7_pointer g_is_defined(s7_scheme *sc, s7_pointer args)
{
@@ -8631,7 +8618,7 @@ static s7_pointer g_is_defined(s7_scheme *sc, s7_pointer args)
return(sc->F);
}
- x = find_local_symbol(sc, sym, e);
+ x = symbol_to_local_slot(sc, sym, e);
if (is_slot(x))
return(sc->T);
@@ -8645,7 +8632,7 @@ static s7_pointer g_is_defined(s7_scheme *sc, s7_pointer args)
if (is_global(sym))
return(sc->T);
}
- return(make_boolean(sc, is_slot(find_symbol(sc, sym))));
+ return(make_boolean(sc, is_slot(symbol_to_slot(sc, sym))));
}
@@ -8655,7 +8642,7 @@ bool s7_is_defined(s7_scheme *sc, const char *name)
x = s7_symbol_table_find_name(sc, name);
if (x)
{
- x = find_symbol(sc, x);
+ x = symbol_to_slot(sc, x);
return(is_slot(x));
}
return(false);
@@ -8665,7 +8652,7 @@ static bool is_defined_b_p(s7_pointer p)
{
if (!is_symbol(p))
simple_wrong_type_argument(cur_sc, cur_sc->is_defined_symbol, p, T_SYMBOL);
- return(is_slot(find_symbol(cur_sc, p)));
+ return(is_slot(symbol_to_slot(cur_sc, p)));
}
static bool is_defined_b_pp(s7_pointer p, s7_pointer e) {return(g_is_defined(cur_sc, set_plist_2(cur_sc, p, e)) != cur_sc->F);}
@@ -8677,7 +8664,7 @@ void s7_define(s7_scheme *sc, s7_pointer envir, s7_pointer symbol, s7_pointer va
if ((envir == sc->nil) ||
(envir == sc->rootlet))
envir = sc->shadow_rootlet;
- x = find_local_symbol(sc, symbol, envir);
+ x = symbol_to_local_slot(sc, symbol, envir);
if (is_slot(x))
slot_set_value_with_hook(x, value);
else
@@ -8747,7 +8734,6 @@ char *s7_symbol_documentation(s7_scheme *sc, s7_pointer sym)
return(NULL);
}
-
char *s7_symbol_set_documentation(s7_scheme *sc, s7_pointer sym, const char *new_doc)
{
if (is_keyword(sym)) return(NULL);
@@ -8768,7 +8754,6 @@ bool s7_is_keyword(s7_pointer obj)
return(is_keyword(obj));
}
-
static s7_pointer g_is_keyword(s7_scheme *sc, s7_pointer args)
{
#define H_is_keyword "(keyword? obj) returns #t if obj is a keyword, (keyword? :rest) -> #t"
@@ -8793,7 +8778,6 @@ s7_pointer s7_make_keyword(s7_scheme *sc, const char *key)
return(sym);
}
-
static s7_pointer g_string_to_keyword(s7_scheme *sc, s7_pointer args)
{
#define H_string_to_keyword "(string->keyword str) prepends ':' to str and defines that as a keyword"
@@ -9057,7 +9041,10 @@ static s7_pointer copy_stack(s7_scheme *sc, s7_pointer old_v, int64_t top)
s7_pointer p;
p = ov[i]; /* args */
if (is_pair(p)) /* args need not be a list (it can be a port or #f, etc) */
- nv[i] = protected_list_copy(sc, p); /* args (copy is needed -- see s7test.scm) */
+ {
+ nv[i] = protected_list_copy(sc, p); /* args (copy is needed -- see s7test.scm) */
+ set_type(nv[i], typeflag(p)); /* carry over T_IMMUTABLE etc */
+ }
/* lst can be dotted or circular here. The circular list only happens in a case like:
* (dynamic-wind (lambda () (eq? (let ((lst (cons 1 2))) (set-cdr! lst lst) lst) (call/cc (lambda (k) k)))) (lambda () #f) (lambda () #f))
*/
@@ -9176,11 +9163,12 @@ s7_pointer s7_make_continuation(s7_scheme *sc)
return(x);
}
-static void let_temp_done(s7_scheme *sc, s7_pointer args, s7_pointer code)
+static void let_temp_done(s7_scheme *sc, s7_pointer args, s7_pointer code, s7_pointer let)
{
push_stack(sc, OP_EVAL_DONE, sc->args, sc->code);
sc->args = args;
sc->code = code;
+ sc->envir = let;
eval(sc, OP_LET_TEMP_DONE);
}
@@ -9189,7 +9177,6 @@ static bool check_for_dynamic_winds(s7_scheme *sc, s7_pointer c)
/* called only from call_with_current_continuation */
int64_t i, s_base = 0, c_base = -1;
opcode_t op;
-
for (i = s7_stack_top(sc) - 1; i > 0; i -= 4)
{
op = stack_op(sc->stack, i);
@@ -9228,7 +9215,7 @@ static bool check_for_dynamic_winds(s7_scheme *sc, s7_pointer c)
}
}
}
- else let_temp_done(sc, stack_args(sc->stack, i), stack_code(sc->stack, i));
+ else let_temp_done(sc, stack_args(sc->stack, i), stack_code(sc->stack, i), stack_let(sc->stack, i));
}
break;
@@ -9272,11 +9259,7 @@ static bool check_for_dynamic_winds(s7_scheme *sc, s7_pointer c)
{
if (op == OP_DEACTIVATE_GOTO)
call_exit_active(stack_args(continuation_stack(c), i)) = true;
- else
- {
- if (op == OP_LET_TEMP_DONE)
- let_temp_done(sc, stack_args(continuation_stack(c), i), stack_code(continuation_stack(c), i));
- }
+ /* not let_temp_done here! */
}
}
return(true);
@@ -9355,7 +9338,8 @@ static s7_pointer g_call_cc(s7_scheme *sc, s7_pointer args)
static void call_with_exit(s7_scheme *sc)
{
- int64_t i, new_stack_top, quit = 0;
+ int64_t i, new_stack_top;
+ int quit = 0;
if (!call_exit_active(sc->code))
{
@@ -9408,7 +9392,7 @@ static void call_with_exit(s7_scheme *sc)
break;
case OP_LET_TEMP_DONE:
- let_temp_done(sc, stack_args(sc->stack, i), stack_code(sc->stack, i));
+ let_temp_done(sc, stack_args(sc->stack, i), stack_code(sc->stack, i), stack_let(sc->stack, i));
break;
/* call/cc does not close files, but I think call-with-exit should */
@@ -10119,9 +10103,6 @@ s7_pointer s7_make_ratio(s7_scheme *sc, s7_int a, s7_int b)
return(x);
}
-/* in fc19 as a guest running in virtualbox on OSX, the line a /= divisor can abort with an arithmetic exception (SIGFPE)
- * if leastfix/mostfix -- apparently this is a bug in virtualbox.
- */
#define WITH_OVERFLOW_ERROR true
@@ -10130,9 +10111,7 @@ s7_pointer s7_make_ratio(s7_scheme *sc, s7_int a, s7_int b)
#if (!WITH_PURE_S7) && (!WITH_GMP)
static s7_pointer exact_to_inexact(s7_scheme *sc, s7_pointer x)
{
- /* this is tricky because a big int32_t can mess up when turned into a double:
- * (truncate (exact->inexact most-positive-fixnum)) -> -9223372036854775808
- */
+ /* this is tricky because a big int32_t can mess up when turned into a double: (truncate (exact->inexact most-positive-fixnum)) -> -9223372036854775808 */
switch (type(x))
{
case T_INTEGER: return(make_real(sc, (s7_double)(integer(x))));
@@ -10900,15 +10879,17 @@ static s7_pointer number_to_string_p(s7_pointer p)
}
-static void prepare_temporary_string(s7_scheme *sc, int32_t len, int32_t which)
+static s7_pointer prepare_temporary_string(s7_scheme *sc, int32_t len, int32_t which)
{
s7_pointer p;
p = sc->tmp_strs[which];
+ set_type(p, T_STRING | T_SAFE_PROCEDURE); /* clear left overs like T_BYTE_VECTOR or T_IMMUTABLE */
if (len > string_temp_true_length(p))
{
string_value(p) = (char *)realloc(string_value(p), len * sizeof(char));
string_temp_true_length(p) = len;
}
+ return(p);
}
static s7_pointer g_number_to_string_1(s7_scheme *sc, s7_pointer args, bool temporary)
@@ -10982,8 +10963,7 @@ static s7_pointer g_number_to_string_1(s7_scheme *sc, s7_pointer args, bool temp
if (temporary)
{
s7_pointer p;
- prepare_temporary_string(sc, nlen + 1, 1);
- p = sc->tmp_strs[1];
+ p = prepare_temporary_string(sc, nlen + 1, 1);
string_length(p) = nlen;
memcpy((void *)(string_value(p)), (void *)res, nlen);
string_value(p)[nlen] = 0;
@@ -11099,13 +11079,12 @@ static void init_ctables(void)
number_table[(unsigned char)'#'] = true;
}
-
#define is_white_space(C) white_space[C]
/* this is much faster than C's isspace, and does not depend on the current locale.
* if c == EOF (-1), it indexes into the empty (0) slot we preallocated below white_space
*/
-
+/* -------------------------------- *#readers* -------------------------------- */
static s7_pointer check_sharp_readers(s7_scheme *sc, const char *name)
{
s7_pointer reader, value, args;
@@ -11126,9 +11105,7 @@ static s7_pointer check_sharp_readers(s7_scheme *sc, const char *name)
if (need_loader_port)
clear_loader_port(sc->input_port);
- /* normally read* can't read from sc->input_port if it is in use by the loader,
- * but here we are deliberately making that possible.
- */
+ /* normally read* can't read from sc->input_port if it is in use by the loader, but here we are deliberately making that possible. */
for (reader = slot_value(sc->sharp_readers); is_not_null(reader); reader = cdr(reader))
{
if (name[0] == s7_character(caar(reader)))
@@ -11146,7 +11123,6 @@ static s7_pointer check_sharp_readers(s7_scheme *sc, const char *name)
return(value);
}
-
static s7_pointer g_sharp_readers_set(s7_scheme *sc, s7_pointer args)
{
/* new value must be either () or a proper list of conses (char . func) */
@@ -11281,14 +11257,14 @@ static s7_pointer make_sharp_constant(s7_scheme *sc, char *name, int32_t radix,
return(unknown_sharp_constant(sc, name));
- /* -------- #o #d #x #b -------- */
+ /* -------- #o #x #b -------- */
case 'o': /* #o (octal) */
case 'x': /* #x (hex) */
case 'b': /* #b (binary) */
{
int32_t num_at = 1;
/* the #b or whatever overrides any radix passed in earlier */
- x = make_atom(sc, (char *)(name + num_at), (name[0] == 'o') ? 8 : ((name[0] == 'x') ? 16 : ((name[0] == 'b') ? 2 : 10)), NO_SYMBOLS, with_error);
+ x = make_atom(sc, (char *)(name + num_at), (name[0] == 'o') ? 8 : ((name[0] == 'x') ? 16 : 2), NO_SYMBOLS, with_error);
if (is_abnormal(x))
return(unknown_sharp_constant(sc, name));
return(x);
@@ -11446,8 +11422,26 @@ static s7_int string_to_integer(const char *str, int32_t radix, bool *overflow)
dig = digits[(unsigned char)(*tmp++)];
if (dig >= radix) break;
#if HAVE_OVERFLOW_CHECKS
- if (multiply_overflow(lval, (s7_int)radix, &lval)) break;
- if (add_overflow(lval, (s7_int)dig, &lval)) break;
+ {
+ s7_int oval = 0;
+ if (multiply_overflow(lval, (s7_int)radix, &oval))
+ {
+ /* maybe a bad idea! #xffffffffffffffff -> -1??? this is needed for 64-bit number hacks (see s7test.scm bit-reverse) */
+ if ((radix == 16) &&
+ (digits[(unsigned char)(*tmp)] >= radix))
+ {
+ lval -= 576460752303423488LL; /* turn off sign bit */
+ lval *= radix;
+ lval += dig;
+ lval -= 9223372036854775807LL;
+ return(lval - 1);
+ }
+ else lval = oval; /* old case */
+ break;
+ }
+ else lval = oval;
+ if (add_overflow(lval, (s7_int)dig, &lval)) break;
+ }
#else
lval = dig + (lval * radix);
dig = digits[(unsigned char)(*tmp++)];
@@ -12212,6 +12206,8 @@ static s7_pointer make_atom(s7_scheme *sc, char *q, int32_t radix, bool want_sym
}
+/* -------------------------------- string->number -------------------------------- */
+
static s7_pointer s7_string_to_number(s7_scheme *sc, char *str, int32_t radix)
{
s7_pointer x;
@@ -12221,7 +12217,6 @@ static s7_pointer s7_string_to_number(s7_scheme *sc, char *str, int32_t radix)
return(sc->F);
}
-
static s7_pointer g_string_to_number_1(s7_scheme *sc, s7_pointer args, s7_pointer caller)
{
#define H_string_to_number "(string->number str (radix 10)) converts str into a number. \
@@ -12281,7 +12276,6 @@ the optional 'radix' argument is ignored: (string->number \"#x11\" 2) -> 17 not
return(s7_string_to_number(sc, str, radix));
}
-
static s7_pointer g_string_to_number(s7_scheme *sc, s7_pointer args)
{
return(g_string_to_number_1(sc, args, sc->string_to_number_symbol));
@@ -13612,9 +13606,9 @@ static s7_pointer g_expt(s7_scheme *sc, s7_pointer args)
if (s7_is_one(pw))
{
- if (s7_is_integer(pw))
+ if (s7_is_integer(pw)) /* (expt x 1) */
return(n);
- if (is_rational(n))
+ if (is_rational(n)) /* (expt ratio 1.0) */
return(make_real(sc, rational_to_double(sc, n)));
return(n);
}
@@ -14350,7 +14344,7 @@ static s7_double floor_d_d(s7_double x)
static s7_int floor_i_p(s7_pointer p)
{
if (is_t_integer(p)) return(s7_integer(p));
- if (is_t_real(p)) return((s7_int)floor(real(p)));
+ if (is_t_real(p)) return(floor_i_d(real(p)));
if (is_t_ratio(p)) return((s7_int)(floor(fraction(p))));
s7_wrong_type_arg_error(cur_sc, "floor", 0, p, "a real number");
return(0);
@@ -14422,6 +14416,15 @@ static s7_double ceiling_d_d(s7_double x)
return(ceil(x));
}
+static s7_int ceiling_i_p(s7_pointer p)
+{
+ if (is_t_integer(p)) return(s7_integer(p));
+ if (is_t_real(p)) return(ceiling_i_d(real(p)));
+ if (is_t_ratio(p)) return((s7_int)(ceil(fraction(p))));
+ s7_wrong_type_arg_error(cur_sc, "ceiling", 0, p, "a real number");
+ return(0);
+}
+
/* -------------------------------- truncate -------------------------------- */
static s7_pointer g_truncate(s7_scheme *sc, s7_pointer args)
@@ -14464,7 +14467,14 @@ static s7_double truncate_d_d(s7_double x)
simple_out_of_range(cur_sc, cur_sc->truncate_symbol, make_real(cur_sc, x), its_nan_string);
if (is_inf(x))
simple_out_of_range(cur_sc, cur_sc->truncate_symbol, make_real(cur_sc, x), its_infinite_string);
- if (x > 0.0) return(floor(x));
+ if (x > 0.0)
+ {
+ if (x > s7_int_max)
+ simple_out_of_range(cur_sc, cur_sc->truncate_symbol, make_real(cur_sc, x), its_too_large_string);
+ return(floor(x));
+ }
+ if (x < s7_int_min)
+ simple_out_of_range(cur_sc, cur_sc->truncate_symbol, make_real(cur_sc, x), its_too_large_string);
return(ceil(x));
}
@@ -14770,7 +14780,7 @@ static s7_pointer g_mod_si(s7_scheme *sc, s7_pointer args)
s7_pointer x;
s7_int y;
- x = find_symbol_unchecked(sc, car(args));
+ x = symbol_to_value_unchecked(sc, car(args));
y = integer(cadr(args));
if (is_integer(x))
@@ -15161,7 +15171,7 @@ static s7_pointer g_add(s7_scheme *sc, s7_pointer args)
}
-static s7_pointer add_2, add_1s, add_s1, add_cs1, add_cl1, add_si, add_sf, add_fs;
+static s7_pointer add_2, add_1s, add_s1, add_cs1, add_si, add_sf, add_fs;
static s7_pointer add_ratios(s7_scheme *sc, s7_pointer x, s7_pointer y)
{
@@ -15314,16 +15324,7 @@ static s7_pointer g_add_s1(s7_scheme *sc, s7_pointer args)
static s7_pointer g_add_cs1(s7_scheme *sc, s7_pointer args)
{
s7_pointer x;
- x = find_symbol_unchecked(sc, car(args));
- if (is_integer(x))
- return(make_integer(sc, integer(x) + 1));
- return(g_add_s1_1(sc, x, args));
-}
-
-static s7_pointer g_add_cl1(s7_scheme *sc, s7_pointer args)
-{
- s7_pointer x;
- x = local_symbol_value(car(args));
+ x = symbol_to_value_unchecked(sc, car(args));
if (is_integer(x))
return(make_integer(sc, integer(x) + 1));
return(g_add_s1_1(sc, x, args));
@@ -15354,7 +15355,7 @@ static s7_pointer g_add_si(s7_scheme *sc, s7_pointer args)
s7_pointer x;
s7_int n;
- x = find_symbol_unchecked(sc, car(args));
+ x = symbol_to_value_unchecked(sc, car(args));
n = integer(cadr(args));
if (is_integer(x))
#if HAVE_OVERFLOW_CHECKS
@@ -15384,7 +15385,7 @@ static s7_pointer g_add_sf(s7_scheme *sc, s7_pointer args)
s7_pointer x;
s7_double n;
- x = find_symbol_unchecked(sc, car(args));
+ x = symbol_to_value_unchecked(sc, car(args));
n = real(cadr(args));
switch (type(x))
{
@@ -15403,7 +15404,7 @@ static s7_pointer g_add_fs(s7_scheme *sc, s7_pointer args)
s7_pointer x;
s7_double n;
- x = find_symbol_unchecked(sc, cadr(args));
+ x = symbol_to_value_unchecked(sc, cadr(args));
n = real(car(args));
switch (type(x))
{
@@ -15426,7 +15427,7 @@ static s7_pointer g_add_f_sf(s7_scheme *sc, s7_pointer args)
x = real(car(args));
vargs = cdadr(args);
- s = find_symbol_unchecked(sc, car(vargs));
+ s = symbol_to_value_unchecked(sc, car(vargs));
y = real(cadr(vargs));
if (is_t_real(s))
@@ -15752,7 +15753,7 @@ static s7_pointer g_subtract(s7_scheme *sc, s7_pointer args)
}
-static s7_pointer subtract_1, subtract_s1, subtract_cs1, subtract_cl1, subtract_2, subtract_csn;
+static s7_pointer subtract_1, subtract_s1, subtract_cs1, subtract_2, subtract_csn;
static s7_pointer g_subtract_1(s7_scheme *sc, s7_pointer args)
{
s7_pointer p;
@@ -15900,16 +15901,7 @@ static s7_pointer minus_c1(s7_scheme *sc, s7_pointer x)
static s7_pointer g_subtract_cs1(s7_scheme *sc, s7_pointer args)
{
s7_pointer x;
- x = find_symbol_unchecked(sc, car(args));
- if (is_integer(x))
- return(make_integer(sc, integer(x) - 1));
- return(minus_c1(sc, x));
-}
-
-static s7_pointer g_subtract_cl1(s7_scheme *sc, s7_pointer args)
-{
- s7_pointer x;
- x = local_symbol_value(car(args));
+ x = symbol_to_value_unchecked(sc, car(args));
if (is_integer(x))
return(make_integer(sc, integer(x) - 1));
return(minus_c1(sc, x));
@@ -15918,8 +15910,7 @@ static s7_pointer g_subtract_cl1(s7_scheme *sc, s7_pointer args)
static s7_pointer g_subtract_s1(s7_scheme *sc, s7_pointer args)
{
s7_pointer x;
- x = car(args);
- /* this one seems to hit reals as often as integers */
+ x = car(args); /* this one seems to hit reals as often as integers */
switch (type(x))
{
#if HAVE_OVERFLOW_CHECKS
@@ -15947,7 +15938,7 @@ static s7_pointer g_subtract_csn(s7_scheme *sc, s7_pointer args)
s7_pointer x;
s7_int n;
- x = find_symbol_unchecked(sc, car(args));
+ x = symbol_to_value_unchecked(sc, car(args));
n = s7_integer(cadr(args));
if (is_integer(x))
return(make_integer(sc, integer(x) - n));
@@ -15980,7 +15971,7 @@ static s7_pointer g_subtract_sf(s7_scheme *sc, s7_pointer args)
s7_pointer x;
s7_double n;
- x = find_symbol_unchecked(sc, car(args));
+ x = symbol_to_value_unchecked(sc, car(args));
n = real(cadr(args));
switch (type(x))
{
@@ -16020,7 +16011,7 @@ static s7_pointer g_subtract_fs(s7_scheme *sc, s7_pointer args)
s7_pointer x;
s7_double n;
- x = find_symbol_unchecked(sc, cadr(args));
+ x = symbol_to_value_unchecked(sc, cadr(args));
n = real(car(args));
switch (type(x))
{
@@ -16471,7 +16462,7 @@ static s7_pointer g_multiply_si(s7_scheme *sc, s7_pointer args)
s7_pointer x;
s7_int n;
- x = find_symbol_unchecked(sc, car(args));
+ x = symbol_to_value_unchecked(sc, car(args));
n = integer(cadr(args));
switch (type(x))
@@ -16508,7 +16499,7 @@ static s7_pointer g_multiply_is(s7_scheme *sc, s7_pointer args)
s7_pointer x;
s7_int n;
- x = find_symbol_unchecked(sc, cadr(args));
+ x = symbol_to_value_unchecked(sc, cadr(args));
n = integer(car(args));
switch (type(x))
@@ -16546,7 +16537,7 @@ static s7_pointer g_multiply_fs(s7_scheme *sc, s7_pointer args)
s7_double scl;
scl = real(car(args));
- x = find_symbol_unchecked(sc, cadr(args));
+ x = symbol_to_value_unchecked(sc, cadr(args));
switch (type(x))
{
@@ -16566,7 +16557,7 @@ static s7_pointer g_multiply_sf(s7_scheme *sc, s7_pointer args)
s7_double scl;
scl = real(cadr(args));
- x = find_symbol_unchecked(sc, car(args));
+ x = symbol_to_value_unchecked(sc, car(args));
switch (type(x))
{
@@ -16584,7 +16575,7 @@ static s7_pointer sqr_ss;
static s7_pointer g_sqr_ss(s7_scheme *sc, s7_pointer args)
{
s7_pointer x;
- x = find_symbol_unchecked(sc, car(args));
+ x = symbol_to_value_unchecked(sc, car(args));
switch (type(x))
{
@@ -16617,8 +16608,31 @@ static s7_pointer g_sqr_ss(s7_scheme *sc, s7_pointer args)
}
#endif /* with-gmp */
-static s7_int multiply_i_ii(s7_int i1, s7_int i2) {return(i1 * i2);}
-static s7_int multiply_i_iii(s7_int i1, s7_int i2, s7_int i3) {return(i1 * i2 * i3);}
+static s7_int multiply_i_ii(s7_int i1, s7_int i2)
+{
+#if HAVE_OVERFLOW_CHECKS
+ s7_int val;
+ if (multiply_overflow(i1, i2, &val))
+ return(s7_int_max);
+ return(val);
+#else
+ return(i1 * i2);
+#endif
+}
+
+static s7_int multiply_i_iii(s7_int i1, s7_int i2, s7_int i3)
+{
+#if HAVE_OVERFLOW_CHECKS
+ s7_int val1, val2;
+ if (multiply_overflow(i1, i2, &val1))
+ return(s7_int_max);
+ if (multiply_overflow(val1, i3, &val2))
+ return(s7_int_max);
+ return(val2);
+#else
+ return(i1 * i2 * i3);
+#endif
+}
static s7_double multiply_d_d(s7_double x) {return(x);}
static s7_double multiply_d_dd(s7_double x1, s7_double x2) {return(x1 * x2);}
@@ -16627,7 +16641,7 @@ static s7_double multiply_d_dddd(s7_double x1, s7_double x2, s7_double x3, s7_do
static s7_double multiply_d_id(s7_int x1, s7_double x2) {return((s7_double)x1 * x2);}
#if (!WITH_GMP)
static s7_pointer mul_p_dd(s7_double x1, s7_double x2) {return(make_real(cur_sc, x1 * x2));}
-static s7_pointer mul_p_ii(s7_int x1, s7_int x2) {return(make_integer(cur_sc, x1 * x2));}
+static s7_pointer mul_p_ii(s7_int x1, s7_int x2) {return(make_integer(cur_sc, multiply_i_ii(x1, x2)));}
static s7_pointer multiply_p_pp(s7_pointer x1, s7_pointer x2) {return(g_multiply_2(cur_sc, set_plist_2(cur_sc, x1, x2)));}
#endif
@@ -16654,381 +16668,232 @@ static s7_pointer g_divide(s7_scheme *sc, s7_pointer args)
#define H_divide "(/ x1 ...) divides its first argument by the rest, or inverts the first if there is only one argument"
#define Q_divide pcl_n
- s7_pointer x, p;
- s7_int num_a, den_a;
- s7_double rl_a, im_a;
+ s7_pointer x, y, p;
x = car(args);
p = cdr(args);
- if (is_null(p))
+
+ if (is_null(p)) /* (/ x) */
{
if (!is_number(x))
method_or_bust_with_type_one_arg(sc, x, sc->divide_symbol, args, a_number_string);
- if (s7_is_zero(x))
+ if (s7_is_zero(x)) /* (/ 0) */
return(division_by_zero_error(sc, sc->divide_symbol, args));
return(s7_invert(sc, x));
}
+ if (is_null(cdr(p)))
+ y = cadr(args);
+ else y = g_multiply(sc, p);
switch (type(x))
{
- case T_INTEGER:
- num_a = integer(x);
- if (num_a == 0)
- {
- bool return_nan = false, return_real_zero = false;
- for (; is_pair(p); p = cdr(p))
- {
- s7_pointer n;
- n = car(p);
- if (!s7_is_number(n))
- {
- n = check_values(sc, n, p);
- if (!s7_is_number(n))
- return(wrong_type_argument_with_type(sc, sc->divide_symbol, position_of(p, args), n, a_number_string));
- }
- if (s7_is_zero(n))
- return(division_by_zero_error(sc, sc->divide_symbol, args));
- if (type(n) > T_RATIO)
- {
- return_real_zero = true;
- if (is_NaN(s7_real_part(n)))
- return_nan = true;
- }
- }
- if (return_nan)
- return(real_NaN);
- if (return_real_zero)
- return(real_zero);
- return(small_int(0));
- }
-
- DIVIDE_INTEGERS:
-#if WITH_GMP
- if ((num_a > s7_int32_max) ||
- (num_a < s7_int32_min))
- return(big_divide(sc, cons(sc, s7_int_to_big_integer(sc, num_a), p)));
-#endif
- x = car(p);
- p = cdr(p);
-
- switch (type(x))
+ case T_INTEGER:
+ switch (type(y))
{
+ /* -------- integer x -------- */
case T_INTEGER:
- if (integer(x) == 0)
- return(division_by_zero_error(sc, sc->divide_symbol, args));
-
- /* to be consistent, I suppose we should search first for NaNs in the divisor list.
- * (* 0 0/0) is NaN, so (/ 1 0 0/0) should equal (/ 1 0/0) = NaN. But the whole
- * thing is ridiculous.
- */
- if (is_null(p))
- return(s7_make_ratio(sc, num_a, integer(x)));
-
- den_a = integer(x);
- if (reduce_fraction(sc, &num_a, &den_a) == T_INTEGER)
- goto DIVIDE_INTEGERS;
- goto DIVIDE_RATIOS;
+ return(s7_make_ratio(sc, integer(x), integer(y)));
case T_RATIO:
- den_a = denominator(x);
#if HAVE_OVERFLOW_CHECKS
{
s7_int dn;
- if (multiply_overflow(num_a, den_a, &dn))
- {
- if (is_null(p)) return(make_real(sc, num_a * inverted_fraction(x)));
- rl_a = (s7_double)num_a * inverted_fraction(x);
- goto DIVIDE_REALS;
- }
- num_a = dn;
+ if (multiply_overflow(integer(x), denominator(y), &dn))
+ return(make_real(sc, integer(x) * inverted_fraction(y)));
+ return(s7_make_ratio(sc, dn, numerator(y)));
}
#else
- num_a *= den_a;
+ return(s7_make_ratio(sc, integer(x) * denominator(y), numerator(y)));
#endif
- den_a = numerator(x);
- if (is_null(p)) return(s7_make_ratio(sc, num_a, den_a));
- if (reduce_fraction(sc, &num_a, &den_a) == T_INTEGER)
- goto DIVIDE_INTEGERS;
- goto DIVIDE_RATIOS;
-
+
case T_REAL:
- rl_a = (s7_double)num_a;
- if (real(x) == 0.0)
+ if (is_NaN(real(y))) return(real_NaN);
+ if (is_inf(real(y))) return(real_zero);
+ if (real(y) == 0.0)
return(division_by_zero_error(sc, sc->divide_symbol, args));
- if (is_null(p)) return(make_real(sc, rl_a / real(x)));
- rl_a /= real(x);
- goto DIVIDE_REALS;
+ return(make_real(sc, (s7_double)(integer(x)) / real(y)));
case T_COMPLEX:
{
- s7_double i2, r2, den;
- rl_a = (s7_double)num_a;
- r2 = real_part(x);
- i2 = imag_part(x);
+ s7_double r1, i2, r2, den;
+ r1 = (s7_double)integer(x);
+ r2 = real_part(y);
+ i2 = imag_part(y);
den = 1.0 / (r2 * r2 + i2 * i2);
- /* we could avoid the squaring (see Knuth II p613 16)
- * not a big deal: (/ 1.0e308+1.0e308i 2.0e308+2.0e308i) => nan
- * (gmp case is ok here)
- */
- if (is_null(p))
- return(s7_make_complex(sc, rl_a * r2 * den, -(rl_a * i2 * den)));
- im_a = -rl_a * i2 * den;
- rl_a *= r2 * den;
- goto DIVIDE_COMPLEX;
+ /* we could avoid the squaring (see Knuth II p613 16), not a big deal: (/ 1.0e308+1.0e308i 2.0e308+2.0e308i) => nan, (gmp case is ok here) */
+ return(s7_make_complex(sc, r1 * r2 * den, -(r1 * i2 * den)));
}
default:
- method_or_bust_with_type(sc, x, sc->divide_symbol, cons_unchecked(sc, s7_make_integer(sc, num_a), cons(sc, x, p)), a_number_string, position_of(p, args) - 1);
+#if WITH_GMP
+ if (s7_is_bignum(y))
+ return(big_divide(sc, list_2(sc, x, y)));
+#endif
+ method_or_bust_with_type(sc, y, sc->divide_symbol, list_2(sc, x, y), a_number_string, 2);
}
break;
+ /* -------- ratio x -------- */
case T_RATIO:
- num_a = numerator(x);
- den_a = denominator(x);
- DIVIDE_RATIOS:
-#if WITH_GMP
- if ((num_a > s7_int32_max) ||
- (den_a > s7_int32_max) ||
- (num_a < s7_int32_min))
- return(big_divide(sc, cons(sc, s7_ratio_to_big_ratio(sc, num_a, den_a), p)));
-#endif
- x = car(p);
- p = cdr(p);
-
- switch (type(x))
+ switch (type(y))
{
case T_INTEGER:
- if (integer(x) == 0)
- return(division_by_zero_error(sc, sc->divide_symbol, args));
#if HAVE_OVERFLOW_CHECKS
{
s7_int dn;
- if (multiply_overflow(den_a, integer(x), &dn))
- {
- if (is_null(p)) return(make_real(sc, (long double)num_a / ((long double)den_a * (s7_double)integer(x))));
- rl_a = (long double)num_a / ((long double)den_a * (s7_double)integer(x));
- goto DIVIDE_REALS;
- }
- den_a = dn;
+ if (multiply_overflow(denominator(x), integer(y), &dn))
+ return(make_real(sc, (long double)numerator(x) / ((long double)denominator(x) * (s7_double)integer(y))));
+ return(s7_make_ratio(sc, numerator(x), dn));
}
#else
- den_a *= integer(x);
+ return(s7_make_ratio(sc, numerator(x), denominator(x) * integer(y)));
#endif
- if (is_null(p)) return(s7_make_ratio(sc, num_a, den_a));
- if (reduce_fraction(sc, &num_a, &den_a) == T_INTEGER)
- goto DIVIDE_INTEGERS;
- goto DIVIDE_RATIOS;
case T_RATIO:
{
s7_int d1, d2, n1, n2;
- d1 = den_a;
- n1 = num_a;
- d2 = denominator(x);
- n2 = numerator(x);
+ d1 = denominator(x);
+ n1 = numerator(x);
+ d2 = denominator(y);
+ n2 = numerator(y);
if (d1 == d2)
+ return(s7_make_ratio(sc, n1, n2));
+#if (!WITH_GMP) && HAVE_OVERFLOW_CHECKS
+ if ((multiply_overflow(n1, d2, &n1)) ||
+ (multiply_overflow(n2, d1, &d1)))
{
- if (is_null(p))
- return(s7_make_ratio(sc, n1, n2));
- den_a = n2;
+ s7_double r1, r2;
+ r1 = fraction(x);
+ r2 = inverted_fraction(y);
+ return(make_real(sc, r1 * r2));
}
- else
- {
-#if (!WITH_GMP) && HAVE_OVERFLOW_CHECKS
- if ((multiply_overflow(n1, d2, &n1)) ||
- (multiply_overflow(n2, d1, &d1)))
- {
- s7_double r1, r2;
- r1 = ((long double)num_a / (long double)den_a);
- r2 = inverted_fraction(x);
- if (is_null(p)) return(make_real(sc, r1 * r2));
- rl_a = r1 * r2;
- goto DIVIDE_REALS;
- }
- num_a = n1;
- den_a = d1;
+ return(s7_make_ratio(sc, n1, d1));
#else
- num_a *= d2;
- den_a *= n2;
+ return(s7_make_ratio(sc, n1 * d2, n2 * d1));
#endif
- if (is_null(p))
- return(s7_make_ratio(sc, num_a, den_a));
- }
- if (reduce_fraction(sc, &num_a, &den_a) == T_INTEGER)
- goto DIVIDE_INTEGERS;
- goto DIVIDE_RATIOS;
}
case T_REAL:
- {
- s7_double r1;
- if (real(x) == 0.0)
- return(division_by_zero_error(sc, sc->divide_symbol, args));
- r1 = ((long double)num_a / (long double)den_a);
- if (is_null(p)) return(make_real(sc, r1 / real(x)));
- rl_a = r1 / real(x);
- goto DIVIDE_REALS;
- }
+ if (real(y) == 0.0)
+ return(division_by_zero_error(sc, sc->divide_symbol, args));
+ return(make_real(sc, fraction(x) / real(y)));
case T_COMPLEX:
{
- s7_double den, i2, r2;
- rl_a = ((long double)num_a / (long double)den_a);
- r2 = real_part(x);
- i2 = imag_part(x);
+ s7_double rx, r2, i2, den;
+ rx = fraction(x);
+ r2 = real_part(y);
+ i2 = imag_part(y);
den = 1.0 / (r2 * r2 + i2 * i2);
- if (is_null(p))
- return(s7_make_complex(sc, rl_a * r2 * den, -rl_a * i2 * den));
- im_a = -rl_a * i2 * den;
- rl_a *= r2 * den;
- goto DIVIDE_COMPLEX;
+ return(s7_make_complex(sc, rx * r2 * den, -rx * i2 * den));
}
default:
- method_or_bust_with_type(sc, x, sc->divide_symbol, cons_unchecked(sc, s7_make_ratio(sc, num_a, den_a), cons(sc, x, p)), a_number_string, position_of(p, args) - 1);
+ method_or_bust_with_type(sc, y, sc->divide_symbol, list_2(sc, x, y), a_number_string, 2);
}
- break;
+ /* -------- real x -------- */
case T_REAL:
- rl_a = real(x);
- if (rl_a == 0)
- {
- bool return_nan = false;
- for (; is_pair(p); p = cdr(p))
- {
- s7_pointer n;
- n = car(p);
- if (!s7_is_number(n))
- {
- n = check_values(sc, n, p);
- if (!s7_is_number(n))
- return(wrong_type_argument_with_type(sc, sc->divide_symbol, position_of(p, args), n, a_number_string));
- }
- if (s7_is_zero(n))
- return(division_by_zero_error(sc, sc->divide_symbol, args));
- if ((is_t_real(n)) &&
- (is_NaN(real(n))))
- return_nan = true;
- }
- if (return_nan)
- return(real_NaN);
- return(real_zero);
- }
-
- DIVIDE_REALS:
- x = car(p);
- p = cdr(p);
-
- switch (type(x))
+ switch (type(y))
{
case T_INTEGER:
- if (integer(x) == 0)
+ if (integer(y) == 0)
return(division_by_zero_error(sc, sc->divide_symbol, args));
- if (is_null(p)) return(make_real(sc, rl_a / integer(x)));
- rl_a /= (s7_double)integer(x);
- goto DIVIDE_REALS;
+ if (is_NaN(real(x))) return(real_NaN); /* what is (/ nan.0 0)? */
+ if (is_inf(real(x))) return((real(x) > 0.0) ? ((integer(y) > 0) ? real_infinity : real_minus_infinity) : ((integer(y) > 0) ? real_minus_infinity : real_infinity));
+ return(make_real(sc, real(x) / (s7_double)integer(y)));
case T_RATIO:
- if (is_null(p)) return(make_real(sc, rl_a * inverted_fraction(x)));
- rl_a *= (s7_double)inverted_fraction(x);
- goto DIVIDE_REALS;
+ if (is_NaN(real(x))) return(real_NaN);
+ if (is_inf(real(x))) return((real(x) > 0) ? ((numerator(y) > 0) ? real_infinity : real_minus_infinity) : ((numerator(y) > 0) ? real_minus_infinity : real_infinity));
+ return(make_real(sc, real(x) * inverted_fraction(y)));
case T_REAL:
- if (real(x) == 0.0)
+ if (is_NaN(real(y))) return(real_NaN);
+ if (real(y) == 0.0)
return(division_by_zero_error(sc, sc->divide_symbol, args));
- if (is_null(p)) return(make_real(sc, rl_a / real(x)));
- rl_a /= real(x);
- goto DIVIDE_REALS;
+ if (is_NaN(real(x))) return(real_NaN);
+ if (is_inf(real(y)))
+ {
+ if (is_inf(real(x))) return(real_NaN);
+ return(real_zero);
+ }
+ return(make_real(sc, real(x) / real(y)));
case T_COMPLEX:
{
s7_double den, r2, i2;
- r2 = real_part(x);
- i2 = imag_part(x);
+ if (is_NaN(real(x))) return(real_NaN);
+ if (is_NaN(real_part(y))) return(real_NaN);
+ if (is_NaN(imag_part(y))) return(real_NaN);
+ if (is_inf(real_part(y))) return(real_zero);
+ r2 = real_part(y);
+ i2 = imag_part(y);
den = 1.0 / (r2 * r2 + i2 * i2);
- if (is_null(p))
- return(s7_make_complex(sc, rl_a * r2 * den, -rl_a * i2 * den));
- im_a = -rl_a * i2 * den;
- rl_a *= r2 * den;
- goto DIVIDE_COMPLEX;
+ return(s7_make_complex(sc, real(x) * r2 * den, -real(x) * i2 * den));
}
default:
- method_or_bust_with_type(sc, x, sc->divide_symbol, cons_unchecked(sc, make_real(sc, rl_a), cons(sc, x, p)), a_number_string, position_of(p, args) - 1);
+ method_or_bust_with_type(sc, y, sc->divide_symbol, list_2(sc, x, y), a_number_string, 2);
}
- break;
+ /* -------- complex x -------- */
case T_COMPLEX:
- rl_a = real_part(x);
- im_a = imag_part(x);
-
- DIVIDE_COMPLEX:
- x = car(p);
- p = cdr(p);
-
- switch (type(x))
+ switch (type(y))
{
case T_INTEGER:
{
s7_double r1;
- if (integer(x) == 0)
+ if (integer(y) == 0)
return(division_by_zero_error(sc, sc->divide_symbol, args));
- r1 = 1.0 / (s7_double)integer(x);
- if (is_null(p)) return(s7_make_complex(sc, rl_a * r1, im_a * r1));
- rl_a *= r1;
- im_a *= r1;
- goto DIVIDE_COMPLEX;
+ r1 = 1.0 / (s7_double)integer(y);
+ return(s7_make_complex(sc, real_part(x) * r1, imag_part(x) * r1));
}
case T_RATIO:
{
s7_double frac;
- frac = inverted_fraction(x);
- if (is_null(p)) return(s7_make_complex(sc, rl_a * frac, im_a * frac));
- rl_a *= frac;
- im_a *= frac;
- goto DIVIDE_COMPLEX;
+ frac = inverted_fraction(y);
+ return(s7_make_complex(sc, real_part(x) * frac, imag_part(x) * frac));
}
case T_REAL:
{
s7_double r1;
- if (real(x) == 0.0)
+ if (real(y) == 0.0)
return(division_by_zero_error(sc, sc->divide_symbol, args));
- r1 = 1.0 / real(x);
- if (is_null(p)) return(s7_make_complex(sc, rl_a * r1, im_a * r1));
- rl_a *= r1;
- im_a *= r1;
- goto DIVIDE_COMPLEX;
+ r1 = 1.0 / real(y);
+ return(s7_make_complex(sc, real_part(x) * r1, imag_part(x) * r1));
}
case T_COMPLEX:
{
s7_double r1, r2, i1, i2, den;
- r1 = rl_a;
- i1 = im_a;
- r2 = real_part(x);
- i2 = imag_part(x);
+ r1 = real_part(x);
+ if (is_NaN(r1)) return(real_NaN);
+ i1 = imag_part(x);
+ if (is_NaN(i1)) return(real_NaN);
+ r2 = real_part(y);
+ if (is_NaN(r2)) return(real_NaN);
+ i2 = imag_part(y);
+ if (is_NaN(i2)) return(real_NaN);
den = 1.0 / (r2 * r2 + i2 * i2);
- if (is_null(p))
- return(s7_make_complex(sc, (r1 * r2 + i1 * i2) * den, (r2 * i1 - r1 * i2) * den));
- rl_a = (r1 * r2 + i1 * i2) * den;
- im_a = (r2 * i1 - r1 * i2) * den;
- goto DIVIDE_COMPLEX;
+ return(s7_make_complex(sc, (r1 * r2 + i1 * i2) * den, (r2 * i1 - r1 * i2) * den));
}
default:
- method_or_bust_with_type(sc, x, sc->divide_symbol, cons_unchecked(sc, s7_make_complex(sc, rl_a, im_a), cons(sc, x, p)), a_number_string, position_of(p, args) - 1);
+ method_or_bust_with_type(sc, y, sc->divide_symbol, list_2(sc, x, y), a_number_string, 2);
}
- break;
+ /* -------- any other type x -------- */
default:
method_or_bust_with_type(sc, x, sc->divide_symbol, args, a_number_string, 1);
+ break;
}
+
return(NULL); /* make the compiler happy */
}
-
#if (!WITH_GMP)
static s7_pointer invert_1;
@@ -17691,7 +17556,7 @@ static s7_pointer g_equal_s_ic(s7_scheme *sc, s7_pointer args)
s7_int y;
s7_pointer val;
- val = find_symbol_unchecked(sc, car(args));
+ val = symbol_to_value_unchecked(sc, car(args));
y = s7_integer(cadr(args));
if (is_integer(val))
return(make_boolean(sc, integer(val) == y));
@@ -17715,7 +17580,7 @@ static s7_pointer g_equal_length_ic(s7_scheme *sc, s7_pointer args)
s7_int ilen;
s7_pointer val;
- val = find_symbol_unchecked(sc, cadar(args));
+ val = symbol_to_value_unchecked(sc, cadar(args));
ilen = s7_integer(cadr(args));
switch (type(val))
@@ -17932,7 +17797,6 @@ static s7_pointer g_less(s7_scheme *sc, s7_pointer args)
method_or_bust(sc, y, sc->lt_symbol, cons_unchecked(sc, x, cons(sc, y, p)), T_REAL, position_of(p, args) - 1);
}
-
case T_RATIO:
RATIO_LESS:
y = car(p);
@@ -18005,7 +17869,6 @@ static s7_pointer g_less(s7_scheme *sc, s7_pointer args)
method_or_bust(sc, y, sc->lt_symbol, cons_unchecked(sc, x, cons(sc, y, p)), T_REAL, position_of(p, args) - 1);
}
-
case T_REAL:
if (is_NaN(real(x))) goto NOT_LESS;
@@ -18109,7 +17972,6 @@ static s7_pointer g_less_or_equal(s7_scheme *sc, s7_pointer args)
method_or_bust(sc, y, sc->leq_symbol, cons_unchecked(sc, x, cons(sc, y, p)), T_REAL, position_of(p, args) - 1);
}
-
case T_RATIO:
RATIO_LEQ:
y = car(p);
@@ -18181,7 +18043,6 @@ static s7_pointer g_less_or_equal(s7_scheme *sc, s7_pointer args)
method_or_bust(sc, y, sc->leq_symbol, cons_unchecked(sc, x, cons(sc, y, p)), T_REAL, position_of(p, args) - 1);
}
-
case T_REAL:
if (is_NaN(real(x))) goto NOT_LEQ;
@@ -18284,7 +18145,6 @@ static s7_pointer g_greater(s7_scheme *sc, s7_pointer args)
method_or_bust(sc, y, sc->gt_symbol, cons_unchecked(sc, x, cons(sc, y, p)), T_REAL, position_of(p, args) - 1);
}
-
case T_RATIO:
RATIO_GREATER:
y = car(p);
@@ -18356,7 +18216,6 @@ static s7_pointer g_greater(s7_scheme *sc, s7_pointer args)
method_or_bust(sc, y, sc->gt_symbol, cons_unchecked(sc, x, cons(sc, y, p)), T_REAL, position_of(p, args) - 1);
}
-
case T_REAL:
if (is_NaN(real(x))) goto NOT_GREATER;
@@ -18460,7 +18319,6 @@ static s7_pointer g_greater_or_equal(s7_scheme *sc, s7_pointer args)
method_or_bust(sc, y, sc->geq_symbol, cons_unchecked(sc, x, cons(sc, y, p)), T_REAL, position_of(p, args) - 1);
}
-
case T_RATIO:
RATIO_GEQ:
y = car(p);
@@ -18532,7 +18390,6 @@ static s7_pointer g_greater_or_equal(s7_scheme *sc, s7_pointer args)
method_or_bust(sc, y, sc->geq_symbol, cons_unchecked(sc, x, cons(sc, y, p)), T_REAL, position_of(p, args) - 1);
}
-
case T_REAL:
if (is_NaN(real(x))) goto NOT_GEQ;
@@ -18624,7 +18481,7 @@ static s7_pointer g_less_length_ic(s7_scheme *sc, s7_pointer args)
s7_int ilen;
s7_pointer val;
- val = find_symbol_unchecked(sc, cadar(args));
+ val = symbol_to_value_unchecked(sc, cadar(args));
ilen = s7_integer(cadr(args));
switch (type(val))
@@ -19902,7 +19759,7 @@ sign of 'x' (1 = positive, -1 = negative). (integer-decode-float 0.0): (0 0 1)"
/* -------------------------------- logior -------------------------------- */
static s7_pointer g_logior(s7_scheme *sc, s7_pointer args)
{
- #define H_logior "(logior int32_t ...) returns the bitwise OR of its integer arguments (the bits that are on in any of the arguments)"
+ #define H_logior "(logior int32_t ...) returns the OR of its integer arguments (the bits that are on in any of the arguments)"
#define Q_logior pcl_i
s7_int result = 0;
s7_pointer x;
@@ -19922,7 +19779,7 @@ static s7_int logior_i_ii(s7_int i1, s7_int i2) {return(i1 | i2);}
/* -------------------------------- logxor -------------------------------- */
static s7_pointer g_logxor(s7_scheme *sc, s7_pointer args)
{
- #define H_logxor "(logxor int32_t ...) returns the bitwise XOR of its integer arguments (the bits that are on in an odd number of the arguments)"
+ #define H_logxor "(logxor int32_t ...) returns the XOR of its integer arguments (the bits that are on in an odd number of the arguments)"
#define Q_logxor pcl_i
s7_int result = 0;
s7_pointer x;
@@ -19942,7 +19799,7 @@ static s7_int logxor_i_ii(s7_int i1, s7_int i2) {return(i1 ^ i2);}
/* -------------------------------- logand -------------------------------- */
static s7_pointer g_logand(s7_scheme *sc, s7_pointer args)
{
- #define H_logand "(logand int32_t ...) returns the bitwise AND of its integer arguments (the bits that are on in every argument)"
+ #define H_logand "(logand int32_t ...) returns the AND of its integer arguments (the bits that are on in every argument)"
#define Q_logand pcl_i
s7_int result = -1;
s7_pointer x;
@@ -19963,7 +19820,7 @@ static s7_int logand_i_ii(s7_int i1, s7_int i2) {return(i1 & i2);}
static s7_pointer g_lognot(s7_scheme *sc, s7_pointer args)
{
- #define H_lognot "(lognot num) returns the bitwise negation (the complement, the bits that are not on) in num: (lognot 0) -> -1"
+ #define H_lognot "(lognot num) returns the negation of num (its complement, the bits that are not on): (lognot 0) -> -1"
#define Q_lognot pcl_i
if (!s7_is_integer(car(args)))
method_or_bust_one_arg(sc, car(args), sc->lognot_symbol, args, T_INTEGER);
@@ -20786,7 +20643,7 @@ static s7_pointer char_equal_s_ic, char_equal_2;
static s7_pointer g_char_equal_s_ic(s7_scheme *sc, s7_pointer args)
{
s7_pointer c;
- c = find_symbol_unchecked(sc, car(args));
+ c = symbol_to_value_unchecked(sc, car(args));
if (c == cadr(args))
return(sc->T);
if (s7_is_character(c))
@@ -21127,6 +20984,9 @@ static s7_pointer g_string_position(s7_scheme *sc, s7_pointer args)
/* -------------------------------- strings -------------------------------- */
+/* prebuilding sc->empty_string and using it wherever len==0 did not produce more than about %.2 speedup
+ * (in index.scm where 11% of the strings are empty). s7test max 4% empty, elsewhere much less.
+ */
s7_pointer s7_make_string_with_length(s7_scheme *sc, const char *str, int32_t len)
{
s7_pointer x;
@@ -21255,8 +21115,7 @@ static s7_pointer make_permanent_string_wrapper(void)
static s7_pointer make_temporary_string(s7_scheme *sc, const char *str, int32_t len)
{
s7_pointer p;
- p = sc->tmp_strs[0];
- prepare_temporary_string(sc, len + 1, 0);
+ p = prepare_temporary_string(sc, len + 1, 0);
string_length(p) = len;
if (len > 0)
memmove((void *)(string_value(p)), (void *)str, len); /* not memcpy because str might be a temp string (i.e. sc->tmp_str_chars -> itself) */
@@ -21485,7 +21344,7 @@ static s7_pointer g_string_set_2(s7_scheme *sc, s7_pointer x, s7_pointer args, s
return(wrong_type_argument_with_type(sc, caller, 2, index, a_non_negative_integer_string));
if (ind >= string_length(x))
return(out_of_range(sc, caller, small_int(2), index, its_too_large_string));
- str = string_value(_TSet(x));
+ str = string_value(x);
c = caddr(args);
if ((typeflag(x) & T_BYTE_VECTOR) == 0)
@@ -21708,8 +21567,7 @@ static s7_pointer g_string_append_1(s7_scheme *sc, s7_pointer args, bool use_tem
make_integer(sc, sc->max_string_length))));
if (use_temp)
{
- newstr = sc->tmp_strs[0];
- prepare_temporary_string(sc, len + 1, 0);
+ newstr = prepare_temporary_string(sc, len + 1, 0);
string_length(newstr) = len;
string_value(newstr)[len] = 0;
}
@@ -22557,9 +22415,13 @@ static s7_pointer g_string_to_byte_vector(s7_scheme *sc, s7_pointer args)
#define H_string_to_byte_vector "(string->byte-vector obj) turns a string into a byte-vector."
#define Q_string_to_byte_vector s7_make_signature(sc, 2, sc->is_byte_vector_symbol, sc->is_string_symbol)
s7_pointer str;
+
str = car(args);
+ if (is_immutable(str))
+ return(immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->string_to_byte_vector_symbol, str)));
if (!is_string(str))
method_or_bust(sc, str, sc->string_to_byte_vector_symbol, set_plist_1(sc, str), T_STRING, 1);
+
set_byte_vector(str);
return(str);
}
@@ -22669,16 +22531,19 @@ static s7_pointer g_is_port_closed(s7_scheme *sc, s7_pointer args)
x = car(args);
if ((is_input_port(x)) || (is_output_port(x)))
return(make_boolean(sc, port_is_closed(x)));
- /* if (x == sc->F) return(sc->F); */ /* not sure about this -- current-output-port can be #f */
-
+ if ((x == sc->output_port) && (x == sc->F))
+ return(sc->F);
method_or_bust_with_type_one_arg(sc, x, sc->is_port_closed_symbol, args, s7_make_string_wrapper(sc, "a port"));
}
static bool is_port_closed_b(s7_pointer x)
{
- if ((!is_input_port(x)) && (!is_output_port(x)))
- simple_wrong_type_argument_with_type(cur_sc, cur_sc->is_port_closed_symbol, x, s7_make_string_wrapper(cur_sc, "a port"));
- return(port_is_closed(x));
+ if ((is_input_port(x)) || (is_output_port(x)))
+ return(port_is_closed(x));
+ if ((x == cur_sc->output_port) && (x == cur_sc->F))
+ return(false);
+ simple_wrong_type_argument_with_type(cur_sc, cur_sc->is_port_closed_symbol, x, s7_make_string_wrapper(cur_sc, "a port"));
+ return(false);
}
@@ -22941,14 +22806,14 @@ static void closed_port_display(s7_scheme *sc, const char *s, s7_pointer port);
void s7_close_input_port(s7_scheme *sc, s7_pointer p)
{
-#if DEBUGGING
+#if S7_DEBUGGING
if (!is_input_port(p))
fprintf(stderr, "s7_close_input_port: %s\n", DISPLAY(p));
#endif
if ((is_immutable_port(p)) ||
((is_input_port(p)) && (port_is_closed(p))))
{
-#if DEBUGGING
+#if S7_DEBUGGING
if (port_needs_free(p))
fprintf(stderr, "closed input needs free\n");
#endif
@@ -23735,7 +23600,6 @@ static s7_pointer string_read_name(s7_scheme *sc, s7_pointer pt)
str = (char *)(port_data(pt) + port_position(pt));
if (!char_ok_in_a_name[(unsigned char)*str])
{
- s7_pointer result;
result = sc->singletons[(unsigned char)(sc->strbuf[0])];
if (!result)
{
@@ -23807,10 +23671,13 @@ static s7_pointer read_file(s7_scheme *sc, FILE *fp, const char *name, int64_t m
bytes = fread(content, sizeof(unsigned char), size, fp);
if (bytes != (size_t)size)
{
- char tmp[256];
- int32_t len;
- len = snprintf(tmp, 256, "(%s \"%s\") read %ld bytes of an expected %" PRId64 "?", caller, name, (long)bytes, size);
- port_write_string(sc->output_port)(sc, tmp, len, sc->output_port);
+ if (sc->output_port != sc->F)
+ {
+ char tmp[256];
+ int32_t len;
+ len = snprintf(tmp, 256, "(%s \"%s\") read %ld bytes of an expected %" PRId64 "?", caller, name, (long)bytes, size);
+ port_write_string(sc->output_port)(sc, tmp, len, sc->output_port);
+ }
size = bytes;
}
content[size] = '\0';
@@ -24128,7 +23995,7 @@ static s7_pointer open_input_string(s7_scheme *sc, const char *input_string, uin
port_read_line(x) = string_read_line;
port_display(x) = input_display;
port_read_semicolon(x) = string_read_semicolon;
-#if DEBUGGING
+#if S7_DEBUGGING
if (input_string[len] != '\0')
fprintf(stderr, "read_white_space string is not terminated: %s", input_string);
#endif
@@ -24534,7 +24401,7 @@ static s7_pointer g_write_byte(s7_scheme *sc, s7_pointer args)
static s7_pointer g_read_line(s7_scheme *sc, s7_pointer args)
{
- #define H_read_line "(read-line port (with-eol #f)) returns the next line from port, or #<eof>.\
+ #define H_read_line "(read-line port (with-eol #f)) returns the next line from port, or #<eof>. \
If 'with-eol' is not #f, read-line includes the trailing end-of-line character."
#define Q_read_line s7_make_signature(sc, 3, s7_make_signature(sc, 2, sc->is_string_symbol, sc->is_eof_object_symbol), sc->is_input_port_symbol, sc->is_boolean_symbol)
@@ -24838,7 +24705,7 @@ s7_pointer s7_load_with_environment(s7_scheme *sc, const char *filename, s7_poin
restore_jump_info(sc);
if (is_multiple_value(sc->value))
sc->value = splice_in_values(sc, multiple_value(sc->value));
- return(sc->value);
+ return(sc->value);
}
s7_pointer s7_load(s7_scheme *sc, const char *filename)
@@ -25247,7 +25114,7 @@ The symbols refer to the argument to \"provide\". (require lint.scm)"
else return(s7_error(sc, sc->wrong_type_arg_symbol, set_elist_2(sc, s7_make_string_wrapper(sc, "require: ~S is not a symbol"), car(p))));
}
- if ((!is_slot(find_symbol(sc, sym))) &&
+ if ((!is_slot(symbol_to_slot(sc, sym))) &&
(sc->is_autoloading))
{
s7_pointer f;
@@ -25332,8 +25199,8 @@ static s7_pointer c_provide(s7_scheme *sc, s7_pointer sym)
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 */
+ p = symbol_to_local_slot(sc, sc->features_symbol, sc->envir); /* if sc->envir is nil, this returns the global slot, else local slot */
+ lst = slot_value(symbol_to_slot(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));
@@ -25351,7 +25218,7 @@ static s7_pointer c_provide(s7_scheme *sc, s7_pointer sym)
* 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 */
+ if (!is_slot(symbol_to_slot(sc, sym))) /* *features* name might be the same as an existing function */
s7_define(sc, sc->envir, sym, sym);
return(sym);
@@ -25794,11 +25661,7 @@ static s7_pointer pair_iterate(s7_scheme *sc, s7_pointer obj)
result = car(iterator_current(obj));
iterator_current(obj) = cdr(iterator_current(obj));
if (iterator_current(obj) == iterator_slow(obj))
- {
- iterator_next(obj) = iterator_finished;
- clear_iter_ok(obj);
- return(result);
- }
+ iterator_current(obj) = sc->nil;
iterator_next(obj) = pair_iterate_1;
return(result);
}
@@ -25815,12 +25678,8 @@ static s7_pointer pair_iterate_1(s7_scheme *sc, s7_pointer obj)
result = car(iterator_current(obj));
iterator_current(obj) = cdr(iterator_current(obj));
if (iterator_current(obj) == iterator_slow(obj))
- {
- iterator_next(obj) = iterator_finished;
- clear_iter_ok(obj);
- return(result);
- }
- iterator_set_slow(obj, cdr(iterator_slow(obj)));
+ iterator_current(obj) = sc->nil;
+ else iterator_set_slow(obj, cdr(iterator_slow(obj)));
iterator_next(obj) = pair_iterate;
return(result);
}
@@ -25967,13 +25826,17 @@ in the sequence each time it is called. When it reaches the end, it returns " I
if (is_pair(cdr(args)))
{
- if (is_pair(cadr(args)))
+ s7_pointer ip;
+ ip = cadr(args);
+ if (is_pair(ip))
{
+ if (is_immutable(ip))
+ return(immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->make_iterator_symbol, ip)));
if (is_hash_table(seq))
{
s7_pointer iter;
iter = s7_make_iterator(sc, seq);
- iterator_current(iter) = cadr(args);
+ iterator_current(iter) = ip;
set_mark_seq(iter);
return(iter);
}
@@ -25981,7 +25844,7 @@ in the sequence each time it is called. When it reaches the end, it returns " I
{
s7_pointer iter;
iter = s7_make_iterator(sc, seq);
- iterator_let_cons(iter) = cadr(args);
+ iterator_let_cons(iter) = ip;
set_mark_seq(iter);
return(iter);
}
@@ -26047,7 +25910,6 @@ static s7_pointer g_iterator_is_at_end(s7_scheme *sc, s7_pointer args)
return(sc->T);
}
-
static s7_pointer g_iterator_sequence(s7_scheme *sc, s7_pointer args)
{
#define H_iterator_sequence "(iterator-sequence iterator) returns the sequence that iterator is traversing."
@@ -26196,53 +26058,43 @@ static bool collect_shared_info(s7_scheme *sc, shared_info *ci, s7_pointer top,
top_cyclic = false;
/* now search the rest of this structure */
- switch (type(top))
+ if (is_pair(top))
{
- case T_PAIR:
-#if 0
- /* old form: simple understandable slow */
+ s7_pointer p, cp;
if ((has_structure(car(top))) &&
(collect_shared_info(sc, ci, car(top), stop_at_print_length)))
top_cyclic = true;
- if ((has_structure(cdr(top))) &&
- (collect_shared_info(sc, ci, cdr(top), stop_at_print_length)))
- top_cyclic = true;
-#endif
- {
- s7_pointer p, cp;
- if ((has_structure(car(top))) &&
- (collect_shared_info(sc, ci, car(top), stop_at_print_length)))
- top_cyclic = true;
- for (p = cdr(top); is_pair(p); p = cdr(p))
- {
- if (is_collected_or_shared(p))
- {
- if (is_shared(p))
- {
- if (!top_cyclic)
- for (cp = top; cp != p; cp = cdr(cp)) set_shared(cp);
- return(top_cyclic);
- }
- return(check_collected(p, ci));
- }
- set_collected(p);
- if (ci->top == ci->size)
- enlarge_shared_info(ci);
- ci->objs[ci->top++] = p;
- if ((has_structure(car(p))) &&
- (collect_shared_info(sc, ci, car(p), stop_at_print_length)))
- top_cyclic = true;
- }
- if ((has_structure(p)) &&
- (collect_shared_info(sc, ci, p, stop_at_print_length)))
- return(true);
-
- if (!top_cyclic)
- for (cp = top; is_pair(cp); cp = cdr(cp)) set_shared(cp);
- return(top_cyclic);
- }
- break;
+ for (p = cdr(top); is_pair(p); p = cdr(p))
+ {
+ if (is_collected_or_shared(p))
+ {
+ if (is_shared(p))
+ {
+ if (!top_cyclic)
+ for (cp = top; cp != p; cp = cdr(cp)) set_shared(cp);
+ return(top_cyclic);
+ }
+ return(check_collected(p, ci));
+ }
+ set_collected(p);
+ if (ci->top == ci->size)
+ enlarge_shared_info(ci);
+ ci->objs[ci->top++] = p;
+ if ((has_structure(car(p))) &&
+ (collect_shared_info(sc, ci, car(p), stop_at_print_length)))
+ top_cyclic = true;
+ }
+ if ((has_structure(p)) &&
+ (collect_shared_info(sc, ci, p, stop_at_print_length)))
+ return(true);
+ if (!top_cyclic)
+ for (cp = top; is_pair(cp); cp = cdr(cp)) set_shared(cp);
+ return(top_cyclic);
+ }
+
+ switch (type(top))
+ {
case T_VECTOR:
if (collect_vector_info(sc, ci, top, stop_at_print_length))
top_cyclic = true;
@@ -26318,12 +26170,13 @@ static shared_info *init_circle_info(void)
return(ci);
}
-static shared_info *new_shared_info(s7_scheme *sc)
+static inline shared_info *new_shared_info(s7_scheme *sc)
{
shared_info *ci;
int32_t i;
ci = sc->circle_info;
- memclr((void *)(ci->refs), ci->top * sizeof(int32_t));
+ if (ci->top > 0)
+ memclr((void *)(ci->refs), ci->top * sizeof(int32_t));
for (i = 0; i < ci->top; i++)
clear_collected_and_shared(ci->objs[i]);
ci->top = 0;
@@ -26332,6 +26185,42 @@ static shared_info *new_shared_info(s7_scheme *sc)
return(ci);
}
+
+static bool tree_is_cyclic_1(s7_scheme *sc, s7_pointer tree, shared_info *ci)
+{
+ if (is_collected_or_shared(tree))
+ return(!is_shared(tree));
+
+ set_collected(tree);
+ if (ci->top == ci->size)
+ enlarge_shared_info(ci);
+ ci->objs[ci->top++] = tree;
+
+ if ((is_pair(car(tree))) &&
+ (tree_is_cyclic_1(sc, car(tree), ci)))
+ return(true);
+ if ((is_pair(cdr(tree))) &&
+ (tree_is_cyclic_1(sc, cdr(tree), ci)))
+ return(true);
+
+ set_shared(tree);
+ return(false);
+}
+
+static bool tree_is_cyclic(s7_scheme *sc, s7_pointer tree)
+{
+ if (is_pair(tree))
+ return(tree_is_cyclic_1(sc, tree, new_shared_info(sc))); /* new_shared_info clears collected bits */
+ return(false);
+}
+
+static s7_pointer g_tree_is_cyclic(s7_scheme *sc, s7_pointer args)
+{
+ #define H_tree_is_cyclic "(tree-cyclic? tree) returns #t if the tree has a cycle."
+ #define Q_tree_is_cyclic pl_bt
+ return(make_boolean(sc, tree_is_cyclic(sc, car(args))));
+}
+
static shared_info *make_shared_info(s7_scheme *sc, s7_pointer top, bool stop_at_print_length)
{
/* for the printer */
@@ -26636,12 +26525,12 @@ static void output_port_to_port(s7_scheme *sc, s7_pointer obj, s7_pointer port,
port_write_string(port)(sc, "(let ((p (open-output-string))) (close-output-port p) p)", 56, port);
else
{
- char *str;
if (is_string_port(obj))
{
port_write_string(port)(sc, "(let ((p (open-output-string)))", 31, port);
if (port_position(obj) > 0)
{
+ char *str;
port_write_string(port)(sc, " (display ", 10, port);
str = slashify_string(sc, (const char *)port_data(obj), port_position(obj), IN_QUOTES, &nlen);
port_write_string(port)(sc, str, nlen, port);
@@ -26651,10 +26540,9 @@ static void output_port_to_port(s7_scheme *sc, s7_pointer obj, s7_pointer port,
}
else
{
- str = (char *)malloc(256 * sizeof(char));
+ char str[256];
nlen = snprintf(str, 256, "(open-output-file \"%s\" \"a\")", port_filename(obj));
port_write_string(port)(sc, str, nlen, port);
- free(str);
}
}
}
@@ -26692,13 +26580,11 @@ static void input_port_to_port(s7_scheme *sc, s7_pointer obj, s7_pointer port, u
port_write_string(port)(sc, "#<function input port>", 22, port);
else
{
- char *str;
if (is_file_port(obj))
{
- str = (char *)malloc(256 * sizeof(char));
+ char str[256];
nlen = snprintf(str, 256, "(open-input-file \"%s\")", port_filename(obj));
port_write_string(port)(sc, str, nlen, port);
- free(str);
}
else
{
@@ -26708,6 +26594,7 @@ static void input_port_to_port(s7_scheme *sc, s7_pointer obj, s7_pointer port, u
* s7_port_filename(port) has the char* name if any.
*/
uint32_t data_len;
+ char *str;
data_len = port_data_size(obj) - port_position(obj);
if (data_len > 100)
{
@@ -27876,10 +27763,14 @@ static s7_pointer find_closure(s7_scheme *sc, s7_pointer closure, s7_pointer cur
s7_pointer e, y;
for (e = cur_env; is_let(e); e = outlet(e))
{
- if ((is_funclet(e)) &&
- (is_global(funclet_function(e))) && /* (define (f1) (lambda () 1)) shouldn't say the returned closure is named f1 */
- (slot_value(global_slot(funclet_function(e))) == closure))
- return(funclet_function(e));
+ if (is_funclet(e))
+ {
+ s7_pointer sym, f;
+ sym = funclet_function(e);
+ f = s7_symbol_local_value(sc, sym, e);
+ if (f == closure)
+ return(sym);
+ }
for (y = let_slots(e); is_slot(y); y = next_slot(y))
if (slot_value(y) == closure)
@@ -27892,13 +27783,19 @@ static void write_closure_name(s7_scheme *sc, s7_pointer closure, s7_pointer por
{
s7_pointer x;
x = find_closure(sc, closure, closure_let(closure));
- /* this can be confusing! In some cases, the function is in its environment, and in other very similar-looking cases it isn't:
+ /* this can be confusing!
* (let ((a (lambda () 1))) a)
* #<lambda ()>
* (letrec ((a (lambda () 1))) a)
* a
* (let () (define (a) 1) a)
* a
+ * (let () (define a (lambda () 1)))
+ * a
+ * (let () (define a (lambda () 1)))
+ * a
+ * (let () (define (a) (lambda () 1)) (a))
+ * #<lambda ()>
*/
if (is_symbol(x)) /* after find_closure */
{
@@ -28147,7 +28044,7 @@ static char *describe_type_bits(s7_scheme *sc, s7_pointer obj)
/* bit 0 (the first 8 bits are easy...) */
((full_typ & T_KEYWORD) != 0) ? ((is_symbol(obj)) ? " keyword" : " ?0?") : "",
/* bit 1 */
- ((full_typ & T_SYNTACTIC) != 0) ? (((is_pair(obj)) || (is_syntax(obj))) ? " syntactic" : " ?1?") : "",
+ ((full_typ & T_SYNTACTIC) != 0) ? (((is_pair(obj)) || (is_syntax(obj)) || (is_symbol(obj))) ? " syntactic" : " ?1?") : "",
/* bit 2 */
((full_typ & T_SIMPLE_ARG_DEFAULTS) != 0) ? ((is_pair(obj)) ? " simple-args|in-use" : " ?2?") : "",
@@ -28168,7 +28065,7 @@ static char *describe_type_bits(s7_scheme *sc, s7_pointer obj)
" ?7?")) : "",
/* bit 8 */
((full_typ & T_GLOBAL) != 0) ? ((is_pair(obj)) ? " unsafe-do" :
- ((is_symbol(obj)) ? " global" :
+ (((is_symbol(obj)) || (is_syntax(obj))) ? " global" :
" ?8?")) : "",
/* bit 9 */
((full_typ & T_COLLECTED) != 0) ? " collected" : "",
@@ -28219,10 +28116,9 @@ static char *describe_type_bits(s7_scheme *sc, s7_pointer obj)
((is_number(obj)) ? " print-name" :
((is_pair(obj)) ? " direct_x_opt" :
" ?19?"))))) : "",
- /* bit 20 */
- ((full_typ & T_COPY_ARGS) != 0) ? ((is_pair(obj)) ? " local-symbol" :
- (((is_any_macro(obj)) || (is_any_closure(obj))) ? " copy-args" :
- "?20?")) : "",
+ /* bit 20, for c_function case see sc->apply */
+ ((full_typ & T_COPY_ARGS) != 0) ? (((is_any_macro(obj)) || (is_any_closure(obj)) || (is_c_function(obj))) ? " copy-args" :
+ " ?20?") : "",
/* bit 21 */
((full_typ & T_GENSYM) != 0) ? ((is_let(obj)) ? " funclet" :
((is_symbol(obj)) ? " gensym" :
@@ -28233,15 +28129,17 @@ static char *describe_type_bits(s7_scheme *sc, s7_pointer obj)
/* bit 22 */
((full_typ & T_HAS_METHODS) != 0) ? " has-methods" : "",
/* bit 23 */
- ((full_typ & T_ITER_OK) != 0) ? " iter-ok" : "",
+ ((full_typ & T_ITER_OK) != 0) ? ((is_iterator(obj)) ? " iter-ok" : " ?23?") : "",
/* bit 24 */
((full_typ & T_SYMCONS) != 0) ? ((is_symbol(obj)) ? " possibly-constant" :
((is_procedure(obj)) ? " has-let-arg" :
" ?24?")) : "",
/* bit 25 */
- ((full_typ & T_S7_LET_FIELD) != 0) ? " s7-let-field" : "",
+ ((full_typ & T_S7_LET_FIELD) != 0) ? ((is_symbol(obj)) ? " s7-let-field" :
+ ((is_let(obj)) ? " has-let-file" :
+ " ?25?")) : "",
/* bit 26 */
- ((full_typ & T_DEFINER) != 0) ? " definer" : "",
+ ((full_typ & T_DEFINER) != 0) ? ((is_symbol(obj)) ? " definer" : " ?26?") : "",
((full_typ & UNUSED_BITS) != 0) ? " unused bits set?" : "",
@@ -28250,7 +28148,7 @@ static char *describe_type_bits(s7_scheme *sc, s7_pointer obj)
return(buf);
}
-#if DEBUGGING
+#if S7_DEBUGGING
static bool has_odd_bits(s7_scheme *sc, s7_pointer obj)
{
uint64_t full_typ;
@@ -28258,19 +28156,19 @@ static bool has_odd_bits(s7_scheme *sc, s7_pointer obj)
if ((full_typ & UNUSED_BITS) != 0) return(true);
if (((full_typ & T_KEYWORD) != 0) && (!is_symbol(obj))) return(true);
- if (((full_typ & T_SYNTACTIC) != 0) && (!is_syntax(obj)) && (!is_pair(obj))) return(true);
+ if (((full_typ & T_SYNTACTIC) != 0) && (!is_syntax(obj)) && (!is_pair(obj)) && (!is_symbol(obj))) return(true);
if (((full_typ & T_SIMPLE_ARG_DEFAULTS) != 0) && (!is_pair(obj))) return(true);
if (((full_typ & T_OPTIMIZED) != 0) && (!is_c_function(obj)) && (!is_pair(obj))) return(true);
if (((full_typ & T_SAFE_CLOSURE) != 0) && (!is_any_closure(obj)) && (!is_pair(obj))) return(true);
if (((full_typ & T_EXPANSION) != 0) && (!is_symbol(obj)) && (!is_macro(obj))) return(true);
if (((full_typ & T_MULTIPLE_VALUE) != 0) && (!is_symbol(obj)) && (!is_pair(obj))) return(true);
- if (((full_typ & T_GLOBAL) != 0) && (!is_pair(obj)) && (!is_symbol(obj))) return(true);
+ if (((full_typ & T_GLOBAL) != 0) && (!is_pair(obj)) && (!is_symbol(obj)) && (!is_syntax(obj))) return(true);
if (((full_typ & T_ITER_OK) != 0) && (!is_iterator(obj))) return(true);
- if (((full_typ & T_S7_LET_FIELD) != 0) && (!is_symbol(obj))) return(true);
+ if (((full_typ & T_S7_LET_FIELD) != 0) && (!is_symbol(obj)) && (!is_let(obj))) return(true);
if (((full_typ & T_DEFINER) != 0) && (!is_symbol(obj))) return(true);
if (((full_typ & T_SYMCONS) != 0) && (!is_symbol(obj)) && (!is_procedure(obj))) return(true);
if (((full_typ & T_OVERLAY) != 0) && (!is_symbol(obj)) && (!is_pair(obj))) return(true);
- if (((full_typ & T_COPY_ARGS) != 0) && (!is_pair(obj)) && (!is_any_macro(obj)) && (!is_any_closure(obj))) return(true);
+ if (((full_typ & T_COPY_ARGS) != 0) && (!is_any_macro(obj)) && (!is_any_closure(obj)) && (!is_c_function(obj))) return(true);
if (((full_typ & T_UNSAFE) != 0) && (!is_symbol(obj)) && (!is_slot(obj)) && (!is_pair(obj))) return(true);
if (((full_typ & T_SAFE_STEPPER) != 0) &&
(!is_let(obj)) && (!is_slot(obj)) && (!is_c_function(obj)) && (!is_number(obj)) && (!is_pair(obj)))
@@ -28313,7 +28211,7 @@ void s7_show_let(s7_scheme *sc) /* debugging convenience */
}
}
-#if DEBUGGING
+#if S7_DEBUGGING
static const char *check_name(int32_t typ)
{
if ((typ >= 0) && (typ < NUM_TYPES))
@@ -28332,16 +28230,6 @@ static const char *check_name(int32_t typ)
return("unknown type!");
}
-static s7_pointer check_seti(s7_scheme *sc, s7_pointer x, const char *func, int32_t line)
-{
- 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();
- }
- return(x);
-}
-
static char *safe_object_to_string(s7_pointer p)
{
uint8_t typ;
@@ -28354,6 +28242,8 @@ static char *safe_object_to_string(s7_pointer p)
return(buf);
}
+#define CHECK_ALL_BITS 0
+
static s7_pointer check_ref(s7_pointer p, uint8_t expected_type, const char *func, int32_t line, const char *func1, const char *func2)
{
if (!p)
@@ -28361,6 +28251,10 @@ static s7_pointer check_ref(s7_pointer p, uint8_t expected_type, const char *fun
else
{
uint8_t typ;
+#if CHECK_ALL_BITS
+ if (has_odd_bits(cur_sc, p))
+ fprintf(stderr, "odd bits: %s\n", describe_type_bits(cur_sc, p));
+#endif
typ = unchecked_type(p);
if (typ != expected_type)
{
@@ -28393,6 +28287,10 @@ static s7_pointer check_ref2(s7_pointer p, uint8_t expected_type, int32_t other_
else
{
uint8_t typ;
+#if CHECK_ALL_BITS
+ if (has_odd_bits(cur_sc, p))
+ fprintf(stderr, "odd bits: %s\n", describe_type_bits(cur_sc, p));
+#endif
typ = unchecked_type(p);
if ((typ != expected_type) && (typ != other_type))
return(check_ref(p, expected_type, func, line, func1, func2));
@@ -28403,6 +28301,10 @@ static s7_pointer check_ref2(s7_pointer p, uint8_t expected_type, int32_t other_
static s7_pointer check_ref3(s7_pointer p, const char *func, int32_t line)
{
uint8_t typ;
+#if CHECK_ALL_BITS
+ if (has_odd_bits(cur_sc, p))
+ fprintf(stderr, "odd bits: %s\n", describe_type_bits(cur_sc, p));
+#endif
typ = unchecked_type(p);
if ((typ != T_INPUT_PORT) && (typ != T_OUTPUT_PORT) && (typ != T_FREE))
{
@@ -28418,6 +28320,10 @@ static s7_pointer check_ref3(s7_pointer p, const char *func, int32_t line)
static s7_pointer check_ref4(s7_pointer p, const char *func, int32_t line)
{
uint8_t typ;
+#if CHECK_ALL_BITS
+ if (has_odd_bits(cur_sc, p))
+ fprintf(stderr, "odd bits: %s\n", describe_type_bits(cur_sc, p));
+#endif
typ = unchecked_type(p);
if ((typ != T_VECTOR) && (typ != T_FLOAT_VECTOR) && (typ != T_INT_VECTOR) && (typ != T_FREE))
{
@@ -28433,6 +28339,10 @@ static s7_pointer check_ref4(s7_pointer p, const char *func, int32_t line)
static s7_pointer check_ref5(s7_pointer p, const char *func, int32_t line)
{
uint8_t typ;
+#if CHECK_ALL_BITS
+ if (has_odd_bits(cur_sc, p))
+ fprintf(stderr, "odd bits: %s\n", describe_type_bits(cur_sc, p));
+#endif
typ = unchecked_type(p);
if (!t_has_closure_let[typ])
{
@@ -28448,6 +28358,10 @@ static s7_pointer check_ref5(s7_pointer p, const char *func, int32_t line)
static s7_pointer check_ref6(s7_pointer p, const char *func, int32_t line)
{
uint8_t typ;
+#if CHECK_ALL_BITS
+ if (has_odd_bits(cur_sc, p))
+ fprintf(stderr, "odd bits: %s\n", describe_type_bits(cur_sc, p));
+#endif
typ = unchecked_type(p);
if ((typ < T_C_FUNCTION_STAR) && (typ != T_C_MACRO))
{
@@ -28465,6 +28379,10 @@ static s7_pointer check_ref7(s7_pointer p, const char *func, int32_t line)
if ((!func) || (strcmp(func, "decribe_type_bits") != 0))
{
uint8_t typ;
+#if CHECK_ALL_BITS
+ if (has_odd_bits(cur_sc, p))
+ fprintf(stderr, "odd bits: %s\n", describe_type_bits(cur_sc, p));
+#endif
typ = unchecked_type(p);
if ((typ < T_INTEGER) || (typ > T_COMPLEX))
{
@@ -28481,6 +28399,10 @@ static s7_pointer check_ref7(s7_pointer p, const char *func, int32_t line)
static s7_pointer check_ref8(s7_pointer p, const char *func, int32_t line)
{
uint8_t typ;
+#if CHECK_ALL_BITS
+ if (has_odd_bits(cur_sc, p))
+ fprintf(stderr, "odd bits: %s\n", describe_type_bits(cur_sc, p));
+#endif
typ = unchecked_type(p);
if ((!t_sequence_p[typ]) && (!t_structure_p[typ]) && (!is_any_closure(p))) /* closure calling itself an iterator?? */
{
@@ -28496,6 +28418,10 @@ static s7_pointer check_ref8(s7_pointer p, const char *func, int32_t line)
static s7_pointer check_ref9(s7_pointer p, const char *func, int32_t line)
{
uint8_t typ;
+#if CHECK_ALL_BITS
+ if (has_odd_bits(cur_sc, p))
+ fprintf(stderr, "odd bits: %s\n", describe_type_bits(cur_sc, p));
+#endif
typ = unchecked_type(p);
if ((typ != T_LET) && (typ != T_C_OBJECT) && (!is_any_closure(p)) && (!is_any_macro(p)) && (typ != T_C_POINTER))
{
@@ -28511,6 +28437,10 @@ static s7_pointer check_ref9(s7_pointer p, const char *func, int32_t line)
static s7_pointer check_ref10(s7_pointer p, const char *func, int32_t line)
{
uint8_t typ;
+#if CHECK_ALL_BITS
+ if (has_odd_bits(cur_sc, p))
+ fprintf(stderr, "odd bits: %s\n", describe_type_bits(cur_sc, p));
+#endif
typ = unchecked_type(p);
if ((typ != T_PAIR) && (typ != T_NIL) && (typ != T_SYMBOL))
{
@@ -28526,6 +28456,10 @@ static s7_pointer check_ref10(s7_pointer p, const char *func, int32_t line)
static s7_pointer check_ref11(s7_pointer p, const char *func, int32_t line)
{
uint8_t typ;
+#if CHECK_ALL_BITS
+ if (has_odd_bits(cur_sc, p))
+ fprintf(stderr, "odd bits: %s\n", describe_type_bits(cur_sc, p));
+#endif
typ = unchecked_type(p);
if ((typ < T_CLOSURE) && (typ != T_BOOLEAN) && (typ != T_PAIR)) /* actually #t is an error here */
{
@@ -28538,50 +28472,26 @@ static s7_pointer check_ref11(s7_pointer p, const char *func, int32_t line)
return(p);
}
-static s7_pointer check_sym(s7_scheme *sc, s7_pointer sym)
-{
- uint8_t typ;
- typ = unchecked_type(local_slot(sym)); /* this is checking local_slot lookups, so local_slot should be a slot! */
- if (typ == T_FREE)
- fprintf(stderr, "%s is local, but local slot is free\n", DISPLAY(sym));
- else
- {
- if (typ != T_SLOT)
- fprintf(stderr, "%s local_slot: %s\n", DISPLAY(sym), DISPLAY(local_slot(sym)));
- else
- {
- s7_pointer local_val, search_val;
- local_val = slot_value(local_slot(sym));
- search_val = find_symbol_checked(sc, sym);
- if (local_val != search_val)
- {
- fprintf(stderr, "local %s: %p %p ", symbol_name(sym), local_val, search_val);
- fprintf(stderr, "%s ", DISPLAY_80(local_val));
- fprintf(stderr, "%s", DISPLAY_80(search_val));
- fprintf(stderr, "\n");
- /* (let () (define (f x) x) (define* (f (y (f 1))) (+ y 1)) (f)) -> local y: 0x7f1082849098 0x7f1082849120 1 2
- * which depends on (+ ... 1)!
- */
- }
- return(local_val);
- }
- }
- return(sc->nil);
-}
-
static s7_pointer check_cell(s7_pointer p, const char *func, int32_t line)
{
- uint8_t typ;
if (!p)
{
fprintf(stderr, "%s%s[%d]: null pointer!%s\n", BOLD_TEXT, func, line, UNBOLD_TEXT);
if (stop_at_error) abort();
- }
- typ = unchecked_type(p);
- if ((typ < 0) || (typ >= NUM_TYPES))
+ }
+ else
{
- fprintf(stderr, "%s%s[%d]: attempt to use messed up cell (type: %d)%s\n", BOLD_TEXT, func, line, typ, UNBOLD_TEXT);
- if (stop_at_error) abort();
+ uint8_t typ;
+#if CHECK_ALL_BITS
+ if (has_odd_bits(cur_sc, p))
+ fprintf(stderr, "odd bits: %s\n", describe_type_bits(cur_sc, p));
+#endif
+ typ = unchecked_type(p);
+ if ((typ < 0) || (typ >= NUM_TYPES))
+ {
+ fprintf(stderr, "%s%s[%d]: attempt to use messed up cell (type: %d)%s\n", BOLD_TEXT, func, line, typ, UNBOLD_TEXT);
+ if (stop_at_error) abort();
+ }
}
return(p);
}
@@ -28596,6 +28506,13 @@ static s7_pointer check_nref(s7_pointer p, const char *func, int32_t line)
fprintf(stderr, "%s%s[%d]: attempt to use free cell%s\n", BOLD_TEXT, func, line, UNBOLD_TEXT);
if (stop_at_error) abort();
}
+ else
+ {
+#if CHECK_ALL_BITS
+ if (has_odd_bits(cur_sc, p))
+ fprintf(stderr, "odd bits: %s\n", describe_type_bits(cur_sc, p));
+#endif
+ }
return(p);
}
@@ -28646,6 +28563,7 @@ static const char *opt2_role_name(int32_t role)
if (role == F_PAIR) return("opt_pair2");
if (role == F_CON) return("opt_con2");
if (role == F_LAMBDA) return("opt_lambda2");
+ if (role == F_ID) return("opt_id2");
return("unknown");
}
@@ -28667,7 +28585,7 @@ static char* show_debugger_bits(uint32_t bits)
{
char *bits_str;
bits_str = (char *)calloc(512, sizeof(char));
- snprintf(bits_str, 512, " %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%s%s%s%s%s",
+ snprintf(bits_str, 512, " %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%s%s%s%s%s%s",
((bits & E_SET) != 0) ? " e-set" : "",
((bits & E_FAST) != 0) ? " opt_fast" : "",
((bits & E_CFUNC) != 0) ? " opt_cfunc" : "",
@@ -28688,6 +28606,7 @@ static char* show_debugger_bits(uint32_t bits)
((bits & F_CON) != 0) ? " opt_con2" : "",
((bits & F_CALL) != 0) ? " c_call(ee)" : "",
((bits & F_LAMBDA) != 0) ? " opt_lambda2" : "",
+ ((bits & F_ID) != 0) ? " opt_id2" : "",
((bits & G_SET) != 0) ? " g-set" : "",
((bits & G_ARGLEN) != 0) ? " arglist_length" : "",
((bits & G_SYM) != 0) ? " opt_sym3" : "",
@@ -28758,7 +28677,7 @@ static void show_opt2_bits(s7_scheme *sc, s7_pointer p, const char *func, int32_
{
char *bits;
bits = show_debugger_bits(p->debugger_bits);
- fprintf(stderr, "%s%s[%d]: opt2: %p->%p wants %s, debugger bits are %" PRIx64 "%s but expects %x%s%s%s%s%s%s%s%s%s%s\n",
+ fprintf(stderr, "%s%s[%d]: opt2: %p->%p wants %s, debugger bits are %" PRIx64 "%s but expects %x%s%s%s%s%s%s%s%s%s%s%s\n",
BOLD_TEXT,
func, line, p, p->object.cons.opt2,
opt2_role_name(role),
@@ -28771,6 +28690,7 @@ static void show_opt2_bits(s7_scheme *sc, s7_pointer p, const char *func, int32_
((role & F_CON) != 0) ? " con" : "",
((role & F_CALL) != 0) ? " call" : "",
((role & F_LAMBDA) != 0) ? " lambda" : "",
+ ((role & F_ID) != 0) ? " id" : "",
((role & S_NAME) != 0) ? " raw-name" : "",
UNBOLD_TEXT);
free(bits);
@@ -28972,13 +28892,16 @@ static void print_debugging_state(s7_scheme *sc, s7_pointer obj, s7_pointer port
tmpbuf_free(str, len);
}
-static s7_pointer g_is_local_symbol(s7_scheme *sc, s7_pointer p) {return(make_boolean(sc, is_local_symbol(p)));} /* was car(p)?? */
-
static s7_pointer check_null_sym(s7_scheme *sc, s7_pointer p, s7_pointer sym, int32_t line, const char *func)
{
if (!p)
{
+ s7_pointer slot;
fprintf(stderr, "%s%s[%d]: %s unbound%s\n", BOLD_TEXT, func, line, symbol_name(sym), UNBOLD_TEXT);
+ fprintf(stderr, " symbol_id: %ld, let_id: %ld, bits: %s", symbol_id(sym), let_id(sc->envir), describe_type_bits(sc, sym));
+ slot = symbol_to_local_slot(sc, sym, sc->envir);
+ if (is_slot(slot)) fprintf(stderr, ", slot: %s", DISPLAY(slot));
+ fprintf(stderr, "\n");
if (stop_at_error) abort();
}
return(p);
@@ -29010,11 +28933,9 @@ static void iterator_to_port(s7_scheme *sc, s7_pointer obj, s7_pointer port, use
if (iterator_position(obj) > 0)
{
int32_t nlen;
- char *str;
- str = (char *)malloc(128 * sizeof(char));
+ char str[128];
nlen = snprintf(str, 128, "))) (do ((i 0 (+ i 1))) ((= i %" PRId64 ") iter) (iterate iter)))", iterator_position(obj));
port_write_string(port)(sc, str, nlen, port);
- free(str);
}
else port_write_character(port)(sc, ')', port);
}
@@ -29084,7 +29005,7 @@ static void rng_to_port(s7_scheme *sc, s7_pointer obj, s7_pointer port, use_writ
static void display_any(s7_scheme *sc, s7_pointer obj, s7_pointer port, use_write_t use_write, shared_info *ci)
{
-#if DEBUGGING
+#if S7_DEBUGGING
print_debugging_state(sc, obj, port);
#else
{
@@ -30916,6 +30837,16 @@ static s7_pointer cons_unchecked(s7_scheme *sc, s7_pointer a, s7_pointer b)
return(x);
}
+static s7_pointer cons_unchecked_with_type(s7_scheme *sc, s7_pointer p, s7_pointer a, s7_pointer b)
+{
+ /* apparently slightly faster as a function? */
+ s7_pointer x;
+ new_cell_no_check(sc, x, typeflag(p) & (0xff | T_IMMUTABLE | T_SAFE_PROCEDURE));
+ set_car(x, a);
+ set_cdr(x, b);
+ return(x);
+}
+
static s7_pointer permanent_cons(s7_pointer a, s7_pointer b, uint64_t type)
{
@@ -31389,6 +31320,7 @@ static bool symbol_is_in_arg_list(s7_pointer sym, s7_pointer lst)
return(sym == x);
}
+/* ---------------- tree-leaves ---------------- */
static s7_int tree_len_1(s7_scheme *sc, s7_pointer p)
{
s7_int sum;
@@ -31433,10 +31365,16 @@ static s7_pointer g_tree_leaves(s7_scheme *sc, s7_pointer args)
{
#define H_tree_leaves "(tree-leaves tree) returns the number of leaves in the tree"
#define Q_tree_leaves s7_make_signature(sc, 2, sc->is_integer_symbol, sc->T)
- return(s7_make_integer(sc, tree_len(sc, car(args))));
-}
+ s7_pointer tree;
+ tree = car(args);
+ if ((sc->safety > NO_SAFETY) &&
+ (tree_is_cyclic(sc, tree)))
+ s7_error(sc, sc->wrong_type_arg_symbol, s7_make_string_wrapper(sc, "tree-leaves: tree is cyclic"));
+ return(s7_make_integer(sc, tree_len(sc, tree)));
+}
+/* ---------------- tree-memq ---------------- */
static bool tree_memq_1(s7_scheme *sc, s7_pointer sym, s7_pointer tree)
{
if (car(tree) == sc->quote_symbol)
@@ -31446,13 +31384,14 @@ static bool tree_memq_1(s7_scheme *sc, s7_pointer sym, s7_pointer tree)
return(sym == cadr(tree));
}
do {
- if ((sym == cdr(tree)) || /* "sym" need not be a symbol */
- (sym == car(tree)))
+ if (sym == car(tree)) /* "sym" need not be a symbol */
return(true);
if ((is_pair(car(tree))) &&
(tree_memq_1(sc, sym, car(tree))))
return(true);
tree = cdr(tree);
+ if (sym == tree)
+ return(true);
} while (is_pair(tree));
return(false);
}
@@ -31468,12 +31407,18 @@ 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."
#define Q_tree_memq s7_make_signature(sc, 3, sc->is_boolean_symbol, sc->T, sc->T)
- return(make_boolean(sc, s7_tree_memq(sc, car(args), cadr(args))));
-}
-static bool tree_memq_b_pp(s7_pointer sym, s7_pointer tree) {return(s7_tree_memq(cur_sc, sym, tree));}
+ s7_pointer tree;
+ tree = cadr(args);
+ if ((sc->safety > NO_SAFETY) &&
+ (tree_is_cyclic(sc, tree)))
+ s7_error(sc, sc->wrong_type_arg_symbol, s7_make_string_wrapper(sc, "tree-memq: tree is cyclic"));
+ return(make_boolean(sc, s7_tree_memq(sc, car(args), tree)));
+}
+static bool tree_memq_b_pp(s7_pointer sym, s7_pointer tree) {return(g_tree_memq(cur_sc, set_plist_2(cur_sc, sym, tree)) != cur_sc->F);}
+/* ---------------- tree-set-memq ---------------- */
static bool pair_set_memq(s7_scheme *sc, s7_pointer tree)
{
while (true)
@@ -31509,14 +31454,19 @@ 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->T, sc->T)
- s7_pointer syms, p;
+
+ s7_pointer syms, p, tree;
+ tree = cadr(args);
+ if ((sc->safety > NO_SAFETY) &&
+ (tree_is_cyclic(sc, tree)))
+ s7_error(sc, sc->wrong_type_arg_symbol, s7_make_string_wrapper(sc, "tree-set-memq: tree is cyclic"));
syms = car(args);
if (!is_pair(syms)) return(sc->F);
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, cadr(args))));
+ return(make_boolean(sc, tree_set_memq(sc, tree)));
}
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);}
@@ -31524,11 +31474,15 @@ static bool tree_set_memq_b_pp(s7_pointer syms, s7_pointer tree) {return(g_tree_
static s7_pointer tree_set_memq_syms;
static s7_pointer g_tree_set_memq_1(s7_scheme *sc, s7_pointer args)
{
- s7_pointer p;
+ s7_pointer p, tree;
+ tree = cadr(args);
+ if ((sc->safety > NO_SAFETY) &&
+ (tree_is_cyclic(sc, tree)))
+ s7_error(sc, sc->wrong_type_arg_symbol, s7_make_string_wrapper(sc, "tree-set-memq: tree is cyclic"));
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))));
+ return(make_boolean(sc, tree_set_memq(sc, tree)));
}
static s7_pointer tree_set_memq_chooser(s7_scheme *sc, s7_pointer f, int32_t args, s7_pointer expr, bool ops)
@@ -31546,7 +31500,7 @@ static s7_pointer tree_set_memq_chooser(s7_scheme *sc, s7_pointer f, int32_t arg
return(f);
}
-
+/* ---------------- tree-count ---------------- */
static s7_int tree_count(s7_scheme *sc, s7_pointer x, s7_pointer p, s7_int count)
{
if (p == x)
@@ -31580,6 +31534,9 @@ static s7_pointer g_tree_count(s7_scheme *sc, s7_pointer args)
return(simple_wrong_type_argument(sc, sc->tree_count_symbol, caddr(args), T_INTEGER));
return((obj == tree) ? small_int(1) : small_int(0));
}
+ if ((sc->safety > NO_SAFETY) &&
+ (tree_is_cyclic(sc, tree)))
+ s7_error(sc, sc->wrong_type_arg_symbol, s7_make_string_wrapper(sc, "tree-count: tree is cyclic"));
if (is_null(cddr(args)))
return(s7_make_integer(sc, tree_count(sc, obj, tree, 0)));
count = caddr(args);
@@ -31669,16 +31626,27 @@ s7_pointer s7_reverse(s7_scheme *sc, s7_pointer a)
static s7_pointer reverse_in_place(s7_scheme *sc, s7_pointer term, s7_pointer list)
{
- s7_pointer p = list, result = term, q;
+ s7_pointer p, result;
- while (is_not_null(p))
+ if (is_null(list)) return(term);
+ p = list;
+ result = term;
+ while (true)
{
+ s7_pointer q;
q = cdr(p);
- if (!is_list(q))
- return(sc->nil); /* improper list? */
- set_cdr(p, result);
- result = p;
- p = q;
+ if (is_null(q))
+ {
+ set_cdr(p, result);
+ return(p);
+ }
+ if ((is_pair(q)) && (!is_immutable(q)))
+ {
+ set_cdr(p, result);
+ result = p;
+ p = q;
+ }
+ else return(sc->nil); /* improper or immutable */
}
return(result);
}
@@ -32366,7 +32334,7 @@ static s7_pointer g_set_cdr(s7_scheme *sc, s7_pointer args)
if (!is_mutable_pair(p))
mutable_method_or_bust(sc, p, sc->set_cdr_symbol, args, T_PAIR, 1);
-#if DEBUGGING
+#if S7_DEBUGGING
if (not_in_heap(p))
fprintf(stderr, "unheap set-cdr! %s\n", DISPLAY(p));
#endif
@@ -32379,7 +32347,7 @@ static s7_pointer set_cdr_p_pp(s7_pointer p1, s7_pointer p2)
{
if (!is_mutable_pair(p1))
simple_wrong_type_argument(cur_sc, cur_sc->set_cdr_symbol, p1, T_PAIR);
-#if DEBUGGING
+#if S7_DEBUGGING
if (not_in_heap(p1))
fprintf(stderr, "unheap opt set-cdr! %s\n", s7_object_to_c_string(cur_sc, p1));
#endif
@@ -33056,16 +33024,22 @@ If 'func' is a function of 2 arguments, it is used for the comparison instead of
}
}
- /* sc->value = sc->F; */
+ /* member_if is similar. Do not call eval here with op_eval_done to return! An error will longjmp past the
+ * assoc point, leaving the op_eval_done on the stack, causing s7 to quit.
+ */
y = cons(sc, args, sc->nil);
set_opt_fast(y, x);
set_opt_slow(y, x);
- push_stack(sc, OP_EVAL_DONE, sc->args, sc->code);
push_stack(sc, OP_ASSOC_IF, cons(sc, y, sc->nil), eq_func);
- sc->args = list_2(sc, car(args), caar(x));
- sc->code = eq_func;
- eval(sc, OP_APPLY);
- return(sc->value);
+ if (needs_copied_args(eq_func))
+ push_stack(sc, OP_APPLY, list_2(sc, car(args), caar(x)), eq_func);
+ else
+ {
+ set_car(sc->t2_1, car(args));
+ set_car(sc->t2_2, caar(x));
+ push_stack(sc, OP_APPLY, sc->t2_1, eq_func);
+ }
+ return(sc->unspecified);
}
x = cadr(args);
@@ -33261,7 +33235,7 @@ static s7_pointer g_memq_car(s7_scheme *sc, s7_pointer args)
{
s7_pointer x, obj;
- obj = find_symbol_unchecked(sc, opt_sym2(args));
+ obj = symbol_to_value_unchecked(sc, opt_sym2(args));
if (is_pair(obj))
obj = car(obj);
else obj = g_car(sc, set_plist_1(sc, obj));
@@ -33284,7 +33258,7 @@ static s7_pointer g_memq_car_2(s7_scheme *sc, s7_pointer args)
{
s7_pointer x, obj;
- obj = find_symbol_unchecked(sc, opt_sym2(args));
+ obj = symbol_to_value_unchecked(sc, opt_sym2(args));
if (is_pair(obj))
obj = car(obj);
else obj = g_car(sc, set_plist_1(sc, obj));
@@ -33526,32 +33500,27 @@ member uses equal? If 'func' is a function of 2 arguments, it is used for the c
new_frame_with_two_slots(sc, sc->envir, sc->envir, car(closure_args(eq_func)), car(args), cadr(closure_args(eq_func)), sc->F);
func = s7_bool_optimize(sc, body);
-
- if (func)
+ if (func == opt_bool_any)
{
+ opt_info *o;
s7_pointer b;
+ o = sc->opts[0];
b = next_slot(let_slots(sc->envir));
-
- if (func == opt_bool_any)
+ for (slow = x; is_pair(x); x = cdr(x), slow = cdr(slow))
{
- opt_info *o;
- o = sc->opts[0];
- for (slow = x; is_pair(x); x = cdr(x), slow = cdr(slow))
- {
- slot_set_value(b, car(x));
- sc->pc = 0;
- if (o->v7.fb(o)) 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));
- sc->pc = 0;
- if (o->v7.fb(o)) return(x);
- }
- return(sc->F);
+ slot_set_value(b, car(x));
+ sc->pc = 0;
+ if (o->v7.fb(o)) 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));
+ sc->pc = 0;
+ if (o->v7.fb(o)) return(x);
}
+ return(sc->F);
}
}
}
@@ -33589,7 +33558,7 @@ static s7_pointer g_member_sq(s7_scheme *sc, s7_pointer args)
{
s7_pointer obj, lst;
lst = cadadr(args);
- obj = find_symbol_unchecked(sc, car(args));
+ obj = symbol_to_value_unchecked(sc, car(args));
if (is_simple(obj))
return(s7_memq(sc, obj, lst));
@@ -33605,8 +33574,8 @@ static s7_pointer g_member_ss(s7_scheme *sc, s7_pointer args)
{
s7_pointer obj, x;
- obj = find_symbol_unchecked(sc, car(args));
- x = find_symbol_unchecked(sc, cadr(args));
+ obj = symbol_to_value_unchecked(sc, car(args));
+ x = symbol_to_value_unchecked(sc, cadr(args));
if (!is_pair(x))
{
if (is_null(x)) return(sc->F);
@@ -33631,7 +33600,7 @@ static s7_pointer member_chooser(s7_scheme *sc, s7_pointer f, int32_t args, s7_p
{
if (is_symbol(caddr(expr)))
{
- if ((optimize_op(expr) == HOP_SAFE_C_SS) || (optimize_op(expr) == HOP_SAFE_C_LL) ||
+ if ((optimize_op(expr) == HOP_SAFE_C_SS) ||
((is_h_safe_c_c(expr)) &&
(is_symbol(cadr(expr)))))
{
@@ -33734,7 +33703,7 @@ static s7_pointer g_list_append(s7_scheme *sc, s7_pointer args)
* but this is inconsistent with (append (list 1) "hi" "hi") -> '(1 #\h #\i . "hi") ?
* Perhaps if all args but last are lists, returned dotted list?
*/
-#if DEBUGGING
+#if S7_DEBUGGING
if (!np) fprintf(stderr, "%s[%d]: np is null\n", __func__, __LINE__);
#endif
if (args_are_lists || (is_null(p)))
@@ -33879,6 +33848,7 @@ static s7_pointer float_vector_getter(s7_scheme *sc, s7_pointer vec, s7_int loc)
return(make_real(sc, float_vector_element(vec, loc)));
}
+
static s7_pointer make_simple_vector(s7_scheme *sc, s7_int len) /* len >= 0 and < max */
{
s7_pointer x;
@@ -34082,6 +34052,7 @@ s7_int s7_set_print_length(s7_scheme *sc, s7_int new_len)
#endif
+/* -------------------------------- vector-fill! -------------------------------- */
#if WITH_VECTORIZE
static void vector_fill(s7_scheme *sc, s7_pointer vec, s7_pointer obj) __attribute__((optimize("tree-vectorize")));
#endif
@@ -34294,6 +34265,7 @@ static s7_pointer g_vector_fill(s7_scheme *sc, s7_pointer args)
}
+/* -------------------------------- vector-ref|set! -------------------------------- */
s7_pointer s7_vector_ref(s7_scheme *sc, s7_pointer vec, s7_int index)
{
if (index >= vector_length(vec))
@@ -34504,7 +34476,7 @@ s7_pointer s7_vector_set_n(s7_scheme *sc, s7_pointer vector, s7_pointer value, i
return(s7_wrong_number_of_args_error(sc, "s7_vector_set_n: wrong number of indices: ~A", s7_make_integer(sc, indices)));
}
-
+/* -------------------------------- vector->list -------------------------------- */
s7_pointer s7_vector_to_list(s7_scheme *sc, s7_pointer vect)
{
s7_int i, len;
@@ -34580,7 +34552,7 @@ s7_pointer s7_make_and_fill_vector(s7_scheme *sc, s7_int len, s7_pointer fill)
return(vect);
}
-
+/* -------------------------------- vector -------------------------------- */
static s7_pointer g_vector(s7_scheme *sc, s7_pointer args)
{
#define H_vector "(vector ...) returns a vector whose elements are the arguments"
@@ -34667,6 +34639,7 @@ s7_int s7_vector_length(s7_pointer vec)
}
#if (!WITH_PURE_S7)
+/* -------------------------------- list->vector -------------------------------- */
static s7_pointer g_list_to_vector(s7_scheme *sc, s7_pointer args)
{
s7_pointer p;
@@ -34706,6 +34679,7 @@ static s7_int vector_length_i(s7_pointer p)
#endif
+/* -------------------------------- make-shared-vector -------------------------------- */
static s7_pointer make_shared_vector(s7_scheme *sc, s7_pointer vect, int32_t skip_dims, s7_int index)
{
s7_pointer x;
@@ -34958,7 +34932,7 @@ static s7_pointer g_vector_ref(s7_scheme *sc, s7_pointer args)
static s7_pointer g_vector_ref_ic_n(s7_scheme *sc, s7_pointer args, s7_int index)
{
s7_pointer vec;
- vec = find_symbol_unchecked(sc, car(args));
+ vec = symbol_to_value_unchecked(sc, car(args));
if (!s7_is_vector(vec))
method_or_bust(sc, vec, sc->vector_ref_symbol, list_2(sc, vec, cadr(args)), T_VECTOR, 1);
@@ -35134,7 +35108,7 @@ static s7_pointer vector_set_p_pip(s7_pointer v, s7_int i, s7_pointer p)
static s7_pointer vector_set_p_pip_direct(s7_pointer v, s7_int i, s7_pointer p)
{
-#if DEBUGGING
+#if S7_DEBUGGING
if (!is_normal_vector(v)) abort();
#endif
if ((i < 0) || (i >= vector_length(v)))
@@ -35145,7 +35119,7 @@ static s7_pointer vector_set_p_pip_direct(s7_pointer v, s7_int i, s7_pointer p)
static s7_pointer vector_set_unchecked(s7_pointer v, s7_int i, s7_pointer p)
{
-#if DEBUGGING
+#if S7_DEBUGGING
if (!is_normal_vector(v)) abort();
#endif
vector_element(v, i) = p;
@@ -35159,21 +35133,21 @@ static s7_pointer g_vector_set_ic(s7_scheme *sc, s7_pointer args)
s7_pointer vec, val;
s7_int index;
- vec = find_symbol_unchecked(sc, car(args));
+ vec = symbol_to_value_unchecked(sc, car(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);
+ method_or_bust(sc, vec, sc->vector_set_symbol, list_3(sc, vec, cadr(args), symbol_to_value_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)))));
+ return(g_vector_set(sc, set_plist_3(sc, vec, cadr(args), symbol_to_value_unchecked(sc, caddr(args)))));
index = s7_integer(cadr(args));
if (index >= vector_length(vec))
return(out_of_range(sc, sc->vector_set_symbol, small_int(2), cadr(args), its_too_large_string));
- val = find_symbol_unchecked(sc, caddr(args));
+ val = symbol_to_value_unchecked(sc, caddr(args));
vector_setter(vec)(sc, vec, index, val);
return(val);
}
@@ -35470,7 +35444,7 @@ static s7_pointer g_vector_dimensions(s7_scheme *sc, s7_pointer args)
static int32_t traverse_vector_data(s7_scheme *sc, s7_pointer vec, int32_t flat_ref, int32_t dimension, int32_t dimensions, int32_t *sizes, s7_pointer lst)
{
- /* we're filling vec, we're currently looking for element (flat-wise) flat_ref,
+ /* we're filling vec, we're currently looking for element flat_ref,
* we're at ref in dimension of dimensions, where sizes gives the bounds, and lst is our data
* #3D(((1 2 3) (4 5 6)) ((7 8 9) (10 11 12)))
*/
@@ -35881,7 +35855,7 @@ static bool c_function_is_ok(s7_scheme *sc, s7_pointer x)
p = car(x); /* function name (symbol) */
if (is_global(p))
p = slot_value(global_slot(p));
- else p = find_symbol_unchecked(sc, p);
+ else p = symbol_to_value_unchecked(sc, p);
/* this is nearly always global and p == opt_cfunc(x)
* p can be null if we evaluate some code, optimizing it, then eval it again in a context
@@ -36168,11 +36142,11 @@ static s7_pointer g_sort(s7_scheme *sc, s7_pointer args)
int32_t orig_data;
orig_data = optimize_op(expr);
set_optimize_op(expr, optimize_op(expr) | 1);
- if (((optimize_op(expr) == HOP_SAFE_C_SS) || (optimize_op(expr) == HOP_SAFE_C_LL)) &&
+ if ((optimize_op(expr) == HOP_SAFE_C_SS) &&
(car(largs) == cadr(expr)) &&
(cadr(largs) == caddr(expr)))
{
- lessp = find_symbol_unchecked(sc, car(expr));
+ lessp = symbol_to_value_unchecked(sc, car(expr));
compare_func = c_function_call(lessp);
}
else
@@ -36183,7 +36157,7 @@ static s7_pointer g_sort(s7_scheme *sc, s7_pointer args)
(car(largs) == cadadr(expr)) &&
(cadr(largs) == cadr(caddr(expr))))
{
- lessp = find_symbol_unchecked(sc, car(expr));
+ lessp = symbol_to_value_unchecked(sc, car(expr));
compare_func = c_function_call(lessp);
sort_func = ((caadr(expr) == sc->car_symbol) ? vector_car_compare : vector_cdr_compare);
}
@@ -36267,7 +36241,7 @@ static s7_pointer g_sort(s7_scheme *sc, s7_pointer args)
if (is_null(compare_begin))
sort_func = closure_compare;
else sort_func = closure_compare_begin;
- if (typesflag(compare_args) == SYNTACTIC_PAIR)
+ if (is_syntactic_pair(compare_args))
{
compare_op = (opcode_t)pair_syntax_op(compare_args);
compare_args = cdr(compare_args);
@@ -37350,8 +37324,9 @@ static s7_pointer remove_from_hash_table(s7_scheme *sc, s7_pointer table, s7_poi
hash_entry_t *x;
uint32_t hash_len, loc;
+ if (!p) return(sc->F);
hash_len = hash_table_mask(table);
-#if DEBUGGING
+#if S7_DEBUGGING
if (p->raw_hash != hash_loc(sc, table, key))
fprintf(stderr, "%s[%d]: %s raw: %u, loc: %u\n", __func__, __LINE__, DISPLAY(key), p->raw_hash, hash_loc(sc, table, key));
#endif
@@ -37766,8 +37741,8 @@ static s7_pointer g_hash_table_ref_ss(s7_scheme *sc, s7_pointer args)
s7_pointer table, key;
hash_entry_t *x;
- table = find_symbol_unchecked(sc, car(args));
- key = find_symbol_unchecked(sc, cadr(args));
+ table = symbol_to_value_unchecked(sc, car(args));
+ key = symbol_to_value_unchecked(sc, cadr(args));
if (!is_hash_table(table))
method_or_bust(sc, table, sc->hash_table_ref_symbol, list_2(sc, table, key), T_HASH_TABLE, 1);
@@ -37782,8 +37757,8 @@ static s7_pointer g_hash_table_ref_car(s7_scheme *sc, s7_pointer args)
s7_pointer y, table;
hash_entry_t *x;
- table = find_symbol_unchecked(sc, car(args));
- y = find_symbol_unchecked(sc, opt_sym3(args));
+ table = symbol_to_value_unchecked(sc, car(args));
+ y = symbol_to_value_unchecked(sc, opt_sym3(args));
if (!is_pair(y))
return(simple_wrong_type_argument(sc, sc->car_symbol, y, T_PAIR));
@@ -37825,54 +37800,49 @@ static void hash_table_set_checker(s7_pointer table, uint8_t typ)
}
}
-static void extend_hash_free_list(void)
+static hash_entry_t *extend_hash_free_list(void)
{
int32_t i;
hash_entry_t *p;
- hash_free_list = (hash_entry_t *)malloc(16 * sizeof(hash_entry_t));
- for (p = hash_free_list, i = 0; i < 15; i++) {p->next = p + 1; p++;}
+ hash_free_list = (hash_entry_t *)malloc(32 * sizeof(hash_entry_t));
+ for (p = hash_free_list, i = 0; i < 31; i++) {p->next = p + 1; p++;}
p->next = NULL;
+ return(hash_free_list);
}
s7_pointer s7_hash_table_set(s7_scheme *sc, s7_pointer table, s7_pointer key, s7_pointer value)
{
- hash_entry_t *x;
- x = (*hash_table_checker(table))(sc, table, key);
+ uint32_t hash_len, loc;
+ hash_entry_t *p, *x;
+
+ if (value == sc->F)
+ return(remove_from_hash_table(sc, table, key, (*hash_table_checker(table))(sc, table, key)));
+ x = (*hash_table_checker(table))(sc, table, key);
if (x)
{
- if (value == sc->F)
- return(remove_from_hash_table(sc, table, key, x));
x->value = _NFre(value);
+ return(value);
}
- else
- {
- uint32_t hash_len, raw_hash, loc;
- hash_entry_t *p;
- if (value == sc->F) return(sc->F);
-
- if (!hash_chosen(table))
- hash_table_set_checker(table, type(key));
- hash_len = hash_table_mask(table);
- if (hash_table_entries(table) > hash_len)
- hash_len = resize_hash_table(sc, table);
- raw_hash = hash_loc(sc, table, key);
+ if (!hash_chosen(table))
+ hash_table_set_checker(table, type(key));
- if (!hash_free_list)
- extend_hash_free_list();
+ hash_len = hash_table_mask(table);
+ if (hash_table_entries(table) > hash_len)
+ hash_len = resize_hash_table(sc, table);
- p = hash_free_list;
- hash_free_list = p->next;
- p->key = key;
- p->value = _NFre(value);
- p->raw_hash = raw_hash;
+ p = hash_free_list;
+ if (!p) p = extend_hash_free_list();
+ hash_free_list = p->next;
+ p->key = key;
+ p->value = _NFre(value);
+ p->raw_hash = hash_loc(sc, table, key);
- loc = raw_hash & hash_len;
- p->next = hash_table_element(table, loc);
- hash_table_element(table, loc) = p;
- hash_table_entries(table)++;
- }
+ loc = p->raw_hash & hash_len;
+ p->next = hash_table_element(table, loc);
+ hash_table_element(table, loc) = p;
+ hash_table_entries(table)++;
return(value);
}
@@ -38663,9 +38633,6 @@ static s7_pointer g_signature(s7_scheme *sc, s7_pointer args)
#define Q_signature s7_make_signature(sc, 2, s7_make_signature(sc, 2, sc->is_pair_symbol, sc->is_boolean_symbol), sc->T)
p = car(args);
- if (is_symbol(p))
- p = s7_symbol_value(sc, p); /* lint depends on this currently */
-
switch (type(p))
{
case T_C_FUNCTION:
@@ -38712,6 +38679,12 @@ static s7_pointer g_signature(s7_scheme *sc, s7_pointer args)
#endif
return(sc->let_signature);
+ case T_SYMBOL:
+ p = s7_symbol_value(sc, p);
+ if (!is_symbol(p))
+ return(g_signature(sc, set_plist_1(sc, p))); /* lint depends on this currently */
+ break;
+
default:
break;
}
@@ -38723,8 +38696,6 @@ 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) -------------------------------- */
@@ -39111,10 +39082,24 @@ s7_pointer s7_typed_dilambda(s7_scheme *sc,
bool s7_is_dilambda(s7_pointer obj)
{
- return(((is_c_function(obj)) &&
- (is_c_function(c_function_setter(obj)))) ||
- ((is_any_closure(obj)) &&
- (is_procedure(closure_setter(obj)))));
+ switch (type(obj))
+ {
+ case T_MACRO: case T_MACRO_STAR:
+ case T_BACRO: case T_BACRO_STAR:
+ case T_CLOSURE: case T_CLOSURE_STAR:
+ return(is_any_procedure(closure_setter(obj))); /* type >= T_CLOSURE (excludes goto/continuation) */
+
+ case T_C_FUNCTION:
+ case T_C_ANY_ARGS_FUNCTION:
+ case T_C_OPT_ARGS_FUNCTION:
+ case T_C_RST_ARGS_FUNCTION:
+ case T_C_FUNCTION_STAR:
+ return(is_any_procedure(c_function_setter(obj)));
+
+ case T_C_MACRO:
+ return(is_any_procedure(c_macro_setter(obj)));
+ }
+ return(false);
}
static s7_pointer g_is_dilambda(s7_scheme *sc, s7_pointer args)
@@ -39124,7 +39109,7 @@ static s7_pointer g_is_dilambda(s7_scheme *sc, s7_pointer args)
check_boolean_method(sc, s7_is_dilambda, sc->is_dilambda_symbol, args);
}
-static s7_pointer c_set_setter(s7_scheme *sc, s7_pointer p, s7_pointer setter)
+s7_pointer s7_set_setter(s7_scheme *sc, s7_pointer p, s7_pointer setter)
{
switch (type(p))
{
@@ -39148,10 +39133,10 @@ static s7_pointer c_set_setter(s7_scheme *sc, s7_pointer p, s7_pointer setter)
break;
case T_C_MACRO:
+ c_macro_set_setter(p, setter);
if ((is_any_closure(setter)) ||
(is_any_macro(setter)))
add_setter(sc, p, setter);
- c_macro_set_setter(p, setter);
break;
}
return(setter);
@@ -39171,7 +39156,7 @@ static s7_pointer g_dilambda(s7_scheme *sc, s7_pointer args)
if (!is_any_procedure(setter))
return(wrong_type_argument_with_type(sc, sc->dilambda_symbol, 2, setter, s7_make_string_wrapper(sc, "a procedure or macro")));
- c_set_setter(sc, getter, setter);
+ s7_set_setter(sc, getter, setter);
return(getter);
}
@@ -39277,7 +39262,7 @@ static s7_pointer g_setter(s7_scheme *sc, s7_pointer args)
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);
+ p = symbol_to_slot(sc, p);
if (!is_slot(p)) return(sc->F);
if (slot_has_setter(p)) return(slot_setter(p));
return(sc->F);
@@ -39307,7 +39292,7 @@ static s7_pointer g_set_setter(s7_scheme *sc, s7_pointer args)
* #t
* can this make sense?
*/
- return(c_set_setter(sc, p, setter));
+ return(s7_set_setter(sc, p, setter));
}
/* setter for hash-table could give cow-obj:
@@ -39488,6 +39473,7 @@ static s7_pointer g_arity(s7_scheme *sc, s7_pointer args)
}
+/* -------------------------------- aritable? -------------------------------- */
static bool closure_is_aritable(s7_scheme *sc, s7_pointer x, s7_pointer x_args, int32_t args)
{
/* x_args is unprocessed -- it is exactly the list as used in the closure definition */
@@ -39510,7 +39496,6 @@ static bool closure_is_aritable(s7_scheme *sc, s7_pointer x, s7_pointer x_args,
return(args == len); /* in a normal lambda list, there are no other possibilities */
}
-
static bool closure_star_is_aritable(s7_scheme *sc, s7_pointer x, s7_pointer x_args, int32_t args)
{
if (is_symbol(x_args))
@@ -39521,7 +39506,6 @@ static bool closure_star_is_aritable(s7_scheme *sc, s7_pointer x, s7_pointer x_a
(args <= closure_arity(x)));
}
-
bool s7_is_aritable(s7_scheme *sc, s7_pointer x, int32_t args)
{
switch (type(x))
@@ -39608,7 +39592,7 @@ static s7_pointer g_is_aritable(s7_scheme *sc, s7_pointer args)
static bool is_aritable_b_pp(s7_pointer f, s7_pointer i) {return(g_is_aritable(cur_sc, set_plist_2(cur_sc, f, i)) != cur_sc->F);}
-/* -------- sequence? -------- */
+/* -------------------------------- sequence? -------------------------------- */
static s7_pointer g_is_sequence(s7_scheme *sc, s7_pointer args)
{
#define H_is_sequence "(sequence? obj) returns #t if obj is a sequence (vector, string, pair, etc)"
@@ -39716,11 +39700,11 @@ static s7_pointer g_symbol_setter(s7_scheme *sc, s7_pointer args)
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);
+ p = symbol_to_slot(sc, sym);
sc->envir = old_e;
}
}
- else p = find_symbol(sc, sym);
+ else p = symbol_to_slot(sc, sym);
if (!is_slot(p))
return(sc->F);
@@ -39755,13 +39739,13 @@ static s7_pointer g_symbol_set_setter(s7_scheme *sc, s7_pointer args)
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);
+ p = symbol_to_slot(sc, sym);
sc->envir = old_e;
}
}
else
{
- p = find_symbol(sc, sym);
+ p = symbol_to_slot(sc, sym);
func = cadr(args);
}
@@ -40120,6 +40104,7 @@ static bool let_equal_1(s7_scheme *sc, s7_pointer x, s7_pointer y, shared_info *
if (!is_let(y))
return(false);
+
if ((x == sc->rootlet) || (y == sc->rootlet))
return(false);
@@ -40144,7 +40129,7 @@ static bool let_equal_1(s7_scheme *sc, s7_pointer x, s7_pointer y, shared_info *
for (py = let_slots(ey); is_slot(py); py = next_slot(py))
if (symbol_tag(slot_symbol(py)) != 0)
{
- y_len ++;
+ y_len++;
symbol_set_tag(slot_symbol(py), 0);
}
@@ -40165,7 +40150,6 @@ static bool let_equal_1(s7_scheme *sc, s7_pointer x, s7_pointer y, shared_info *
return(true);
}
-
static bool let_equal(s7_scheme *sc, s7_pointer x, s7_pointer y, shared_info *ci)
{
/* x == y if all unshadowed vars match, leaving aside the rootlet, so that for any local variable,
@@ -40198,6 +40182,7 @@ static bool let_morally_equal(s7_scheme *sc, s7_pointer x, s7_pointer y, shared_
return(let_equal_1(sc, x, y, ci, true));
}
+
static bool closure_equal(s7_scheme *sc, s7_pointer x, s7_pointer y, shared_info *ci)
{
if (x == y)
@@ -40236,11 +40221,16 @@ static bool closure_morally_equal(s7_scheme *sc, s7_pointer x, s7_pointer y, sha
(s7_is_morally_equal_1(sc, closure_body(x), closure_body(y), ci)));
}
-static bool pair_equal_1(s7_scheme *sc, s7_pointer x, s7_pointer y, shared_info *ci)
+static bool pair_equal(s7_scheme *sc, s7_pointer x, s7_pointer y, shared_info *ci)
{
shared_info *nci;
s7_pointer px, py;
+ if (x == y)
+ return(true);
+ if (!is_pair(y))
+ return(false);
+
if (ci)
{
nci = ci;
@@ -40259,15 +40249,6 @@ static bool pair_equal_1(s7_scheme *sc, s7_pointer x, s7_pointer y, shared_info
return(s7_is_equal_1(sc, px, py, nci));
}
-static bool pair_equal(s7_scheme *sc, s7_pointer x, s7_pointer y, shared_info *ci)
-{
- if (x == y)
- return(true);
- if (!is_pair(y))
- return(false);
- return(pair_equal_1(sc, x, y, ci));
-}
-
static bool pair_morally_equal(s7_scheme *sc, s7_pointer x, s7_pointer y, shared_info *ci)
{
shared_info *nci;
@@ -41331,24 +41312,24 @@ s7_pointer s7_copy(s7_scheme *sc, s7_pointer args)
{
s7_pointer mi, mj;
uint32_t gc_loc1, gc_loc2;
- s7_pointer (*ref)(s7_scheme *sc, s7_pointer obj, s7_pointer args);
- s7_pointer (*set)(s7_scheme *sc, s7_pointer obj, s7_pointer args);
+ s7_pointer (*cref)(s7_scheme *sc, s7_pointer obj, s7_pointer args);
+ s7_pointer (*cset)(s7_scheme *sc, s7_pointer obj, s7_pointer args);
mi = make_mutable_integer(sc, start);
mj = make_mutable_integer(sc, end);
gc_loc1 = s7_gc_protect_1(sc, mi);
gc_loc2 = s7_gc_protect_1(sc, mj);
- ref = c_object_ref(sc, source);
- set = c_object_set(sc, dest);
+ cref = c_object_ref(sc, source);
+ cset = c_object_set(sc, dest);
for (i = start, j = 0; i < end; i++, j++)
{
integer(mi) = i;
integer(mj) = j;
set_car(sc->t1_1, mi);
- set_car(sc->t2_2, ref(sc, source, sc->t1_1));
+ set_car(sc->t2_2, cref(sc, source, sc->t1_1));
set_car(sc->t2_1, mj);
- set(sc, dest, sc->t2_1);
+ cset(sc, dest, sc->t2_1);
}
s7_gc_unprotect_at(sc, gc_loc1);
s7_gc_unprotect_at(sc, gc_loc2);
@@ -41754,7 +41735,7 @@ static s7_pointer g_reverse_in_place(s7_scheme *sc, s7_pointer args)
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));
+ return(s7_wrong_type_arg_error(sc, "reverse!", 1, car(args), "a mutable, proper list"));
return(np);
}
break;
@@ -41764,6 +41745,7 @@ static s7_pointer g_reverse_in_place(s7_scheme *sc, s7_pointer args)
* for (l = p, r = cdr(p); is_pair(r); l = r, r = cdr(r)) opt1(r) = l;
* if (!is_null(r)) return(simple_wrong_type_argument_with_type(sc, sc->reverseb_symbol, p, a_proper_list_string));
* for (r = l, l = p; l != r; l = cdr(l)) {t = car(l); set_car(l, car(r)); set_car(r, t); if (cdr(l) != r) r = opt1(r);}
+ * immutable check is needed else (reverse! (catch #t 1 cons)) clobbers sc->wrong_type_arg_info
*/
case T_STRING:
@@ -41862,7 +41844,6 @@ static s7_pointer pair_fill(s7_scheme *sc, s7_pointer args)
}
if (len > 0)
{
- s7_int i;
if (end < len) len = end;
for (i = 0, p = obj; i < start; p = cdr(p), i++);
for (; i < len; p = cdr(p), i++) set_car(p, val);
@@ -41921,7 +41902,7 @@ s7_pointer s7_fill(s7_scheme *sc, s7_pointer args)
case T_C_OBJECT:
check_method(sc, p, sc->fill_symbol, args);
- if (c_object_fill(sc, p))
+ if (c_object_fill(sc, p)) /* default is NULL (s7_make_c_type) */
return((*(c_object_fill(sc, p)))(sc, args));
eval_error(sc, "attempt to fill ~S?", p);
@@ -42347,9 +42328,6 @@ static s7_pointer g_object_to_let(s7_scheme *sc, s7_pointer args)
case T_BOOLEAN:
return(s7_inlet(sc, s7_list(sc, 4, sc->value_symbol, obj, sc->type_symbol, sc->is_boolean_symbol)));
- case T_SYMBOL:
- return(s7_inlet(sc, s7_list(sc, 4, sc->value_symbol, obj, sc->type_symbol, (is_keyword(obj)) ? sc->is_keyword_symbol : sc->is_symbol_symbol)));
-
case T_CHARACTER:
return(s7_inlet(sc, s7_list(sc, 4, sc->value_symbol, obj, sc->type_symbol, sc->is_char_symbol)));
@@ -42369,6 +42347,12 @@ static s7_pointer g_object_to_let(s7_scheme *sc, s7_pointer args)
case T_BIG_COMPLEX:
return(s7_inlet(sc, s7_list(sc, 4, sc->value_symbol, obj, sc->type_symbol, sc->is_complex_symbol)));
+ case T_SYMBOL:
+ return(s7_inlet(sc, s7_list(sc, 6,
+ sc->value_symbol, obj,
+ sc->type_symbol, (is_keyword(obj)) ? sc->is_keyword_symbol : sc->is_symbol_symbol,
+ sc->setter_symbol, (is_keyword(obj)) ? sc->F : g_symbol_setter(sc, args))));
+
case T_STRING:
return(s7_inlet(sc, s7_list(sc, 6, sc->value_symbol, obj,
sc->type_symbol, (is_byte_vector_not_string(obj)) ? sc->is_byte_vector_symbol : sc->is_string_symbol,
@@ -42409,20 +42393,19 @@ static s7_pointer g_object_to_let(s7_scheme *sc, s7_pointer args)
/* raw_pointer_info can be a let and might have an object->let method (see c_object below) */
return(s7_inlet(sc, s7_list(sc, 10, sc->value_symbol, obj,
sc->type_symbol, sc->is_c_pointer_symbol,
- s7_make_symbol(sc, "c-pointer"), s7_make_integer(sc, (s7_int)raw_pointer(obj)),
+ s7_make_symbol(sc, "c-pointer"),
+ s7_make_integer(sc, (s7_int)((intptr_t)raw_pointer(obj))),
s7_make_symbol(sc, "c-type"), raw_pointer_type(obj),
s7_make_symbol(sc, "info"), raw_pointer_info(obj))));
case T_CONTINUATION:
- {
- s7_pointer let;
- uint32_t gc_loc;
- let = s7_inlet(sc, s7_list(sc, 4, sc->value_symbol, obj, sc->type_symbol, sc->is_continuation_symbol));
- gc_loc = s7_gc_protect_1(sc, let);
- s7_varlet(sc, let, s7_make_symbol(sc, "stack"), stack_entries(sc, continuation_stack(obj), continuation_stack_top(obj)));
- s7_gc_unprotect_at(sc, gc_loc);
- return(let);
- }
+ return(s7_inlet(sc, s7_list(sc, 4, sc->value_symbol, obj, sc->type_symbol, sc->is_continuation_symbol)));
+#if 0
+ /* is this ever useful? */
+ gc_loc = s7_gc_protect_1(sc, let);
+ s7_varlet(sc, let, s7_make_symbol(sc, "stack"), stack_entries(sc, continuation_stack(obj), continuation_stack_top(obj)));
+ s7_gc_unprotect_at(sc, gc_loc);
+#endif
case T_ITERATOR:
{
@@ -42536,9 +42519,11 @@ static s7_pointer g_object_to_let(s7_scheme *sc, s7_pointer args)
if (is_funclet(obj))
{
s7_varlet(sc, let, s7_make_symbol(sc, "function"), funclet_function(obj));
- if ((let_file(obj) > 0) &&
+ if ((has_let_file(obj)) &&
+ (let_file(obj) > 0) &&
(let_file(obj) < (s7_int)sc->file_names_top) &&
- (let_line(obj) > 0))
+ (let_line(obj) > 0) &&
+ (let_line(obj) < 100000))
{
s7_varlet(sc, let, s7_make_symbol(sc, "file"), sc->file_names[let_file(obj)]);
s7_varlet(sc, let, s7_make_symbol(sc, "line"), make_integer(sc, let_line(obj)));
@@ -42635,7 +42620,7 @@ static s7_pointer g_object_to_let(s7_scheme *sc, s7_pointer args)
s7_make_symbol(sc, "arity"), s7_arity(sc, obj)));
gc_loc = s7_gc_protect_1(sc, let);
- sig = signature(sc, obj);
+ sig = s7_signature(sc, obj);
if (is_pair(sig))
s7_varlet(sc, let, sc->local_signature_symbol, sig);
@@ -42647,7 +42632,8 @@ static s7_pointer g_object_to_let(s7_scheme *sc, s7_pointer args)
{
s7_pointer flet;
flet = closure_let(obj);
- if ((let_file(flet) > 0) &&
+ if ((has_let_file(flet)) &&
+ (let_file(flet) > 0) &&
(let_file(flet) < (s7_int)sc->file_names_top) &&
(let_line(flet) > 0))
{
@@ -42680,7 +42666,7 @@ static s7_pointer g_object_to_let(s7_scheme *sc, s7_pointer args)
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 = signature(sc, obj);
+ sig = c_function_signature(obj);
if (is_pair(sig))
s7_varlet(sc, let, sc->local_signature_symbol, sig);
@@ -42688,14 +42674,14 @@ static s7_pointer g_object_to_let(s7_scheme *sc, s7_pointer args)
if (doc)
s7_varlet(sc, let, sc->local_documentation_symbol, s7_make_string(sc, doc));
- if (c_function_setter(obj) != sc->F)
+ if (c_function_setter(obj) != sc->F) /* c_macro_setter is the same underlying field */
s7_varlet(sc, let, sc->local_setter_symbol, c_function_setter(obj));
return(let);
}
default:
-#if DEBUGGING
+#if S7_DEBUGGING
fprintf(stderr, "object->let: %s, type: %d\n", DISPLAY(obj), type(obj));
#endif
return(sc->F);
@@ -42967,7 +42953,7 @@ static char *stacktrace_1(s7_scheme *sc, int32_t frames_max, int32_t code_cols,
int32_t true_loc;
true_loc = (int32_t)(loc + 1) * 4 - 1;
- code = stack_code(sc->stack, true_loc); /* can code be free here? [hit this once, could not repeat it] */
+ code = stack_code(sc->stack, true_loc);
if (is_pair(code))
{
@@ -43001,7 +42987,7 @@ static char *stacktrace_1(s7_scheme *sc, int32_t frames_max, int32_t code_cols,
notes = stacktrace_walker(sc, code, e, NULL, gc_syms, code_cols, total_cols, notes_start_col, as_comment);
newstr = stacktrace_add_func(sc, f, code, codestr, notes, code_cols, as_comment);
free(codestr);
- if ((notes) && (notes != newstr) && (is_let(e)) && (e != sc->rootlet)) free(notes); /* double free somehow?? */
+ if ((notes) && (notes != newstr) && (is_let(e)) && (e != sc->rootlet)) free(notes);
newlen = strlen(newstr) + 1 + ((str) ? strlen(str) : 0);
if (newlen > 0)
@@ -43034,7 +43020,6 @@ s7_pointer s7_stacktrace(s7_scheme *sc)
return(make_string_uncopied_with_length(sc, str, safe_strlen(str)));
}
-
static s7_pointer g_stacktrace(s7_scheme *sc, s7_pointer args)
{
#define H_stacktrace "(stacktrace (max-frames 30) (code-cols 50) (total-cols 80) (note-col 50) as-comment) returns \
@@ -43805,7 +43790,7 @@ static s7_pointer stack_entries(s7_scheme *sc, s7_pointer stack, int64_t top)
(s7_is_valid(sc, e)) &&
(op < OP_MAX_DEFINED))
{
-#if DEBUGGING
+#if S7_DEBUGGING
if (op < OP_MAX_DEFINED_1)
lst = cons(sc, list_4(sc, func, args, e, s7_make_string_wrapper(sc, op_names[op])), lst);
else lst = cons(sc, list_4(sc, func, args, e, make_integer(sc, op)), lst);
@@ -43989,14 +43974,14 @@ static bool catch_1_function(s7_scheme *sc, int32_t i, s7_pointer type, s7_point
}
if (op == OP_CATCH_1)
{
- s7_pointer x;
- new_cell(sc, x, T_CLOSURE | T_COPY_ARGS); /* never a safe_closure, apparently */
- closure_set_args(x, car(error_func));
- closure_set_body(x, cdr(error_func));
- closure_set_setter(x, sc->F);
- closure_arity(x) = CLOSURE_ARITY_NOT_SET;
- closure_set_let(x, sc->temp4);
- sc->code = x;
+ s7_pointer p;
+ new_cell(sc, p, T_CLOSURE | T_COPY_ARGS); /* never a safe_closure, apparently */
+ closure_set_args(p, car(error_func));
+ closure_set_body(p, cdr(error_func));
+ closure_set_setter(p, sc->F);
+ closure_arity(p) = CLOSURE_ARITY_NOT_SET;
+ closure_set_let(p, sc->temp4);
+ sc->code = p;
}
else sc->code = error_func;
sc->temp4 = sc->nil;
@@ -44021,6 +44006,7 @@ static bool catch_1_function(s7_scheme *sc, int32_t i, s7_pointer type, s7_point
* but putting it here (via eval(sc, OP_APPLY)) means the C stack is not cleared correctly in non-s7-call cases,
* so defer it until s7_call
*/
+ /* fprintf(stderr, "stack %s %s\n", op_names[stack_op(sc->stack, s7_stack_top(sc) - 1)], op_names[stack_op(sc->stack, s7_stack_top(sc) - 5)]); */
return(true);
}
return(false);
@@ -44101,6 +44087,12 @@ static bool catch_goto_function(s7_scheme *sc, int32_t i, s7_pointer type, s7_po
return(false);
}
+static bool catch_let_temporarily_function(s7_scheme *sc, int32_t i, s7_pointer type, s7_pointer info, bool *reset_hook)
+{
+ let_temp_done(sc, stack_args(sc->stack, i), stack_code(sc->stack, i), stack_let(sc->stack, i));
+ return(false);
+}
+
static void init_catchers(void)
{
int32_t i;
@@ -44117,6 +44109,7 @@ static void init_catchers(void)
catchers[OP_EVAL_STRING] = catch_eval_function;
catchers[OP_BARRIER] = catch_barrier_function;
catchers[OP_DEACTIVATE_GOTO] = catch_goto_function;
+ catchers[OP_LET_TEMP_DONE] = catch_let_temporarily_function;
catchers[OP_ERROR_HOOK_QUIT] = catch_hook_function;
}
@@ -44932,7 +44925,7 @@ static s7_pointer g_apply(s7_scheme *sc, s7_pointer args)
s7_pointer s7_apply_function(s7_scheme *sc, s7_pointer fnc, s7_pointer args)
{
TRACK(sc);
-#if DEBUGGING
+#if S7_DEBUGGING
{
s7_pointer p;
int32_t argnum;
@@ -45044,7 +45037,7 @@ static s7_pointer set_c_function_star_args(s7_scheme *sc)
s7_pointer defval;
defval = df[ki];
if (is_symbol(defval))
- set_car(kpar, find_symbol_checked(sc, defval));
+ set_car(kpar, symbol_to_value_checked(sc, defval));
else
{
if (is_pair(defval))
@@ -45074,7 +45067,7 @@ static s7_pointer set_c_function_star_args(s7_scheme *sc)
s7_pointer defval;
defval = df[i];
if (is_symbol(defval))
- set_car(par, find_symbol_checked(sc, defval));
+ set_car(par, symbol_to_value_checked(sc, defval));
else
{
if (is_pair(defval))
@@ -45178,11 +45171,7 @@ pass (rootlet):\n\
}
sc->code = car(args);
if ((sc->safety > NO_SAFETY) && (is_pair(sc->code)))
- {
- if (cyclic_sequences(sc, sc->code, false) == sc->T)
- return(wrong_type_argument_with_type(sc, sc->eval_symbol, 1, sc->code, a_proper_list_string));
- sc->code = copy_body(sc, sc->code);
- }
+ sc->code = copy_body(sc, sc->code);
else
{
if (is_optimized(sc->code))
@@ -45431,6 +45420,7 @@ static s7_pointer g_emergency_exit(s7_scheme *sc, s7_pointer args)
#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1
#endif
+
if (is_null(args))
_exit(EXIT_SUCCESS); /* r7rs spec says use _exit here */
obj = car(args);
@@ -45442,7 +45432,6 @@ static s7_pointer g_emergency_exit(s7_scheme *sc, s7_pointer args)
return(sc->F);
}
-
static s7_pointer g_exit(s7_scheme *sc, s7_pointer args)
{
#define H_exit "(exit obj) exits s7"
@@ -45452,12 +45441,10 @@ static s7_pointer g_exit(s7_scheme *sc, s7_pointer args)
return(g_emergency_exit(sc, args));
}
-
-#if DEBUGGING
+#if WITH_GCC
static s7_pointer g_abort(s7_scheme *sc, s7_pointer args) {abort();}
#endif
-
/* -------------------------------- optimizer stuff -------------------------------- */
static s7_function all_x_function[OPT_MAX_DEFINED];
@@ -45500,9 +45487,8 @@ static s7_pointer apply_boolean_method(s7_scheme *sc, s7_pointer obj, s7_pointer
/* 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));}
-static s7_pointer all_x_unsafe_s(s7_scheme *sc, s7_pointer arg){return(find_symbol_checked(sc, arg));}
-static s7_pointer all_x_s(s7_scheme *sc, s7_pointer arg) {return(find_symbol_unchecked(sc, arg));}
-static s7_pointer local_x_s(s7_scheme *sc, s7_pointer arg) {return(local_symbol_value(arg));}
+static s7_pointer all_x_unsafe_s(s7_scheme *sc, s7_pointer arg){return(symbol_to_value_checked(sc, arg));}
+static s7_pointer all_x_s(s7_scheme *sc, s7_pointer arg) {return(symbol_to_value_unchecked(sc, arg));}
static s7_pointer all_x_k(s7_scheme *sc, s7_pointer arg) {return(arg);}
static s7_pointer all_x_c_c(s7_scheme *sc, s7_pointer arg) {return(c_call(arg)(sc, cdr(arg)));}
static s7_pointer all_x_not_c_c(s7_scheme *sc, s7_pointer arg) {return(make_boolean(sc, is_false(sc, c_call(cadr(arg))(sc, cdadr(arg)))));}
@@ -45510,25 +45496,16 @@ static s7_pointer all_x_not_c_c(s7_scheme *sc, s7_pointer arg) {return(make_bool
static s7_pointer all_x_c_add1(s7_scheme *sc, s7_pointer arg)
{
s7_pointer x;
- x = find_symbol_unchecked(sc, cadr(arg));
- if (is_integer(x))
- return(make_integer(sc, integer(x) + 1));
- return(g_add_s1_1(sc, x, cdr(arg))); /* arg=(+ x 1) */
-}
-
-static s7_pointer local_x_c_add1(s7_scheme *sc, s7_pointer arg)
-{
- s7_pointer x;
- x = local_symbol_value(cadr(arg));
+ x = symbol_to_value_unchecked(sc, cadr(arg));
if (is_integer(x))
return(make_integer(sc, integer(x) + 1));
return(g_add_s1_1(sc, x, cdr(arg))); /* arg=(+ x 1) */
}
-static s7_pointer local_x_c_sub1(s7_scheme *sc, s7_pointer arg)
+static s7_pointer all_x_c_sub1(s7_scheme *sc, s7_pointer arg)
{
s7_pointer x;
- x = local_symbol_value(cadr(arg));
+ x = symbol_to_value_unchecked(sc, cadr(arg));
if (is_integer(x))
return(make_integer(sc, integer(x) - 1));
return(minus_c1(sc, x));
@@ -45537,16 +45514,7 @@ static s7_pointer local_x_c_sub1(s7_scheme *sc, s7_pointer arg)
static s7_pointer all_x_c_addi(s7_scheme *sc, s7_pointer arg)
{
s7_pointer x;
- x = find_symbol_unchecked(sc, cadr(arg));
- if (is_integer(x))
- return(make_integer(sc, integer(x) + integer(caddr(arg))));
- return(g_add_2(sc, set_plist_2(sc, x, caddr(arg))));
-}
-
-static s7_pointer local_x_c_addi(s7_scheme *sc, s7_pointer arg)
-{
- s7_pointer x;
- x = local_symbol_value(cadr(arg));
+ x = symbol_to_value_unchecked(sc, cadr(arg));
if (is_integer(x))
return(make_integer(sc, integer(x) + integer(caddr(arg))));
return(g_add_2(sc, set_plist_2(sc, x, caddr(arg))));
@@ -45555,7 +45523,7 @@ static s7_pointer local_x_c_addi(s7_scheme *sc, s7_pointer arg)
static s7_pointer all_x_c_char_eq(s7_scheme *sc, s7_pointer arg)
{
s7_pointer c;
- c = find_symbol_unchecked(sc, cadr(arg));
+ c = symbol_to_value_unchecked(sc, cadr(arg));
if (c == caddr(arg))
return(sc->T);
if (s7_is_character(c))
@@ -45567,17 +45535,7 @@ static s7_pointer all_x_not_is_eq_car_q(s7_scheme *sc, s7_pointer arg)
{
s7_pointer lst, a;
a = opt_pair2(cdr(arg));
- lst = find_symbol_unchecked(sc, opt_sym2(a));
- if (!is_pair(lst))
- return(make_boolean(sc, is_false(sc, g_is_eq(sc, set_plist_2(sc, g_car(sc, set_plist_1(sc, lst)), opt_sym3(a))))));
- return(make_boolean(sc, car(lst) != opt_sym3(a)));
-}
-
-static s7_pointer local_x_not_is_eq_car_q(s7_scheme *sc, s7_pointer arg)
-{
- s7_pointer lst, a;
- a = opt_pair2(cdr(arg));
- lst = local_symbol_value(opt_sym2(a));
+ lst = symbol_to_value_unchecked(sc, opt_sym2(a));
if (!is_pair(lst))
return(make_boolean(sc, is_false(sc, g_is_eq(sc, set_plist_2(sc, g_car(sc, set_plist_1(sc, lst)), opt_sym3(a))))));
return(make_boolean(sc, car(lst) != opt_sym3(a)));
@@ -45586,182 +45544,148 @@ static s7_pointer local_x_not_is_eq_car_q(s7_scheme *sc, s7_pointer arg)
static s7_pointer all_x_is_pair_cdr_s(s7_scheme *sc, s7_pointer arg)
{
s7_pointer p;
- p = find_symbol_unchecked(sc, opt_sym2(cdr(arg)));
+ p = symbol_to_value_unchecked(sc, opt_sym2(cdr(arg)));
if (is_pair(p))
return(make_boolean(sc, is_pair(cdr(p))));
return(g_is_pair(sc, set_plist_1(sc, g_cdr(sc, set_plist_1(sc, p)))));
}
-static s7_pointer local_x_is_pair_cdr_s(s7_scheme *sc, s7_pointer arg)
+static s7_pointer all_x_is_pair_cddr_s(s7_scheme *sc, s7_pointer arg)
{
s7_pointer p;
- p = local_symbol_value(opt_sym2(cdr(arg)));
- if (is_pair(p))
- return(make_boolean(sc, is_pair(cdr(p))));
- return(g_is_pair(sc, set_plist_1(sc, g_cdr(sc, set_plist_1(sc, p)))));
+ p = symbol_to_value_unchecked(sc, opt_sym2(cdr(arg)));
+ if ((is_pair(p)) && (is_pair(cdr(p))))
+ return(make_boolean(sc, is_pair(cddr(p))));
+ return(g_is_pair(sc, set_plist_1(sc, g_cddr(sc, set_plist_1(sc, p)))));
}
-static s7_pointer all_x_c_s(s7_scheme *sc, s7_pointer arg)
+static s7_pointer all_x_is_null_cddr_s(s7_scheme *sc, s7_pointer arg)
{
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(arg)));
- return(c_call(arg)(sc, sc->t1_1));
+ s7_pointer p;
+ p = symbol_to_value_unchecked(sc, opt_sym2(cdr(arg)));
+ if ((is_pair(p)) && (is_pair(cdr(p))))
+ return(make_boolean(sc, is_null(cddr(p))));
+ return(g_is_null(sc, set_plist_1(sc, g_cddr(sc, set_plist_1(sc, p)))));
}
-static s7_pointer local_x_c_s(s7_scheme *sc, s7_pointer arg)
+static s7_pointer all_x_is_null_cadr_s(s7_scheme *sc, s7_pointer arg)
{
- set_car(sc->t1_1, local_symbol_value(cadr(arg)));
- return(c_call(arg)(sc, sc->t1_1));
+ s7_pointer p;
+ p = symbol_to_value_unchecked(sc, opt_sym2(cdr(arg)));
+ if ((is_pair(p)) && (is_pair(cdr(p))))
+ return(make_boolean(sc, is_null(cadr(p))));
+ return(g_is_null(sc, set_plist_1(sc, g_cadr(sc, set_plist_1(sc, p)))));
}
-static s7_pointer all_x_cdr_s(s7_scheme *sc, s7_pointer arg)
+static s7_pointer all_x_is_symbol_cadr_s(s7_scheme *sc, s7_pointer arg)
{
- s7_pointer val;
- val = find_symbol_unchecked(sc, cadr(arg));
- return((is_pair(val)) ? cdr(val) : g_cdr(sc, set_plist_1(sc, val)));
+ s7_pointer p;
+ p = symbol_to_value_unchecked(sc, opt_sym2(cdr(arg)));
+ if ((is_pair(p)) && (is_pair(cdr(p))))
+ return(make_boolean(sc, is_symbol(cadr(p))));
+ return(g_is_symbol(sc, set_plist_1(sc, g_cadr(sc, set_plist_1(sc, p)))));
}
-static s7_pointer local_x_cdr_s(s7_scheme *sc, s7_pointer arg)
+static s7_pointer all_x_c_s(s7_scheme *sc, s7_pointer arg)
{
- s7_pointer val;
- val = local_symbol_value(cadr(arg));
- return((is_pair(val)) ? cdr(val) : g_cdr(sc, set_plist_1(sc, val)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(arg)));
+ return(c_call(arg)(sc, sc->t1_1));
}
-static s7_pointer all_x_car_s(s7_scheme *sc, s7_pointer arg)
+static s7_pointer all_x_cdr_s(s7_scheme *sc, s7_pointer arg)
{
s7_pointer val;
- val = find_symbol_unchecked(sc, cadr(arg));
- return((is_pair(val)) ? car(val) : g_car(sc, set_plist_1(sc, val)));
+ val = symbol_to_value_unchecked(sc, cadr(arg));
+ return((is_pair(val)) ? cdr(val) : g_cdr(sc, set_plist_1(sc, val)));
}
-static s7_pointer local_x_car_s(s7_scheme *sc, s7_pointer arg)
+static s7_pointer all_x_car_s(s7_scheme *sc, s7_pointer arg)
{
s7_pointer val;
- val = local_symbol_value(cadr(arg));
+ val = symbol_to_value_unchecked(sc, cadr(arg));
return((is_pair(val)) ? car(val) : g_car(sc, set_plist_1(sc, val)));
}
static s7_pointer all_x_cadr_s(s7_scheme *sc, s7_pointer arg)
{
s7_pointer val;
- val = find_symbol_unchecked(sc, cadr(arg));
- return(((is_pair(val)) && (is_pair(cdr(val)))) ? cadr(val) : g_cadr(sc, set_plist_1(sc, val)));
-}
-
-static s7_pointer local_x_cadr_s(s7_scheme *sc, s7_pointer arg)
-{
- s7_pointer val;
- val = local_symbol_value(cadr(arg));
+ val = symbol_to_value_unchecked(sc, cadr(arg));
return(((is_pair(val)) && (is_pair(cdr(val)))) ? cadr(val) : g_cadr(sc, set_plist_1(sc, val)));
}
static s7_pointer all_x_is_null_s(s7_scheme *sc, s7_pointer 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)
-{
- return((is_null(local_symbol_value(cadr(arg)))) ? sc->T : sc->F);
+ return((is_null(symbol_to_value_unchecked(sc, cadr(arg)))) ? sc->T : sc->F);
}
static s7_pointer all_x_is_symbol_s(s7_scheme *sc, s7_pointer 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)
-{
- return((is_symbol(local_symbol_value(cadr(arg)))) ? sc->T : sc->F);
+ return((is_symbol(symbol_to_value_unchecked(sc, cadr(arg)))) ? sc->T : sc->F);
}
static s7_pointer all_x_is_pair_s(s7_scheme *sc, s7_pointer 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)
-{
- return((is_pair(local_symbol_value(cadr(arg)))) ? sc->T : sc->F);
+ return((is_pair(symbol_to_value_unchecked(sc, cadr(arg)))) ? sc->T : sc->F);
}
static s7_pointer all_x_is_keyword_s(s7_scheme *sc, s7_pointer arg)
{
- return((is_keyword(find_symbol_unchecked(sc, cadr(arg)))) ? sc->T : sc->F);
+ return((is_keyword(symbol_to_value_unchecked(sc, cadr(arg)))) ? sc->T : sc->F);
}
static s7_pointer all_x_is_integer_s(s7_scheme *sc, s7_pointer arg)
{
- return((is_integer(find_symbol_unchecked(sc, cadr(arg)))) ? sc->T : sc->F);
+ return((is_integer(symbol_to_value_unchecked(sc, cadr(arg)))) ? sc->T : sc->F);
}
static s7_pointer all_x_is_procedure_s(s7_scheme *sc, s7_pointer arg)
{
- return((is_procedure(find_symbol_unchecked(sc, cadr(arg)))) ? sc->T : sc->F);
+ return((is_procedure(symbol_to_value_unchecked(sc, cadr(arg)))) ? sc->T : sc->F);
}
static s7_pointer all_x_is_string_s(s7_scheme *sc, s7_pointer arg)
{
- return((is_string(find_symbol_unchecked(sc, cadr(arg)))) ? sc->T : sc->F);
+ return((is_string(symbol_to_value_unchecked(sc, cadr(arg)))) ? sc->T : sc->F);
}
static s7_pointer all_x_is_vector_s(s7_scheme *sc, s7_pointer arg)
{
- return((s7_is_vector(find_symbol_unchecked(sc, cadr(arg)))) ? sc->T : sc->F);
+ return((s7_is_vector(symbol_to_value_unchecked(sc, cadr(arg)))) ? sc->T : sc->F);
}
static s7_pointer all_x_is_proper_list_s(s7_scheme *sc, s7_pointer arg)
{
- return((s7_is_proper_list(sc, find_symbol_unchecked(sc, cadr(arg)))) ? sc->T : sc->F);
+ return((s7_is_proper_list(sc, symbol_to_value_unchecked(sc, cadr(arg)))) ? sc->T : sc->F);
}
static s7_pointer all_x_not_s(s7_scheme *sc, s7_pointer arg)
{
- return(make_boolean(sc, is_false(sc, find_symbol_unchecked(sc, cadr(arg)))));
+ return(make_boolean(sc, is_false(sc, symbol_to_value_unchecked(sc, cadr(arg)))));
}
static s7_pointer all_x_not_is_pair_s(s7_scheme *sc, s7_pointer 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)
-{
- return((is_pair(local_symbol_value(opt_sym3(arg)))) ? sc->F : sc->T);
+ return((is_pair(symbol_to_value_unchecked(sc, opt_sym3(arg)))) ? sc->F : sc->T);
}
static s7_pointer all_x_c_sc(s7_scheme *sc, s7_pointer arg)
{
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(arg)));
- set_car(sc->t2_2, caddr(arg));
- return(c_call(arg)(sc, sc->t2_1));
-}
-
-static s7_pointer local_x_c_sc(s7_scheme *sc, s7_pointer arg)
-{
- set_car(sc->t2_1, local_symbol_value(cadr(arg)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(arg)));
set_car(sc->t2_2, caddr(arg));
return(c_call(arg)(sc, sc->t2_1));
}
static s7_pointer all_x_c_cs(s7_scheme *sc, s7_pointer arg)
{
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(arg)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(arg)));
set_car(sc->t2_1, cadr(arg));
return(c_call(arg)(sc, sc->t2_1));
}
static s7_pointer all_x_c_ss(s7_scheme *sc, s7_pointer arg)
{
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(arg)));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(arg)));
- return(c_call(arg)(sc, sc->t2_1));
-}
-
-static s7_pointer all_x_c_ls(s7_scheme *sc, s7_pointer arg)
-{
- set_car(sc->t2_1, local_symbol_value(cadr(arg)));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(arg)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(arg)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(arg)));
return(c_call(arg)(sc, sc->t2_1));
}
@@ -45769,7 +45693,7 @@ static s7_pointer x_c_hash_table_ref_ss(s7_scheme *sc, s7_pointer table, s7_poin
{
hash_entry_t *x;
if (!is_hash_table(table))
- return(g_hash_table(sc, set_plist_2(sc, table, key)));
+ return(g_hash_table_ref(sc, set_plist_2(sc, table, key)));
x = (*hash_table_checker(table))(sc, table, key);
if (x) return(x->value);
return(sc->F);
@@ -45777,12 +45701,7 @@ static s7_pointer x_c_hash_table_ref_ss(s7_scheme *sc, s7_pointer table, s7_poin
static s7_pointer all_x_c_hash_table_ref_ss(s7_scheme *sc, s7_pointer arg)
{
- return(x_c_hash_table_ref_ss(sc, find_symbol_unchecked(sc, cadr(arg)), find_symbol_unchecked(sc, caddr(arg))));
-}
-
-static s7_pointer local_x_c_hash_table_ref_ss(s7_scheme *sc, s7_pointer arg)
-{
- return(x_c_hash_table_ref_ss(sc, local_symbol_value(cadr(arg)), local_symbol_value(caddr(arg))));
+ return(x_c_hash_table_ref_ss(sc, symbol_to_value_unchecked(sc, cadr(arg)), symbol_to_value_unchecked(sc, caddr(arg))));
}
static s7_pointer all_x_c_hash_table_ref_car(s7_scheme *sc, s7_pointer arg)
@@ -45790,43 +45709,29 @@ static s7_pointer all_x_c_hash_table_ref_car(s7_scheme *sc, s7_pointer arg)
s7_pointer table, lst;
hash_entry_t *x;
- table = find_symbol_unchecked(sc, cadr(arg));
- lst = find_symbol_unchecked(sc, opt_sym3(cdr(arg)));
+ table = symbol_to_value_unchecked(sc, cadr(arg));
+ lst = symbol_to_value_unchecked(sc, opt_sym3(cdr(arg)));
if (!is_pair(lst))
return(simple_wrong_type_argument(sc, sc->car_symbol, lst, T_PAIR));
if (!is_hash_table(table))
- return(g_hash_table(sc, set_plist_2(sc, table, car(lst))));
+ return(g_hash_table_ref(sc, set_plist_2(sc, table, car(lst))));
x = (*hash_table_checker(table))(sc, table, car(lst));
if (x) return(x->value);
return(sc->F);
}
-static s7_pointer local_x_c_ss(s7_scheme *sc, s7_pointer arg)
-{
- set_car(sc->t2_1, local_symbol_value(cadr(arg)));
- set_car(sc->t2_2, local_symbol_value(caddr(arg)));
- return(c_call(arg)(sc, sc->t2_1));
-}
-
static s7_pointer all_x_c_qs(s7_scheme *sc, s7_pointer arg)
{
set_car(sc->t2_1, cadadr(arg));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(arg)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(arg)));
return(c_call(arg)(sc, sc->t2_1));
}
static s7_pointer all_x_c_sq(s7_scheme *sc, s7_pointer arg)
{
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(arg)));
- set_car(sc->t2_2, opt_con2(cdr(arg)));
- return(c_call(arg)(sc, sc->t2_1));
-}
-
-static s7_pointer local_x_c_sq(s7_scheme *sc, s7_pointer arg)
-{
- set_car(sc->t2_1, local_symbol_value(cadr(arg)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(arg)));
set_car(sc->t2_2, opt_con2(cdr(arg)));
return(c_call(arg)(sc, sc->t2_1));
}
@@ -45840,31 +45745,23 @@ 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, 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(opt_sym1(cdr(arg)))); /* caddr(arg) */
- set_car(sc->t3_3, local_symbol_value(opt_sym2(cdr(arg)))); /* cadddr(arg) */
+ set_car(sc->t3_1, symbol_to_value_unchecked(sc, cadr(arg)));
+ set_car(sc->t3_2, symbol_to_value_unchecked(sc, opt_sym1(cdr(arg)))); /* caddr(arg) */
+ set_car(sc->t3_3, symbol_to_value_unchecked(sc, 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, opt_sym2(cdr(arg)))); /* cadddr(arg) */
+ set_car(sc->t3_1, symbol_to_value_unchecked(sc, cadr(arg)));
+ set_car(sc->t3_3, symbol_to_value_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_1, symbol_to_value_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));
@@ -45872,15 +45769,15 @@ static s7_pointer all_x_c_scc(s7_scheme *sc, s7_pointer arg)
static s7_pointer all_x_c_css(s7_scheme *sc, s7_pointer 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_2, symbol_to_value_unchecked(sc, opt_sym1(cdr(arg)))); /* caddr(arg) */
+ set_car(sc->t3_3, symbol_to_value_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, opt_sym1(cdr(arg)))); /* caddr(arg) */
+ set_car(sc->t3_2, symbol_to_value_unchecked(sc, opt_sym1(cdr(arg)))); /* caddr(arg) */
set_car(sc->t3_1, cadr(arg));
set_car(sc->t3_3, opt_con2(cdr(arg))); /* cadddr(arg) */
return(c_call(arg)(sc, sc->t3_1));
@@ -45888,7 +45785,7 @@ static s7_pointer all_x_c_csc(s7_scheme *sc, s7_pointer arg)
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_3, symbol_to_value_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));
@@ -45896,8 +45793,8 @@ static s7_pointer all_x_c_ccs(s7_scheme *sc, s7_pointer arg)
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, opt_sym1(cdr(arg)))); /* caddr(arg) */
+ set_car(sc->t3_1, symbol_to_value_unchecked(sc, cadr(arg)));
+ set_car(sc->t3_2, symbol_to_value_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));
}
@@ -45915,7 +45812,7 @@ static s7_pointer all_x_c_s_opcq(s7_scheme *sc, s7_pointer arg)
s7_pointer largs;
largs = caddr(arg);
set_car(sc->t2_2, c_call(largs)(sc, cdr(largs)));
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(arg)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(arg)));
return(c_call(arg)(sc, sc->t2_1));
}
@@ -45933,7 +45830,7 @@ static s7_pointer all_x_c_opcq_s(s7_scheme *sc, s7_pointer arg)
s7_pointer largs;
largs = cadr(arg);
set_car(sc->t2_1, c_call(largs)(sc, cdr(largs)));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(arg)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(arg)));
return(c_call(arg)(sc, sc->t2_1));
}
@@ -45970,7 +45867,7 @@ static s7_pointer all_x_c_all_s(s7_scheme *sc, s7_pointer arg)
tx = next_tx(sc);
sc->t_temps[tx] = safe_list_if_possible(sc, integer(arglist_length(arg)));
for (args = cdr(arg), p = sc->t_temps[tx]; is_pair(args); args = cdr(args), p = cdr(p))
- set_car(p, find_symbol_unchecked(sc, car(args)));
+ set_car(p, symbol_to_value_unchecked(sc, car(args)));
clear_list_in_use(sc->t_temps[tx]);
sc->current_safe_list = 0;
return(c_call(arg)(sc, sc->t_temps[tx]));
@@ -45995,16 +45892,7 @@ static s7_pointer all_x_c_opsq(s7_scheme *sc, s7_pointer arg)
{
s7_pointer largs;
largs = cadr(arg);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(largs)));
- set_car(sc->t1_1, c_call(largs)(sc, sc->t1_1));
- return(c_call(arg)(sc, sc->t1_1));
-}
-
-static s7_pointer local_x_c_opsq(s7_scheme *sc, s7_pointer arg)
-{
- s7_pointer largs;
- largs = cadr(arg);
- set_car(sc->t1_1, local_symbol_value(cadr(largs)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(largs)));
set_car(sc->t1_1, c_call(largs)(sc, sc->t1_1));
return(c_call(arg)(sc, sc->t1_1));
}
@@ -46012,15 +45900,7 @@ static s7_pointer local_x_c_opsq(s7_scheme *sc, s7_pointer arg)
static s7_pointer all_x_c_car_s(s7_scheme *sc, s7_pointer arg)
{
s7_pointer val;
- val = find_symbol_unchecked(sc, opt_sym2(cdr(arg)));
- set_car(sc->t1_1, (is_pair(val)) ? car(val) : g_car(sc, set_plist_1(sc, val)));
- return(c_call(arg)(sc, sc->t1_1));
-}
-
-static s7_pointer local_x_c_car_s(s7_scheme *sc, s7_pointer arg)
-{
- s7_pointer val;
- val = local_symbol_value(opt_sym2(cdr(arg)));
+ val = symbol_to_value_unchecked(sc, opt_sym2(cdr(arg)));
set_car(sc->t1_1, (is_pair(val)) ? car(val) : g_car(sc, set_plist_1(sc, val)));
return(c_call(arg)(sc, sc->t1_1));
}
@@ -46028,15 +45908,7 @@ static s7_pointer local_x_c_car_s(s7_scheme *sc, s7_pointer arg)
static s7_pointer all_x_c_cdr_s(s7_scheme *sc, s7_pointer arg)
{
s7_pointer val;
- val = find_symbol_unchecked(sc, opt_sym2(cdr(arg)));
- set_car(sc->t1_1, (is_pair(val)) ? cdr(val) : g_cdr(sc, set_plist_1(sc, val)));
- return(c_call(arg)(sc, sc->t1_1));
-}
-
-static s7_pointer local_x_c_cdr_s(s7_scheme *sc, s7_pointer arg)
-{
- s7_pointer val;
- val = local_symbol_value(opt_sym2(cdr(arg)));
+ val = symbol_to_value_unchecked(sc, opt_sym2(cdr(arg)));
set_car(sc->t1_1, (is_pair(val)) ? cdr(val) : g_cdr(sc, set_plist_1(sc, val)));
return(c_call(arg)(sc, sc->t1_1));
}
@@ -46045,17 +45917,7 @@ static s7_pointer all_x_c_not_opsq(s7_scheme *sc, s7_pointer arg)
{
s7_pointer largs;
largs = cadr(arg);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(largs)));
- if (c_call(largs)(sc, sc->t1_1) == sc->F)
- return(sc->T);
- return(sc->F);
-}
-
-static s7_pointer local_x_c_not_opsq(s7_scheme *sc, s7_pointer arg)
-{
- s7_pointer largs;
- largs = cadr(arg);
- set_car(sc->t1_1, local_symbol_value(cadr(largs)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(largs)));
if (c_call(largs)(sc, sc->t1_1) == sc->F)
return(sc->T);
return(sc->F);
@@ -46065,8 +45927,8 @@ static s7_pointer all_x_c_opssq(s7_scheme *sc, s7_pointer arg)
{
s7_pointer largs;
largs = cadr(arg);
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(largs)));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(largs)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(largs)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(largs)));
set_car(sc->t1_1, c_call(largs)(sc, sc->t2_1));
return(c_call(arg)(sc, sc->t1_1));
}
@@ -46075,28 +45937,18 @@ static s7_pointer all_x_c_not_opssq(s7_scheme *sc, s7_pointer arg)
{
s7_pointer largs;
largs = cadr(arg);
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(largs)));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(largs)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(largs)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(largs)));
if (c_call(largs)(sc, sc->t2_1) == sc->F)
return(sc->T);
return(sc->F);
}
-static s7_pointer local_x_c_opssq(s7_scheme *sc, s7_pointer arg)
-{
- s7_pointer largs;
- largs = cadr(arg);
- set_car(sc->t2_1, local_symbol_value(cadr(largs)));
- set_car(sc->t2_2, local_symbol_value(caddr(largs)));
- set_car(sc->t1_1, c_call(largs)(sc, sc->t2_1));
- return(c_call(arg)(sc, sc->t1_1));
-}
-
static s7_pointer all_x_c_opscq(s7_scheme *sc, s7_pointer arg)
{
s7_pointer largs;
largs = cadr(arg);
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(largs)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(largs)));
set_car(sc->t2_2, caddr(largs));
set_car(sc->t1_1, c_call(largs)(sc, sc->t2_1));
return(c_call(arg)(sc, sc->t1_1));
@@ -46106,7 +45958,7 @@ static s7_pointer all_x_c_opcsq(s7_scheme *sc, s7_pointer arg)
{
s7_pointer largs;
largs = cadr(arg);
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(largs)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(largs)));
set_car(sc->t2_1, cadr(largs));
set_car(sc->t1_1, c_call(largs)(sc, sc->t2_1));
return(c_call(arg)(sc, sc->t1_1));
@@ -46116,7 +45968,7 @@ static s7_pointer all_x_c_opsqq(s7_scheme *sc, s7_pointer arg)
{
s7_pointer largs;
largs = cadr(arg);
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(largs)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(largs)));
set_car(sc->t2_2, cadr(caddr(largs)));
set_car(sc->t1_1, c_call(largs)(sc, sc->t2_1));
return(c_call(arg)(sc, sc->t1_1));
@@ -46126,7 +45978,7 @@ static s7_pointer all_x_c_opqsq(s7_scheme *sc, s7_pointer arg)
{
s7_pointer largs;
largs = cadr(arg);
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(largs)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(largs)));
set_car(sc->t2_1, cadadr(largs));
set_car(sc->t1_1, c_call(largs)(sc, sc->t2_1));
return(c_call(arg)(sc, sc->t1_1));
@@ -46136,7 +45988,7 @@ static s7_pointer all_x_c_opcsq_c(s7_scheme *sc, s7_pointer arg)
{
s7_pointer largs;
largs = cadr(arg);
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(largs)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(largs)));
set_car(sc->t2_1, cadr(largs));
set_car(sc->t2_1, c_call(largs)(sc, sc->t2_1));
set_car(sc->t2_2, caddr(arg));
@@ -46147,10 +45999,10 @@ static s7_pointer all_x_c_opssq_s(s7_scheme *sc, s7_pointer arg)
{
s7_pointer largs;
largs = cadr(arg);
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(largs)));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(largs)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(largs)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(largs)));
set_car(sc->t2_1, c_call(largs)(sc, sc->t2_1));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(arg)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(arg)));
return(c_call(arg)(sc, sc->t2_1));
}
@@ -46158,10 +46010,10 @@ static s7_pointer all_x_c_opscq_s(s7_scheme *sc, s7_pointer arg)
{
s7_pointer largs;
largs = cadr(arg);
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(largs)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(largs)));
set_car(sc->t2_2, caddr(largs));
set_car(sc->t2_1, c_call(largs)(sc, sc->t2_1));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(arg)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(arg)));
return(c_call(arg)(sc, sc->t2_1));
}
@@ -46169,30 +46021,19 @@ static s7_pointer all_x_c_opscq_c(s7_scheme *sc, s7_pointer arg)
{
s7_pointer largs;
largs = cadr(arg);
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(largs)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(largs)));
set_car(sc->t2_2, caddr(largs));
set_car(sc->t2_1, c_call(largs)(sc, sc->t2_1));
set_car(sc->t2_2, caddr(arg));
return(c_call(arg)(sc, sc->t2_1));
}
-static s7_pointer local_x_c_opssq_s(s7_scheme *sc, s7_pointer arg)
-{
- s7_pointer largs;
- largs = cadr(arg);
- set_car(sc->t2_1, local_symbol_value(cadr(largs)));
- set_car(sc->t2_2, local_symbol_value(caddr(largs)));
- set_car(sc->t2_1, c_call(largs)(sc, sc->t2_1));
- set_car(sc->t2_2, local_symbol_value(caddr(arg)));
- return(c_call(arg)(sc, sc->t2_1));
-}
-
static s7_pointer all_x_c_opssq_c(s7_scheme *sc, s7_pointer arg)
{
s7_pointer largs;
largs = cadr(arg);
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(largs)));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(largs)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(largs)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(largs)));
set_car(sc->t2_1, c_call(largs)(sc, sc->t2_1));
set_car(sc->t2_2, caddr(arg));
return(c_call(arg)(sc, sc->t2_1));
@@ -46202,9 +46043,9 @@ static s7_pointer all_x_c_opsq_s(s7_scheme *sc, s7_pointer arg)
{
s7_pointer largs;
largs = cadr(arg);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(largs)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(largs)));
set_car(sc->t2_1, c_call(largs)(sc, sc->t1_1));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(arg)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(arg)));
return(c_call(arg)(sc, sc->t2_1));
}
@@ -46212,7 +46053,7 @@ static s7_pointer all_x_c_opsq_q(s7_scheme *sc, s7_pointer arg)
{
s7_pointer largs;
largs = cadr(arg);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(largs)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(largs)));
set_car(sc->t2_1, c_call(largs)(sc, sc->t1_1));
set_car(sc->t2_2, cadr(caddr(arg)));
return(c_call(arg)(sc, sc->t2_1));
@@ -46222,28 +46063,18 @@ static s7_pointer all_x_c_opsq_qs(s7_scheme *sc, s7_pointer arg)
{
s7_pointer largs;
largs = cadr(arg);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(largs)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(largs)));
set_car(sc->t3_1, c_call(largs)(sc, sc->t1_1));
set_car(sc->t3_2, cadr(caddr(arg)));
- set_car(sc->t3_3, find_symbol_unchecked(sc, cadddr(arg)));
+ set_car(sc->t3_3, symbol_to_value_unchecked(sc, cadddr(arg)));
return(c_call(arg)(sc, sc->t3_1));
}
-static s7_pointer local_x_c_opsq_c(s7_scheme *sc, s7_pointer arg)
-{
- s7_pointer largs;
- largs = cadr(arg);
- set_car(sc->t1_1, local_symbol_value(cadr(largs)));
- set_car(sc->t2_1, c_call(largs)(sc, sc->t1_1));
- set_car(sc->t2_2, caddr(arg));
- return(c_call(arg)(sc, sc->t2_1));
-}
-
static s7_pointer all_x_c_opsq_c(s7_scheme *sc, s7_pointer arg)
{
s7_pointer largs;
largs = cadr(arg);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(largs)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(largs)));
set_car(sc->t2_1, c_call(largs)(sc, sc->t1_1));
set_car(sc->t2_2, caddr(arg));
return(c_call(arg)(sc, sc->t2_1));
@@ -46253,10 +46084,10 @@ static s7_pointer all_x_c_s_opssq(s7_scheme *sc, s7_pointer arg)
{
s7_pointer largs;
largs = caddr(arg);
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(largs)));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(largs)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(largs)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(largs)));
set_car(sc->t2_2, c_call(largs)(sc, sc->t2_1));
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(arg)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(arg)));
return(c_call(arg)(sc, sc->t2_1));
}
@@ -46264,8 +46095,8 @@ static s7_pointer all_x_c_c_opssq(s7_scheme *sc, s7_pointer arg)
{
s7_pointer largs;
largs = caddr(arg);
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(largs)));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(largs)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(largs)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(largs)));
set_car(sc->t2_2, c_call(largs)(sc, sc->t2_1));
set_car(sc->t2_1, cadr(arg));
return(c_call(arg)(sc, sc->t2_1));
@@ -46284,31 +46115,20 @@ static s7_pointer direct_x_c_c_opssq(s7_scheme *sc, s7_pointer arg)
s7_pointer largs;
s7_double x2;
largs = caddr(arg);
- x2 = ((s7_d_pd_t)opt_direct_x(cddr(arg)))(find_symbol_unchecked(sc, cadr(largs)),
- real_to_double(sc, find_symbol_unchecked(sc, caddr(largs)), "number_to_double"));
+ x2 = ((s7_d_pd_t)opt_direct_x(cddr(arg)))(symbol_to_value_unchecked(sc, cadr(largs)),
+ real_to_double(sc, symbol_to_value_unchecked(sc, caddr(largs)), "number_to_double"));
return(((s7_p_dd_t)opt_direct_x_call(cdr(arg)))(real_to_double(sc, cadr(arg), "*"), x2));
}
-static s7_pointer local_x_c_s_opssq(s7_scheme *sc, s7_pointer arg)
-{
- s7_pointer largs;
- largs = caddr(arg);
- set_car(sc->t2_1, local_symbol_value(cadr(largs)));
- set_car(sc->t2_2, local_symbol_value(caddr(largs)));
- set_car(sc->t2_2, c_call(largs)(sc, sc->t2_1));
- set_car(sc->t2_1, local_symbol_value(cadr(arg)));
- return(c_call(arg)(sc, sc->t2_1));
-}
-
static s7_pointer all_x_c_s_opscq(s7_scheme *sc, s7_pointer arg)
{
s7_pointer largs;
largs = caddr(arg);
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(largs)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(largs)));
set_car(sc->t2_2, caddr(largs));
set_car(sc->t2_2, c_call(largs)(sc, sc->t2_1));
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(arg)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(arg)));
return(c_call(arg)(sc, sc->t2_1));
}
@@ -46316,19 +46136,9 @@ static s7_pointer all_x_c_s_opsq(s7_scheme *sc, s7_pointer arg)
{
s7_pointer largs;
largs = caddr(arg);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(largs)));
- set_car(sc->t2_2, c_call(largs)(sc, sc->t1_1));
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(arg)));
- return(c_call(arg)(sc, sc->t2_1));
-}
-
-static s7_pointer local_x_c_s_opsq(s7_scheme *sc, s7_pointer arg)
-{
- s7_pointer largs;
- largs = caddr(arg);
- set_car(sc->t1_1, local_symbol_value(cadr(largs)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(largs)));
set_car(sc->t2_2, c_call(largs)(sc, sc->t1_1));
- set_car(sc->t2_1, local_symbol_value(cadr(arg)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(arg)));
return(c_call(arg)(sc, sc->t2_1));
}
@@ -46337,9 +46147,9 @@ static s7_pointer all_x_c_op_s_opsq_q(s7_scheme *sc, s7_pointer arg)
s7_pointer outer, args;
outer = cadr(arg);
args = caddr(outer);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(args)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(args)));
set_car(sc->t2_2, c_call(args)(sc, sc->t1_1));
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(outer)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(outer)));
set_car(sc->t1_1, c_call(outer)(sc, sc->t2_1));
return(c_call(arg)(sc, sc->t1_1));
}
@@ -46349,9 +46159,9 @@ static s7_pointer all_x_c_op_opsq_s_q(s7_scheme *sc, s7_pointer arg)
s7_pointer outer, args;
outer = cadr(arg);
args = cadr(outer);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(args)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(args)));
set_car(sc->t2_1, c_call(args)(sc, sc->t1_1));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(outer)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(outer)));
set_car(sc->t1_1, c_call(outer)(sc, sc->t2_1));
return(c_call(arg)(sc, sc->t1_1));
}
@@ -46360,7 +46170,7 @@ static s7_pointer all_x_c_c_opsq(s7_scheme *sc, s7_pointer arg)
{
s7_pointer largs;
largs = caddr(arg);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(largs)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(largs)));
set_car(sc->t2_2, c_call(largs)(sc, sc->t1_1));
set_car(sc->t2_1, cadr(arg));
return(c_call(arg)(sc, sc->t2_1));
@@ -46370,8 +46180,8 @@ static s7_pointer direct_x_c_opsq_opsq(s7_scheme *sc, s7_pointer arg)
{
s7_double x1, x2;
cur_sc = sc;
- x1 = ((s7_d_p_t)opt_direct_x(cdr(arg)))(find_symbol_unchecked(sc, cadr(cadr(arg))));
- x2 = ((s7_d_p_t)opt_direct_x(cddr(arg)))(find_symbol_unchecked(sc, cadr(caddr(arg))));
+ x1 = ((s7_d_p_t)opt_direct_x(cdr(arg)))(symbol_to_value_unchecked(sc, cadr(cadr(arg))));
+ x2 = ((s7_d_p_t)opt_direct_x(cddr(arg)))(symbol_to_value_unchecked(sc, cadr(caddr(arg))));
return(((s7_p_dd_t)opt_direct_x_call(cdr(arg)))(x1, x2));
}
@@ -46382,10 +46192,10 @@ static s7_pointer all_x_c_opsq_opsq(s7_scheme *sc, s7_pointer arg)
int32_t tx;
tx = next_tx(sc);
largs = cdr(arg);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(car(largs))));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(car(largs))));
sc->t_temps[tx] = c_call(car(largs))(sc, sc->t1_1);
largs = cadr(largs);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(largs)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(largs)));
set_car(sc->t2_2, c_call(largs)(sc, sc->t1_1));
set_car(sc->t2_1, sc->t_temps[tx]);
return(c_call(arg)(sc, sc->t2_1));
@@ -46399,7 +46209,7 @@ static s7_pointer all_x_c_opcq_opsq(s7_scheme *sc, s7_pointer arg)
largs = cdr(arg);
sc->t_temps[tx] = c_call(car(largs))(sc, cdar(largs));
largs = cadr(largs);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(largs)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(largs)));
set_car(sc->t2_2, c_call(largs)(sc, sc->t1_1));
set_car(sc->t2_1, sc->t_temps[tx]);
return(c_call(arg)(sc, sc->t2_1));
@@ -46411,7 +46221,7 @@ static s7_pointer all_x_c_opsq_opcq(s7_scheme *sc, s7_pointer arg)
int32_t tx;
tx = next_tx(sc);
largs = cdr(arg);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(car(largs))));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(car(largs))));
sc->t_temps[tx] = c_call(car(largs))(sc, sc->t1_1);
largs = cadr(largs);
set_car(sc->t2_2, c_call(largs)(sc, cdr(largs)));
@@ -46425,11 +46235,11 @@ static s7_pointer all_x_c_opsq_opssq(s7_scheme *sc, s7_pointer arg)
int32_t tx;
tx = next_tx(sc);
largs = cdr(arg);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(car(largs))));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(car(largs))));
sc->t_temps[tx] = c_call(car(largs))(sc, sc->t1_1);
largs = cadr(largs);
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(largs)));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(largs)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(largs)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(largs)));
set_car(sc->t2_2, c_call(largs)(sc, sc->t2_1));
set_car(sc->t2_1, sc->t_temps[tx]);
return(c_call(arg)(sc, sc->t2_1));
@@ -46441,11 +46251,11 @@ static s7_pointer all_x_c_opssq_opsq(s7_scheme *sc, s7_pointer arg)
int32_t tx;
tx = next_tx(sc);
largs = cdr(arg);
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(car(largs))));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(car(largs))));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(car(largs))));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(car(largs))));
sc->t_temps[tx] = c_call(car(largs))(sc, sc->t2_1);
largs = cadr(largs);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(largs)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(largs)));
set_car(sc->t2_2, c_call(largs)(sc, sc->t1_1));
set_car(sc->t2_1, sc->t_temps[tx]);
return(c_call(arg)(sc, sc->t2_1));
@@ -46457,8 +46267,8 @@ static s7_pointer all_x_c_opssq_opcq(s7_scheme *sc, s7_pointer arg)
int32_t tx;
tx = next_tx(sc);
largs = cdr(arg);
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(car(largs))));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(car(largs))));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(car(largs))));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(car(largs))));
sc->t_temps[tx] = c_call(car(largs))(sc, sc->t2_1);
largs = cadr(largs);
set_car(sc->t2_2, c_call(largs)(sc, cdr(largs)));
@@ -46472,12 +46282,12 @@ static s7_pointer all_x_c_opssq_opssq(s7_scheme *sc, s7_pointer arg)
int32_t tx;
tx = next_tx(sc);
largs = cdr(arg);
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(car(largs))));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(car(largs))));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(car(largs))));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(car(largs))));
sc->t_temps[tx] = c_call(car(largs))(sc, sc->t2_1);
largs = cadr(largs);
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(largs)));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(largs)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(largs)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(largs)));
set_car(sc->t2_2, c_call(largs)(sc, sc->t2_1));
set_car(sc->t2_1, sc->t_temps[tx]);
return(c_call(arg)(sc, sc->t2_1));
@@ -46487,8 +46297,8 @@ static s7_pointer all_x_c_op_opssq_q_c(s7_scheme *sc, s7_pointer code)
{
s7_pointer arg;
arg = cadadr(code);
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(arg)));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(arg)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(arg)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(arg)));
set_car(sc->t1_1, c_call(arg)(sc, sc->t2_1));
set_car(sc->t2_1, c_call(cadr(code))(sc, sc->t1_1));
set_car(sc->t2_2, caddr(code));
@@ -46499,7 +46309,7 @@ static s7_pointer all_x_c_op_opsq_q(s7_scheme *sc, s7_pointer code)
{
s7_pointer arg;
arg = cadadr(code);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(arg)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(arg)));
set_car(sc->t1_1, c_call(arg)(sc, sc->t1_1));
set_car(sc->t1_1, c_call(cadr(code))(sc, sc->t1_1));
return(c_call(code)(sc, sc->t1_1));
@@ -46510,12 +46320,12 @@ static s7_pointer all_x_c_s_op_s_opsqq(s7_scheme *sc, s7_pointer code)
s7_pointer args, val, val1;
args = caddr(code);
val1 = caddr(args);
- val = find_symbol_unchecked(sc, cadr(args));
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(val1)));
+ val = symbol_to_value_unchecked(sc, cadr(args));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(val1)));
set_car(sc->t2_2, c_call(val1)(sc, sc->t1_1));
set_car(sc->t2_1, val);
set_car(sc->t2_2, c_call(args)(sc, sc->t2_1));
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(code)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(code)));
return(c_call(code)(sc, sc->t2_1));
}
@@ -46523,10 +46333,10 @@ static s7_pointer all_x_c_op_opsq_q_s(s7_scheme *sc, s7_pointer code)
{
s7_pointer arg;
arg = cadadr(code);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(arg)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(arg)));
set_car(sc->t1_1, c_call(arg)(sc, sc->t1_1));
set_car(sc->t2_1, c_call(cadr(code))(sc, sc->t1_1));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(code)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(code)));
return(c_call(code)(sc, sc->t2_1));
}
@@ -46534,7 +46344,7 @@ static s7_pointer all_x_c_op_opsq_q_c(s7_scheme *sc, s7_pointer code)
{
s7_pointer arg;
arg = cadadr(code);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(arg)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(arg)));
set_car(sc->t1_1, c_call(arg)(sc, sc->t1_1));
set_car(sc->t2_1, c_call(cadr(code))(sc, sc->t1_1));
set_car(sc->t2_2, caddr(code));
@@ -46550,23 +46360,23 @@ 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)
{
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_1, symbol_to_value_unchecked(sc, cadr(arg)));
+ set_car(sc->t3_2, symbol_to_value_unchecked(sc, caddr(arg)));
return(c_call(arg)(sc, sc->t3_1));
}
static s7_pointer all_x_c_sas(s7_scheme *sc, s7_pointer 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_1, symbol_to_value_unchecked(sc, cadr(arg)));
+ set_car(sc->t3_3, symbol_to_value_unchecked(sc, cadddr(arg)));
return(c_call(arg)(sc, sc->t3_1));
}
static s7_pointer all_x_c_sca(s7_scheme *sc, s7_pointer 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_1, symbol_to_value_unchecked(sc, cadr(arg)));
set_car(sc->t3_2, caddr(arg));
return(c_call(arg)(sc, sc->t3_1));
}
@@ -46575,7 +46385,7 @@ static s7_pointer all_x_c_csa(s7_scheme *sc, s7_pointer 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_2, symbol_to_value_unchecked(sc, caddr(arg)));
return(c_call(arg)(sc, sc->t3_1));
}
@@ -46596,14 +46406,14 @@ static s7_pointer all_x_c_ac(s7_scheme *sc, s7_pointer arg)
static s7_pointer all_x_c_sa(s7_scheme *sc, s7_pointer 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_1, symbol_to_value_checked(sc, cadr(arg)));
return(c_call(arg)(sc, sc->t2_1));
}
static s7_pointer all_x_c_as(s7_scheme *sc, s7_pointer arg)
{
set_car(sc->t2_1, c_call(cdr(arg))(sc, cadr(arg)));
- set_car(sc->t2_2, find_symbol_checked(sc, caddr(arg)));
+ set_car(sc->t2_2, symbol_to_value_checked(sc, caddr(arg)));
return(c_call(arg)(sc, sc->t2_1));
}
@@ -46611,7 +46421,7 @@ 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_2, symbol_to_value_checked(sc, caddr(arg)));
return(c_call(arg)(sc, sc->t2_1));
}
@@ -46664,7 +46474,7 @@ static s7_pointer all_x_closure_s(s7_scheme *sc, s7_pointer code)
/* no gain from all_x for the body rather than safe_c_c */
s7_pointer result, old_e;
old_e = sc->envir;
- sc->envir = old_frame_with_slot(sc, closure_let(opt_lambda(code)), find_symbol_unchecked(sc, opt_sym2(code)));
+ sc->envir = old_frame_with_slot(sc, closure_let(opt_lambda(code)), symbol_to_value_unchecked(sc, opt_sym2(code)));
code = car(closure_body(opt_lambda(code)));
result = c_call(code)(sc, cdr(code));
sc->envir = old_e;
@@ -46676,7 +46486,7 @@ static s7_pointer all_x_and_2_closure_s(s7_scheme *sc, s7_pointer code)
s7_pointer result, old_e;
old_e = sc->envir;
- sc->envir = old_frame_with_slot(sc, closure_let(opt_lambda(code)), find_symbol_unchecked(sc, opt_sym2(code)));
+ sc->envir = old_frame_with_slot(sc, closure_let(opt_lambda(code)), symbol_to_value_unchecked(sc, opt_sym2(code)));
code = cdar(closure_body(opt_lambda(code)));
result = c_call(code)(sc, car(code));
@@ -46709,7 +46519,6 @@ static void all_x_function_init(void)
all_x_function[HOP_SAFE_C_AND2] = all_x_and2;
all_x_function[HOP_SAFE_C_A] = all_x_c_a;
all_x_function[HOP_SAFE_C_S] = all_x_c_s;
- all_x_function[HOP_SAFE_C_L] = local_x_c_s;
all_x_function[HOP_SAFE_CAR_S] = all_x_car_s;
all_x_function[HOP_SAFE_CDR_S] = all_x_cdr_s;
all_x_function[HOP_SAFE_CADR_S] = all_x_cadr_s;
@@ -46731,7 +46540,6 @@ static void all_x_function_init(void)
all_x_function[HOP_SAFE_C_SQ] = all_x_c_sq;
all_x_function[HOP_SAFE_C_QS] = all_x_c_qs;
all_x_function[HOP_SAFE_C_SS] = all_x_c_ss;
- all_x_function[HOP_SAFE_C_LL] = local_x_c_ss;
all_x_function[HOP_SAFE_C_opSq_S] = all_x_c_opsq_s;
all_x_function[HOP_SAFE_C_opSq_C] = all_x_c_opsq_c;
@@ -46787,6 +46595,10 @@ static void all_x_function_init(void)
static s7_pointer g_not_c_c(s7_scheme *sc, s7_pointer args);
static s7_pointer g_not_is_pair_s(s7_scheme *sc, s7_pointer args);
static s7_pointer g_is_pair_cdr_s(s7_scheme *sc, s7_pointer args);
+static s7_pointer g_is_pair_cddr_s(s7_scheme *sc, s7_pointer args);
+static s7_pointer g_is_null_cddr_s(s7_scheme *sc, s7_pointer args);
+static s7_pointer g_is_null_cadr_s(s7_scheme *sc, s7_pointer args);
+static s7_pointer g_is_symbol_cadr_s(s7_scheme *sc, s7_pointer args);
static s7_pointer g_is_eq_car(s7_scheme *sc, s7_pointer args);
static s7_pointer g_is_eq_car_q(s7_scheme *sc, s7_pointer args);
static s7_pointer g_if_x2(s7_scheme *sc, s7_pointer args);
@@ -46807,28 +46619,54 @@ 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) &&
- (is_global(sc->is_pair_symbol)))
+ if (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_not_is_pair_s)
+ {
+ set_opt_sym3(arg, cadadr(arg));
+ return(all_x_not_is_pair_s);
+ }
+ if (c_call(arg) == g_is_pair_cdr_s)
+ {
+ set_opt_sym2(cdr(arg), cadadr(arg));
+ return(all_x_is_pair_cdr_s);
+ }
+ if (c_call(arg) == g_is_pair_cddr_s)
+ {
+ set_opt_sym2(cdr(arg), cadadr(arg));
+ return(all_x_is_pair_cddr_s);
+ }
}
- if ((c_call(arg) == g_is_pair_cdr_s) &&
- (is_global(sc->is_pair_symbol)))
+ if (is_global(sc->is_null_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);
+ if (c_call(arg) == g_is_null_cadr_s)
+ {
+ set_opt_sym2(cdr(arg), cadadr(arg));
+ return(all_x_is_null_cadr_s);
+ }
+ if (c_call(arg) == g_is_null_cddr_s)
+ {
+ set_opt_sym2(cdr(arg), cadadr(arg));
+ return(all_x_is_null_cddr_s);
+ }
+ }
+ if (is_global(sc->is_symbol_symbol))
+ {
+ if (c_call(arg) == g_is_symbol_cadr_s)
+ {
+ set_opt_sym2(cdr(arg), cadadr(arg));
+ return(all_x_is_symbol_cadr_s);
+ }
}
if (c_call(arg) == g_add_cs1) return(all_x_c_add1);
- if (c_call(arg) == g_add_cl1) return(local_x_c_add1);
- if (c_call(arg) == g_subtract_cl1) return(local_x_c_sub1);
+ if (c_call(arg) == g_subtract_cs1) return(all_x_c_sub1);
if (c_call(arg) == g_if_x2) return(all_x_if_x2); /* g_if_x1 doesn't happen much */
if (c_call(arg) == g_and_2) return(all_x_and2);
if (c_call(arg) == g_or_2) return(all_x_or2);
if (c_call(arg) == g_and_3) return(all_x_and3);
if ((c_call(arg) == g_add_si) &&
(checker(sc, cadr(arg), e)))
- return((is_local_symbol(cdr(arg))) ? local_x_c_addi : all_x_c_addi);
+ return(all_x_c_addi);
if ((c_call(arg) == g_char_equal_s_ic) &&
(checker(sc, cadr(arg), e)))
return(all_x_c_char_eq);
@@ -46837,120 +46675,61 @@ static s7_function all_x_eval(s7_scheme *sc, s7_pointer holder, s7_pointer e, sa
if (c_call(cadr(arg)) == g_is_eq_car_q)
{
set_opt_pair2(cdr(arg), cdadr(arg));
- return((is_local_symbol(cdr(cadadr(arg)))) ? local_x_not_is_eq_car_q : all_x_not_is_eq_car_q);
+ return(all_x_not_is_eq_car_q);
}
return(all_x_not_c_c);
}
if (c_call(arg) == g_hash_table_ref_ss)
- return((is_local_symbol(cdr(arg)) && is_local_symbol(cddr(arg))) ? local_x_c_hash_table_ref_ss : all_x_c_hash_table_ref_ss);
+ return(all_x_c_hash_table_ref_ss);
if (c_call(arg) == g_hash_table_ref_car)
return(all_x_c_hash_table_ref_car);
return(all_x_c_c);
case HOP_SAFE_C_S:
- {
- bool is_local;
- is_local = (is_local_symbol(cdr(arg)) || ((is_immutable(cadr(arg))) && (!is_keyword(cadr(arg)))));
- 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 (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);
- }
+ if (car(arg) == sc->cdr_symbol) return(all_x_cdr_s);
+ if (car(arg) == sc->car_symbol) return(all_x_car_s);
+ if (car(arg) == sc->cadr_symbol) return(all_x_cadr_s);
+ if (is_global(car(arg)))
+ {
+ if (car(arg) == sc->is_null_symbol) return(all_x_is_null_s);
+ if (car(arg) == sc->is_pair_symbol) return(all_x_is_pair_s);
+ if (car(arg) == sc->is_symbol_symbol) return(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(all_x_c_s);
- case HOP_SAFE_C_L:
- 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 (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:
- if (car(arg) == sc->not_symbol) return((is_local_symbol(cdadr(arg))) ? local_x_c_not_opsq : all_x_c_not_opsq);
+ if (car(arg) == sc->not_symbol) return(all_x_c_not_opsq);
if (caadr(arg) == sc->car_symbol)
{
set_opt_sym2(cdr(arg), cadadr(arg));
- return((is_local_symbol(cdr(cadr(arg)))) ? local_x_c_car_s : all_x_c_car_s);
+ return(all_x_c_car_s);
}
if (caadr(arg) == sc->cdr_symbol)
{
set_opt_sym2(cdr(arg), cadadr(arg));
- return((is_local_symbol(cdadr(arg))) ? local_x_c_cdr_s : all_x_c_cdr_s);
+ return(all_x_c_cdr_s);
}
- return((is_local_symbol(cdr(cadr(arg)))) ? local_x_c_opsq : all_x_c_opsq);
+ return(all_x_c_opsq);
- case HOP_SAFE_C_opSq_C:
- return((is_local_symbol(cdr(cadr(arg)))) ? local_x_c_opsq_c : all_x_c_opsq_c);
-
- case HOP_SAFE_C_SC:
- return((is_local_symbol(cdr(arg))) ? local_x_c_sc : all_x_c_sc);
case HOP_SAFE_C_SQ:
set_opt_con2(cdr(arg), cadr(caddr(arg)));
- return((is_local_symbol(cdr(arg))) ? local_x_c_sq : all_x_c_sq);
+ return(all_x_c_sq);
case HOP_SAFE_C_CQ:
set_opt_con2(cdr(arg), cadr(caddr(arg)));
return(all_x_c_cq);
-
- case HOP_SAFE_C_SS:
- if ((is_local_symbol(cdr(arg))) &&
- (is_local_symbol(cddr(arg))))
- return(local_x_c_ss);
- if (is_local_symbol(cdr(arg)))
- return(all_x_c_ls);
- return(all_x_c_ss);
-
- case HOP_SAFE_C_SSS:
- if ((is_local_symbol(cdr(arg))) &&
- (is_local_symbol(cddr(arg))) &&
- (is_local_symbol(cdddr(arg))))
- return(local_x_c_sss);
- return(all_x_c_sss);
-
+
case HOP_SAFE_C_opSSq:
if (car(arg) == sc->not_symbol)
return(all_x_c_not_opssq);
- if ((is_local_symbol(cdr(cadr(arg)))) &&
- (is_local_symbol(cddr(cadr(arg)))))
- return(local_x_c_opssq);
return(all_x_c_opssq);
- case HOP_SAFE_C_opSSq_S:
- if ((is_local_symbol(cdr(cadr(arg)))) &&
- (is_local_symbol(cddr(cadr(arg)))) &&
- (is_local_symbol(cddr(arg))))
- return(local_x_c_opssq_s);
- return(all_x_c_opssq_s);
-
- case HOP_SAFE_C_S_opSSq:
- if ((is_local_symbol(cdr(caddr(arg)))) &&
- (is_local_symbol(cddr(caddr(arg)))) &&
- (is_local_symbol(cdr(arg))))
- return(local_x_c_s_opssq);
- return(all_x_c_s_opssq);
-
- case HOP_SAFE_C_S_opSq:
- if ((is_local_symbol(cdr(caddr(arg)))) &&
- (is_local_symbol(cdr(arg))))
- return(local_x_c_s_opsq);
- return(all_x_c_s_opsq);
-
case HOP_SAFE_C_C_opSSq:
if (has_direct_x_opt(arg))
return(direct_x_c_c_opssq);
@@ -46982,7 +46761,7 @@ static s7_function all_x_eval(s7_scheme *sc, s7_pointer holder, s7_pointer e, sa
return(all_x_closure_s);
default:
- /* if (!all_x_function[optimize_op(arg)]) fprintf(stderr, "all_x_eval %s %s\n", DISPLAY(arg), (is_optimized(arg)) ? opt_names[optimize_op(arg)] : "unopt"); */
+ /* if ((!all_x_function[optimize_op(arg)]) && (is_h_optimized(arg))) fprintf(stderr, "all_x_eval %s %s\n", DISPLAY(arg), opt_names[optimize_op(arg)]); */
return(all_x_function[optimize_op(arg)]);
}
} /* is_optimized */
@@ -46999,8 +46778,6 @@ static s7_function all_x_eval(s7_scheme *sc, s7_pointer holder, s7_pointer e, sa
((arg == sc->else_symbol) &&
(is_global(arg))))
return(all_x_k);
- if (is_local_symbol(holder))
- return(local_x_s);
if (checker(sc, arg, e))
return(all_x_s);
return(all_x_unsafe_s);
@@ -47181,7 +46958,8 @@ static void s7_set_p_dd_function(s7_pointer f, s7_p_dd_t df) {add_opt_func(f, o_
static s7_p_dd_t s7_p_dd_function(s7_pointer f) {return((s7_p_dd_t)opt_func(f, o_p_dd));}
-#if DEBUGGING
+#define DEBUGGING_ALLOC_OPO 0
+#if S7_DEBUGGING
static opt_info *alloc_opo(s7_scheme *sc, s7_pointer expr)
#else
#define alloc_opo(Sc, Expr) alloc_opo_1(Sc)
@@ -47191,22 +46969,41 @@ static opt_info *alloc_opo_1(s7_scheme *sc)
opt_info *o;
if (sc->pc >= OPTS_SIZE)
{
-#if DEBUGGING
+#if S7_DEBUGGING
fprintf(stderr, "opts overflow: %s\n", DISPLAY(expr));
#endif
longjmp(sc->opt_exit, 1);
}
+#if S7_DEBUGGING
+ if (sc->pc < 0)
+ {
+ fprintf(stderr, "sc->pc: %d\n", sc->pc);
+ abort();
+ }
+#if DEBUGGING_ALLOC_OPO
+ fprintf(stderr, "alloc_opo: %p %d for %s\n", sc->opts[sc->pc], sc->pc, DISPLAY(expr));
+#endif
+#endif
o = sc->opts[sc->pc++];
o->v8.fd = NULL;
-#if DEBUGGING
+#if S7_DEBUGGING
o->expr = expr;
#endif
return(o);
}
-#define OPT_PRINT 0
+#if DEBUGGING_ALLOC_OPO
+static void backup_pc_1(s7_scheme *sc, const char *func, int line)
+{
+ sc->pc--;
+ fprintf(stderr, "%s[%d]: backup pc to %d\n", func, line, sc->pc);
+}
+#define backup_pc(sc) backup_pc_1(sc, __func__, __LINE__)
+#else
+#define backup_pc(sc) sc->pc--
+#endif
-/* t600 has tests, t593 runs t*.scm */
+#define OPT_PRINT 0
static bool return_false(s7_scheme *sc, s7_pointer expr, const char *func, int32_t line)
{
@@ -47324,7 +47121,7 @@ static bool opt_int_not_pair(s7_scheme *sc, s7_pointer car_x)
if (is_symbol(car_x))
{
s7_pointer p;
- p = find_symbol(sc, car_x);
+ p = symbol_to_slot(sc, car_x);
if ((is_slot(p)) &&
(is_opt_int(slot_value(p))))
{
@@ -47407,7 +47204,7 @@ static bool i_idp_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
}
if (is_symbol(cadr(car_x)))
{
- opc->v1.p = find_symbol(sc, cadr(car_x));
+ opc->v1.p = symbol_to_slot(sc, cadr(car_x));
if ((is_slot(opc->v1.p)) &&
(is_integer(slot_value(opc->v1.p))))
{
@@ -47438,7 +47235,7 @@ static bool i_idp_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
}
if (is_symbol(cadr(car_x)))
{
- opc->v1.p = find_symbol(sc, cadr(car_x));
+ opc->v1.p = symbol_to_slot(sc, cadr(car_x));
if (is_slot(opc->v1.p))
{
if (is_float(slot_value(opc->v1.p)))
@@ -47500,7 +47297,7 @@ static bool i_pi_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
if (pfunc)
{
s7_pointer sig;
- sig = signature(sc, s_func);
+ sig = c_function_signature(s_func);
if (is_pair(sig))
{
s7_pointer arg1, arg2;
@@ -47517,7 +47314,7 @@ static bool i_pi_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
obj = s7_symbol_value(sc, arg1);
if (s7_apply_function(sc, checker, set_plist_1(sc, obj)) == sc->T)
{
- opc->v1.p = find_symbol(sc, arg1);
+ opc->v1.p = symbol_to_slot(sc, arg1);
if (is_slot(opc->v1.p))
{
if ((car(car_x) == sc->int_vector_ref_symbol) &&
@@ -47528,7 +47325,7 @@ static bool i_pi_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
opc->v3.i_pi_f = pfunc;
if (is_symbol(arg2))
{
- opc->v2.p = find_symbol(sc, arg2);
+ opc->v2.p = symbol_to_slot(sc, arg2);
if ((is_slot(opc->v2.p)) &&
(is_opt_int(slot_value(opc->v2.p))))
{
@@ -47636,7 +47433,7 @@ static bool i_ii_fc_combinable(s7_scheme *sc, opt_info *opc)
opc->v1.p = o1->v1.p;
opc->v2.p = o1->v2.p;
opc->v7.fi = opt_i_ii_fco;
- sc->pc--;
+ backup_pc(sc);
return(true);
}
}
@@ -47651,7 +47448,7 @@ static bool i_ii_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
if (ifunc)
{
s7_pointer sig;
- sig = signature(sc, s_func);
+ sig = c_function_signature(s_func);
if (is_pair(sig))
{
s7_pointer arg1, arg2;
@@ -47672,7 +47469,7 @@ static bool i_ii_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
}
if (is_symbol(arg2))
{
- opc->v2.p = find_symbol(sc, arg2);
+ opc->v2.p = symbol_to_slot(sc, arg2);
if (is_slot(opc->v2.p))
{
if (is_integer(slot_value(opc->v2.p)))
@@ -47696,7 +47493,7 @@ static bool i_ii_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
{
if (is_symbol(arg1))
{
- opc->v1.p = find_symbol(sc, arg1);
+ opc->v1.p = symbol_to_slot(sc, arg1);
if (is_slot(opc->v1.p))
{
if (is_opt_int(slot_value(opc->v1.p)))
@@ -47719,7 +47516,11 @@ static bool i_ii_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
opc->v3.i_ii_f = rsh_i_i2_direct;
else opc->v3.i_ii_f = rsh_i_ii_direct;
}
- else opc->v3.i_ii_f = lsh_i_ii_direct;
+ else
+ {
+ if (opc->v2.i < s7_int_bits)
+ opc->v3.i_ii_f = lsh_i_ii_direct;
+ }
}
else
{
@@ -47743,7 +47544,7 @@ static bool i_ii_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
}
if (is_symbol(arg2))
{
- opc->v2.p = find_symbol(sc, arg2);
+ opc->v2.p = symbol_to_slot(sc, arg2);
if ((is_slot(opc->v2.p)) &&
(is_opt_int(slot_value(opc->v2.p))))
{
@@ -47869,7 +47670,7 @@ static s7_int opt_i_pii_sff(void *p)
static bool opt_int_vector_set(s7_scheme *sc, opt_info *opc, s7_pointer v, s7_pointer indexp, s7_pointer valp)
{
s7_pointer settee;
- settee = find_symbol(sc, v);
+ settee = symbol_to_slot(sc, v);
if ((is_slot(settee)) &&
(!is_immutable(slot_value(settee))))
{
@@ -47881,7 +47682,7 @@ static bool opt_int_vector_set(s7_scheme *sc, opt_info *opc, s7_pointer v, s7_po
if (is_symbol(car(indexp)))
{
s7_pointer slot;
- slot = find_symbol(sc, car(indexp));
+ slot = symbol_to_slot(sc, car(indexp));
if ((is_slot(slot)) &&
(is_integer(slot_value(slot))) &&
(int_optimize(sc, valp)))
@@ -47915,7 +47716,7 @@ static bool i_pii_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
if (pfunc)
{
s7_pointer sig;
- sig = signature(sc, s_func);
+ sig = c_function_signature(s_func);
if ((is_pair(sig)) &&
(is_symbol(cadr(car_x))))
{
@@ -47924,25 +47725,25 @@ static bool i_pii_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
if (car(car_x) == sc->int_vector_set_symbol)
return(opt_int_vector_set(sc, opc, cadr(car_x), cddr(car_x), cdddr(car_x)));
- 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);
+ checker = s7_symbol_value(sc, cadr(sig));
if (s7_apply_function(sc, checker, set_plist_1(sc, obj)) == sc->T)
{
int32_t start;
start = sc->pc;
opc->v3.i_pii_f = pfunc;
- opc->v1.p = find_symbol(sc, cadr(car_x));
+ opc->v1.p = symbol_to_slot(sc, cadr(car_x));
if (is_slot(opc->v1.p))
{
s7_pointer arg2;
arg2 = caddr(car_x);
if (is_symbol(arg2))
{
- opc->v2.p = find_symbol(sc, arg2);
+ opc->v2.p = symbol_to_slot(sc, arg2);
if ((is_slot(opc->v2.p)) &&
(is_opt_int(slot_value(opc->v2.p))) &&
(int_optimize(sc, cdddr(car_x))))
@@ -48057,7 +47858,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 = signature(sc, s_func);
+ sig = c_function_signature(s_func);
if ((is_pair(sig)) &&
(car(sig) == sc->is_integer_symbol))
{
@@ -48112,7 +47913,7 @@ static bool set_i_i_f_combinable(s7_scheme *sc, opt_info *opc)
opc->v3.p = o1->v1.p;
opc->v2.i = o1->v2.i;
opc->v7.fi = opt_set_i_i_fo;
- sc->pc--;
+ backup_pc(sc);
return(true);
}
}
@@ -48132,8 +47933,9 @@ static bool i_syntax_ok(s7_scheme *sc, s7_pointer car_x, int32_t len)
if ((is_immutable(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))
+ settee = symbol_to_slot(sc, cadr(car_x));
+ if ((is_slot(settee)) &&
+ (!is_immutable(settee)))
{
opc->v1.p = settee;
if ((is_integer(slot_value(settee))) &&
@@ -48161,7 +47963,7 @@ static bool i_implicit_ok(s7_scheme *sc, s7_pointer car_x, int32_t len)
{
s7_pointer s_slot, head;
head = car(car_x);
- s_slot = find_symbol(sc, head);
+ s_slot = symbol_to_slot(sc, head);
if ((is_slot(s_slot)) &&
(len == 2) &&
(is_int_vector(slot_value(s_slot))) &&
@@ -48174,7 +47976,7 @@ static bool i_implicit_ok(s7_scheme *sc, s7_pointer car_x, int32_t len)
if (is_symbol(cadr(car_x)))
{
s7_pointer slot;
- slot = find_symbol(sc, cadr(car_x));
+ slot = symbol_to_slot(sc, cadr(car_x));
if ((is_slot(slot)) &&
(is_integer(slot_value(slot))))
{
@@ -48223,7 +48025,7 @@ static bool opt_float_not_pair(s7_scheme *sc, s7_pointer car_x)
if (is_symbol(car_x))
{
s7_pointer p;
- p = find_symbol(sc, car_x);
+ p = symbol_to_slot(sc, car_x);
if ((is_slot(p)) &&
(is_opt_real(slot_value(p))))
{
@@ -48287,13 +48089,16 @@ static bool d_d_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer c
opc->v3.d_d_f = func;
if (is_real(cadr(car_x)))
{
+ if ((!is_float(cadr(car_x))) && /* (random 1) != (random 1.0) */
+ (car(car_x) == sc->random_symbol))
+ return(return_false(sc, car_x, __func__, __LINE__));
opc->v1.x = s7_number_to_real(sc, cadr(car_x));
opc->v7.fd = opt_d_d_c;
return(true);
}
if (is_symbol(cadr(car_x)))
{
- opc->v1.p = find_symbol(sc, cadr(car_x));
+ opc->v1.p = symbol_to_slot(sc, cadr(car_x));
if ((is_slot(opc->v1.p)) &&
(!has_methods(slot_value(opc->v1.p))))
{
@@ -48335,13 +48140,13 @@ 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 = signature(sc, s_func);
+ sig = c_function_signature(s_func);
if ((is_pair(sig)) &&
(is_symbol(cadr(car_x)))) /* look for (oscil g) */
{
s7_pointer slot, obj, checker;
checker = s7_symbol_value(sc, cadr(sig));
- slot = find_symbol(sc, cadr(car_x));
+ slot = symbol_to_slot(sc, cadr(car_x));
obj = slot_value(slot);
if (s7_apply_function(sc, checker, set_plist_1(sc, obj)) == sc->T)
{
@@ -48382,7 +48187,7 @@ static bool d_p_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer c
opc->v3.d_p_f = dpf;
if (is_symbol(cadr(car_x)))
{
- opc->v1.p = find_symbol(sc, cadr(car_x));
+ opc->v1.p = symbol_to_slot(sc, cadr(car_x));
if ((is_slot(opc->v1.p)) &&
(!has_methods(slot_value(opc->v1.p))))
{
@@ -48434,7 +48239,7 @@ static bool d_pi_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
s7_pointer arg2;
int32_t start;
start = sc->pc;
- opc->v1.p = find_symbol(sc, cadr(car_x));
+ opc->v1.p = symbol_to_slot(sc, cadr(car_x));
if (!is_slot(opc->v1.p))
return(return_false(sc, car_x, __func__, __LINE__));
if ((car(car_x) == sc->float_vector_ref_symbol) &&
@@ -48453,7 +48258,7 @@ static bool d_pi_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
}
if (is_symbol(arg2))
{
- opc->v2.p = find_symbol(sc, arg2);
+ opc->v2.p = symbol_to_slot(sc, arg2);
if ((is_slot(opc->v2.p)) &&
(is_integer(slot_value(opc->v2.p))))
{
@@ -48498,8 +48303,8 @@ static bool d_ip_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
if (pfunc)
{
opc->v3.d_ip_f = pfunc;
- opc->v1.p = find_symbol(sc, cadr(car_x));
- opc->v2.p = find_symbol(sc, caddr(car_x));
+ opc->v1.p = symbol_to_slot(sc, cadr(car_x));
+ opc->v2.p = symbol_to_slot(sc, caddr(car_x));
if ((is_slot(opc->v1.p)) &&
(is_integer(slot_value(opc->v1.p))) &&
(is_slot(opc->v2.p)))
@@ -48541,12 +48346,12 @@ static bool d_pd_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
start = sc->pc;
arg2 = caddr(car_x);
opc->v3.d_pd_f = func;
- opc->v1.p = find_symbol(sc, cadr(car_x));
+ opc->v1.p = symbol_to_slot(sc, cadr(car_x));
if (!is_slot(opc->v1.p))
return(return_false(sc, car_x, __func__, __LINE__));
if (is_symbol(arg2))
{
- opc->v2.p = find_symbol(sc, arg2);
+ opc->v2.p = symbol_to_slot(sc, arg2);
if ((is_slot(opc->v2.p)) &&
(is_float(slot_value(opc->v2.p))))
{
@@ -48636,7 +48441,7 @@ static bool d_vd_f_combinable(s7_scheme *sc, int32_t start)
opc->v6.obj = o1->v5.obj;
opc->v4.d_v_f = o1->v3.d_v_f;
opc->v7.fd = opt_d_vd_o;
- sc->pc--;
+ backup_pc(sc);
return(true);
}
if (o1->v7.fd == opt_d_vd_s)
@@ -48647,7 +48452,7 @@ static bool d_vd_f_combinable(s7_scheme *sc, int32_t start)
opc->v5.d_vd_f = o1->v3.d_vd_f;
opc->v3.p = o1->v2.p;
opc->v7.fd = opt_d_vd_o2;
- sc->pc--;
+ backup_pc(sc);
return(true);
}
if (o1->v7.fd == opt_d_dd_cs)
@@ -48656,7 +48461,7 @@ static bool d_vd_f_combinable(s7_scheme *sc, int32_t start)
opc->v6.x = o1->v2.x;
opc->v2.p = o1->v1.p;
opc->v7.fd = opt_d_vd_o3;
- sc->pc--;
+ backup_pc(sc);
return(true);
}
if (o1->v7.fd == opt_d_dd_sf)
@@ -48686,13 +48491,13 @@ static bool d_vd_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
if (vfunc)
{
s7_pointer sig;
- sig = signature(sc, s_func);
+ sig = c_function_signature(s_func);
if ((is_pair(sig)) &&
(is_symbol(cadr(sig))))
{
s7_pointer slot, obj, checker;
checker = s7_symbol_value(sc, cadr(sig));
- slot = find_symbol(sc, cadr(car_x));
+ slot = symbol_to_slot(sc, cadr(car_x));
obj = slot_value(slot);
if (s7_apply_function(sc, checker, set_plist_1(sc, obj)) == sc->T)
{
@@ -48711,7 +48516,7 @@ static bool d_vd_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
opc->v7.fd = opt_d_vd_c;
return(true);
}
- opc->v2.p = find_symbol(sc, arg2);
+ opc->v2.p = symbol_to_slot(sc, arg2);
if (is_slot(opc->v2.p))
{
if (is_float(slot_value(opc->v2.p)))
@@ -48789,7 +48594,7 @@ static bool d_id_sf_combinable(s7_scheme *sc, opt_info *opc)
opc->v5.d_vd_f = o1->v3.d_vd_f;
opc->v3.p = o1->v2.p;
opc->v7.fd = opt_d_id_sfo;
- sc->pc--;
+ backup_pc(sc);
return(true);
}
if (o1->v7.fd == opt_d_v)
@@ -48798,7 +48603,7 @@ static bool d_id_sf_combinable(s7_scheme *sc, opt_info *opc)
opc->v2.obj = o1->v5.obj;
opc->v5.d_v_f = o1->v3.d_v_f;
opc->v7.fd = opt_d_id_sfo1;
- sc->pc--;
+ backup_pc(sc);
return(true);
}
}
@@ -48816,7 +48621,7 @@ static bool d_id_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
int32_t start;
start = sc->pc;
opc->v3.d_id_f = flt_func;
- opc->v1.p = find_symbol(sc, cadr(car_x));
+ opc->v1.p = symbol_to_slot(sc, cadr(car_x));
if ((is_slot(opc->v1.p)) &&
(is_integer(slot_value(opc->v1.p))))
{
@@ -48928,7 +48733,7 @@ static bool d_dd_fs_combinable(s7_scheme *sc, opt_info *opc)
opc->v3.p = o1->v2.p;
opc->v5.d_pi_f = o1->v3.d_pi_f;
opc->v7.fd = opt_d_dd_fso;
- sc->pc--;
+ backup_pc(sc);
return(true);
}
}
@@ -49077,7 +48882,7 @@ static bool d_dd_cf_combinable(s7_scheme *sc, opt_info *opc)
opc->v1.obj = o1->v5.obj;
opc->v4.d_v_f = o1->v3.d_v_f;
opc->v7.fd = opt_d_dd_cfo;
- sc->pc--;
+ backup_pc(sc);
return(true);
}
if (o1->v7.fd == opt_d_vd_s)
@@ -49088,7 +48893,7 @@ static bool d_dd_cf_combinable(s7_scheme *sc, opt_info *opc)
opc->v2.p = o1->v2.p;
opc->v5.d_vd_f = o1->v3.d_vd_f;
opc->v7.fd = opt_d_dd_cfo1;
- sc->pc--;
+ backup_pc(sc);
return(true);
}
}
@@ -49120,7 +48925,7 @@ static bool d_dd_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
}
if (is_symbol(arg2))
{
- opc->v1.p = find_symbol(sc, arg2);
+ opc->v1.p = symbol_to_slot(sc, arg2);
if (is_slot(opc->v1.p))
{
if (is_float(slot_value(opc->v1.p)))
@@ -49158,7 +48963,7 @@ static bool d_dd_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
{
if (is_symbol(arg1))
{
- opc->v1.p = find_symbol(sc, arg1);
+ opc->v1.p = symbol_to_slot(sc, arg1);
if ((is_slot(opc->v1.p)) &&
(is_real(slot_value(opc->v1.p))))
{
@@ -49172,7 +48977,7 @@ static bool d_dd_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
}
if (is_symbol(arg2))
{
- opc->v2.p = find_symbol(sc, arg2);
+ opc->v2.p = symbol_to_slot(sc, arg2);
if (is_slot(opc->v2.p))
{
if (is_float(slot_value(opc->v2.p)))
@@ -49222,7 +49027,7 @@ static bool d_dd_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
}
if (is_symbol(arg2))
{
- opc->v1.p = find_symbol(sc, arg2);
+ opc->v1.p = symbol_to_slot(sc, arg2);
if (is_slot(opc->v1.p))
{
if (is_float(slot_value(opc->v1.p)))
@@ -49364,29 +49169,29 @@ static bool d_ddd_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
opc->v4.d_ddd_f = f;
if (is_symbol(arg1))
{
- s7_pointer slot;
- slot = find_symbol(sc, arg1);
- opc->v1.p = slot;
- if ((is_slot(slot)) &&
- (is_float(slot_value(slot))))
+ s7_pointer slot1;
+ slot1 = symbol_to_slot(sc, arg1);
+ opc->v1.p = slot1;
+ if ((is_slot(slot1)) &&
+ (is_float(slot_value(slot1))))
{
if (is_symbol(arg2))
{
- s7_pointer slot;
- slot = find_symbol(sc, arg2);
- opc->v2.p = slot;
- if ((is_slot(slot)) &&
- (is_float(slot_value(slot))))
+ s7_pointer slot2;
+ slot2 = symbol_to_slot(sc, arg2);
+ opc->v2.p = slot2;
+ if ((is_slot(slot2)) &&
+ (is_float(slot_value(slot2))))
{
s7_pointer arg3;
arg3 = cadddr(car_x);
if (is_symbol(arg3))
{
- s7_pointer slot;
- slot = find_symbol(sc, arg3);
- opc->v3.p = slot;
- if ((is_slot(slot)) &&
- (is_float(slot_value(slot))))
+ s7_pointer slot3;
+ slot3 = symbol_to_slot(sc, arg3);
+ opc->v3.p = slot3;
+ if ((is_slot(slot3)) &&
+ (is_float(slot_value(slot3))))
{
opc->v7.fd = opt_d_ddd_sss;
return(true);
@@ -49482,7 +49287,7 @@ static bool d_pid_ssf_combinable(s7_scheme *sc, opt_info *opc)
opc->v3.obj = o1->v5.obj;
opc->v5.d_v_f = o1->v3.d_v_f;
opc->v7.fd = opt_d_pid_sso;
- sc->pc--;
+ backup_pc(sc);
return(true);
}
if (o1->v7.fd == opt_d_pi_ss)
@@ -49491,7 +49296,7 @@ static bool d_pid_ssf_combinable(s7_scheme *sc, opt_info *opc)
opc->v5.p = o1->v1.p;
opc->v6.p = o1->v2.p;
opc->v7.fd = opt_d_pid_ss_ss;
- sc->pc--;
+ backup_pc(sc);
return(true);
}
}
@@ -49501,7 +49306,7 @@ static bool d_pid_ssf_combinable(s7_scheme *sc, opt_info *opc)
static bool opt_float_vector_set(s7_scheme *sc, opt_info *opc, s7_pointer v, s7_pointer indexp, s7_pointer valp)
{
s7_pointer settee;
- settee = find_symbol(sc, v);
+ settee = symbol_to_slot(sc, v);
if ((is_slot(settee)) &&
(!is_immutable(slot_value(settee))))
{
@@ -49513,7 +49318,7 @@ static bool opt_float_vector_set(s7_scheme *sc, opt_info *opc, s7_pointer v, s7_
if (is_symbol(car(indexp)))
{
s7_pointer slot;
- slot = find_symbol(sc, car(indexp));
+ slot = symbol_to_slot(sc, car(indexp));
if ((is_slot(slot)) &&
(is_integer(slot_value(slot))))
{
@@ -49524,7 +49329,7 @@ static bool opt_float_vector_set(s7_scheme *sc, opt_info *opc, s7_pointer v, s7_
if (is_symbol(car(valp)))
{
s7_pointer val_slot;
- val_slot = find_symbol(sc, car(valp));
+ val_slot = symbol_to_slot(sc, car(valp));
if ((is_slot(val_slot)) &&
(is_float(slot_value(val_slot))))
{
@@ -49572,19 +49377,19 @@ static bool d_pid_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
if (head == sc->float_vector_set_symbol)
return(opt_float_vector_set(sc, opc, cadr(car_x), cddr(car_x), cdddr(car_x)));
- opc->v1.p = find_symbol(sc, cadr(car_x));
+ opc->v1.p = symbol_to_slot(sc, cadr(car_x));
if (is_slot(opc->v1.p))
{
if (is_symbol(caddr(car_x)))
{
- opc->v2.p = find_symbol(sc, caddr(car_x));
+ opc->v2.p = symbol_to_slot(sc, caddr(car_x));
if ((is_slot(opc->v2.p)) &&
(is_integer(slot_value(opc->v2.p))))
{
if (is_symbol(cadddr(car_x)))
{
s7_pointer val_slot;
- val_slot = find_symbol(sc, cadddr(car_x));
+ val_slot = symbol_to_slot(sc, cadddr(car_x));
if ((is_slot(val_slot)) &&
(is_float(slot_value(val_slot))))
{
@@ -49661,21 +49466,21 @@ 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 = signature(sc, s_func);
+ sig = c_function_signature(s_func);
if (is_pair(sig))
{
int32_t start;
s7_pointer slot, obj, checker;
start = sc->pc;
checker = s7_symbol_value(sc, cadr(sig));
- slot = find_symbol(sc, cadr(car_x));
+ slot = symbol_to_slot(sc, cadr(car_x));
obj = slot_value(slot);
if (s7_apply_function(sc, checker, set_plist_1(sc, obj)) == sc->T)
{
opc->v7.fd = opt_d_vid_ssf;
opc->v1.p = slot;
opc->v5.obj = (void *)s7_c_object_value(obj);
- opc->v2.p = find_symbol(sc, caddr(car_x));
+ opc->v2.p = symbol_to_slot(sc, caddr(car_x));
if ((is_slot(opc->v2.p)) &&
(is_integer(slot_value(opc->v2.p))) &&
(float_optimize(sc, cdddr(car_x))))
@@ -49722,12 +49527,12 @@ 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 = signature(sc, s_func);
+ sig = c_function_signature(s_func);
if (is_pair(sig))
{
s7_pointer slot, obj, checker;
checker = s7_symbol_value(sc, cadr(sig));
- slot = find_symbol(sc, cadr(car_x));
+ slot = symbol_to_slot(sc, cadr(car_x));
obj = slot_value(slot);
if (s7_apply_function(sc, checker, set_plist_1(sc, obj)) == sc->T)
{
@@ -49916,7 +49721,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 = signature(sc, s_func);
+ sig = c_function_signature(s_func);
if ((is_pair(sig)) &&
((car(sig) == sc->is_float_symbol) ||
(car(sig) == sc->is_real_symbol)))
@@ -49970,8 +49775,9 @@ static bool d_syntax_ok(s7_scheme *sc, s7_pointer car_x, int32_t len)
if ((is_immutable(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))
+ settee = symbol_to_slot(sc, cadr(car_x));
+ if ((is_slot(settee)) &&
+ (!is_immutable(settee)))
{
opc->v1.p = settee;
if ((is_t_real(slot_value(settee))) &&
@@ -50000,7 +49806,7 @@ static bool d_syntax_ok(s7_scheme *sc, s7_pointer car_x, int32_t len)
static bool d_implicit_ok(s7_scheme *sc, s7_pointer car_x, int32_t len)
{
s7_pointer s_slot;
- s_slot = find_symbol(sc, car(car_x));
+ s_slot = symbol_to_slot(sc, car(car_x));
if ((is_slot(s_slot)) &&
(len == 2) &&
(is_float_vector(slot_value(s_slot))) &&
@@ -50013,7 +49819,7 @@ static bool d_implicit_ok(s7_scheme *sc, s7_pointer car_x, int32_t len)
if (is_symbol(cadr(car_x)))
{
s7_pointer slot;
- slot = find_symbol(sc, cadr(car_x));
+ slot = symbol_to_slot(sc, cadr(car_x));
if ((is_slot(slot)) &&
(is_integer(slot_value(slot))))
{
@@ -50068,7 +49874,7 @@ static bool opt_bool_not_pair(s7_scheme *sc, s7_pointer car_x)
opc->v7.fb = ((car_x == sc->F) ? opt_b_f : opt_b_t);
return(true);
}
- p = find_symbol(sc, car_x);
+ p = symbol_to_slot(sc, car_x);
if (is_slot(p))
{
if ((has_methods(slot_value(p))) ||
@@ -50154,7 +49960,7 @@ static bool b_idp_ok(s7_scheme *sc, s7_pointer s_func, s7_pointer car_x, s7_poin
opc->v2.b_i_f = bif;
if (is_symbol(cadr(car_x)))
{
- opc->v1.p = find_symbol(sc, cadr(car_x));
+ opc->v1.p = symbol_to_slot(sc, cadr(car_x));
opc->v7.fb = opt_b_i_s;
return(true);
}
@@ -50169,7 +49975,7 @@ static bool b_idp_ok(s7_scheme *sc, s7_pointer s_func, s7_pointer car_x, s7_poin
opc->v7.fb = opt_zero_mod;
opc->v1.p = o1->v1.p;
opc->v2.i = o1->v2.i;
- sc->pc--;
+ backup_pc(sc);
}
else
#endif
@@ -50189,7 +49995,7 @@ static bool b_idp_ok(s7_scheme *sc, s7_pointer s_func, s7_pointer car_x, s7_poin
opc->v2.b_d_f = bdf;
if (is_symbol(cadr(car_x)))
{
- opc->v1.p = find_symbol(sc, cadr(car_x));
+ opc->v1.p = symbol_to_slot(sc, cadr(car_x));
opc->v7.fb = opt_b_d_s;
return(true);
}
@@ -50210,7 +50016,7 @@ static bool b_idp_ok(s7_scheme *sc, s7_pointer s_func, s7_pointer car_x, s7_poin
if (is_symbol(cadr(car_x)))
{
s7_pointer p;
- p = find_symbol(sc, cadr(car_x));
+ p = symbol_to_slot(sc, cadr(car_x));
if ((!is_slot(p)) ||
(has_methods(slot_value(p))))
return(return_false(sc, car_x, __func__, __LINE__));
@@ -50249,14 +50055,14 @@ static s7_pointer opt_arg_type(s7_scheme *sc, s7_pointer argp)
{
if ((is_global(car(arg))) ||
((is_slot(global_slot(car(arg)))) &&
- (find_symbol(sc, car(arg)) == global_slot(car(arg)))))
+ (symbol_to_slot(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);
+ sig = c_function_signature(a_func);
if (is_pair(sig))
{
if ((car(sig) == sc->is_integer_symbol) ||
@@ -50286,7 +50092,7 @@ static s7_pointer opt_arg_type(s7_scheme *sc, s7_pointer argp)
}
}
}
- slot = find_symbol(sc, car(arg));
+ slot = symbol_to_slot(sc, car(arg));
if ((is_slot(slot)) &&
(is_sequence(slot_value(slot))))
{
@@ -50300,7 +50106,7 @@ static s7_pointer opt_arg_type(s7_scheme *sc, s7_pointer argp)
}
if (is_symbol(arg))
{
- slot = find_symbol(sc, arg);
+ slot = symbol_to_slot(sc, arg);
if ((!is_slot(slot)) ||
(has_methods(slot_value(slot))))
return(sc->T);
@@ -50368,7 +50174,7 @@ static bool b_pp_sf_combinable(s7_scheme *sc, opt_info *opc)
opc->v2.p = o1->v1.p;
opc->v4.p_p_f = o1->v2.p_p_f;
opc->v7.fb = opt_b_pp_sfo;
- sc->pc--;
+ backup_pc(sc);
return(true);
}
}
@@ -50411,8 +50217,8 @@ static bool b_pp_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
if ((is_symbol(arg1)) &&
(is_symbol(arg2)))
{
- opc->v1.p = find_symbol(sc, arg1);
- opc->v2.p = find_symbol(sc, arg2);
+ opc->v1.p = symbol_to_slot(sc, arg1);
+ opc->v2.p = symbol_to_slot(sc, arg2);
if ((is_slot(opc->v1.p)) &&
(!has_methods(slot_value(opc->v1.p))) &&
(is_slot(opc->v2.p)) &&
@@ -50424,7 +50230,7 @@ static bool b_pp_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
}
if (is_symbol(arg1))
{
- opc->v1.p = find_symbol(sc, arg1);
+ opc->v1.p = symbol_to_slot(sc, arg1);
if ((!is_slot(opc->v1.p)) ||
(has_methods(slot_value(opc->v1.p))))
return(return_false(sc, car_x, __func__, __LINE__));
@@ -50447,7 +50253,7 @@ static bool b_pp_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
{
if (cell_optimize(sc, cdr(car_x)))
{
- opc->v1.p = find_symbol(sc, arg2);
+ opc->v1.p = symbol_to_slot(sc, arg2);
if ((!is_slot(opc->v1.p)) ||
(has_methods(slot_value(opc->v1.p))))
return(return_false(sc, car_x, __func__, __LINE__));
@@ -50465,7 +50271,7 @@ static bool b_pp_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
if (s7_b_pp_direct_function(s_func))
{
s7_pointer call_sig, arg1_type, arg2_type;
- call_sig = signature(sc, s_func);
+ call_sig = c_function_signature(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)) */
@@ -50496,7 +50302,7 @@ static bool b_pi_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
bpif = s7_b_pi_function(s_func);
if (bpif)
{
- opc->v1.p = find_symbol(sc, arg2); /* slot checked in opt_arg_type */
+ opc->v1.p = symbol_to_slot(sc, arg2); /* slot checked in opt_arg_type */
if (cell_optimize(sc, cdr(car_x)))
{
opc->v2.b_pi_f = bpif;
@@ -50568,10 +50374,10 @@ static bool b_dd_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
if (is_symbol(arg1))
{
- opc->v1.p = find_symbol(sc, arg1);
+ opc->v1.p = symbol_to_slot(sc, arg1);
if (is_symbol(arg2))
{
- opc->v2.p = find_symbol(sc, arg2);
+ opc->v2.p = symbol_to_slot(sc, arg2);
opc->v7.fb = opt_b_dd_ss;
return(true);
}
@@ -50592,7 +50398,7 @@ static bool b_dd_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
{
if (is_symbol(arg2))
{
- opc->v1.p = find_symbol(sc, arg2);
+ opc->v1.p = symbol_to_slot(sc, arg2);
opc->v7.fb = opt_b_dd_fs;
return(true);
}
@@ -50671,10 +50477,10 @@ static bool b_ii_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
opc->v3.b_ii_f = bif;
if (is_symbol(arg1))
{
- opc->v1.p = find_symbol(sc, arg1);
+ opc->v1.p = symbol_to_slot(sc, arg1);
if (is_symbol(arg2))
{
- opc->v2.p = find_symbol(sc, arg2);
+ opc->v2.p = symbol_to_slot(sc, arg2);
opc->v7.fb = opt_b_ii_ss;
return(true);
}
@@ -50695,7 +50501,7 @@ static bool b_ii_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
{
if (int_optimize(sc, cdr(car_x)))
{
- opc->v2.p = find_symbol(sc, arg2);
+ opc->v2.p = symbol_to_slot(sc, arg2);
opc->v7.fb = opt_b_ii_fs;
return(true);
}
@@ -50878,7 +50684,7 @@ static bool opt_cell_not_pair(s7_scheme *sc, s7_pointer car_x)
opc->v7.fp = opt_p_c;
return(true);
}
- p = find_symbol(sc, car_x);
+ p = symbol_to_slot(sc, car_x);
if (is_slot(p))
{
if (has_methods(slot_value(p)))
@@ -50959,7 +50765,7 @@ static bool p_p_f_combinable(s7_scheme *sc, opt_info *opc)
opc->v3.p_p_f = o1->v2.p_p_f;
opc->v1.p = o1->v1.p;
opc->v7.fp = opt_p_p_f1;
- sc->pc--;
+ backup_pc(sc);
return(true);
}
}
@@ -50980,6 +50786,12 @@ static s7_pointer opt_p_cf_s(void *p)
return(o->v2.cf(cur_sc, set_plist_1(cur_sc, slot_value(o->v1.p))));
}
+static s7_pointer opt_p_cf_c(void *p)
+{
+ opt_info *o = (opt_info *)p;
+ return(o->v2.cf(cur_sc, set_plist_1(cur_sc, o->v1.p)));
+}
+
static bool p_p_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer car_x)
{
s7_p_p_t ppf;
@@ -50996,7 +50808,7 @@ static bool p_p_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer c
if (is_symbol(cadr(car_x)))
{
- opc->v1.p = find_symbol(sc, cadr(car_x));
+ opc->v1.p = symbol_to_slot(sc, cadr(car_x));
if ((!is_slot(opc->v1.p)) ||
(has_methods(slot_value(opc->v1.p))))
return(return_false(sc, car_x, __func__, __LINE__));
@@ -51024,7 +50836,7 @@ static bool p_p_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer c
opc->v2.cf = cf_call(sc, car_x, s_func, 1);
if (is_symbol(cadr(car_x)))
{
- opc->v1.p = find_symbol(sc, cadr(car_x));
+ opc->v1.p = symbol_to_slot(sc, cadr(car_x));
if ((is_slot(opc->v1.p)) &&
(!has_methods(slot_value(opc->v1.p))))
{
@@ -51034,6 +50846,12 @@ static bool p_p_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer c
}
else
{
+ if (!is_pair(cadr(car_x)))
+ {
+ opc->v1.p = cadr(car_x);
+ opc->v7.fp = opt_p_cf_c;
+ return(true);
+ }
if (cell_optimize(sc, cdr(car_x)))
{
opc->v7.fp = opt_p_cf_f;
@@ -51071,8 +50889,8 @@ static bool p_ii_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
if ((is_symbol(arg1)) &&
(is_symbol(arg2)))
{
- opc->v1.p = find_symbol(sc, arg1);
- opc->v2.p = find_symbol(sc, arg2);
+ opc->v1.p = symbol_to_slot(sc, arg1);
+ opc->v2.p = symbol_to_slot(sc, arg2);
if ((is_slot(opc->v1.p)) &&
(is_opt_int(slot_value(opc->v1.p))) &&
(is_slot(opc->v2.p)) &&
@@ -51086,7 +50904,7 @@ static bool p_ii_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
if ((int_optimize(sc, cdr(car_x))) &&
(is_symbol(arg2)))
{
- opc->v2.p = find_symbol(sc, arg2);
+ opc->v2.p = symbol_to_slot(sc, arg2);
if ((is_slot(opc->v2.p)) &&
(is_opt_int(slot_value(opc->v2.p))))
{
@@ -51126,7 +50944,7 @@ static bool p_dd_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
(is_t_real(arg2)))
{
opc->v2.x = real(arg2);
- opc->v1.p = find_symbol(sc, arg1);
+ opc->v1.p = symbol_to_slot(sc, arg1);
if ((is_slot(opc->v1.p)) &&
(is_opt_real(slot_value(opc->v1.p))))
{
@@ -51139,7 +50957,7 @@ static bool p_dd_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
(is_t_real(arg1)))
{
opc->v2.x = real(arg1);
- opc->v1.p = find_symbol(sc, arg2);
+ opc->v1.p = symbol_to_slot(sc, arg2);
if ((is_slot(opc->v1.p)) &&
(is_opt_real(slot_value(opc->v1.p))))
{
@@ -51188,25 +51006,25 @@ static bool p_pi_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
func = s7_p_pi_function(s_func);
if (func)
{
- s7_pointer obj = NULL, slot, sig, checker = NULL;
+ s7_pointer obj = NULL, slot1, sig, checker = NULL;
- sig = signature(sc, s_func);
+ sig = c_function_signature(s_func);
if ((is_pair(sig)) &&
(is_pair(cdr(sig))) &&
(is_symbol(cadr(sig))))
checker = cadr(sig);
/* here we know cadr is a symbol */
- slot = find_symbol(sc, cadr(car_x));
- if ((!is_slot(slot)) ||
- (has_methods(slot_value(slot))))
+ slot1 = symbol_to_slot(sc, cadr(car_x));
+ if ((!is_slot(slot1)) ||
+ (has_methods(slot_value(slot1))))
return(return_false(sc, car_x, __func__, __LINE__));
- if ((s7_is_vector(slot_value(slot))) &&
- (vector_rank(slot_value(slot)) > 1))
+ if ((s7_is_vector(slot_value(slot1))) &&
+ (vector_rank(slot_value(slot1)) > 1))
return(return_false(sc, car_x, __func__, __LINE__));
opc->v3.p_pi_f = func;
- opc->v1.p = slot;
+ opc->v1.p = slot1;
if ((s7_p_pi_direct_function(s_func)) &&
(checker))
@@ -51225,31 +51043,31 @@ static bool p_pi_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
}
if (is_symbol(caddr(car_x)))
{
- s7_pointer slot;
- slot = find_symbol(sc, caddr(car_x));
- if ((is_slot(slot)) &&
- (is_opt_int(slot_value(slot))))
+ s7_pointer slot2;
+ slot2 = symbol_to_slot(sc, caddr(car_x));
+ if ((is_slot(slot2)) &&
+ (is_opt_int(slot_value(slot2))))
{
opc->v7.fp = opt_p_pi_ss;
- opc->v2.p = slot;
+ opc->v2.p = slot2;
if ((obj) &&
- (is_step_end(slot)))
+ (is_step_end(slot2)))
switch (type(obj))
{
case T_VECTOR:
- if (denominator(slot_value(slot)) <= vector_length(obj))
+ if (denominator(slot_value(slot2)) <= vector_length(obj))
opc->v3.p_pi_f = vector_ref_unchecked;
break;
case T_INT_VECTOR:
- if (denominator(slot_value(slot)) <= vector_length(obj))
+ if (denominator(slot_value(slot2)) <= vector_length(obj))
opc->v3.p_pi_f = int_vector_ref_unchecked_p;
break;
case T_FLOAT_VECTOR:
- if (denominator(slot_value(slot)) <= vector_length(obj))
+ if (denominator(slot_value(slot2)) <= vector_length(obj))
opc->v3.p_pi_f = float_vector_ref_unchecked_p;
break;
case T_STRING:
- if (denominator(slot_value(slot)) <= string_length(obj))
+ if (denominator(slot_value(slot2)) <= string_length(obj))
opc->v3.p_pi_f = (is_byte_vector_not_string(obj)) ? byte_vector_ref_unchecked : string_ref_unchecked;
break;
}
@@ -51292,7 +51110,7 @@ static bool p_pi_fc_combinable(s7_scheme *sc, opt_info *opc)
opc->v4.p_p_f = o1->v2.p_p_f;
opc->v1.p = o1->v1.p;
opc->v7.fp = opt_p_pi_fco;
- sc->pc--;
+ backup_pc(sc);
return(true);
}
}
@@ -51367,7 +51185,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 = signature(sc, s_func);
+ sig = c_function_signature(s_func);
if ((is_pair(sig)) &&
(is_pair(cdr(sig))) &&
(is_symbol(cadr(sig))))
@@ -51375,7 +51193,7 @@ static bool p_pp_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
if (is_symbol(cadr(car_x)))
{
- slot = find_symbol(sc, cadr(car_x));
+ slot = symbol_to_slot(sc, cadr(car_x));
if ((!is_slot(slot)) ||
(has_methods(slot_value(slot))))
{
@@ -51403,7 +51221,7 @@ static bool p_pp_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
}
if (is_symbol(caddr(car_x)))
{
- opc->v2.p = find_symbol(sc, caddr(car_x));
+ opc->v2.p = symbol_to_slot(sc, caddr(car_x));
if ((is_slot(opc->v2.p)) &&
(!has_methods(slot_value(opc->v2.p))))
{
@@ -51443,7 +51261,7 @@ static bool p_pp_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
if (is_symbol(caddr(car_x)))
{
opc->v2.p = opc->v1.p;
- opc->v1.p = find_symbol(sc, caddr(car_x));
+ opc->v1.p = symbol_to_slot(sc, caddr(car_x));
if ((is_slot(opc->v1.p)) &&
(!has_methods(slot_value(opc->v1.p))))
{
@@ -51458,7 +51276,7 @@ static bool p_pp_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
{
if (is_symbol(caddr(car_x)))
{
- opc->v1.p = find_symbol(sc, caddr(car_x));
+ opc->v1.p = symbol_to_slot(sc, caddr(car_x));
if ((is_slot(opc->v1.p)) &&
(!has_methods(slot_value(opc->v1.p))))
{
@@ -51559,13 +51377,13 @@ static bool p_cf_pp_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_point
opc->v3.cf = cf_call(sc, car_x, s_func, 2);
if (is_symbol(cadr(car_x)))
{
- opc->v1.p = find_symbol(sc, cadr(car_x));
+ opc->v1.p = symbol_to_slot(sc, cadr(car_x));
if ((is_slot(opc->v1.p)) &&
(!has_methods(slot_value(opc->v1.p))))
{
if (is_symbol(caddr(car_x)))
{
- opc->v2.p = find_symbol(sc, caddr(car_x));
+ opc->v2.p = symbol_to_slot(sc, caddr(car_x));
if ((is_slot(opc->v2.p)) &&
(!has_methods(slot_value(opc->v2.p))))
{
@@ -51600,7 +51418,7 @@ static bool p_cf_pp_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_point
{
if (is_symbol(caddr(car_x)))
{
- opc->v1.p = find_symbol(sc, caddr(car_x));
+ opc->v1.p = symbol_to_slot(sc, caddr(car_x));
if ((is_slot(opc->v1.p)) &&
(!has_methods(slot_value(opc->v1.p))))
{
@@ -51715,14 +51533,14 @@ static bool p_pip_ssf_combinable(s7_scheme *sc, opt_info *opc, int32_t start)
opc->v3.p = o1->v1.p;
opc->v4.p = o1->v2.p;
opc->v7.fp = opt_p_pip_sso;
- sc->pc--;
+ backup_pc(sc);
return(true);
}
if (o1->v7.fp == opt_p_p_c)
{
opc->v5.p_p_f = o1->v2.p_p_f;
opc->v4.p = o1->v1.p;
- sc->pc--;
+ backup_pc(sc);
opc->v7.fp = opt_p_pip_c;
return(true);
}
@@ -51744,24 +51562,24 @@ static bool p_pip_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
func = s7_p_pip_function(s_func);
if (func)
{
- s7_pointer obj = NULL, slot, sig, checker = NULL;
+ s7_pointer obj = NULL, slot1, sig, checker = NULL;
- sig = signature(sc, s_func);
+ sig = c_function_signature(s_func);
if ((is_pair(sig)) &&
(is_pair(cdr(sig))) &&
(is_symbol(cadr(sig))))
checker = cadr(sig);
/* here we know cadr is a symbol */
- slot = find_symbol(sc, cadr(car_x));
- if ((!is_slot(slot)) ||
- (has_methods(slot_value(slot))) ||
- (is_immutable(slot_value(slot))))
+ slot1 = symbol_to_slot(sc, cadr(car_x));
+ if ((!is_slot(slot1)) ||
+ (has_methods(slot_value(slot1))) ||
+ (is_immutable(slot_value(slot1))))
return(return_false(sc, car_x, __func__, __LINE__));
- if ((s7_is_vector(slot_value(slot))) &&
- (vector_rank(slot_value(slot)) > 1))
+ if ((s7_is_vector(slot_value(slot1))) &&
+ (vector_rank(slot_value(slot1)) > 1))
return(return_false(sc, car_x, __func__, __LINE__));
- opc->v1.p = slot;
+ opc->v1.p = slot1;
opc->v3.p_pip_f = func;
if ((s7_p_pip_direct_function(s_func)) &&
@@ -51788,35 +51606,35 @@ static bool p_pip_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
if (is_symbol(caddr(car_x)))
{
- s7_pointer slot;
+ s7_pointer slot2;
int32_t start;
start = sc->pc;
- slot = find_symbol(sc, caddr(car_x));
- if ((is_slot(slot)) &&
- (is_opt_int(slot_value(slot))))
+ slot2 = symbol_to_slot(sc, caddr(car_x));
+ if ((is_slot(slot2)) &&
+ (is_opt_int(slot_value(slot2))))
{
- opc->v2.p = slot;
+ opc->v2.p = slot2;
if ((obj) &&
- (is_step_end(slot)))
+ (is_step_end(slot2)))
switch (type(obj))
{
case T_VECTOR:
- if (denominator(slot_value(slot)) <= vector_length(obj))
+ if (denominator(slot_value(slot2)) <= vector_length(obj))
opc->v3.p_pip_f = vector_set_unchecked;
break;
case T_INT_VECTOR:
- if (denominator(slot_value(slot)) <= vector_length(obj))
+ if (denominator(slot_value(slot2)) <= vector_length(obj))
opc->v3.p_pip_f = int_vector_set_unchecked_p;
break;
case T_FLOAT_VECTOR:
- if (denominator(slot_value(slot)) <= vector_length(obj))
+ if (denominator(slot_value(slot2)) <= vector_length(obj))
opc->v3.p_pip_f = float_vector_set_unchecked_p;
break;
case T_STRING:
- if (denominator(slot_value(slot)) <= string_length(obj))
+ if (denominator(slot_value(slot2)) <= string_length(obj))
opc->v3.p_pip_f = (is_byte_vector_not_string(obj)) ? byte_vector_set_unchecked : string_set_unchecked;
break;
}
@@ -51824,7 +51642,7 @@ static bool p_pip_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
if (is_symbol(cadddr(car_x)))
{
s7_pointer val_slot;
- val_slot = find_symbol(sc, cadddr(car_x));
+ val_slot = symbol_to_slot(sc, cadddr(car_x));
if ((is_slot(val_slot)) &&
(!has_methods(val_slot)))
{
@@ -51890,7 +51708,7 @@ static bool p_ppi_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
(int_optimize(sc, cdddr(car_x))))
{
s7_pointer slot;
- slot = find_symbol(sc, caddr(car_x));
+ slot = symbol_to_slot(sc, caddr(car_x));
if ((is_slot(slot)) &&
(!has_methods(slot_value(slot))))
{
@@ -51974,7 +51792,7 @@ static bool p_ppp_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
int32_t start;
s7_pointer sig, checker = NULL;
- sig = signature(sc, s_func);
+ sig = c_function_signature(s_func);
if ((is_pair(sig)) &&
(is_pair(cdr(sig))) &&
(is_symbol(cadr(sig))))
@@ -51988,7 +51806,7 @@ static bool p_ppp_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
if (is_symbol(arg1)) /* dealt with at the top -> p1 */
{
s7_pointer slot;
- slot = find_symbol(sc, arg1);
+ slot = symbol_to_slot(sc, arg1);
if ((!is_slot(slot)) ||
(has_methods(slot_value(slot))))
return(return_false(sc, car_x, __func__, __LINE__));
@@ -52018,14 +51836,14 @@ static bool p_ppp_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
}
if (is_symbol(arg2))
{
- slot = find_symbol(sc, arg2);
+ slot = symbol_to_slot(sc, arg2);
if ((is_slot(slot)) &&
(!has_methods(slot_value(slot))))
{
opc->v2.p = slot;
if (is_symbol(arg3))
{
- slot = find_symbol(sc, arg3);
+ slot = symbol_to_slot(sc, arg3);
if ((is_slot(slot)) &&
(!has_methods(slot_value(slot))))
{
@@ -52060,7 +51878,7 @@ static bool p_ppp_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
(is_symbol(arg3)))
{
s7_pointer val_slot;
- val_slot = find_symbol(sc, arg3);
+ val_slot = symbol_to_slot(sc, arg3);
if ((is_slot(val_slot)) &&
(!has_methods(val_slot)))
{
@@ -52079,7 +51897,7 @@ static bool p_ppp_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_pointer
if (is_symbol(arg3))
{
s7_pointer val_slot;
- val_slot = find_symbol(sc, arg3);
+ val_slot = symbol_to_slot(sc, arg3);
if ((is_slot(val_slot)) &&
(!has_methods(val_slot)))
{
@@ -52118,13 +51936,19 @@ static s7_pointer opt_p_cf_ppp(void *p)
int32_t tx1, tx2;
s7_pointer po3;
o1 = cur_sc->opts[++cur_sc->pc];
+
+ /* fprintf(stderr, "cf_ppp %p at %d\n", o1, cur_sc->pc); */
+
tx1 = next_tx(cur_sc);
cur_sc->t_temps[tx1] = o1->v7.fp(o1);
+ /* fprintf(stderr, "%s at %d\n", OPT_DISPLAY(cur_sc->t_temps[tx1]), tx1); */
o1 = cur_sc->opts[++cur_sc->pc];
tx2 = next_tx(cur_sc);
cur_sc->t_temps[tx2] = o1->v7.fp(o1);
+ /* fprintf(stderr, "%s at %d\n", OPT_DISPLAY(cur_sc->t_temps[tx2]), tx2); */
o1 = cur_sc->opts[++cur_sc->pc];
po3 = o1->v7.fp(o1);
+ /* fprintf(stderr, "po3: %s\n", OPT_DISPLAY(po3)); */
return(o->v2.cf(cur_sc, set_plist_3(cur_sc, cur_sc->t_temps[tx1], cur_sc->t_temps[tx2], po3)));
}
@@ -52141,6 +51965,7 @@ static bool p_cf_ppp_ok(s7_scheme *sc, opt_info *opc, s7_pointer s_func, s7_poin
{
opc->v2.cf = cf_call(sc, car_x, s_func, 3);
opc->v7.fp = opt_p_cf_ppp;
+ /* fprintf(stderr, "cf_ppp: %s %p at %d\n", DISPLAY(car_x), opc, start); */
return(true);
}
pc_fallback(sc, start);
@@ -52220,7 +52045,7 @@ static bool funcall_optimize(s7_scheme *sc, s7_pointer car_x, s7_pointer s_func)
static bool p_implicit(s7_scheme *sc, s7_pointer car_x, int32_t len)
{
s7_pointer s_slot;
- s_slot = find_symbol(sc, car(car_x));
+ s_slot = symbol_to_slot(sc, car(car_x));
if (is_slot(s_slot))
{
@@ -52269,7 +52094,7 @@ static bool p_implicit(s7_scheme *sc, s7_pointer car_x, int32_t len)
if (is_symbol(cadr(car_x)))
{
s7_pointer slot;
- slot = find_symbol(sc, cadr(car_x));
+ slot = symbol_to_slot(sc, cadr(car_x));
if (is_slot(slot))
{
opc->v2.p = slot;
@@ -52452,7 +52277,7 @@ static bool set_p_i_f_combinable(s7_scheme *sc, opt_info *opc)
opc->v2.p = o1->v1.p;
opc->v3.p = o1->v2.p;
opc->v7.fp = opt_set_p_i_fo;
- sc->pc--;
+ backup_pc(sc);
return(true);
}
if (o1->v7.fi == opt_i_ii_sc)
@@ -52461,7 +52286,7 @@ static bool set_p_i_f_combinable(s7_scheme *sc, opt_info *opc)
opc->v2.p = o1->v1.p;
opc->v3.i = o1->v2.i;
opc->v7.fp = opt_set_p_i_fo1;
- sc->pc--;
+ backup_pc(sc);
return(true);
}
}
@@ -52485,11 +52310,13 @@ static bool opt_cell_set(s7_scheme *sc, s7_pointer car_x)
if (is_symbol(cadr(car_x)))
{
s7_pointer settee;
+ /* fprintf(stderr, "%s: %d %d\n", DISPLAY(car_x), (is_constant_symbol(sc, cadr(car_x))), (symbol_has_setter(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));
+ settee = symbol_to_slot(sc, cadr(car_x));
if ((is_slot(settee)) &&
+ (!is_immutable(settee)) &&
(!is_syntax(slot_value(settee))))
{
/* type changes here can confuse the rest of the optimizer */
@@ -52502,7 +52329,7 @@ static bool opt_cell_set(s7_scheme *sc, s7_pointer car_x)
if (is_symbol(caddr(car_x)))
{
s7_pointer val_slot;
- val_slot = find_symbol(sc, caddr(car_x));
+ val_slot = symbol_to_slot(sc, caddr(car_x));
if ((is_slot(val_slot)) &&
(is_opt_int(slot_value(val_slot))))
{
@@ -52558,7 +52385,7 @@ static bool opt_cell_set(s7_scheme *sc, s7_pointer car_x)
(is_null(cddadr(car_x))))
{
s7_pointer s_slot;
- s_slot = find_symbol(sc, caadr(car_x));
+ s_slot = symbol_to_slot(sc, caadr(car_x));
if (is_slot(s_slot))
{
s7_pointer obj;
@@ -52640,7 +52467,7 @@ static bool opt_cell_set(s7_scheme *sc, s7_pointer car_x)
s7_pointer slot;
int32_t start;
start = sc->pc;
- slot = find_symbol(sc, index);
+ slot = symbol_to_slot(sc, index);
if ((is_slot(slot)) &&
(!has_methods(slot_value(slot))))
{
@@ -52664,7 +52491,7 @@ static bool opt_cell_set(s7_scheme *sc, s7_pointer car_x)
if (is_symbol(caddr(car_x)))
{
s7_pointer val_slot;
- val_slot = find_symbol(sc, caddr(car_x));
+ val_slot = symbol_to_slot(sc, caddr(car_x));
if ((is_slot(val_slot)) &&
(!has_methods(val_slot)))
{
@@ -52733,7 +52560,7 @@ static bool opt_cell_set(s7_scheme *sc, s7_pointer car_x)
(is_symbol(caddr(car_x))))
{
s7_pointer val_slot;
- val_slot = find_symbol(sc, caddr(car_x));
+ val_slot = symbol_to_slot(sc, caddr(car_x));
if ((is_slot(val_slot)) &&
(!has_methods(val_slot)))
{
@@ -52748,7 +52575,7 @@ static bool opt_cell_set(s7_scheme *sc, s7_pointer car_x)
if (is_symbol(caddr(car_x)))
{
s7_pointer val_slot;
- val_slot = find_symbol(sc, caddr(car_x));
+ val_slot = symbol_to_slot(sc, caddr(car_x));
if ((is_slot(val_slot)) &&
(!has_methods(val_slot)))
{
@@ -52962,6 +52789,8 @@ static bool opt_cell_cond(s7_scheme *sc, s7_pointer car_x)
for (blen = 0, cp = cdr(clause); is_pair(cp); blen++, cp = cdr(cp))
if (!cell_optimize(sc, cp))
return(return_false(sc, cp, __func__, __LINE__));
+ if (!is_null(cp))
+ return(return_false(sc, cp, __func__, __LINE__));
opc->v1.i = blen;
if (max_blen < blen) max_blen = blen;
opc->v3.i = sc->pc - 1;
@@ -53277,7 +53106,8 @@ static bool opt_cell_if(s7_scheme *sc, s7_pointer car_x, int32_t len)
next = sc->opts[sc->pc];
if ((is_pair(cadr(car_x))) &&
(caadr(car_x) == sc->not_symbol) &&
- (is_pair(cdadr(car_x)))) /* (if (not)... */
+ (is_pair(cdadr(car_x))) && /* (if (not)... */
+ (is_null(cddadr(car_x)))) /* (if (not a b)... */
{
if ((bool_optimize(sc, cdadr(car_x))) &&
(cell_optimize(sc, cddr(car_x))))
@@ -53486,6 +53316,8 @@ static s7_pointer opt_let_temporarily(void *p)
o->v4.p = slot_value(o->v1.p); /* save and protect old value */
cur_sc->t_temps[tx] = o->v4.p;
+ if (is_immutable_slot(o->v1.p))
+ immutable_object_error(cur_sc, set_elist_3(cur_sc, immutable_error_string, cur_sc->let_temporarily_symbol, slot_symbol(o->v1.p)));
slot_set_value(o->v1.p, o1->v7.fp(o1)); /* set new value */
len = o->v2.i - 1;
@@ -53520,7 +53352,7 @@ static bool opt_cell_let_temporarily(s7_scheme *sc, s7_pointer car_x, int32_t le
s7_pointer p;
opt_info *opc;
opc = alloc_opo(sc, car_x);
- opc->v1.p = find_symbol(sc, caar(cadr(car_x)));
+ opc->v1.p = symbol_to_slot(sc, caar(cadr(car_x)));
if (!is_slot(opc->v1.p))
return(return_false(sc, car_x, __func__, __LINE__));
@@ -53853,13 +53685,13 @@ static s7_pointer opt_do_ifbp(void *p)
f = o1->v7.fb;
while (integer(vp) < end)
{
+ cur_sc->pc = loop;
if (f(o1))
{
opt_info *o2;
o2 = cur_sc->opts[++cur_sc->pc];
o2->v7.fp(o2);
}
- cur_sc->pc = loop;
integer(vp)++;
}
return(NULL);
@@ -53971,7 +53803,7 @@ static bool opt_cell_do(s7_scheme *sc, s7_pointer car_x, int32_t len)
return(return_false(sc, car_x, __func__, __LINE__));
}
if (is_symbol(cadr(var)))
- slot_set_value(slot, slot_value(find_symbol(sc, cadr(var))));
+ slot_set_value(slot, slot_value(symbol_to_slot(sc, cadr(var))));
else
{
if (!is_pair(cadr(var)))
@@ -53983,11 +53815,11 @@ static bool opt_cell_do(s7_scheme *sc, s7_pointer car_x, int32_t len)
else
{
s7_pointer sf;
- sf = find_symbol_checked(sc, caadr(var));
+ sf = symbol_to_value_checked(sc, caadr(var));
if (is_c_function(sf))
{
s7_pointer sig;
- sig = signature(sc, sf);
+ sig = c_function_signature(sf);
if ((is_pair(sig)) &&
((car(sig) == sc->is_integer_symbol) ||
((is_pair(car(sig))) &&
@@ -54046,7 +53878,7 @@ static bool opt_cell_do(s7_scheme *sc, s7_pointer car_x, int32_t len)
s7_pointer stop_slot;
if (is_symbol(caddr(stop)))
{
- stop_slot = find_symbol(sc, caddr(stop));
+ stop_slot = symbol_to_slot(sc, caddr(stop));
if ((!is_slot(stop_slot)) ||
(!is_opt_int(slot_value(stop_slot))))
stop_slot = NULL;
@@ -54091,7 +53923,7 @@ static bool opt_cell_do(s7_scheme *sc, s7_pointer car_x, int32_t len)
if (!set_stop)
{
s7_pointer slot;
- slot = find_symbol(sc, cadr(stop));
+ slot = symbol_to_slot(sc, cadr(stop));
if ((is_slot(slot)) &&
(is_opt_int(slot_value(slot))) &&
(stop_is_safe(sc, cadr(stop), cddr(car_x))))
@@ -54196,7 +54028,7 @@ static bool opt_cell_do(s7_scheme *sc, s7_pointer car_x, int32_t len)
(do_is_safe(sc, cdddr(car_x), sc->w = list_1(sc, ind), sc->nil, &has_set)))
{
dox_set_slot1(frame, slot);
- dox_set_slot2_unchecked(frame, (is_symbol(caddr(end))) ? find_symbol(sc, caddr(end)) : sc->undefined);
+ dox_set_slot2_unchecked(frame, (is_symbol(caddr(end))) ? symbol_to_slot(sc, caddr(end)) : sc->undefined);
slot_set_value(slot, make_mutable_integer(sc, integer(slot_value(slot))));
opc->v4.i = body_index;
if (body_len == 1)
@@ -54322,10 +54154,19 @@ static void start_opts(s7_scheme *sc)
sc->pc = 0;
}
+#if DEBUGGING_ALLOC_OPO
+static void pc_fallback_1(s7_scheme *sc, int32_t new_pc, const char *func, int line)
+{
+ sc->pc = new_pc;
+ fprintf(stderr, "%s[%d]: set pc to %d\n", func, line, sc->pc);
+}
+#define pc_fallback(sc, new_pc) pc_fallback_1(sc, new_pc, __func__, __LINE__)
+#else
static void pc_fallback(s7_scheme *sc, int32_t new_pc)
{
sc->pc = new_pc;
}
+#endif
static void free_optlist(s7_scheme *sc, s7_pointer p)
{
@@ -54452,11 +54293,11 @@ static s7_pointer opt_call_1_1(void *p)
env = o->v2.p;
let_id(env) = id;
x = let_slots(env);
+ sym = slot_symbol(x);
+ symbol_set_local(sym, id, x); /* this has to precede call below which might involve sym (symbol_id in particular) */
o1 = cur_sc->opts[++cur_sc->pc];
slot_set_value(x, o1->v7.fp(o1));
- sym = slot_symbol(x);
- symbol_set_local(sym, id, x);
old_e = cur_sc->envir;
cur_sc->envir = env;
@@ -54502,9 +54343,6 @@ static bool opt_bool_call_1_1(void *p) {return(opt_call_1_1(p) != cur_sc->
static bool funcall_optimize(s7_scheme *sc, s7_pointer car_x, s7_pointer s_func)
{
/* fprintf(stderr, "funcall opt %s\n", DISPLAY(car_x)); */
- if (sc->safety > CLM_OPTIMIZATION_SAFETY)
- return(false);
-
if (!closure_no_opt(s_func))
{
opt_info *opc;
@@ -54621,9 +54459,9 @@ static s7_pointer func_returns(s7_scheme *sc, s7_pointer func)
s7_pointer rtnf;
rtnf = car(last_expr);
if (!is_symbol(rtnf)) return(sc->F);
- rtnf = find_symbol_checked(sc, rtnf);
+ rtnf = symbol_to_value_checked(sc, rtnf);
if (!is_c_function(rtnf)) return(sc->F);
- rtnf = signature(sc, rtnf);
+ rtnf = c_function_signature(rtnf);
if (!is_pair(rtnf)) return(sc->F);
return(car(rtnf));
}
@@ -54678,12 +54516,12 @@ static bool float_optimize(s7_scheme *sc, s7_pointer expr)
/* need to check int_opt here */
if ((is_syntactic(head)) ||
- (typesflag(car_x) == SYNTACTIC_PAIR))
+ (is_syntactic_pair(car_x)))
return(d_syntax_ok(sc, car_x, len));
if ((is_global(head)) ||
((is_slot(global_slot(head))) &&
- (find_symbol(sc, head) == global_slot(head))))
+ (symbol_to_slot(sc, head) == global_slot(head))))
s_func = slot_value(global_slot(head));
else return(d_implicit_ok(sc, car_x, len));
@@ -54785,12 +54623,12 @@ static bool int_optimize(s7_scheme *sc, s7_pointer expr)
len = s7_list_length(sc, car_x);
if ((is_syntactic(head)) ||
- (typesflag(car_x) == SYNTACTIC_PAIR))
+ (is_syntactic_pair(car_x)))
return(i_syntax_ok(sc, car_x, len));
if ((is_global(head)) ||
((is_slot(global_slot(head))) &&
- (find_symbol(sc, head) == global_slot(head))))
+ (symbol_to_slot(sc, head) == global_slot(head))))
s_func = slot_value(global_slot(head));
else return(i_implicit_ok(sc, car_x, len));
@@ -54877,12 +54715,12 @@ static bool cell_optimize(s7_scheme *sc, s7_pointer expr)
len = s7_list_length(sc, car_x);
if ((is_syntactic(head)) ||
- (typesflag(car_x) == SYNTACTIC_PAIR))
+ (is_syntactic_pair(car_x)))
return(p_syntax(sc, car_x, len));
if ((is_global(head)) ||
((is_slot(global_slot(head))) &&
- (find_symbol(sc, head) == global_slot(head))))
+ (symbol_to_slot(sc, head) == global_slot(head))))
s_func = slot_value(global_slot(head));
else return(p_implicit(sc, car_x, len));
@@ -54891,9 +54729,10 @@ static bool cell_optimize(s7_scheme *sc, s7_pointer expr)
opt_info *opc;
s7_pointer sig;
int32_t start;
-
+ /* fprintf(stderr, "s_func: %s %d %d\n", DISPLAY(s_func), symbol_id(head) == 0, is_global(head)); */
+
start = sc->pc;
- sig = signature(sc, s_func);
+ sig = c_function_signature(s_func);
opc = alloc_opo(sc, car_x);
switch (len)
{
@@ -54931,7 +54770,7 @@ static bool cell_optimize(s7_scheme *sc, s7_pointer expr)
f = s7_d_pi_function(s_func);
if (f)
{
- sc->pc--;
+ sc->pc = pstart - 1;
if (float_optimize(sc, expr))
{
opc->v8.fd = opc->v7.fd;
@@ -54946,7 +54785,7 @@ static bool cell_optimize(s7_scheme *sc, s7_pointer expr)
}
ifunc = s7_i_ii_function(s_func);
- sc->pc--;
+ sc->pc = pstart - 1;
if ((ifunc) &&
(int_optimize(sc, expr)))
{
@@ -54989,7 +54828,7 @@ static bool cell_optimize(s7_scheme *sc, s7_pointer expr)
}
else
{
- sc->pc--;
+ sc->pc = pstart - 1;
if ((car(sig) == sc->is_integer_symbol) &&
(s7_i_pii_function(s_func)) &&
(i_pii_ok(sc, alloc_opo(sc, expr), s_func, car_x)))
@@ -55053,7 +54892,7 @@ static bool bool_optimize_nw(s7_scheme *sc, s7_pointer expr)
len = s7_list_length(sc, car_x);
if ((is_syntactic(head)) ||
- (typesflag(car_x) == SYNTACTIC_PAIR))
+ (is_syntactic_pair(car_x)))
{
if (head == sc->and_symbol)
return(opt_b_and(sc, car_x, len));
@@ -55064,12 +54903,15 @@ static bool bool_optimize_nw(s7_scheme *sc, s7_pointer expr)
if ((is_global(head)) ||
((is_slot(global_slot(head))) &&
- (find_symbol(sc, head) == global_slot(head))))
+ (symbol_to_slot(sc, head) == global_slot(head))))
s_func = slot_value(global_slot(head));
else return(return_false(sc, car_x, __func__, __LINE__));
if (is_c_function(s_func))
{
+ /* fprintf(stderr, "%s: %ld %d\n", DISPLAY(head), symbol_id(head), is_global(head)); */
+ if (symbol_id(head) != 0) /* (float-vector? (block)) -- both safe c_funcs, but this is a method invocation */
+ return(return_false(sc, car_x, __func__, __LINE__));
switch (len)
{
case 2:
@@ -55175,7 +55017,6 @@ static s7_function s7_bool_optimize(s7_scheme *sc, s7_pointer expr)
#if WITH_GMP
return(NULL);
#endif
- if (sc->safety > CLM_OPTIMIZATION_SAFETY) return(NULL);
#if OPT_PRINT
fprintf(stderr, "bool opt: %s\n", DISPLAY(expr));
#endif
@@ -55194,7 +55035,6 @@ s7_float_function s7_float_optimize(s7_scheme *sc, s7_pointer expr)
#if WITH_GMP
return(NULL);
#endif
- if (sc->safety > CLM_OPTIMIZATION_SAFETY) return(NULL);
#if OPT_PRINT
fprintf(stderr, "fl opt: %s\n", DISPLAY(expr));
#endif
@@ -55213,8 +55053,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)))
+ if ((!is_pair(expr)) || (pair_no_opt(expr)))
return(NULL);
#if OPT_PRINT
fprintf(stderr, "opt: %s\n", DISPLAY(expr));
@@ -55298,7 +55137,6 @@ static s7_function s7_cell_optimize(s7_scheme *sc, s7_pointer expr, bool nr)
#if WITH_GMP
return(NULL);
#endif
- if (sc->safety > CLM_OPTIMIZATION_SAFETY) return(NULL);
if (setjmp(sc->opt_exit) == 0)
{
start_opts(sc);
@@ -55334,7 +55172,7 @@ static void clear_optimizer_fixups(s7_scheme *sc)
static void add_optimizer_fixup(s7_scheme *sc, s7_pointer expr, uint32_t op)
{
hash_entry_t *p;
-#if DEBUGGING
+#if S7_DEBUGGING
if (((op & 1) != 0) && (!all_x_function[op])) fprintf(stderr, "no all_x fixup for %s\n", opt_names[op]);
#endif
p = make_hash_entry(expr, sc->nil, op);
@@ -55411,7 +55249,7 @@ static s7_pointer g_for_each_closure(s7_scheme *sc, s7_pointer args)
old_e = sc->envir;
pars = closure_args(f);
- sc->envir = new_frame_in_env(sc, sc->envir);
+ sc->envir = new_frame_in_env(sc, closure_let(f)); /* (for-each (let ((x 0)) (lambda ....)) ...), so closure_let(f) */
if (is_pair(seq))
slot = make_slot_1(sc, sc->envir, car(pars), sc->F);
else
@@ -55699,7 +55537,7 @@ static s7_pointer g_map_closure(s7_scheme *sc, s7_pointer args)
expr = car(body);
if (is_symbol(expr))
{
- expr = find_symbol(sc, expr);
+ expr = symbol_to_slot(sc, expr);
func = slookup;
}
else func = s7_optimize(sc, body);
@@ -55926,13 +55764,16 @@ a list of the results. Its arguments can be lists, vectors, strings, hash-table
/* -------------------------------- multiple-values -------------------------------- */
+#define SHOW_EVAL_OPS 0
+
static s7_pointer splice_in_values(s7_scheme *sc, s7_pointer args)
{
int64_t top;
s7_pointer x;
top = s7_stack_top(sc) - 1; /* stack_end - stack_start: if this is negative, we're in big trouble */
- /* fprintf(stderr, "splice %s %s\n", op_names[stack_op(sc->stack, top)], DISPLAY(sc->args)); */
-
+#if SHOW_EVAL_OPS
+ fprintf(stderr, "splice %s %s\n", op_names[stack_op(sc->stack, top)], DISPLAY(sc->args));
+#endif
switch (stack_op(sc->stack, top))
{
/* the normal case -- splice values into caller's args */
@@ -56083,6 +55924,7 @@ static s7_pointer splice_in_values(s7_scheme *sc, s7_pointer args)
case OP_CATCH:
case OP_CATCH_1:
case OP_CATCH_2:
+ case OP_CATCH_ALL:
/* (+ (catch #t (lambda () (values 3 4)) (lambda args args))) */
pop_stack(sc);
return(splice_in_values(sc, args));
@@ -56258,7 +56100,7 @@ and splices the resultant list into the outer list. `(1 ,(+ 1 1) ,@(list 3 4)) -
* we try to support dotted lists which makes the code much messier.
* if no element of the list is a list or unquote, just return the original quoted
*/
- if (((check_cycles) && (cyclic_sequences(sc, form, false) == sc->T)) ||
+ if (((check_cycles) && (tree_is_cyclic(sc, form))) ||
(is_simple_code(sc, form)))
return(list_2(sc, sc->quote_symbol, form));
@@ -56268,7 +56110,7 @@ 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 S7_DEBUGGING
if (len == 0)
fprintf(stderr, "quasiquote_1: cyclic?? %s\n", DISPLAY(form));
#endif
@@ -57031,7 +56873,8 @@ static s7_pointer unbound_variable(s7_scheme *sc, s7_pointer sym)
if (is_let(env))
{
/* for C-defined things like hooks and dilambda, let_file and let_line are 0 */
- if ((let_file(env) > 0) &&
+ if ((has_let_file(env)) &&
+ (let_file(env) > 0) &&
(let_file(env) < (s7_int)sc->file_names_top) && /* let_file(env) might be > int32_t */
(let_line(env) > 0))
return(list_3(sc, funclet_function(env), sc->file_names[let_file(env)], make_integer(sc, let_line(env))));
@@ -57187,7 +57030,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)); */
- typeflag(x) = SYNTACTIC_TYPE; /* symbol syntactic etc */
+ typeflag(x) = T_SYMBOL | T_SYNTACTIC | T_GLOBAL;
symbol_set_local(x, 0LL, sc->nil);
symbol_set_ctr(x, 0;)
return(x);
@@ -57230,7 +57073,7 @@ static s7_pointer assign_internal_syntax(s7_scheme *sc, const char *name, opcode
set_global_slot(x, permanent_slot(x, syn));
set_initial_slot(x, permanent_slot(x, syn));
set_local_slot(x, global_slot(x));
- typeflag(x) = SYNTACTIC_TYPE;
+ typeflag(x) = T_SYMBOL | T_SYNTACTIC | T_GLOBAL;
return(x);
}
@@ -57277,11 +57120,11 @@ static s7_pointer g_pair_filename(s7_scheme *sc, s7_pointer args)
}
-static s7_pointer is_pair_car_s, is_pair_cdr_s, is_pair_cadr_s;
+static s7_pointer is_pair_car_s, is_pair_cdr_s, is_pair_cddr_s, is_pair_cadr_s, is_null_cadr_s, is_null_cddr_s, is_symbol_cadr_s;
static s7_pointer g_is_pair_car_s(s7_scheme *sc, s7_pointer args)
{
s7_pointer val;
- val = find_symbol_unchecked(sc, cadar(args));
+ val = symbol_to_value_unchecked(sc, cadar(args));
if (is_pair(val)) /* (define (tst) (let ((a 123)) (pair? (car a)))) */
return(make_boolean(sc, is_pair(car(val))));
return(g_is_pair(sc, set_plist_1(sc, g_car(sc, set_plist_1(sc, val)))));
@@ -57290,22 +57133,58 @@ static s7_pointer g_is_pair_car_s(s7_scheme *sc, s7_pointer args)
static s7_pointer g_is_pair_cdr_s(s7_scheme *sc, s7_pointer args)
{
s7_pointer val;
- val = find_symbol_unchecked(sc, cadar(args));
+ val = symbol_to_value_unchecked(sc, cadar(args));
if (is_pair(val))
return(make_boolean(sc, is_pair(cdr(val))));
return(g_is_pair(sc, set_plist_1(sc, g_cdr(sc, set_plist_1(sc, val)))));
}
+static s7_pointer g_is_pair_cddr_s(s7_scheme *sc, s7_pointer args)
+{
+ s7_pointer val;
+ val = symbol_to_value_unchecked(sc, cadar(args));
+ if ((is_pair(val)) && (is_pair(cdr(val))))
+ return(make_boolean(sc, is_pair(cddr(val))));
+ return(g_is_pair(sc, set_plist_1(sc, g_cddr(sc, set_plist_1(sc, val)))));
+}
+
static s7_pointer g_is_pair_cadr_s(s7_scheme *sc, s7_pointer args)
{
s7_pointer val;
- val = find_symbol_unchecked(sc, cadar(args));
+ val = symbol_to_value_unchecked(sc, cadar(args));
if ((is_pair(val)) &&
(is_pair(cdr(val))))
return(make_boolean(sc, is_pair(cadr(val))));
return(g_is_pair(sc, set_plist_1(sc, g_cadr(sc, set_plist_1(sc, val)))));
}
+static s7_pointer g_is_null_cddr_s(s7_scheme *sc, s7_pointer args)
+{
+ s7_pointer val;
+ val = symbol_to_value_unchecked(sc, cadar(args));
+ if ((is_pair(val)) && (is_pair(cdr(val))))
+ return(make_boolean(sc, is_null(cddr(val))));
+ return(g_is_null(sc, set_plist_1(sc, g_cddr(sc, set_plist_1(sc, val)))));
+}
+
+static s7_pointer g_is_null_cadr_s(s7_scheme *sc, s7_pointer args)
+{
+ s7_pointer val;
+ val = symbol_to_value_unchecked(sc, cadar(args));
+ if ((is_pair(val)) && (is_pair(cdr(val))))
+ return(make_boolean(sc, is_null(cadr(val))));
+ return(g_is_null(sc, set_plist_1(sc, g_cadr(sc, set_plist_1(sc, val)))));
+}
+
+static s7_pointer g_is_symbol_cadr_s(s7_scheme *sc, s7_pointer args)
+{
+ s7_pointer val;
+ val = symbol_to_value_unchecked(sc, cadar(args));
+ if ((is_pair(val)) && (is_pair(cdr(val))))
+ return(make_boolean(sc, is_symbol(cadr(val))));
+ return(g_is_symbol(sc, set_plist_1(sc, g_cadr(sc, set_plist_1(sc, val)))));
+}
+
static s7_pointer is_pair_chooser(s7_scheme *sc, s7_pointer f, int32_t args, s7_pointer expr, bool ops)
{
if (!ops) return(f);
@@ -57323,6 +57202,11 @@ static s7_pointer is_pair_chooser(s7_scheme *sc, s7_pointer f, int32_t args, s7_
set_optimize_op(expr, HOP_SAFE_C_C);
return(is_pair_cdr_s);
}
+ if (g == g_cddr)
+ {
+ set_optimize_op(expr, HOP_SAFE_C_C);
+ return(is_pair_cddr_s);
+ }
if (g == g_cadr)
{
set_optimize_op(expr, HOP_SAFE_C_C);
@@ -57336,7 +57220,7 @@ static s7_pointer is_null_cdr;
static s7_pointer g_is_null_cdr(s7_scheme *sc, s7_pointer args)
{
s7_pointer val;
- val = find_symbol_unchecked(sc, cadar(args));
+ val = symbol_to_value_unchecked(sc, cadar(args));
if (!is_pair(val))
return(g_is_null(sc, set_plist_1(sc, g_cdr(sc, set_plist_1(sc, val)))));
return(make_boolean(sc, is_null(cdr(val))));
@@ -57354,6 +57238,32 @@ static s7_pointer is_null_chooser(s7_scheme *sc, s7_pointer f, int32_t args, s7_
set_optimize_op(expr, HOP_SAFE_C_C);
return(is_null_cdr);
}
+ if (g == g_cddr)
+ {
+ set_optimize_op(expr, HOP_SAFE_C_C);
+ return(is_null_cddr_s);
+ }
+ if (g == g_cadr)
+ {
+ set_optimize_op(expr, HOP_SAFE_C_C);
+ return(is_null_cadr_s);
+ }
+ }
+ return(f);
+}
+
+static s7_pointer is_symbol_chooser(s7_scheme *sc, s7_pointer f, int32_t args, s7_pointer expr, bool ops)
+{
+ if (!ops) return(f);
+ if (is_h_safe_c_s(cadr(expr)))
+ {
+ s7_function g;
+ g = c_callee(cadr(expr));
+ if (g == g_cadr)
+ {
+ set_optimize_op(expr, HOP_SAFE_C_C);
+ return(is_symbol_cadr_s);
+ }
}
return(f);
}
@@ -57371,7 +57281,12 @@ static s7_pointer g_format_just_newline(s7_scheme *sc, s7_pointer args)
pt = car(args);
str = cadr(args);
- if (is_null(pt)) pt = sc->output_port;
+ if (is_null(pt))
+ {
+ pt = sc->output_port;
+ if (pt == sc->F)
+ return(sc->F);
+ }
if (pt == sc->F)
return(s7_make_string_with_length(sc, string_value(str), string_length(str)));
@@ -57399,7 +57314,12 @@ static s7_pointer g_format_allg_no_column(s7_scheme *sc, s7_pointer args)
{
s7_pointer pt, str;
pt = car(args);
- if (is_null(pt)) pt = sc->output_port;
+ if (is_null(pt))
+ {
+ pt = sc->output_port;
+ if (pt == sc->F)
+ return(sc->F);
+ }
if (!((s7_is_boolean(pt)) ||
((is_output_port(pt)) && /* (current-output-port) or call-with-open-file arg, etc */
@@ -57481,8 +57401,8 @@ static s7_pointer is_eq_car, is_eq_car_q, is_eq_caar_q;
static s7_pointer g_is_eq_car(s7_scheme *sc, s7_pointer args)
{
s7_pointer lst, val;
- lst = find_symbol_unchecked(sc, cadar(args));
- val = find_symbol_unchecked(sc, cadr(args));
+ lst = symbol_to_value_unchecked(sc, cadar(args));
+ val = symbol_to_value_unchecked(sc, cadr(args));
if (is_pair(lst))
return(make_boolean(sc, car(lst) == val));
return(g_is_eq(sc, set_plist_2(sc, g_car(sc, set_plist_1(sc, lst)), val)));
@@ -57491,7 +57411,7 @@ static s7_pointer g_is_eq_car(s7_scheme *sc, s7_pointer args)
static s7_pointer g_is_eq_car_q(s7_scheme *sc, s7_pointer args)
{
s7_pointer lst;
- lst = find_symbol_unchecked(sc, opt_sym2(args));
+ lst = symbol_to_value_unchecked(sc, opt_sym2(args));
if (is_pair(lst))
return(make_boolean(sc, car(lst) == opt_sym3(args)));
return(g_is_eq(sc, set_plist_2(sc, g_car(sc, set_plist_1(sc, lst)), opt_sym3(args))));
@@ -57501,7 +57421,7 @@ static s7_pointer g_is_eq_caar_q(s7_scheme *sc, s7_pointer args)
{
/* (eq? (caar x) 'y), but x is not guaranteed to be list(list) */
s7_pointer lst;
- lst = find_symbol_unchecked(sc, opt_sym2(args));
+ lst = symbol_to_value_unchecked(sc, opt_sym2(args));
if ((!is_pair(lst)) || (!is_pair(car(lst))))
return(g_is_eq(sc, set_plist_2(sc, g_caar(sc, set_plist_1(sc, lst)), opt_sym3(args))));
return(make_boolean(sc, caar(lst) == opt_sym3(args)));
@@ -57552,12 +57472,12 @@ static s7_pointer g_not_is_number_s(s7_scheme *sc, s7_pointer args) {check_boole
/* eq? does not check for methods */
static s7_pointer g_not_is_eq_sq(s7_scheme *sc, s7_pointer args)
{
- return(make_boolean(sc, find_symbol_unchecked(sc, cadar(args)) != opt_con2(args))); /* cadr(caddr(car(args))) */
+ return(make_boolean(sc, symbol_to_value_unchecked(sc, cadar(args)) != opt_con2(args))); /* cadr(caddr(car(args))) */
}
static s7_pointer g_not_is_eq_ss(s7_scheme *sc, s7_pointer args)
{
- return(make_boolean(sc, find_symbol_unchecked(sc, cadar(args)) != find_symbol_unchecked(sc, opt_sym3(args)))); /* caddr(car(args)) */
+ return(make_boolean(sc, symbol_to_value_unchecked(sc, cadar(args)) != symbol_to_value_unchecked(sc, opt_sym3(args)))); /* caddr(car(args)) */
}
/* here the method finder is in either car or cdr */
@@ -57565,7 +57485,7 @@ static s7_pointer not_is_pair_car_s;
static s7_pointer g_not_is_pair_car_s(s7_scheme *sc, s7_pointer args)
{
s7_pointer val;
- val = find_symbol_unchecked(sc, cadr(cadar(args)));
+ val = symbol_to_value_unchecked(sc, cadr(cadar(args)));
if (!is_pair(val))
return(g_not(sc, set_plist_1(sc, g_is_pair(sc, set_plist_1(sc, g_car(sc, set_plist_1(sc, val)))))));
return(make_boolean(sc, !is_pair(car(val))));
@@ -57621,7 +57541,7 @@ static s7_pointer not_chooser(s7_scheme *sc, s7_pointer g, int32_t args, s7_poin
set_opt_con2(cdr(expr), cadr(caddr(cadr(expr))));
return(not_is_eq_sq);
}
- if ((optimize_op(cadr(expr)) == HOP_SAFE_C_SS) || (optimize_op(cadr(expr)) == HOP_SAFE_C_LL))
+ if (optimize_op(cadr(expr)) == HOP_SAFE_C_SS)
{
if (c_callee(cadr(expr)) == g_is_eq)
{
@@ -57733,13 +57653,13 @@ static s7_pointer hash_table_ref_chooser(s7_scheme *sc, s7_pointer f, int32_t ar
* need some way to ensure it is safe before changing to (say) hash_table_ref_ss which
* assumes that (coming from op_safe_c_ss normally). But we get here more than once on
* the same expression somehow, so we have to recognize the initial case (h_safe_c_ss),
- * then kludge up the returning case (h_safe_c_c). Using is_slot(find_symbol()) is
+ * then kludge up the returning case (h_safe_c_c). Using is_slot(symbol_to_slot()) is
* no good because in context we use the current walker's "e" env to see the symbol,
* not the running environment.
*/
if (ops)
{
- if ((optimize_op(expr) == HOP_SAFE_C_SS) || (optimize_op(expr) == HOP_SAFE_C_LL) ||
+ if ((optimize_op(expr) == HOP_SAFE_C_SS) ||
((is_h_safe_c_c(expr)) &&
(is_symbol(cadr(expr))) &&
(is_symbol(caddr(expr)))))
@@ -57802,8 +57722,6 @@ static s7_pointer add_chooser(s7_scheme *sc, s7_pointer f, int32_t args, s7_poin
((is_h_safe_c_c(expr)) && (is_symbol(arg1))))
{
set_optimize_op(expr, HOP_SAFE_C_C);
- if (is_local_symbol(cdr(expr)))
- return(add_cl1);
return(add_cs1);
}
return(add_s1);
@@ -57877,8 +57795,7 @@ static s7_pointer multiply_chooser(s7_scheme *sc, s7_pointer f, int32_t args, s7
}
}
if ((arg1 == arg2) &&
- ((optimize_op(expr) == HOP_SAFE_C_SS) || (optimize_op(expr) == HOP_SAFE_C_LL) || /* (* x c) */
- (is_h_safe_c_c(expr))))
+ ((optimize_op(expr) == HOP_SAFE_C_SS) || (is_h_safe_c_c(expr))))
{
set_optimize_op(expr, HOP_SAFE_C_C);
return(sqr_ss);
@@ -57930,8 +57847,6 @@ static s7_pointer subtract_chooser(s7_scheme *sc, s7_pointer f, int32_t args, s7
((is_h_safe_c_c(expr)) && (is_symbol(arg1))))
{
set_optimize_op(expr, HOP_SAFE_C_C);
- if (is_local_symbol(cdr(expr)))
- return(subtract_cl1);
return(subtract_cs1);
}
return(subtract_s1);
@@ -58048,9 +57963,9 @@ static s7_pointer less_chooser(s7_scheme *sc, s7_pointer f, int32_t args, s7_poi
{
if (is_h_safe_c_s(cadr(expr)))
{
- s7_function f;
- f = c_callee(cadr(expr));
- if (f == g_length)
+ s7_function fc;
+ fc = c_callee(cadr(expr));
+ if (fc == g_length)
{
set_optimize_op(expr, HOP_SAFE_C_C);
return(less_length_ic);
@@ -58395,7 +58310,7 @@ static s7_pointer g_and_sc(s7_scheme *sc, s7_pointer args)
{
s7_pointer p;
p = car(args);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(p)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(p)));
p = c_call(p)(sc, sc->t1_1);
if (p == sc->F) return(p);
p = cadr(args);
@@ -58462,7 +58377,7 @@ static s7_pointer or_s_direct;
static s7_pointer g_or_s_direct(s7_scheme *sc, s7_pointer args)
{
s7_pointer p;
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadar(args)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadar(args)));
for (p = args; is_pair(p); p = cdr(p))
{
s7_pointer x;
@@ -58478,7 +58393,7 @@ static s7_pointer and_s_direct;
static s7_pointer g_and_s_direct(s7_scheme *sc, s7_pointer args)
{
s7_pointer p, x = sc->T;
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadar(args)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadar(args)));
for (p = args; is_pair(p); p = cdr(p))
{
x = c_call(car(p))(sc, sc->t1_1);
@@ -58523,7 +58438,6 @@ static void init_choosers(s7_scheme *sc)
add_1s = make_function_with_class(sc, f, "+", g_add_1s, 2, 0, false, "+ opt");
add_s1 = make_function_with_class(sc, f, "+", g_add_s1, 2, 0, false, "+ opt");
add_cs1 = make_function_with_class(sc, f, "+", g_add_cs1, 2, 0, false, "+ opt");
- add_cl1 = make_function_with_class(sc, f, "+", g_add_cl1, 2, 0, false, "+ opt");
add_si = make_function_with_class(sc, f, "+", g_add_si, 2, 0, false, "+ opt");
add_sf = make_function_with_class(sc, f, "+", g_add_sf, 2, 0, false, "+ opt");
add_fs = make_function_with_class(sc, f, "+", g_add_fs, 2, 0, false, "+ opt");
@@ -58536,7 +58450,6 @@ static void init_choosers(s7_scheme *sc)
subtract_2 = make_function_with_class(sc, f, "-", g_subtract_2, 2, 0, false, "- opt");
subtract_s1 = make_function_with_class(sc, f, "-", g_subtract_s1, 2, 0, false, "- opt");
subtract_cs1 = make_function_with_class(sc, f, "-", g_subtract_cs1, 2, 0, false, "- opt");
- subtract_cl1 = make_function_with_class(sc, f, "-", g_subtract_cl1, 2, 0, false, "- opt");
subtract_csn = make_function_with_class(sc, f, "-", g_subtract_csn, 2, 0, false, "- opt");
subtract_sf = make_function_with_class(sc, f, "-", g_subtract_sf, 2, 0, false, "- opt");
subtract_2f = make_function_with_class(sc, f, "-", g_subtract_2f, 2, 0, false, "- opt");
@@ -58705,11 +58618,18 @@ static void init_choosers(s7_scheme *sc)
f = set_function_chooser(sc, sc->is_pair_symbol, is_pair_chooser);
is_pair_car_s = make_function_with_class(sc, f, "pair?", g_is_pair_car_s, 1, 0, false, "pair? opt");
is_pair_cdr_s = make_function_with_class(sc, f, "pair?", g_is_pair_cdr_s, 1, 0, false, "pair? opt");
+ is_pair_cddr_s = make_function_with_class(sc, f, "pair?", g_is_pair_cddr_s, 1, 0, false, "pair? opt");
is_pair_cadr_s = make_function_with_class(sc, f, "pair?", g_is_pair_cadr_s, 1, 0, false, "pair? opt");
/* null? */
f = set_function_chooser(sc, sc->is_null_symbol, is_null_chooser);
is_null_cdr = make_function_with_class(sc, f, "null?", g_is_null_cdr, 1, 0, false, "null? opt");
+ is_null_cddr_s = make_function_with_class(sc, f, "null?", g_is_null_cddr_s, 1, 0, false, "null? opt");
+ is_null_cadr_s = make_function_with_class(sc, f, "null?", g_is_null_cadr_s, 1, 0, false, "null? opt");
+
+ /* symbol? */
+ f = set_function_chooser(sc, sc->is_symbol_symbol, is_symbol_chooser);
+ is_symbol_cadr_s = make_function_with_class(sc, f, "symbol?", g_is_symbol_cadr_s, 1, 0, false, "symbol? opt");
/* eq? */
f = set_function_chooser(sc, sc->is_eq_symbol, is_eq_chooser);
@@ -58749,12 +58669,10 @@ static void init_choosers(s7_scheme *sc)
/* let-ref */
f = set_function_chooser(sc, sc->let_ref_symbol, let_ref_chooser);
lint_let_ref = make_function_with_class(sc, f, "let-ref", g_lint_let_ref, 2, 0, false, "let-ref opt");
- local_lint_let_ref = make_function_with_class(sc, f, "let-ref", g_local_lint_let_ref, 2, 0, false, "let-ref opt");
/* let-set */
f = set_function_chooser(sc, sc->let_set_symbol, let_set_chooser);
lint_let_set = make_function_with_class(sc, f, "let-set!", g_lint_let_set, 3, 0, false, "let-set! opt");
- local_lint_let_set = make_function_with_class(sc, f, "let-set!", g_local_lint_let_set, 3, 0, false, "let-set! opt");
or_n = s7_make_function(sc, "or", g_or_n, 0, 0, true, "or opt");
or_2 = s7_make_function(sc, "or", g_or_2, 2, 0, false, "or opt");
@@ -58802,7 +58720,7 @@ static opt_t optimize_thunk(s7_scheme *sc, s7_pointer expr, s7_pointer func, int
(is_syntactic(caar(body))))
{
set_optimize_op(expr, hop + OP_SAFE_THUNK_P);
- if (typesflag(car(body)) != SYNTACTIC_PAIR)
+ if (!is_syntactic_pair(car(body)))
{
pair_set_syntax_op(car(body), symbol_syntax_op(caar(body)));
set_syntactic_pair(car(body));
@@ -58861,11 +58779,10 @@ static int32_t combine_ops(s7_scheme *sc, s7_pointer func, s7_pointer expr, comb
arg_op = op_no_hop(e1);
switch (arg_op)
{
- case OP_SAFE_C_S: case OP_SAFE_C_L: case OP_SAFE_CAR_S: case OP_SAFE_CDR_S: case OP_SAFE_CADR_S:
+ case OP_SAFE_C_S: case OP_SAFE_CAR_S: case OP_SAFE_CDR_S: case OP_SAFE_CADR_S:
case OP_SAFE_IS_PAIR_S: case OP_SAFE_IS_NULL_S: case OP_SAFE_IS_SYMBOL_S:
return(OP_SAFE_C_opSq);
case OP_SAFE_C_C: return(OP_SAFE_C_opCq); /* this includes the multi-arg C_C cases */
- case OP_SAFE_C_LL:
case OP_SAFE_C_SS: return(OP_SAFE_C_opSSq);
case OP_SAFE_C_SQ: return(OP_SAFE_C_opSQq);
case OP_SAFE_C_QS: return(OP_SAFE_C_opQSq);
@@ -58885,7 +58802,7 @@ static int32_t combine_ops(s7_scheme *sc, s7_pointer func, s7_pointer expr, comb
arg_op = op_no_hop(arg);
switch (arg_op)
{
- case OP_SAFE_C_S: case OP_SAFE_C_L: case OP_SAFE_CAR_S: case OP_SAFE_CDR_S: case OP_SAFE_CADR_S:
+ case OP_SAFE_C_S: case OP_SAFE_CAR_S: case OP_SAFE_CDR_S: case OP_SAFE_CADR_S:
case OP_SAFE_IS_PAIR_S: case OP_SAFE_IS_NULL_S: case OP_SAFE_IS_SYMBOL_S:
set_opt_sym1(cdr(expr), cadr(arg));
return(OP_SAFE_C_S_opSq);
@@ -58904,7 +58821,6 @@ static int32_t combine_ops(s7_scheme *sc, s7_pointer func, s7_pointer expr, comb
set_opt_sym2(cdr(expr), caddr(arg));
return(OP_SAFE_C_S_opCSq);
- case OP_SAFE_C_LL:
case OP_SAFE_C_SS: /* (* a (- b c)) */
set_opt_sym1(cdr(expr), cadr(arg));
set_opt_sym2(cdr(expr), caddr(arg));
@@ -58931,10 +58847,9 @@ static int32_t combine_ops(s7_scheme *sc, s7_pointer func, s7_pointer expr, comb
arg_op = op_no_hop(arg);
switch (arg_op)
{
- case OP_SAFE_C_S: case OP_SAFE_C_L: case OP_SAFE_CAR_S: case OP_SAFE_CDR_S: case OP_SAFE_CADR_S:
+ case OP_SAFE_C_S: case OP_SAFE_CAR_S: case OP_SAFE_CDR_S: case OP_SAFE_CADR_S:
case OP_SAFE_IS_PAIR_S: case OP_SAFE_IS_NULL_S: case OP_SAFE_IS_SYMBOL_S:
return(OP_SAFE_C_opSq_S);
- case OP_SAFE_C_LL:
case OP_SAFE_C_SS: return(OP_SAFE_C_opSSq_S);
case OP_SAFE_C_C: return(OP_SAFE_C_opCq_S);
case OP_SAFE_C_CS: return(OP_SAFE_C_opCSq_S);
@@ -58950,7 +58865,7 @@ static int32_t combine_ops(s7_scheme *sc, s7_pointer func, s7_pointer expr, comb
arg_op = op_no_hop(arg);
switch (arg_op)
{
- case OP_SAFE_C_S: case OP_SAFE_C_L: case OP_SAFE_CAR_S: case OP_SAFE_CDR_S: case OP_SAFE_CADR_S:
+ case OP_SAFE_C_S: case OP_SAFE_CAR_S: case OP_SAFE_CDR_S: case OP_SAFE_CADR_S:
case OP_SAFE_IS_PAIR_S: case OP_SAFE_IS_NULL_S: case OP_SAFE_IS_SYMBOL_S:
return(OP_SAFE_C_opSq_C);
case OP_SAFE_C_C: return(OP_SAFE_C_opCq_C);
@@ -58958,7 +58873,6 @@ 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_C);
case OP_SAFE_C_opSq: return(OP_SAFE_C_op_opSq_q_C);
case OP_SAFE_C_opSSq: return(OP_SAFE_C_op_opSSq_q_C);
- case OP_SAFE_C_LL:
case OP_SAFE_C_SS: return(OP_SAFE_C_opSSq_C);
}
return(OP_SAFE_C_ZC);
@@ -58972,7 +58886,7 @@ static int32_t combine_ops(s7_scheme *sc, s7_pointer func, s7_pointer expr, comb
set_opt_pair1(cdr(expr), cdr(arg));
return(OP_SAFE_C_C_opCq);
- case OP_SAFE_C_S: case OP_SAFE_C_L: case OP_SAFE_CAR_S: case OP_SAFE_CDR_S: case OP_SAFE_CADR_S:
+ case OP_SAFE_C_S: case OP_SAFE_CAR_S: case OP_SAFE_CDR_S: case OP_SAFE_CADR_S:
case OP_SAFE_IS_PAIR_S: case OP_SAFE_IS_NULL_S: case OP_SAFE_IS_SYMBOL_S:
set_opt_sym1(cdr(expr), cadr(arg));
return(OP_SAFE_C_C_opSq);
@@ -58987,7 +58901,6 @@ static int32_t combine_ops(s7_scheme *sc, s7_pointer func, s7_pointer expr, comb
set_opt_con2(cdr(expr), caddr(arg));
return(OP_SAFE_C_C_opSCq);
- case OP_SAFE_C_LL:
case OP_SAFE_C_SS:
set_opt_sym1(cdr(expr), cadr(arg));
/* set_opt_sym2(cdr(expr), caddr(arg)); -- we're clobbering the old C_SS -> C_C_opSSq opt_sym2 setting */
@@ -59017,7 +58930,7 @@ static int32_t combine_ops(s7_scheme *sc, s7_pointer func, s7_pointer expr, comb
arg_op = op_no_hop(arg);
switch (arg_op)
{
- case OP_SAFE_C_S: case OP_SAFE_C_L: case OP_SAFE_CAR_S: case OP_SAFE_CDR_S: case OP_SAFE_CADR_S:
+ case OP_SAFE_C_S: case OP_SAFE_CAR_S: case OP_SAFE_CDR_S: case OP_SAFE_CADR_S:
case OP_SAFE_IS_PAIR_S: case OP_SAFE_IS_NULL_S: case OP_SAFE_IS_SYMBOL_S:
if (is_safe_c_s(e1))
{
@@ -59036,7 +58949,7 @@ static int32_t combine_ops(s7_scheme *sc, s7_pointer func, s7_pointer expr, comb
}
return(OP_SAFE_C_opSq_opSq);
}
- if ((optimize_op_match(e1, OP_SAFE_C_SS)) || (optimize_op_match(e1, OP_SAFE_C_LL)))
+ if (optimize_op_match(e1, OP_SAFE_C_SS))
return(OP_SAFE_C_opSSq_opSq);
if (optimize_op_match(e1, OP_SAFE_C_C))
return(OP_SAFE_C_opCq_opSq);
@@ -59045,7 +58958,7 @@ static int32_t combine_ops(s7_scheme *sc, s7_pointer func, s7_pointer expr, comb
case OP_SAFE_C_C:
if (optimize_op_match(e1, OP_SAFE_C_C))
return(OP_SAFE_C_opCq_opCq);
- if ((optimize_op_match(e1, OP_SAFE_C_SS)) || (optimize_op_match(e1, OP_SAFE_C_LL)))
+ if (optimize_op_match(e1, OP_SAFE_C_SS))
return(OP_SAFE_C_opSSq_opCq);
if (optimize_op_match(e1, OP_SAFE_C_S))
return(OP_SAFE_C_opSq_opCq);
@@ -59056,11 +58969,10 @@ static int32_t combine_ops(s7_scheme *sc, s7_pointer func, s7_pointer expr, comb
return(OP_SAFE_C_opSCq_opSCq);
break;
- case OP_SAFE_C_LL:
case OP_SAFE_C_SS:
if (optimize_op_match(e1, OP_SAFE_C_C))
return(OP_SAFE_C_opCq_opSSq);
- if ((optimize_op_match(e1, OP_SAFE_C_SS)) || (optimize_op_match(e1, OP_SAFE_C_LL)))
+ if (optimize_op_match(e1, OP_SAFE_C_SS))
return(OP_SAFE_C_opSSq_opSSq);
if (is_safe_c_s(e1))
return(OP_SAFE_C_opSq_opSSq);
@@ -59079,7 +58991,7 @@ static void annotate_args(s7_scheme *sc, s7_pointer args, s7_pointer e)
s7_pointer p;
for (p = args; is_pair(p); p = cdr(p))
{
-#if DEBUGGING
+#if S7_DEBUGGING
s7_function allx;
allx = all_x_eval(sc, p, e, (is_list(e)) ? pair_symbol_is_safe : let_symbol_is_safe);
if (!allx)
@@ -59098,7 +59010,7 @@ static void annotate_arg(s7_scheme *sc, s7_pointer arg, s7_pointer e)
{
/* if sc->envir is sc->nil, we're at the top-level, but the global_slot check should suffice for that */
set_x_call(arg, all_x_eval(sc, arg, e, (is_list(e)) ? pair_symbol_is_safe : let_symbol_is_safe));
-#if DEBUGGING
+#if S7_DEBUGGING
if (!c_call(arg))
abort();
#endif
@@ -59145,7 +59057,7 @@ static bool arg_findable(s7_scheme *sc, s7_pointer arg1, s7_pointer e)
{
if (pair_symbol_is_safe(sc, arg1, e)) return(true); /* includes global_slot check */
return((!sc->in_with_let) &&
- (is_slot(find_symbol(sc, arg1))));
+ (is_slot(symbol_to_slot(sc, arg1))));
}
static opt_t optimize_func_one_arg(s7_scheme *sc, s7_pointer expr, s7_pointer func,
@@ -59216,7 +59128,7 @@ static opt_t optimize_func_one_arg(s7_scheme *sc, s7_pointer expr, s7_pointer fu
{
if (func_is_safe) /* safe c function */
{
- set_safe_optimize_op(expr, hop + ((symbols == 0) ? OP_SAFE_C_C : ((is_local_symbol(cdr(expr))) ? OP_SAFE_C_L : OP_SAFE_C_S)));
+ set_safe_optimize_op(expr, hop + ((symbols == 0) ? OP_SAFE_C_C : (OP_SAFE_C_S)));
choose_c_function(sc, expr, func, 1);
/* these are border-line useless -- lint uses cxr_s */
@@ -59398,7 +59310,7 @@ static opt_t optimize_func_one_arg(s7_scheme *sc, s7_pointer expr, s7_pointer fu
(is_syntactic(car(bexpr))))
{
set_optimize_op(expr, hop + OP_SAFE_CLOSURE_S_P);
- if (typesflag(bexpr) != SYNTACTIC_PAIR)
+ if (!is_syntactic_pair(bexpr))
{
pair_set_syntax_op(bexpr, symbol_syntax_op(car(bexpr)));
set_syntactic_pair(bexpr);
@@ -59445,7 +59357,7 @@ static opt_t optimize_func_one_arg(s7_scheme *sc, s7_pointer expr, s7_pointer fu
(is_syntactic(caar(body))))
{
set_optimize_op(expr, hop + OP_CLOSURE_A_P);
- if (typesflag(car(body)) != SYNTACTIC_PAIR)
+ if (!is_syntactic_pair(car(body)))
{
pair_set_syntax_op(car(body), symbol_syntax_op(caar(body)));
set_syntactic_pair(car(body));
@@ -59536,11 +59448,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_possibly_constant(car(expr))) &&
- (vector_rank(func) == 1) &&
- (is_normal_vector(func)))
- set_unsafe_optimize_op(expr, hop + OP_CVECTOR_A);
- else set_unsafe_optimize_op(expr, hop + OP_VECTOR_A);
+ set_unsafe_optimize_op(expr, hop + OP_VECTOR_A);
annotate_arg(sc, cdr(expr), e);
set_arglist_length(expr, small_int(1));
return(OPT_T);
@@ -59657,7 +59565,9 @@ static opt_t optimize_func_two_args(s7_scheme *sc, s7_pointer expr, s7_pointer f
(!arglist_has_rest(sc, closure_args(func))))
{
set_unsafely_optimized(expr);
- set_optimize_op(expr, hop + ((is_safe_closure(func)) ? OP_SAFE_CLOSURE_AA : OP_CLOSURE_AA));
+ if (is_pair(cdr(closure_body(func))))
+ set_optimize_op(expr, hop + ((is_safe_closure(func)) ? OP_SAFE_CLOSURE_AA : OP_CLOSURE_AA));
+ else set_optimize_op(expr, hop + ((is_safe_closure(func)) ? OP_SAFE_CLOSURE_AA_P : OP_CLOSURE_AA_P));
set_opt_lambda(expr, func);
return(OPT_F);
}
@@ -59696,12 +59606,7 @@ static opt_t optimize_func_two_args(s7_scheme *sc, s7_pointer expr, s7_pointer f
else
{
if (symbols == 2) /* these two symbols are almost never the same, (sqrt (+ (* x x) (* y y))) */
- {
- if ((is_local_symbol(cdr(expr))) &&
- (is_local_symbol(cddr(expr))))
- set_optimize_op(expr, hop + OP_SAFE_C_LL);
- else set_optimize_op(expr, hop + OP_SAFE_C_SS);
- }
+ set_optimize_op(expr, hop + OP_SAFE_C_SS);
else set_optimize_op(expr, hop + ((is_symbol(arg1)) ? OP_SAFE_C_SC : OP_SAFE_C_CS));
}
set_optimized(expr);
@@ -59743,12 +59648,7 @@ static opt_t optimize_func_two_args(s7_scheme *sc, s7_pointer expr, s7_pointer f
else
{
if (symbols == 2)
- {
- if ((is_local_symbol(cdr(expr))) &&
- (is_local_symbol(cddr(expr))))
- set_optimize_op(expr, hop + OP_SAFE_C_LL);
- else set_optimize_op(expr, hop + OP_SAFE_C_SS);
- }
+ set_optimize_op(expr, hop + OP_SAFE_C_SS);
else set_optimize_op(expr, hop + OP_SAFE_C_C);
}
return(OPT_T);
@@ -60166,7 +60066,7 @@ static opt_t optimize_func_two_args(s7_scheme *sc, s7_pointer expr, s7_pointer f
(is_syntactic(caar(body))))
{
set_optimize_op(expr, hop + OP_CLOSURE_SS_P);
- if (typesflag(car(body)) != SYNTACTIC_PAIR)
+ if (!is_syntactic_pair(car(body)))
{
pair_set_syntax_op(car(body), symbol_syntax_op(caar(body)));
set_syntactic_pair(car(body));
@@ -60201,9 +60101,9 @@ static opt_t optimize_func_two_args(s7_scheme *sc, s7_pointer expr, s7_pointer f
{
if (is_symbol(arg1))
set_optimize_op(expr, hop + OP_SAFE_CLOSURE_SA);
- else set_optimize_op(expr, hop + OP_SAFE_CLOSURE_AA);
+ else set_optimize_op(expr, hop + ((is_pair(cdr(closure_body(func)))) ? OP_SAFE_CLOSURE_AA : OP_SAFE_CLOSURE_AA_P));
}
- else set_optimize_op(expr, hop + OP_CLOSURE_AA);
+ else set_optimize_op(expr, hop + ((is_pair(cdr(closure_body(func)))) ? OP_CLOSURE_AA : OP_CLOSURE_AA_P));
annotate_args(sc, cdr(expr), e);
set_opt_lambda(expr, func);
set_arglist_length(expr, small_int(2));
@@ -61389,7 +61289,7 @@ static opt_t optimize_syntax(s7_scheme *sc, s7_pointer expr, s7_pointer func, in
static opt_t optimize_expression(s7_scheme *sc, s7_pointer expr, int32_t hop, s7_pointer e, bool export_ok)
{
s7_pointer car_expr;
-#if DEBUGGING
+#if S7_DEBUGGING
if (is_checked(expr)) {fprintf(stderr, "%s is checked\n", DISPLAY(expr)); abort();}
#endif
/* fprintf(stderr, "optimize_expression %s %d %s\n", DISPLAY(expr), hop, DISPLAY(e)); */
@@ -61620,6 +61520,8 @@ static opt_t optimize_expression(s7_scheme *sc, s7_pointer expr, int32_t hop, s7
{
if (car(expr) == sc->quote_symbol)
{
+ if (direct_memq(sc->quote_symbol, e))
+ return(OPT_OOPS);
set_unsafe_optimize_op(expr, HOP_SAFE_QUOTE); /* see also below */
set_c_function(expr, slot_value(global_slot(sc->cadr_symbol)));
return(OPT_F);
@@ -61663,6 +61565,8 @@ static opt_t optimize_expression(s7_scheme *sc, s7_pointer expr, int32_t hop, s7
if ((len == 1) &&
(car(expr) == sc->quote_symbol))
{
+ if (direct_memq(sc->quote_symbol, e))
+ return(OPT_OOPS);
set_safe_optimize_op(expr, HOP_SAFE_QUOTE);
set_c_function(expr, slot_value(global_slot(sc->cadr_symbol)));
return(OPT_T);
@@ -61740,7 +61644,6 @@ static opt_t optimize(s7_scheme *sc, s7_pointer code, int32_t hop, s7_pointer e)
{
s7_pointer x;
/* fprintf(stderr, "optimize: %s %s\n", DISPLAY_80(code), DISPLAY(e)); */
- if (sc->safety > ALL_OPTIMIZATION_SAFETY) return(OPT_F);
for (x = code; (is_pair(x)) && (!is_checked(x)); x = cdr(x))
{
set_checked(x);
@@ -61925,126 +61828,21 @@ static s7_pointer check_lambda_star_args(s7_scheme *sc, s7_pointer args, int32_t
}
/* sort(etc) lambda form is ok -- maybe unsafe? there are about a dozen of these
- * in tsort does do init (vc i) cause trouble (vc is arg) -- not localizable?
+ * in tsort does do init (vc i) cause trouble (vc is arg)?
*/
typedef enum {UNSAFE_BODY=0, SAFE_BODY=1, VERY_SAFE_BODY=2} body_t;
static body_t min_body(body_t b1, body_t b2) {return((b1 < b2) ? b1 : b2);}
-typedef struct slist {s7_pointer sym; struct slist *next;} slist;
-static slist *syms_free_list = NULL;
-
-static inline slist *add_sym(s7_scheme *sc, s7_pointer symbol, slist *lst)
-{
- slist *top;
- if (syms_free_list)
- {
- top = syms_free_list;
- syms_free_list = syms_free_list->next;
- }
- else top = (slist *)malloc(sizeof(slist));
- top->sym = add_symbol_to_list(sc, symbol);
- top->next = lst;
- return(top);
-}
-
-static bool memq_sym(s7_scheme *sc, s7_pointer symbol, slist *top)
-{
- slist *p;
- if (symbol_is_in_list(sc, symbol))
- {
- for (p = top; p; p = p->next)
- if (p->sym == symbol)
- return(true);
- }
- return(false);
-}
-
-/* #define cancel_sym(Sc, Symbol, Top) cancel_sym_1(Sc, Symbol, Top, x, __LINE__) */
-/* static void cancel_sym_1(s7_scheme *sc, s7_pointer symbol, slist *top, s7_pointer x, int32_t line) */
-static void cancel_sym(s7_scheme *sc, s7_pointer symbol, slist *top)
-{
- slist *p;
- if (symbol_is_in_list(sc, symbol))
- {
- for (p = top; p; p = p->next)
- if (p->sym == symbol)
- p->sym = sc->gc_nil;
- }
-}
-
-static void free_syms(slist *top)
-{
- if (top)
- {
- slist *p;
- for (p = top; p->next; p = p->next);
- p->next = syms_free_list;
- syms_free_list = top;
- }
-}
-
-#define WITH_SYMS_PRINT 0
-#if WITH_SYMS_PRINT
-static void display_syms(s7_scheme *sc, slist *top)
-{
- if (top)
- {
- slist *p;
- fprintf(stderr, "<slist:");
- for (p = top; p; p = p->next)
- fprintf(stderr, " %s", DISPLAY(p->sym));
- fprintf(stderr, ">");
- }
- else fprintf(stderr, "<slist>");
-}
-#endif
-
-static slist *split_slist(slist *top, slist *main_args)
-{
- slist *p;
- if (top == main_args)
- return(NULL);
- for (p = top; p->next != main_args; p = p->next);
- p->next = NULL;
- return(top);
-}
-
-
-static inline void set_all_locals(s7_scheme *sc, s7_pointer tree, slist *args)
-{
- s7_pointer p;
-#if WITH_SYMS_PRINT
- fprintf(stderr, "set_all_locals: %s: ", DISPLAY_80(tree));
- display_syms(sc, args);
- fprintf(stderr, "\n");
-#endif
- for (p = tree; is_pair(p); p = cdr(p))
- {
- s7_pointer cp;
- cp = car(p);
- if (is_symbol(cp)) /* local_slot even if a slot at this point can't be depended on -- it may be freed at any time even for immutable symbols */
- {
- if (memq_sym(sc, cp, args))
- set_local_symbol(p);
- }
- else
- {
- if (is_pair(cp))
- set_all_locals(sc, cp, args);
- }
- }
-}
-
-static body_t body_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer body, slist *main_args, bool at_end);
+static body_t body_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer body, 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)
+static body_t form_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer x, bool at_end)
{
s7_pointer expr;
body_t result = VERY_SAFE_BODY;
-#if DEBUGGING
+#if S7_DEBUGGING
if (!is_pair(x)) {fprintf(stderr, "form_is_safe x is not a pair! %s\n", DISPLAY(x)); abort();}
#endif
expr = car(x);
@@ -62057,7 +61855,7 @@ static body_t form_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer x, slist *
case OP_AND:
case OP_BEGIN:
case OP_WITH_BAFFLE:
- return(body_is_safe(sc, func, cdr(x), main_args, at_end));
+ return(body_is_safe(sc, func, cdr(x), at_end));
case OP_MACROEXPAND:
return(UNSAFE_BODY);
@@ -62071,19 +61869,19 @@ static body_t form_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer x, slist *
if (!is_pair(cddr(x))) return(UNSAFE_BODY);
if (is_pair(cadr(x)))
{
- result = form_is_safe(sc, func, cadr(x), main_args, false);
+ result = form_is_safe(sc, func, cadr(x), false);
if (result == UNSAFE_BODY)
return(UNSAFE_BODY);
}
if (is_pair(caddr(x)))
{
- result = min_body(result, form_is_safe(sc, func, caddr(x), main_args, at_end));
+ result = min_body(result, form_is_safe(sc, func, caddr(x), at_end));
if (result == UNSAFE_BODY)
return(UNSAFE_BODY);
}
if ((is_pair(cdddr(x))) &&
(is_pair(cadddr(x))))
- return(min_body(result, form_is_safe(sc, func, cadddr(x), main_args, at_end)));
+ return(min_body(result, form_is_safe(sc, func, cadddr(x), at_end)));
return(result);
break;
@@ -62092,11 +61890,11 @@ static body_t form_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer x, slist *
if (!is_pair(cddr(x))) return(UNSAFE_BODY);
if (is_pair(cadr(x)))
{
- result = form_is_safe(sc, func, cadr(x), main_args, false);
+ result = form_is_safe(sc, func, cadr(x), false);
if (result == UNSAFE_BODY)
return(UNSAFE_BODY);
}
- return(min_body(result, body_is_safe(sc, func, cddr(x), main_args, at_end)));
+ return(min_body(result, body_is_safe(sc, func, cddr(x), at_end)));
break;
case OP_COND:
@@ -62111,13 +61909,13 @@ static body_t form_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer x, slist *
return(UNSAFE_BODY);
if (is_pair(car(ex)))
{
- result = min_body(result, form_is_safe(sc, func, car(ex), main_args, false));
+ result = min_body(result, form_is_safe(sc, func, car(ex), false));
if (result == UNSAFE_BODY)
return(UNSAFE_BODY);
}
if (is_pair(cdr(ex)))
{
- result = min_body(result, body_is_safe(sc, func, cdr(ex), main_args, at_end));
+ result = min_body(result, body_is_safe(sc, func, cdr(ex), at_end));
if (result == UNSAFE_BODY)
return(UNSAFE_BODY);
}
@@ -62137,7 +61935,7 @@ static body_t form_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer x, slist *
if (!is_pair(cddr(x))) return(UNSAFE_BODY);
if (is_pair(cadr(x)))
{
- result = form_is_safe(sc, func, cadr(x), main_args, false);
+ result = form_is_safe(sc, func, cadr(x), false);
if (result == UNSAFE_BODY)
return(UNSAFE_BODY);
}
@@ -62148,7 +61946,7 @@ static body_t form_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer x, slist *
if (!is_pair(car(p))) return(UNSAFE_BODY);
if (is_pair(cdar(p)))
{
- result = min_body(result, body_is_safe(sc, func, cdar(p), main_args, at_end)); /* null cdar(p) ok here */
+ result = min_body(result, body_is_safe(sc, func, cdar(p), at_end)); /* null cdar(p) ok here */
if (result == UNSAFE_BODY)
return(UNSAFE_BODY);
}
@@ -62170,12 +61968,12 @@ static body_t form_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer x, slist *
/* car(x) is set!, cadr(x) is settee or obj, caddr(x) is val */
if (is_pair(caddr(x)))
{
- result = form_is_safe(sc, func, caddr(x), main_args, false);
+ result = form_is_safe(sc, func, caddr(x), false);
if (result == UNSAFE_BODY)
return(UNSAFE_BODY);
}
if (is_pair(cadr(x)))
- return(min_body(result, form_is_safe(sc, func, cadr(x), main_args, false)));
+ return(min_body(result, form_is_safe(sc, func, cadr(x), false)));
return(result);
/* not OP_DEFINE even in simple cases (safe_closure assumes constant funclet) */
@@ -62183,7 +61981,7 @@ static body_t form_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer x, slist *
case OP_WITH_LET:
if (!is_pair(cddr(x))) return(UNSAFE_BODY);
if (is_pair(cadr(x))) return(UNSAFE_BODY);
- return(min_body(body_is_safe(sc, sc->F, cddr(x), main_args, at_end), SAFE_BODY));
+ return(min_body(body_is_safe(sc, sc->F, cddr(x), at_end), SAFE_BODY));
/* shadowing can happen in with-let -- symbols are global so local_slots are shadowable */
break;
@@ -62198,12 +61996,12 @@ static body_t form_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer x, slist *
return(UNSAFE_BODY);
if (is_pair(cadar(p)))
{
- result = min_body(result, form_is_safe(sc, sc->F, cadar(p), main_args, false));
+ result = min_body(result, form_is_safe(sc, sc->F, cadar(p), false));
if (result == UNSAFE_BODY)
return(UNSAFE_BODY);
}
}
- return(min_body(result, body_is_safe(sc, sc->F, cddr(x), main_args, at_end)));
+ return(min_body(result, body_is_safe(sc, sc->F, cddr(x), at_end)));
}
/* in the name binders, we first have to check that "func" actually is the same thing as the caller's func */
@@ -62214,18 +62012,13 @@ static body_t form_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer x, slist *
{
bool follow = false;
s7_pointer vars, body, let_name, sp;
- slist *top, *locals;
- top = main_args;
vars = cadr(x);
body = cddr(x);
if (is_symbol(vars))
{
if (!is_pair(body)) return(UNSAFE_BODY); /* (let name . res) */
if (vars == func) /* named let shadows caller */
- {
- free_syms(split_slist(top, main_args));
- return(UNSAFE_BODY);
- }
+ return(UNSAFE_BODY);
let_name = vars;
vars = caddr(x);
body = cdddr(x);
@@ -62239,30 +62032,20 @@ static body_t form_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer x, slist *
let_var = car(vars);
if ((!is_pair(let_var)) ||
(!is_pair(cdr(let_var))))
- {
- free_syms(split_slist(top, main_args));
- return(UNSAFE_BODY);
- }
+ return(UNSAFE_BODY);
var_name = car(let_var);
if ((!is_symbol(var_name)) ||
(var_name == let_name) || /* let var shadows caller */
(var_name == func))
- {
- free_syms(split_slist(top, main_args));
- return(UNSAFE_BODY);
- }
+ return(UNSAFE_BODY);
- cancel_sym(sc, var_name, top);
- top = add_sym(sc, var_name, top);
+ add_symbol_to_list(sc, var_name);
if (is_pair(cadr(let_var)))
{
- result = min_body(result, form_is_safe(sc, let_name, cadr(let_var), top, false));
+ result = min_body(result, form_is_safe(sc, let_name, cadr(let_var), false));
if (result == UNSAFE_BODY)
- {
- free_syms(split_slist(top, main_args));
- return(UNSAFE_BODY);
- }
+ return(UNSAFE_BODY);
}
follow = (!follow);
if (follow)
@@ -62276,22 +62059,12 @@ static body_t form_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer x, slist *
}
}
}
- result = min_body(result, body_is_safe(sc, let_name, body, top, at_end));
- locals = split_slist(top, main_args);
- if (locals)
- {
- if (result == VERY_SAFE_BODY)
- set_all_locals(sc, body, locals);
- free_syms(locals);
- }
- return(result);
+ return(min_body(result, body_is_safe(sc, let_name, body, at_end)));
}
break;
case OP_DO: /* (do (...) (...) ...) */
{
- slist *top, *locals;
- top = main_args;
if (!is_pair(cddr(x))) return(UNSAFE_BODY);
if (is_pair(cadr(x)))
{
@@ -62307,24 +62080,17 @@ static body_t form_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer x, slist *
(!is_pair(cdr(do_var))) || /* (do ((a . 1) (b . 2)) ...) */
(car(do_var) == func) ||
(!is_symbol(car(do_var))))
- {
- free_syms(split_slist(top, main_args));
- return(UNSAFE_BODY);
- }
+ return(UNSAFE_BODY);
- cancel_sym(sc, car(do_var), top);
- top = add_sym(sc, car(do_var), top);
+ add_symbol_to_list(sc, car(do_var));
if (is_pair(cadr(do_var)))
- result = min_body(result, form_is_safe(sc, func, cadr(do_var), top, false));
+ result = min_body(result, form_is_safe(sc, func, cadr(do_var), false));
if ((is_pair(cddr(do_var))) &&
(is_pair(caddr(do_var))))
- result = min_body(result, form_is_safe(sc, func, caddr(do_var), top, false));
+ result = min_body(result, form_is_safe(sc, func, caddr(do_var), false));
if (result == UNSAFE_BODY)
- {
- free_syms(split_slist(top, main_args));
- return(UNSAFE_BODY);
- }
+ return(UNSAFE_BODY);
if (sp != vars)
{
if (follow) {sp = cdr(sp); if (vars == sp) return(UNSAFE_BODY);}
@@ -62333,28 +62099,8 @@ static body_t form_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer x, slist *
}
}
if (is_pair(caddr(x)))
- result = min_body(result, body_is_safe(sc, func, caddr(x), top, at_end));
- result = min_body(result, body_is_safe(sc, func, cdddr(x), top, false));
-
- locals = split_slist(top, main_args);
- if (locals)
- {
- if (result == VERY_SAFE_BODY)
- {
- s7_pointer vars;
- for (vars = cadr(x); is_pair(vars); vars = cdr(vars))
- {
- s7_pointer do_var;
- do_var = car(vars);
- if (is_pair(cddr(do_var)))
- set_all_locals(sc, caddr(do_var), locals);
- }
- set_all_locals(sc, cddr(x), locals);
- }
- free_syms(locals);
- }
-
- return(result);
+ result = min_body(result, body_is_safe(sc, func, caddr(x), at_end));
+ return(min_body(result, body_is_safe(sc, func, cdddr(x), false)));
}
break;
@@ -62383,7 +62129,7 @@ static body_t form_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer x, slist *
{
if (caar(p) == func) /* func called as arg, so not tail call */
return(UNSAFE_BODY);
- result = min_body(result, form_is_safe(sc, func, car(p), main_args, false));
+ result = min_body(result, form_is_safe(sc, func, car(p), false));
if (result == UNSAFE_BODY)
return(UNSAFE_BODY);
}
@@ -62405,10 +62151,10 @@ static body_t form_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer x, slist *
s7_pointer f, f_slot;
bool c_safe;
- if (memq_sym(sc, expr, main_args)) /* it's defined locally (so don't use find_symbol) */
+ if (symbol_is_in_list(sc, expr))
return(UNSAFE_BODY);
- f_slot = find_symbol(sc, expr);
+ f_slot = symbol_to_slot(sc, expr);
if (!is_slot(f_slot))
return(UNSAFE_BODY);
f = slot_value(f_slot);
@@ -62438,40 +62184,24 @@ static body_t form_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer x, slist *
(caar(p) == sc->lambda_symbol))
{
s7_pointer largs, lbody, q;
- slist *top, *locals;
body_t lresult;
if (!is_pair(cdar(p))) /* (lambda . /) */
return(UNSAFE_BODY);
largs = cadar(p);
- top = main_args;
lbody = cddar(p);
for (q = largs; is_pair(q); q = cdr(q))
{
if (!is_symbol(car(q)))
- {
- free_syms(split_slist(top, main_args));
- return(UNSAFE_BODY);
- }
- cancel_sym(sc, car(q), top);
- top = add_sym(sc, car(q), top);
- }
- lresult = body_is_safe(sc, func, lbody, top, false);
- locals = split_slist(top, main_args);
- if (locals)
- {
-#if SAFE_FORM_PRINT
- 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);
- free_syms(locals);
+ return(UNSAFE_BODY);
+ add_symbol_to_list(sc, car(q));
}
+ lresult = body_is_safe(sc, func, lbody, false);
result = min_body(result, lresult);
}
else
{
- result = min_body(result, form_is_safe(sc, func, car(p), main_args, false));
+ result = min_body(result, form_is_safe(sc, func, car(p), false));
#if SAFE_FORM_PRINT
fprintf(stderr, "%d: %s %s\n", __LINE__, DISPLAY_80(car(p)), display_min_body(result));
#endif
@@ -62503,7 +62233,7 @@ static body_t form_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer x, slist *
return(result);
}
-static body_t body_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer body, slist *main_args, bool at_end)
+static body_t body_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer body, bool at_end)
{
bool follow = false;
s7_pointer p, sp;
@@ -62512,7 +62242,7 @@ static body_t body_is_safe(s7_scheme *sc, s7_pointer func, s7_pointer body, slis
{
if (is_pair(car(p)))
{
- result = min_body(result, form_is_safe(sc, func, car(p), main_args, (at_end) && (is_null(cdr(p)))));
+ result = min_body(result, form_is_safe(sc, func, car(p), (at_end) && (is_null(cdr(p)))));
if (result == UNSAFE_BODY) return(UNSAFE_BODY);
}
if (p != body)
@@ -62540,15 +62270,14 @@ static s7_pointer optimize_lambda(s7_scheme *sc, bool unstarred_lambda, s7_point
if (len > 0) /* i.e. not circular */
{
body_t result;
- slist *sargs = NULL;
s7_pointer p;
clear_symbol_list(sc);
for (p = args; is_pair(p); p = cdr(p))
- sargs = add_sym(sc, (is_symbol(car(p))) ? car(p) : caar(p), sargs);
+ add_symbol_to_list(sc, (is_symbol(car(p))) ? car(p) : caar(p));
if (!is_null(p))
- sargs = add_sym(sc, p, sargs);
- result = body_is_safe(sc, func, body, sargs, true);
+ add_symbol_to_list(sc, p);
+ result = body_is_safe(sc, func, body, true);
#if SAFE_FORM_PRINT
fprintf(stderr, "optimize_lambda %s: %s\n", DISPLAY_80(body), display_min_body(result));
#endif
@@ -62556,21 +62285,8 @@ static s7_pointer optimize_lambda(s7_scheme *sc, bool unstarred_lambda, s7_point
{
if ((is_symbol(func)) &&
((is_let(sc->envir)) || (symbol_id(func) == 0)))
- sargs = add_sym(sc, func, sargs);
- /* this is really tricky. If a function has been defined earlier locally, it has no global slot.
- * If it is later defined globally, make_slot creates the global slot but does not touch the
- * (possibly free) local slot (it can't because as s7test 24981 shows, both can be in play).
- * If we than use the local_symbol mark set here to call (say) OP_LCLOSURE_A, it looks at
- * the local_slot. If that is invalid (normally a free_cell), oops... So the code above,
- * checks for a global function that has been previously defined locally.
- */
-#if SAFE_FORM_PRINT
- fprintf(stderr, "set_locals: %s\n", DISPLAY_80(body));
-#endif
- set_all_locals(sc, body, sargs);
+ add_symbol_to_list(sc, func);
}
-
- free_syms(sargs);
clear_symbol_list(sc); /* tracks locals */
/* if the body is safe, we can optimize the calling sequence */
@@ -62578,7 +62294,6 @@ static s7_pointer optimize_lambda(s7_scheme *sc, bool unstarred_lambda, s7_point
{
if (!unstarred_lambda)
{
- s7_pointer p;
bool happy = true;
/* check default vals -- if none is an expression or symbol, set simple args */
for (p = args; is_pair(p); p = cdr(p))
@@ -62996,6 +62711,7 @@ static s7_pointer check_let(s7_scheme *sc)
s7_pointer x, start;
bool named_let;
int32_t vars;
+ /* fprintf(stderr, "check let %s\n", DISPLAY(sc->code)); */
if (!is_pair(sc->code)) /* (let . 1) */
{
@@ -63121,7 +62837,6 @@ static s7_pointer check_let(s7_scheme *sc)
op = sc->nil;
for (p = start; is_pair(p); p = cdr(p))
{
- s7_pointer x;
x = car(p);
if (is_pair(cadr(x)))
{
@@ -63595,15 +63310,14 @@ static void set_if_opts(s7_scheme *sc, bool one_branch, bool reversed)
set_opt_sym3(sc->code, cadr(test));
return;
}
- if ((optimize_op(test) == HOP_SAFE_C_SS) || (optimize_op(test) == HOP_SAFE_C_LL))
+ if (optimize_op(test) == HOP_SAFE_C_SS)
{
pair_set_syntax_symbol(sc->code, choose_if_opt(sc->if_css, one_branch, reversed, not_case));
set_opt_sym2(sc->code, caddr(test));
set_opt_sym3(sc->code, cadr(test));
return;
}
- if ((optimize_op(test) == HOP_SAFE_C_SC) &&
- (!is_local_symbol(cdr(test))))
+ if (optimize_op(test) == HOP_SAFE_C_SC)
{
pair_set_syntax_symbol(sc->code, choose_if_opt(sc->if_csc, one_branch, reversed, not_case));
set_opt_con2(sc->code, caddr(test));
@@ -63838,7 +63552,7 @@ static s7_pointer check_define(s7_scheme *sc)
eval_error_with_caller(sc, "~A: define a non-symbol? ~S", caller, func);
if (is_keyword(func)) /* (define :hi 1) */
eval_error_with_caller(sc, "~A ~A: keywords are constants", caller, func);
- if (is_syntactic(func)) /* (define and a) */
+ if (is_syntactic_symbol(func)) /* (define and a) */
{
if (sc->safety > NO_SAFETY)
s7_warn(sc, 128, "%s: syntactic keywords tend to behave badly if redefined", DISPLAY(func));
@@ -63863,7 +63577,7 @@ static s7_pointer check_define(s7_scheme *sc)
func = caar(sc->code);
if (!is_symbol(func)) /* (define (3 a) a) */
eval_error_with_caller(sc, "~A: define a non-symbol? ~S", caller, func);
- if (is_syntactic(func)) /* (define (and a) a) */
+ if (is_syntactic_symbol(func)) /* (define (and a) a) */
{
if (sc->safety > NO_SAFETY)
s7_warn(sc, 128, "%s: syntactic keywords tend to behave badly if redefined", DISPLAY(func));
@@ -63994,8 +63708,7 @@ static void define_funchecked(s7_scheme *sc)
else closure_set_let(new_func, sc->envir);
/* unsafe closures created by other functions do not support __func__ */
- if (is_let(sc->envir))
- add_slot(sc->envir, sc->value, new_func);
+ add_slot(sc->envir, sc->value, new_func);
set_local(sc->value);
sc->value = new_func;
}
@@ -64023,7 +63736,7 @@ static s7_pointer check_define_macro(s7_scheme *sc, opcode_t op)
x = caar(sc->code);
if (!is_symbol(x))
eval_error_with_caller(sc, "~A: ~S is not a symbol?", caller, x);
- if (dont_eval_args(x)) /* (define-macro (quote a) quote) */
+ if (is_syntactic_symbol(x))
{
if (sc->safety > NO_SAFETY)
s7_warn(sc, 128, "%s: syntactic keywords tend to behave badly if redefined", DISPLAY(x));
@@ -64116,7 +63829,7 @@ static int32_t expansion_ex(s7_scheme *sc)
{
s7_pointer symbol, slot;
/* we're playing fast and loose with sc->envir in the reader, so here we need a disaster check */
-#if DEBUGGING
+#if S7_DEBUGGING
if (unchecked_type(sc->envir) != T_LET) sc->envir = sc->nil;
#else
if (!is_let(sc->envir)) sc->envir = sc->nil;
@@ -64126,7 +63839,7 @@ static int32_t expansion_ex(s7_scheme *sc)
if ((symbol_id(symbol) == 0) ||
(sc->envir == sc->nil))
slot = global_slot(symbol);
- else slot = find_symbol(sc, symbol);
+ else slot = symbol_to_slot(sc, symbol);
if (is_slot(slot))
sc->code = slot_value(slot);
@@ -64293,7 +64006,7 @@ static int32_t feed_to(s7_scheme *sc)
if (is_symbol(cadr(sc->code)))
{
s7_pointer func;
- func = find_symbol_checked(sc, cadr(sc->code)); /* car is => */
+ func = symbol_to_value_checked(sc, cadr(sc->code)); /* car is => */
if ((is_c_function(func)) &&
(is_safe_procedure(func)))
{
@@ -64320,7 +64033,7 @@ static int32_t feed_to(s7_scheme *sc)
static void set_dilambda_opt(s7_scheme *sc, s7_pointer opt, s7_pointer expr)
{
s7_pointer func;
- func = find_symbol_checked(sc, car(expr));
+ func = symbol_to_value_checked(sc, car(expr));
if ((is_closure(func)) &&
(is_safe_closure(closure_setter(func))))
{
@@ -64419,7 +64132,7 @@ static s7_pointer check_set(s7_scheme *sc)
s7_pointer obj;
annotate_arg(sc, cdr(sc->code), sc->envir);
pair_set_syntax_symbol(sc->code, sc->set_pair_za_symbol);
- obj = find_symbol_checked(sc, car(inner));
+ obj = symbol_to_value_checked(sc, car(inner));
if ((is_c_function(obj)) &&
(is_c_function(c_function_setter(obj))))
pair_set_syntax_symbol(sc->code, sc->set_pair_a_symbol);
@@ -64464,13 +64177,8 @@ static s7_pointer check_set(s7_scheme *sc)
{
if (is_symbol(value))
{
- if (is_local_symbol(cdr(sc->code)))
- pair_set_syntax_symbol(sc->code, sc->set_symbol_l_symbol);
- else
- {
- if (is_slot(find_symbol(sc, value)))
- pair_set_syntax_symbol(sc->code, sc->set_symbol_s_symbol);
- }
+ if (is_slot(symbol_to_slot(sc, value)))
+ pair_set_syntax_symbol(sc->code, sc->set_symbol_s_symbol);
}
else
{
@@ -64498,7 +64206,7 @@ static s7_pointer check_set(s7_scheme *sc)
pair_set_syntax_symbol(sc->code, sc->set_symbol_p_symbol);
if (is_h_safe_c_s(value))
{
- pair_set_syntax_symbol(sc->code, (is_local_symbol(cdr(value))) ? sc->set_symbol_oplq_symbol : sc->set_symbol_opsq_symbol);
+ pair_set_syntax_symbol(sc->code, sc->set_symbol_opsq_symbol);
set_opt_sym2(sc->code, cadr(value));
}
else
@@ -64515,13 +64223,11 @@ static s7_pointer check_set(s7_scheme *sc)
else
{
/* most of these special cases probably don't matter */
- if ((optimize_op(value) == HOP_SAFE_C_SS) || (optimize_op(value) == HOP_SAFE_C_LL))
+ if (optimize_op(value) == HOP_SAFE_C_SS)
{
- bool locals;
- locals = ((is_local_symbol(cdr(value))) && (is_local_symbol(cddr(value))));
if (settee == cadr(value))
pair_set_syntax_symbol(sc->code, sc->increment_ss_symbol);
- else pair_set_syntax_symbol(sc->code, (locals) ? sc->set_symbol_opllq_symbol : sc->set_symbol_opssq_symbol);
+ else pair_set_syntax_symbol(sc->code, sc->set_symbol_opssq_symbol);
set_opt_pair2(sc->code, cdr(value));
}
else
@@ -64592,14 +64298,12 @@ static s7_pointer check_set(s7_scheme *sc)
(cadr(value) == settee))
{
if ((opt_cfunc(value) == add_s1) ||
- (opt_cfunc(value) == add_cs1) ||
- (opt_cfunc(value) == add_cl1))
+ (opt_cfunc(value) == add_cs1))
pair_set_syntax_symbol(sc->code, sc->increment_1_symbol);
else
{
if ((opt_cfunc(value) == subtract_s1) ||
- (opt_cfunc(value) == subtract_cs1) ||
- (opt_cfunc(value) == subtract_cl1))
+ (opt_cfunc(value) == subtract_cs1))
pair_set_syntax_symbol(sc->code, sc->decrement_1_symbol);
}
}
@@ -64847,7 +64551,7 @@ static int32_t set_pair_ex(s7_scheme *sc)
if (is_symbol(caar_code))
{
/* this was cx = s7_symbol_value(sc, caar_code) but the function call overhead is noticeable */
- cx = find_symbol(sc, caar_code);
+ cx = symbol_to_slot(sc, caar_code);
if (is_slot(cx))
cx = slot_value(cx);
else eval_error_no_return(sc, sc->syntax_error_symbol, "no generalized set for ~A", caar_code);
@@ -64912,13 +64616,13 @@ static int32_t set_pair_ex(s7_scheme *sc)
if (!is_pair(index))
{
if (is_symbol(index))
- index = find_symbol_checked(sc, index);
+ index = symbol_to_value_checked(sc, index);
val = cadr(sc->code);
if (!is_pair(val))
{
if (is_symbol(val))
- val = find_symbol_checked(sc, val);
+ val = symbol_to_value_checked(sc, val);
set_car(sc->t2_1, index);
set_car(sc->t2_2, val);
sc->value = (*(c_object_set(sc, cx)))(sc, cx, sc->t2_1);
@@ -64983,7 +64687,7 @@ static int32_t set_pair_ex(s7_scheme *sc)
s7_int ind;
if (is_symbol(index))
- index = find_symbol_checked(sc, index);
+ index = symbol_to_value_checked(sc, index);
if (!s7_is_integer(index))
eval_error_no_return(sc, sc->wrong_type_arg_symbol, "vector-set!: index must be an integer: ~S", sc->code);
ind = s7_integer(index);
@@ -64994,7 +64698,7 @@ static int32_t set_pair_ex(s7_scheme *sc)
if (!is_pair(val))
{
if (is_symbol(val))
- val = find_symbol_checked(sc, val);
+ val = symbol_to_value_checked(sc, val);
vector_setter(cx)(sc, cx, ind, val);
sc->value = _NFre(val);
return(goto_START);
@@ -65048,7 +64752,7 @@ static int32_t set_pair_ex(s7_scheme *sc)
s7_int ind;
if (is_symbol(index))
- index = find_symbol_checked(sc, index);
+ index = symbol_to_value_checked(sc, index);
if (!s7_is_integer(index))
eval_error_no_return(sc, sc->wrong_type_arg_symbol, "index must be an integer: ~S", sc->code);
ind = s7_integer(index);
@@ -65062,7 +64766,7 @@ static int32_t set_pair_ex(s7_scheme *sc)
if (!is_pair(val))
{
if (is_symbol(val))
- val = find_symbol_checked(sc, val);
+ val = symbol_to_value_checked(sc, val);
if (s7_is_character(val))
{
if (bv_case)
@@ -65139,9 +64843,9 @@ static int32_t set_pair_ex(s7_scheme *sc)
}
if (is_symbol(index))
- index = find_symbol_checked(sc, index);
+ index = symbol_to_value_checked(sc, index);
if (is_symbol(val))
- val = find_symbol_checked(sc, val);
+ val = symbol_to_value_checked(sc, val);
set_car(sc->t2_1, index);
set_car(sc->t2_2, val);
@@ -65178,12 +64882,12 @@ static int32_t set_pair_ex(s7_scheme *sc)
{
s7_pointer val;
if (is_symbol(key))
- key = find_symbol_checked(sc, key);
+ key = symbol_to_value_checked(sc, key);
val = cadr(sc->code);
if (!is_pair(val))
{
if (is_symbol(val))
- val = find_symbol_checked(sc, val);
+ val = symbol_to_value_checked(sc, val);
sc->value = s7_hash_table_set(sc, cx, key, val);
return(goto_START);
}
@@ -65235,7 +64939,7 @@ static int32_t set_pair_ex(s7_scheme *sc)
if (!is_pair(val))
{
if (is_symbol(val))
- val = find_symbol_checked(sc, val);
+ val = symbol_to_value_checked(sc, val);
sc->value = s7_let_set(sc, cx, key, val);
return(goto_START);
}
@@ -65275,11 +64979,11 @@ static int32_t set_pair_ex(s7_scheme *sc)
if (is_null(cddar(sc->code)))
{
if (needs_copied_args(c_function_setter(cx)))
- sc->args = list_2(sc, find_symbol_checked(sc, cadar(sc->code)), find_symbol_checked(sc, cadr(sc->code)));
+ sc->args = list_2(sc, symbol_to_value_checked(sc, cadar(sc->code)), symbol_to_value_checked(sc, cadr(sc->code)));
else
{
- set_car(sc->t2_1, find_symbol_checked(sc, cadar(sc->code)));
- set_car(sc->t2_2, find_symbol_checked(sc, cadr(sc->code)));
+ set_car(sc->t2_1, symbol_to_value_checked(sc, cadar(sc->code)));
+ set_car(sc->t2_2, symbol_to_value_checked(sc, cadr(sc->code)));
sc->args = sc->t2_1;
}
sc->code = c_function_setter(cx);
@@ -65290,14 +64994,14 @@ static int32_t set_pair_ex(s7_scheme *sc)
{
if (needs_copied_args(c_function_setter(cx)))
sc->args = list_3(sc,
- find_symbol_checked(sc, cadar(sc->code)),
- find_symbol_checked(sc, caddar(sc->code)),
- find_symbol_checked(sc, cadr(sc->code)));
+ symbol_to_value_checked(sc, cadar(sc->code)),
+ symbol_to_value_checked(sc, caddar(sc->code)),
+ symbol_to_value_checked(sc, cadr(sc->code)));
else
{
- set_car(sc->t3_1, find_symbol_checked(sc, cadar(sc->code)));
- set_car(sc->t3_2, find_symbol_checked(sc, caddar(sc->code)));
- set_car(sc->t3_3, find_symbol_checked(sc, cadr(sc->code)));
+ set_car(sc->t3_1, symbol_to_value_checked(sc, cadar(sc->code)));
+ set_car(sc->t3_2, symbol_to_value_checked(sc, caddar(sc->code)));
+ set_car(sc->t3_3, symbol_to_value_checked(sc, cadr(sc->code)));
sc->args = sc->t3_1;
}
sc->code = c_function_setter(cx);
@@ -65314,11 +65018,11 @@ static int32_t set_pair_ex(s7_scheme *sc)
(!is_pair(cadr(sc->code))))
{
if (needs_copied_args(c_function_setter(cx)))
- sc->args = list_1(sc, (is_symbol(cadr(sc->code))) ? find_symbol_checked(sc, cadr(sc->code)) : cadr(sc->code));
+ sc->args = list_1(sc, (is_symbol(cadr(sc->code))) ? symbol_to_value_checked(sc, cadr(sc->code)) : cadr(sc->code));
else
{
if (is_symbol(cadr(sc->code)))
- set_car(sc->t1_1, find_symbol_checked(sc, cadr(sc->code)));
+ set_car(sc->t1_1, symbol_to_value_checked(sc, cadr(sc->code)));
else set_car(sc->t1_1, cadr(sc->code));
sc->args = sc->t1_1;
}
@@ -65462,13 +65166,14 @@ static bool tree_match(s7_pointer tree)
return((tree_match(car(tree))) || (tree_match(cdr(tree))));
return(false);
}
+
#define DO_PRINT 0
static bool do_is_safe(s7_scheme *sc, s7_pointer body, s7_pointer steppers, s7_pointer var_list, bool *has_set)
{
/* here any (unsafe?) closure or jumping-op (call/cc) or shadowed variable is trouble */
s7_pointer p;
- if (DO_PRINT) fprintf(stderr, "%s\n", DISPLAY_80(body));
+ if (DO_PRINT) fprintf(stderr, "do_is_safe: %s\n", DISPLAY_80(body));
for (p = body; is_pair(p); p = cdr(p))
{
@@ -65532,7 +65237,8 @@ static bool do_is_safe(s7_scheme *sc, s7_pointer body, s7_pointer steppers, s7_p
case OP_DO:
{
s7_pointer nv;
- if (DO_PRINT) fprintf(stderr, "do loop\n");
+ if (!is_pair(cddr(expr))) /* (do ()) */
+ {if (DO_PRINT) fprintf(stderr, "%d\n", __LINE__); return(false);}
nv = var_list;
for (vars = cadr(expr); is_pair(vars); vars = cdr(vars))
{
@@ -65564,6 +65270,8 @@ static bool do_is_safe(s7_scheme *sc, s7_pointer body, s7_pointer steppers, s7_p
case OP_SET:
{
s7_pointer settee;
+ if (!is_pair(cdr(expr))) /* (set!) */
+ {if (DO_PRINT) fprintf(stderr, "%d\n", __LINE__); return(false);}
settee = cadr(expr);
if (!is_symbol(settee)) /* (set! (...) ...) which is tricky due to setter functions/macros */
{
@@ -65571,7 +65279,7 @@ static bool do_is_safe(s7_scheme *sc, s7_pointer body, s7_pointer steppers, s7_p
if ((!is_pair(settee)) ||
(!is_symbol(car(settee))))
{if (DO_PRINT) fprintf(stderr, "%d\n", __LINE__); return(false);}
- setv = find_symbol_unexamined(sc, car(settee));
+ setv = symbol_to_value_unexamined(sc, car(settee));
if (!((setv) &&
((is_sequence(setv)) ||
((is_c_function(setv)) &&
@@ -65889,8 +65597,7 @@ static s7_pointer check_do(s7_scheme *sc)
((is_h_safe_c_c(step_expr)) &&
(is_pair(cdr(step_expr))) && /* ((v 0 (+))) */
(car(v) == cadr(step_expr)) &&
- ((opt_cfunc(step_expr) == add_cs1) || (opt_cfunc(step_expr) == add_cl1) ||
- (opt_cfunc(step_expr) == subtract_cs1) || (opt_cfunc(step_expr) == subtract_cl1))) ||
+ ((opt_cfunc(step_expr) == add_cs1) || (opt_cfunc(step_expr) == subtract_cs1))) ||
((optimize_op(step_expr) == HOP_SAFE_C_CS) && (car(v) == caddr(step_expr)))))
{
/* step var is (var const|symbol (op var const)|(op const var)) */
@@ -65902,10 +65609,10 @@ static s7_pointer check_do(s7_scheme *sc)
(cadr(end) != caddr(end)) &&
#if (!WITH_GMP)
((opt_any1(end) == equal_s_ic) ||
- (optimize_op(end) == HOP_SAFE_C_SS) || (optimize_op(end) == HOP_SAFE_C_LL) ||
+ (optimize_op(end) == HOP_SAFE_C_SS) ||
(optimize_op(end) == HOP_SAFE_C_SC))
#else
- ((optimize_op(end) == HOP_SAFE_C_SS) || (optimize_op(end) == HOP_SAFE_C_LL) ||
+ ((optimize_op(end) == HOP_SAFE_C_SS) ||
(optimize_op(end) == HOP_SAFE_C_SC))
#endif
)
@@ -65916,12 +65623,12 @@ static s7_pointer check_do(s7_scheme *sc)
bool has_set = false, one_line;
one_line = ((is_null(cdr(body))) && (is_pair(car(body))));
- if ((opt_cfunc(step_expr) == add_cs1) || (opt_cfunc(step_expr) == add_cl1))
+ if (opt_cfunc(step_expr) == add_cs1)
{
set_c_function(step_expr, add_s1);
set_optimize_op(step_expr, HOP_SAFE_C_SC);
}
- if ((opt_cfunc(step_expr) == subtract_cs1) || (opt_cfunc(step_expr) == subtract_cl1))
+ if (opt_cfunc(step_expr) == subtract_cs1)
{
set_c_function(step_expr, subtract_s1);
set_optimize_op(step_expr, HOP_SAFE_C_SC);
@@ -65948,6 +65655,7 @@ static s7_pointer check_do(s7_scheme *sc)
((c_function_class(opt_cfunc(end)) == sc->equal_class) ||
(opt_cfunc(end) == geq_2)))
{
+ /* fprintf(stderr, "%s[%d]: dotimes\n", __func__, __LINE__); */
pair_set_syntax_op(car(body), symbol_syntax_op(caar(body)));
set_opt_pair2(sc->code, caddr(caar(sc->code)));
pair_set_syntax_symbol(sc->code, sc->dotimes_p_symbol); /* dotimes_p: simple + syntax body + 1 expr */
@@ -66060,8 +65768,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(signature(sc, c_function_base(opt_cfunc(step_expr))))) &&
- (car(signature(sc, c_function_base(opt_cfunc(step_expr)))) != sc->T) &&
+ (is_pair(c_function_signature(c_function_base(opt_cfunc(step_expr))))) &&
+ (car(c_function_signature(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));
@@ -66165,7 +65873,7 @@ static int32_t dox_ex(s7_scheme *sc)
else
{
if (is_symbol(expr))
- val = find_symbol_checked(sc, expr); /* symbol as init? */
+ val = symbol_to_value_checked(sc, expr); /* symbol as init? */
else val = expr;
}
new_cell_no_check(sc, slot, T_SLOT);
@@ -66275,11 +65983,11 @@ static int32_t dox_ex(s7_scheme *sc)
{
while (true)
{
- s7_pointer slot;
+ s7_pointer slot1;
body(sc, lcode);
- for (slot = slots; is_slot(slot); slot = next_slot(slot))
- if (is_pair(slot_expression(slot)))
- slot_set_value(slot, c_call(slot_expression(slot))(sc, car(slot_expression(slot))));
+ for (slot1 = slots; is_slot(slot1); slot1 = next_slot(slot1))
+ if (is_pair(slot_expression(slot1)))
+ slot_set_value(slot1, c_call(slot_expression(slot1))(sc, car(slot_expression(slot1))));
if (is_true(sc, sc->value = endf(sc, endp)))
{
sc->code = cdr(end);
@@ -66365,12 +66073,12 @@ static int32_t dox_ex(s7_scheme *sc)
{
code = car(code);
- if ((typesflag(code) == SYNTACTIC_PAIR) ||
- (typesflag(car(code)) == SYNTACTIC_TYPE))
+ if ((is_syntactic_pair(code)) ||
+ (is_syntactic_symbol(car(code))))
{
push_stack_no_args(sc, OP_DOX_STEP_P, sc->code);
- if (typesflag(code) == SYNTACTIC_PAIR)
+ if (is_syntactic_pair(code))
sc->cur_op = (opcode_t)pair_syntax_op(code);
else
{
@@ -66396,7 +66104,7 @@ static int32_t simple_do_ex(s7_scheme *sc, s7_pointer code)
body = car(opt_pair2(code));
-#if DEBUGGING
+#if S7_DEBUGGING
if (!is_symbol(car(body)))
{
fprintf(stderr, "simple_do_ex car(body) not symbol: %s\n", DISPLAY_80(code));
@@ -66490,8 +66198,6 @@ static bool opt_dotimes(s7_scheme *sc, s7_pointer code, s7_pointer scc, bool saf
int32_t body_len;
s7_int end;
- if (sc->safety > CLM_OPTIMIZATION_SAFETY) return(false);
-
if (safe_step)
set_safe_stepper(sc->args);
else set_safe_stepper(dox_slot1(sc->envir));
@@ -66586,7 +66292,7 @@ static bool opt_dotimes(s7_scheme *sc, s7_pointer code, s7_pointer scc, bool saf
{
sc->pc = 0;
fp(o);
-#if DEBUGGING
+#if S7_DEBUGGING
if (!is_integer(slot_value(step_slot)))
fprintf(stderr, "%d not int: %s\n", __LINE__, DISPLAY(step_slot));
#endif
@@ -66600,7 +66306,7 @@ static bool opt_dotimes(s7_scheme *sc, s7_pointer code, s7_pointer scc, bool saf
while (true)
{
func(sc, car(code));
-#if DEBUGGING
+#if S7_DEBUGGING
if (!is_integer(slot_value(step_slot)))
fprintf(stderr, "%d not int: %s\n", __LINE__, DISPLAY(step_slot));
#endif
@@ -66742,10 +66448,12 @@ static int32_t do_let(s7_scheme *sc, s7_pointer step_slot, s7_pointer scc, bool
s7_pointer old_e, stepper;
int32_t body_len, var_len;
- if (sc->safety > CLM_OPTIMIZATION_SAFETY) return(fall_through);
- /* do_let with non-float vars doesn't get many fixable hits */
+ /* fprintf(stderr, "do_let: %s\n", DISPLAY(scc)); */
+ /* do_let with non-float vars doesn't get many fixable hits */
let_code = caddr(scc);
+ if (!is_list(cadr(let_code))) /* (do ((j 0 (+ j 1))) ((= j 1)) (let name 123)) */
+ return(fall_through);
let_body = cddr(let_code);
body_len = s7_list_length(sc, let_body);
if (body_len <= 0) return(fall_through);
@@ -66870,8 +66578,8 @@ static bool dotimes(s7_scheme *sc, s7_pointer code, bool safe_case)
body = caddr(code);
/* here we assume one expr in body */
- if (((typesflag(body) == SYNTACTIC_PAIR) ||
- (typesflag(car(body)) == SYNTACTIC_TYPE)) &&
+ if (((is_syntactic_pair(body)) ||
+ (is_syntactic_symbol(car(body)))) &&
((symbol_syntax_op(car(body)) == OP_LET) ||
(symbol_syntax_op(car(body)) == OP_LET_STAR)))
return(do_let(sc, sc->args, code, safe_case) == goto_SAFE_DO_END_CLAUSES);
@@ -66888,7 +66596,7 @@ static int32_t safe_dotimes_ex(s7_scheme *sc)
init_val = cadr(caar(sc->code));
if (is_symbol(init_val))
- init_val = find_symbol_checked(sc, init_val);
+ init_val = symbol_to_value_checked(sc, init_val);
else
{
if (is_pair(init_val))
@@ -66902,7 +66610,7 @@ static int32_t safe_dotimes_ex(s7_scheme *sc)
end_expr = caadr(code);
end_val = caddr(end_expr);
if (is_symbol(end_val))
- end_val = find_symbol_checked(sc, end_val);
+ end_val = symbol_to_value_checked(sc, end_val);
if (s7_is_integer(end_val))
{
@@ -66935,8 +66643,8 @@ static int32_t safe_dotimes_ex(s7_scheme *sc)
sc->code = car(sc->code);
set_opt_pair2(code, sc->code); /* is_pair above */
- if ((typesflag(sc->code) == SYNTACTIC_PAIR) ||
- (typesflag(car(sc->code)) == SYNTACTIC_TYPE))
+ if ((is_syntactic_pair(sc->code)) ||
+ (is_syntactic_symbol(car(sc->code))))
{
if (!is_unsafe_do(code))
{
@@ -66945,7 +66653,7 @@ static int32_t safe_dotimes_ex(s7_scheme *sc)
set_unsafe_do(code);
}
push_stack(sc, OP_SAFE_DOTIMES_STEP_P, sc->args, code);
- if (typesflag(sc->code) == SYNTACTIC_PAIR)
+ if (is_syntactic_pair(sc->code))
sc->cur_op = (opcode_t)pair_syntax_op(sc->code);
else
{
@@ -67003,7 +66711,7 @@ static int32_t safe_do_ex(s7_scheme *sc)
init_val = cadaar(code);
if (is_symbol(init_val))
- init_val = find_symbol_checked(sc, init_val);
+ init_val = symbol_to_value_checked(sc, init_val);
else
{
if (is_pair(init_val))
@@ -67012,7 +66720,7 @@ static int32_t safe_do_ex(s7_scheme *sc)
end = caddr(caadr(code));
if (is_symbol(end))
- end_val = find_symbol_checked(sc, end);
+ end_val = symbol_to_value_checked(sc, end);
else end_val = end;
if ((!s7_is_integer(init_val)) || (!s7_is_integer(end_val)))
@@ -67035,7 +66743,7 @@ static int32_t safe_do_ex(s7_scheme *sc)
}
if (is_symbol(end))
- dox_set_slot2(sc->envir, find_symbol(sc, end));
+ dox_set_slot2(sc->envir, symbol_to_slot(sc, end));
else dox_set_slot2(sc->envir, make_slot_1(sc, sc->envir, sc->dox_slot_symbol, end));
sc->args = dox_slot2(sc->envir); /* the various safe steps assume sc->args is the end slot */
@@ -67064,7 +66772,7 @@ static int32_t dotimes_p_ex(s7_scheme *sc)
code = sc->code;
init = cadaar(code);
if (is_symbol(init))
- init_val = find_symbol_checked(sc, init);
+ init_val = symbol_to_value_checked(sc, init);
else
{
if (is_pair(init))
@@ -67077,7 +66785,7 @@ static int32_t dotimes_p_ex(s7_scheme *sc)
end = caddr(opt_pair2(code));
if (is_symbol(end))
{
- slot = find_symbol(sc, end);
+ slot = symbol_to_slot(sc, end);
end_val = slot_value(slot);
}
else
@@ -67137,8 +66845,10 @@ static int32_t do_init_ex(s7_scheme *sc)
{
s7_pointer x, y, z;
/* fprintf(stderr, "%s: %s\n", __func__, DISPLAY_80(sc->code)); */
- while (true)
+ while (true) /* at start, first value is the loop (for GC protection?), returning sc->value is the next value */
{
+ if (is_multiple_value(sc->value)) /* (do ((i (values 1 2)))...) */
+ eval_error_no_return(sc, sc->wrong_type_arg_symbol, "do: variable initial value can't be ~S", cons(sc, sc->values_symbol, sc->value));
sc->args = cons(sc, sc->value, sc->args); /* code will be last element (first after reverse) */
if (is_pair(sc->code))
{
@@ -67152,7 +66862,7 @@ static int32_t do_init_ex(s7_scheme *sc)
return(goto_EVAL);
}
if (is_symbol(init))
- sc->value = find_symbol_checked(sc, init);
+ sc->value = symbol_to_value_checked(sc, init);
else sc->value = init;
sc->code = cdr(sc->code);
}
@@ -67207,7 +66917,7 @@ static int32_t do_init_ex(s7_scheme *sc)
static inline bool closure_is_ok_1(s7_scheme *sc, s7_pointer code, uint16_t type, int32_t args)
{
s7_pointer f;
- f = find_symbol_unexamined(sc, car(code));
+ f = symbol_to_value_unexamined(sc, car(code));
if ((f == opt_lambda_unchecked(code)) ||
((f) &&
(typesflag(f) == type) &&
@@ -67221,7 +66931,7 @@ static inline bool closure_is_ok_1(s7_scheme *sc, s7_pointer code, uint16_t type
static bool closure_star_is_ok_1(s7_scheme *sc, s7_pointer code, uint16_t type, int32_t args)
{
s7_pointer val;
- val = find_symbol_unexamined(sc, car(code));
+ val = symbol_to_value_unexamined(sc, car(code));
if ((val == opt_lambda_unchecked(code)) ||
((val) &&
(typesflag(val) == (uint16_t)type) &&
@@ -67235,9 +66945,6 @@ static bool closure_star_is_ok_1(s7_scheme *sc, s7_pointer code, uint16_t type,
/* it is almost never the case that we already have the value and can see it in the current environment directly,
* but once found, the value usually matches the current (opt_lambda(code))
- *
- * (_val_) is needed below because car(code) might be undefined (with-let can cause this confusion),
- * and find_symbol_unchecked returns NULL in that case.
*/
#define closure_is_ok(Sc, Code, Type, Args) \
@@ -67250,7 +66957,7 @@ static bool closure_star_is_ok_1(s7_scheme *sc, s7_pointer code, uint16_t type,
(((symbol_ctr(car(Code)) == 1) && \
(unchecked_type(local_slot(car(Code))) == T_SLOT) && \
(slot_value(local_slot(car(Code))) == opt_lambda_unchecked(Code))) || \
- ((sc->last_function = find_symbol_unexamined(Sc, car(Code))) == opt_lambda_unchecked(Code)))
+ ((sc->last_function = symbol_to_value_unexamined(Sc, car(Code))) == opt_lambda_unchecked(Code)))
#define closure_star_is_ok(Sc, Code, Type, Args) \
(((symbol_ctr(car(Code)) == 1) && \
@@ -67259,6 +66966,82 @@ static bool closure_star_is_ok_1(s7_scheme *sc, s7_pointer code, uint16_t type,
(closure_star_is_ok_1(Sc, Code, Type, Args)))
+
+static inline bool fun_is_ok_1(s7_scheme *sc, s7_pointer code, uint16_t type, int32_t args) /* see op_safe_fun_a */
+{
+ s7_pointer f;
+ f = symbol_to_value_unexamined(sc, car(code));
+ if (f == opt_lambda_unchecked(code))
+ {
+ set_opt_id2(code, symbol_id(car(code)));
+ return(true);
+ }
+ if ((f) &&
+ (typesflag(f) == type) &&
+ ((closure_arity(f) == args) ||
+ (closure_arity_to_int(sc, f) == args)))
+ {
+ set_opt_lambda(code, f);
+ set_opt_id2(code, symbol_id(car(code)));
+ return(true);
+ }
+ sc->last_function = f;
+ return(false);
+}
+
+#define fun_is_ok(Sc, Code, Type, Args) \
+ (((symbol_id(car(Code)) == opt_id2(Code)) && \
+ (slot_value(local_slot(car(Code))) == opt_lambda(Code))) || \
+ (fun_is_ok_1(Sc, Code, Type, Args)))
+
+#if 0
+static inline bool fun_is_equal_1(s7_scheme *sc, s7_pointer code, uint16_t type, int32_t args) /* see op_safe_fun_a */
+{
+ s7_pointer f;
+ f = symbol_to_value_unexamined(sc, car(code));
+ if (f == opt_lambda_unchecked(code))
+ {
+ set_opt_id2(code, symbol_id(car(code)));
+ return(true);
+ }
+ sc->last_function = f;
+ return(false);
+}
+
+#define fun_is_equal(Sc, Code, Type, Args) \
+ (((symbol_id(car(Code)) == opt_id2(Code)) && \
+ (slot_value(local_slot(car(Code))) == opt_lambda(Code))) || \
+ (fun_is_equal_1(Sc, Code)))
+
+static bool fun_star_is_ok_1(s7_scheme *sc, s7_pointer code, uint16_t type, int32_t args)
+{
+ s7_pointer val;
+ val = symbol_to_value_unexamined(sc, car(code));
+ if (val == opt_lambda_unchecked(code))
+ {
+ set_opt_id2(code, symbol_id(car(code)));
+ return(true);
+ }
+ if ((val) &&
+ (typesflag(val) == (uint16_t)type) &&
+ ((closure_arity(val) >= args) ||
+ (closure_star_arity_to_int(sc, val) >= args)))
+ {
+ set_opt_lambda(code, val);
+ set_opt_id2(code, symbol_id(car(code)));
+ return(true);
+ }
+ sc->last_function = val;
+ return(false);
+}
+
+#define fun_star_is_ok(Sc, Code, Type, Args) \
+ (((symbol_id(car(Code)) == opt_id2(Code)) && \
+ (slot_value(local_slot(car(Code))) == opt_lambda(Code))) || \
+ (fun_star_is_ok_1(Sc, Code, Type, Args)))
+#endif
+
+
#define MATCH_UNSAFE_CLOSURE (T_CLOSURE)
#define MATCH_SAFE_CLOSURE (T_CLOSURE | T_SAFE_CLOSURE)
#define MATCH_UNSAFE_CLOSURE_STAR (T_CLOSURE_STAR)
@@ -67304,8 +67087,8 @@ static int32_t unknown_ex(s7_scheme *sc, s7_pointer f)
if ((is_pair(car(body))) &&
(is_syntactic_symbol(caar(body))))
{
- set_optimize_op(code, hop + ((is_local_symbol(code)) ? OP_SAFE_LTHUNK_P : OP_SAFE_THUNK_P));
- if (typesflag(car(body)) != SYNTACTIC_PAIR)
+ set_optimize_op(code, hop + OP_SAFE_THUNK_P);
+ if (!is_syntactic_pair(car(body)))
{
pair_set_syntax_op(car(body), symbol_syntax_op(caar(body)));
set_syntactic_pair(car(body));
@@ -67343,7 +67126,7 @@ static int32_t unknown_g_ex(s7_scheme *sc, s7_pointer f)
hop = (is_constant_symbol(sc, car(code))) ? 1 : 0;
sym_case = is_symbol(cadr(code));
if ((sym_case) &&
- (!is_slot(find_symbol(sc, cadr(code)))))
+ (!is_slot(symbol_to_slot(sc, cadr(code)))))
return(fall_through);
switch (type(f))
@@ -67392,8 +67175,8 @@ static int32_t unknown_g_ex(s7_scheme *sc, s7_pointer f)
(is_pair(car(body))) &&
(is_syntactic_symbol(caar(body))))
{
- set_optimize_op(code, hop + (((is_local_symbol(code)) && (is_local_symbol(cdr(code)))) ? OP_SAFE_LCLOSURE_L_P : OP_SAFE_CLOSURE_S_P));
- if (typesflag(car(body)) != SYNTACTIC_PAIR)
+ set_optimize_op(code, hop + OP_SAFE_CLOSURE_S_P);
+ if (!is_syntactic_pair(car(body)))
{
pair_set_syntax_op(car(body), symbol_syntax_op(caar(body)));
set_syntactic_pair(car(body));
@@ -67483,10 +67266,10 @@ static int32_t unknown_gg_ex(s7_scheme *sc, s7_pointer f)
s2 = is_symbol(caddr(code));
if ((s1) &&
- (!is_slot(find_symbol(sc, cadr(code)))))
+ (!is_slot(symbol_to_slot(sc, cadr(code)))))
return(fall_through);
if ((s2) &&
- (!is_slot(find_symbol(sc, caddr(code)))))
+ (!is_slot(symbol_to_slot(sc, caddr(code)))))
return(fall_through);
switch (type(f))
@@ -67539,7 +67322,7 @@ static int32_t unknown_gg_ex(s7_scheme *sc, s7_pointer f)
(is_syntactic(caar(body))))
{
set_optimize_op(code, hop + OP_CLOSURE_SS_P);
- if (typesflag(car(body)) != SYNTACTIC_PAIR)
+ if (!is_syntactic_pair(car(body)))
{
pair_set_syntax_op(car(body), symbol_syntax_op(caar(body)));
set_syntactic_pair(car(body));
@@ -67588,7 +67371,7 @@ static int32_t unknown_all_s_ex(s7_scheme *sc, s7_pointer f)
num_args = integer(arglist_length(code));
for (arg = cdr(code); is_pair(arg); arg = cdr(arg))
if (/* (!is_symbol(car(arg))) || */ /* can't happen?? */
- (!is_slot(find_symbol(sc, car(arg)))))
+ (!is_slot(symbol_to_slot(sc, car(arg)))))
return(fall_through);
hop = (is_constant_symbol(sc, car(code))) ? 1 : 0;
@@ -67655,7 +67438,7 @@ static int32_t unknown_a_ex(s7_scheme *sc, s7_pointer f)
code = sc->code;
hop = (is_constant_symbol(sc, car(code))) ? 1 : 0;
-#if DEBUGGING
+#if S7_DEBUGGING
if (!has_all_x(cdr(code)))
fprintf(stderr, "unknown_a_ex missing _a support? %s\n", DISPLAY_80(code));
#endif
@@ -67679,8 +67462,13 @@ static int32_t unknown_a_ex(s7_scheme *sc, s7_pointer f)
(closure_arity_to_int(sc, f) == 1))
{
if (is_safe_closure(f))
- set_optimize_op(code, hop + (((is_local_symbol(code)) ?
- ((is_null(cdr(closure_body(f)))) ? OP_SAFE_LCLOSURE_A_P : OP_SAFE_LCLOSURE_A) : OP_SAFE_CLOSURE_A)));
+ {
+ set_optimize_op(code, hop + OP_SAFE_FUN_A);
+ set_opt_id2(code, symbol_id(car(code)));
+ set_opt_lambda(code, f);
+ set_local_slot(car(code), symbol_to_slot(sc, car(code)));
+ return(goto_OPT_EVAL);
+ }
else
{
set_optimize_op(code, hop + OP_CLOSURE_A);
@@ -67693,7 +67481,7 @@ static int32_t unknown_a_ex(s7_scheme *sc, s7_pointer f)
(is_syntactic_symbol(caar(body))))
{
set_optimize_op(code, hop + OP_CLOSURE_A_P);
- if (typesflag(car(body)) != SYNTACTIC_PAIR)
+ if (!is_syntactic_pair(car(body)))
{
pair_set_syntax_op(car(body), symbol_syntax_op(caar(body)));
set_syntactic_pair(car(body));
@@ -67921,7 +67709,7 @@ static int32_t read_s_ex(s7_scheme *sc)
s7_pointer port, code;
code = sc->code;
- port = find_symbol_unchecked(sc, cadr(code));
+ port = symbol_to_value_unchecked(sc, cadr(code));
if (!is_input_port(port)) /* was also not stdin */
{
@@ -67966,7 +67754,7 @@ static int32_t string_a_ex(s7_scheme *sc)
s7_pointer s, x, code;
code = sc->code;
- s = find_symbol_unchecked(sc, car(code));
+ s = symbol_to_value_unchecked(sc, car(code));
x = c_call(cdr(code))(sc, cadr(code));
if (!is_string(s))
{
@@ -67996,7 +67784,7 @@ static int32_t vector_a_ex(s7_scheme *sc)
s7_pointer v, x, code;
code = sc->code;
- v = find_symbol_unchecked(sc, car(code));
+ v = symbol_to_value_unchecked(sc, car(code));
if (!s7_is_vector(v))
{
sc->last_function = v;
@@ -68023,34 +67811,12 @@ static int32_t vector_a_ex(s7_scheme *sc)
return(goto_START);
}
-static int32_t constant_vector_a_ex(s7_scheme *sc)
-{
- s7_pointer v, x, code;
-
- code = sc->code;
- v = local_symbol_value(car(code));
- x = c_call(cdr(code))(sc, cadr(code));
- if (s7_is_integer(x))
- {
- s7_int index;
- index = s7_integer(x);
- if ((index < vector_length(v)) &&
- (index >= 0))
- {
- sc->value = vector_element(v, index);
- return(goto_START);
- }
- }
- sc->value = vector_ref_1(sc, v, set_plist_1(sc, x));
- return(goto_START);
-}
-
static void increment_1_ex(s7_scheme *sc)
{
/* ([set!] ctr (+ ctr 1)) */
s7_pointer val, y;
- y = find_symbol(sc, car(sc->code));
+ y = symbol_to_slot(sc, car(sc->code));
if (!is_slot(y))
eval_error_no_return(sc, sc->wrong_type_arg_symbol, "set! ~A: unbound variable", car(sc->code));
@@ -68088,7 +67854,7 @@ static void decrement_1_ex(s7_scheme *sc)
{
/* ([set!] ctr (- ctr 1)) */
s7_pointer val, y;
- y = find_symbol(sc, car(sc->code));
+ y = symbol_to_slot(sc, car(sc->code));
if (!is_slot(y))
eval_error_no_return(sc, sc->wrong_type_arg_symbol, "set! ~A: unbound variable", car(sc->code));
val = slot_value(y);
@@ -68129,7 +67895,7 @@ static void set_pws_ex(s7_scheme *sc)
obj = caar(sc->code);
if (is_symbol(obj))
{
- obj = find_symbol(sc, obj);
+ obj = symbol_to_slot(sc, obj);
if (is_slot(obj))
obj = slot_value(obj);
else eval_error_no_return(sc, sc->syntax_error_symbol, "no generalized set for ~A", caar(sc->code));
@@ -68141,7 +67907,7 @@ static void set_pws_ex(s7_scheme *sc)
s7_pointer value;
value = cadr(sc->code);
if (is_symbol(value))
- value = find_symbol_checked(sc, value);
+ value = symbol_to_value_checked(sc, value);
set_car(sc->t1_1, value);
sc->value = c_function_call(c_function_setter(obj))(sc, sc->t1_1);
@@ -68201,7 +67967,7 @@ static void apply_c_macro(s7_scheme *sc) /* -------- C-bas
sc->code = c_macro_call(sc->code)(sc, sc->args);
if (is_multiple_value(sc->code)) /* can this happen? s7_values splices before returning, and `(values ...) is handled later */
{
-#if DEBUGGING
+#if S7_DEBUGGING
fprintf(stderr, "%d unexpected mv code: %s\n", __LINE__, DISPLAY(sc->code));
#endif
push_stack(sc, OP_EVAL_MACRO_MV, sc->nil, cdr(sc->code));
@@ -68419,7 +68185,7 @@ static s7_pointer lambda_star_set_args(s7_scheme *sc)
* template in the car of the closure, binding as we go.
*
* for each actual arg, if it's not a keyword that matches a member of the
- * template, bind it to its current (place-wise) arg, else bind it to
+ * template, bind it to its current (place) arg, else bind it to
* that arg. If it's :rest bind the next arg to the trailing args at this point.
* All args can be accessed by their name as a keyword.
*
@@ -68572,7 +68338,7 @@ static int32_t lambda_star_default(s7_scheme *sc)
val = slot_expression(z);
if (is_symbol(val))
{
- slot_set_value(z, find_symbol_checked(sc, val));
+ slot_set_value(z, symbol_to_value_checked(sc, val));
if (slot_value(z) == sc->undefined)
{
/* the current environment here contains the function parameters which
@@ -68730,13 +68496,15 @@ static int32_t define1_ex(s7_scheme *sc)
* we want to ignore the rebinding (not raise an error) if it is the existing value.
* This happens when we reload a file that calls define-constant.
*/
- if (is_constant_symbol(sc, sc->code)) /* (define pi 3) or (define (pi a) a) */
+ if (is_multiple_value(sc->value)) /* (define x (values 1 2)) */
+ eval_error_no_return(sc, sc->syntax_error_symbol, "define: more than one value: ~S", sc->value);
+ if (is_constant_symbol(sc, sc->code)) /* (define pi 3) or (define (pi a) a) */
{
s7_pointer x;
if (is_slot(global_slot(sc->code)))
x = global_slot(sc->code);
- else x = find_symbol(sc, sc->code); /* local_slot can be free even if sc->code is immutable (local constant now defunct) */
+ else x = symbol_to_slot(sc, sc->code); /* local_slot can be free even if sc->code is immutable (local constant now defunct) */
if (!((is_slot(x)) &&
(type(sc->value) == unchecked_type(slot_value(x))) &&
(s7_is_morally_equal(sc, sc->value, slot_value(x))))) /* if value is unchanged, just ignore this (re)definition */
@@ -68745,7 +68513,7 @@ static int32_t define1_ex(s7_scheme *sc)
if (symbol_has_setter(sc->code))
{
s7_pointer x;
- x = find_symbol(sc, sc->code);
+ x = symbol_to_slot(sc, sc->code);
if ((is_slot(x)) &&
(slot_has_setter(x)))
{
@@ -68783,11 +68551,13 @@ static void define2_ex(s7_scheme *sc)
/* unbound_variable will be called if __func__ is encountered, and will return this info as if __func__ had some meaning */
let_set_file(new_env, port_file_number(sc->input_port));
let_set_line(new_env, port_line_number(sc->input_port));
+ set_has_let_file(new_env);
}
else
{
let_set_file(new_env, 0);
let_set_line(new_env, 0);
+ clear_has_let_file(new_env);
}
/* add the newly defined thing to the current environment */
@@ -68804,7 +68574,7 @@ static void define2_ex(s7_scheme *sc)
{
s7_pointer lx;
/* add the newly defined thing to the current environment */
- lx = find_local_symbol(sc, sc->code, sc->envir);
+ lx = symbol_to_local_slot(sc, sc->code, sc->envir);
if (is_slot(lx))
slot_set_value_with_hook(lx, sc->value);
else s7_make_slot(sc, sc->envir, sc->code, sc->value);
@@ -68896,7 +68666,7 @@ static s7_pointer g_profile_filename(s7_scheme *sc, s7_pointer args)
#if WITH_GCC
#undef new_cell
-#if (!DEBUGGING)
+#if (!S7_DEBUGGING)
#define new_cell(Sc, Obj, Type) \
do { \
if (Sc->free_heap_top <= Sc->free_heap_trigger) {try_to_call_gc(Sc); if ((Sc->begin_hook) && (call_begin_hook(Sc))) return(Sc->F);} \
@@ -68922,7 +68692,7 @@ static s7_pointer g_profile_filename(s7_scheme *sc, s7_pointer args)
static s7_pointer check_for_cyclic_code(s7_scheme *sc, s7_pointer code)
{
- if (cyclic_sequences(sc, code, false) == sc->T)
+ if (tree_is_cyclic(sc, code))
eval_error(sc, "attempt to evaluate a circular list: ~A", code);
resize_stack(sc); /* we've already checked that resize_stack is needed */
return(sc->F);
@@ -68932,10 +68702,11 @@ static s7_pointer check_for_cyclic_code(s7_scheme *sc, s7_pointer code)
static s7_pointer profile_at_start = NULL;
#endif
-#define SHOW_EVAL_OPS 0
-
static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
+#if SHOW_EVAL_OPS
+ fprintf(stderr, "eval %s\n", op_names[first_op]);
+#endif
sc->cur_op = first_op;
/* this procedure can be entered recursively (via s7_call for example), so it's no place for a setjmp
@@ -68981,7 +68752,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
*/
if (port_is_closed(sc->input_port))
- return(s7_error(sc, sc->read_error_symbol, set_elist_1(sc, s7_make_string_wrapper(sc, "our input port got clobbered!"))));
+ s7_error(sc, sc->read_error_symbol, set_elist_1(sc, s7_make_string_wrapper(sc, "our input port got clobbered!")));
sc->tok = token(sc);
switch (sc->tok)
@@ -69216,7 +68987,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
* since each "<" op above goes to OP_APPLY, we have ca 5 labels, and ca 25-50 lines
*/
- /* -------------------------------- MAP -------------------------------- */
+ /* -------------------------------- map -------------------------------- */
case OP_MAP_GATHER_1:
if (sc->value != sc->no_value)
{
@@ -69358,7 +69129,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
goto EVAL;
}
- /* -------------------------------- FOR-EACH -------------------------------- */
+ /* -------------------------------- for-each -------------------------------- */
case OP_FOR_EACH:
{
s7_pointer x, y, iterators, saved_args;
@@ -69467,7 +69238,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
}
- /* -------------------------------- MEMBER -------------------------------- */
+ /* -------------------------------- member -------------------------------- */
case OP_MEMBER_IF:
case OP_MEMBER_IF1:
{
@@ -69509,7 +69280,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
}
- /* -------------------------------- ASSOC -------------------------------- */
+ /* -------------------------------- assoc -------------------------------- */
case OP_ASSOC_IF:
case OP_ASSOC_IF1:
{
@@ -69556,7 +69327,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
}
- /* -------------------------------- DO -------------------------------- */
+ /* -------------------------------- do -------------------------------- */
#define do_all_x_end(Code) \
do {s7_pointer End; End = Code; sc->value = c_call(End)(sc, car(End)); if (is_true(sc, sc->value)) {sc->code = cdr(End); goto DO_END_CLAUSES;}} while (0)
@@ -69749,7 +69520,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
sc->envir = new_frame_in_env(sc, sc->envir);
init = cadaar(code);
if (is_symbol(init))
- sc->value = find_symbol_checked(sc, init);
+ sc->value = symbol_to_value_checked(sc, init);
else
{
if (is_pair(init))
@@ -69759,7 +69530,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
dox_set_slot1(sc->envir, make_slot_1(sc, sc->envir, caaar(code), sc->value));
end = caddr(caadr(code));
if (is_symbol(end))
- dox_set_slot2(sc->envir, find_symbol(sc, end));
+ dox_set_slot2(sc->envir, symbol_to_slot(sc, end));
else dox_set_slot2(sc->envir, make_slot_1(sc, sc->envir, sc->dox_slot_symbol, end));
set_car(sc->t2_1, slot_value(dox_slot1(sc->envir)));
@@ -70014,19 +69785,18 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
* I think not; the closure retains the current env chain, not the slots, so we need a new env.
*/
- /* sc->value = sc->nil; */
pop_stack_no_op(sc);
goto DO_END;
}
push_stack(sc, OP_DO_STEP2, sc->args, sc->code);
- /* here sc->args is a list like (((i . 0) (+ i 1) 0) ...)
- * so sc->code becomes (+ i 1) in this case
- */
+ /* here sc->args is a list like (((i . 0) (+ i 1) 0) ...) so sc->code becomes (+ i 1) in this case */
sc->code = DO_VAR_STEP_EXPR(car(sc->args));
goto EVAL;
case OP_DO_STEP2:
+ if (is_multiple_value(sc->value))
+ eval_error(sc, "do: variable step value can't be ~S", cons(sc, sc->values_symbol, sc->value));
DO_VAR_SET_NEW_VALUE(sc->args, sc->value); /* save current value */
sc->args = cdr(sc->args); /* go to next step var */
goto DO_STEP1;
@@ -70102,8 +69872,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
/* sc->value is the result of end-test evaluation */
if (is_true(sc, sc->value))
{
- /* we're done -- deal with result exprs
- * if there isn't an end test, there also isn't a result (they're in the same list)
+ /* we're done -- deal with result exprs, if there isn't an end test, there also isn't a result (they're in the same list)
+ * multiple-value end-test result is ok
*/
sc->code = _TLst(cddr(sc->args)); /* result expr (a list -- implicit begin) */
free_cell(sc, sc->args);
@@ -70171,12 +69941,12 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (is_pair(sc->code))
goto EVAL;
if (is_symbol(sc->code))
- sc->value = find_symbol_checked(sc, sc->code);
+ sc->value = symbol_to_value_checked(sc, sc->code);
else sc->value = sc->code;
goto START;
- /* -------------------------------- BEGIN -------------------------------- */
+ /* -------------------------------- begin -------------------------------- */
case OP_BEGIN:
if (!s7_is_proper_list(sc, sc->code)) /* proper list includes () */
eval_error(sc, "unexpected dot? ~A", sc->code);
@@ -70205,7 +69975,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
*/
/* fprintf(stderr, " eval: %s\n", DISPLAY_80(sc->code)); */
- if (typesflag(sc->code) == SYNTACTIC_PAIR) /* xor is not faster here, and bit check is slower */
+ if (is_syntactic_pair(sc->code)) /* xor is not faster here, and bit check is slower */
{
#if WITH_PROFILE
if (sc->code != profile_at_start)
@@ -70224,9 +69994,6 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
/* fprintf(stderr, " %s %s\n", opt_names[optimize_op(sc->code)], DISPLAY_80(sc->code)); */
OPT_EVAL:
-#if SHOW_EVAL_OPS
- fprintf(stderr, "opt_eval: %s %s\n", opt_names[optimize_op(sc->code)], DISPLAY_80(sc->code));
-#endif
#if WITH_PROFILE
if (sc->code != profile_at_start)
profile(sc, sc->code);
@@ -70244,6 +70011,10 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
* be slower in the computed goto case -- some timing tests are actually slower with gotos). Also
* the lack of a default case means an error => segfault rather than printing some useless error message.
*/
+ INNER_OPT_EVAL:
+#if SHOW_EVAL_OPS
+ fprintf(stderr, "opt_eval: %s %s\n", opt_names[optimize_op(sc->code)], DISPLAY_80(sc->code));
+#endif
switch (optimize_op(code))
{
/* -------------------------------------------------------------------------------- */
@@ -70257,7 +70028,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_SAFE_C_C:
- if (!c_function_is_ok(sc, code)) {if (is_null(cddr(code))) {set_optimize_op(code, OP_S_C); goto OPT_EVAL;} break;}
+ if (!c_function_is_ok(sc, code)) {if (is_null(cddr(code))) {set_optimize_op(code, OP_S_C); goto INNER_OPT_EVAL;} break;}
/* break = fall into the "trailers" section where optimizations are cleared */
case HOP_SAFE_C_C:
sc->value = c_call(code)(sc, cdr(code)); /* this includes all safe calls where all args are constants */
@@ -70288,75 +70059,68 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
goto START;
case OP_SAFE_C_S:
- if (!c_function_is_ok(sc, code)) {set_optimize_op(code, OP_S_S); goto OPT_EVAL;}
+ if (!c_function_is_ok(sc, code)) {set_optimize_op(code, OP_S_S); goto INNER_OPT_EVAL;}
case HOP_SAFE_C_S:
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(code)));
- sc->value = c_call(code)(sc, sc->t1_1);
- goto START;
-
- case OP_SAFE_C_L:
- if (!c_function_is_ok(sc, code)) {set_optimize_op(code, OP_S_S); goto OPT_EVAL;}
- case HOP_SAFE_C_L:
- set_car(sc->t1_1, local_symbol_value(cadr(code)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(code)));
sc->value = c_call(code)(sc, sc->t1_1);
goto START;
case OP_SAFE_CAR_S:
- if (!c_function_is_ok(sc, code)) {set_optimize_op(code, OP_S_S); goto OPT_EVAL;}
+ if (!c_function_is_ok(sc, code)) {set_optimize_op(code, OP_S_S); goto INNER_OPT_EVAL;}
case HOP_SAFE_CAR_S:
{
s7_pointer val;
- val = find_symbol_unchecked(sc, cadr(code));
+ val = symbol_to_value_unchecked(sc, cadr(code));
sc->value = (is_pair(val)) ? car(val) : g_car(sc, set_plist_1(sc, val));
goto START;
}
case OP_SAFE_CDR_S:
- if (!c_function_is_ok(sc, code)) {set_optimize_op(code, OP_S_S); goto OPT_EVAL;}
+ if (!c_function_is_ok(sc, code)) {set_optimize_op(code, OP_S_S); goto INNER_OPT_EVAL;}
case HOP_SAFE_CDR_S:
{
s7_pointer val;
- val = find_symbol_unchecked(sc, cadr(code));
+ val = symbol_to_value_unchecked(sc, cadr(code));
sc->value = (is_pair(val)) ? cdr(val) : g_cdr(sc, set_plist_1(sc, val));
goto START;
}
case OP_SAFE_CADR_S:
- if (!c_function_is_ok(sc, code)) {set_optimize_op(code, OP_S_S); goto OPT_EVAL;}
+ if (!c_function_is_ok(sc, code)) {set_optimize_op(code, OP_S_S); goto INNER_OPT_EVAL;}
case HOP_SAFE_CADR_S:
{
s7_pointer val;
- val = find_symbol_unchecked(sc, cadr(code));
+ val = symbol_to_value_unchecked(sc, cadr(code));
sc->value = ((is_pair(val)) && (is_pair(cdr(val)))) ? cadr(val) : g_cadr(sc, set_plist_1(sc, val));
goto START;
}
case OP_SAFE_IS_PAIR_S:
- if (!c_function_is_ok(sc, code)) {set_optimize_op(code, OP_S_S); goto OPT_EVAL;}
+ if (!c_function_is_ok(sc, code)) {set_optimize_op(code, OP_S_S); goto INNER_OPT_EVAL;}
case HOP_SAFE_IS_PAIR_S:
{
s7_pointer val;
- val = find_symbol_unchecked(sc, cadr(code));
+ val = symbol_to_value_unchecked(sc, cadr(code));
sc->value = (is_pair(val)) ? sc->T : sc->F;
goto START;
}
case OP_SAFE_IS_NULL_S:
- if (!c_function_is_ok(sc, code)) {set_optimize_op(code, OP_S_S); goto OPT_EVAL;}
+ if (!c_function_is_ok(sc, code)) {set_optimize_op(code, OP_S_S); goto INNER_OPT_EVAL;}
case HOP_SAFE_IS_NULL_S:
{
s7_pointer val;
- val = find_symbol_unchecked(sc, cadr(code));
+ val = symbol_to_value_unchecked(sc, cadr(code));
sc->value = (is_null(val)) ? sc->T : sc->F;
goto START;
}
case OP_SAFE_IS_SYMBOL_S:
- if (!c_function_is_ok(sc, code)) {set_optimize_op(code, OP_S_S); goto OPT_EVAL;}
+ if (!c_function_is_ok(sc, code)) {set_optimize_op(code, OP_S_S); goto INNER_OPT_EVAL;}
case HOP_SAFE_IS_SYMBOL_S:
{
s7_pointer val;
- val = find_symbol_unchecked(sc, cadr(code));
+ val = symbol_to_value_unchecked(sc, cadr(code));
sc->value = (is_symbol(val)) ? sc->T : sc->F;
goto START;
}
@@ -70367,25 +70131,13 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer val, args;
args = cdr(code);
- val = find_symbol_unchecked(sc, car(args));
- set_car(sc->t2_2, find_symbol_unchecked(sc, cadr(args)));
+ val = symbol_to_value_unchecked(sc, car(args));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, cadr(args)));
set_car(sc->t2_1, val);
sc->value = c_call(code)(sc, sc->t2_1);
goto START;
}
- case OP_SAFE_C_LL:
- if (!c_function_is_ok(sc, code)) break;
- case HOP_SAFE_C_LL:
- {
- s7_pointer args;
- args = cdr(code);
- set_car(sc->t2_1, local_symbol_value(car(args)));
- set_car(sc->t2_2, local_symbol_value(cadr(args)));
- sc->value = c_call(code)(sc, sc->t2_1);
- goto START;
- }
-
case OP_SAFE_C_ALL_S:
if (!c_function_is_ok(sc, code)) break;
case HOP_SAFE_C_ALL_S:
@@ -70394,7 +70146,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
sc->args = safe_list_if_possible(sc, integer(arglist_length(code)));
for (args = cdr(code), p = sc->args; is_pair(args); args = cdr(args), p = cdr(p))
- set_car(p, find_symbol_unchecked(sc, car(args)));
+ set_car(p, symbol_to_value_unchecked(sc, car(args)));
clear_list_in_use(sc->args);
sc->current_safe_list = 0;
sc->value = c_call(code)(sc, sc->args);
@@ -70407,7 +70159,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer args;
args = cdr(code);
- set_car(sc->t2_1, find_symbol_unchecked(sc, car(args)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, car(args)));
set_car(sc->t2_2, cadr(args));
sc->value = c_call(code)(sc, sc->t2_1);
goto START;
@@ -70419,7 +70171,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer args;
args = cdr(code);
- set_car(sc->t2_2, find_symbol_unchecked(sc, cadr(args)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, cadr(args)));
set_car(sc->t2_1, car(args));
sc->value = c_call(code)(sc, sc->t2_1);
goto START;
@@ -70428,7 +70180,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_SAFE_C_SQ:
if (!c_function_is_ok(sc, code)) break;
case HOP_SAFE_C_SQ:
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(code)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(code)));
set_car(sc->t2_2, opt_con1(cdr(code)));
sc->value = c_call(code)(sc, sc->t2_1);
goto START;
@@ -70439,7 +70191,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer args;
args = cdr(code);
- set_car(sc->t2_2, find_symbol_unchecked(sc, cadr(args)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, cadr(args)));
set_car(sc->t2_1, cadr(car(args)));
sc->value = c_call(code)(sc, sc->t2_1);
goto START;
@@ -70533,7 +70285,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case HOP_SAFE_C_SZ:
/* about 10% appear to be local symbols */
check_stack_size(sc);
- push_stack(sc, OP_EVAL_ARGS_P_2, find_symbol_unchecked(sc, cadr(code)), code);
+ push_stack(sc, OP_EVAL_ARGS_P_2, symbol_to_value_unchecked(sc, cadr(code)), code);
sc->code = _TPair(caddr(code)); /* splitting out the all_x cases here and elsewhere saves nothing */
goto OPT_EVAL_CHECKED;
@@ -70595,7 +70347,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
arg = caddr(code);
set_car(sc->a1_1, c_call(cdr(arg))(sc, cadr(arg)));
set_car(sc->t2_2, c_call(arg)(sc, sc->a1_1));
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(code)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(code)));
sc->value = c_call(code)(sc, sc->t2_1);
goto START;
}
@@ -70608,7 +70360,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
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)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(code)));
sc->value = c_call(code)(sc, sc->t2_1);
goto START;
}
@@ -70623,7 +70375,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
set_car(sc->a2_2, c_call(cddr(arg))(sc, caddr(arg)));
set_car(sc->a2_1, val1);
set_car(sc->t2_2, c_call(arg)(sc, sc->a2_1));
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(code)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(code)));
sc->value = c_call(code)(sc, sc->t2_1);
goto START;
}
@@ -70643,7 +70395,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
set_car(sc->a3_1, val1);
set_car(sc->a3_2, val2);
set_car(sc->t2_2, c_call(p)(sc, sc->a3_1));
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(code)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(code)));
sc->value = c_call(code)(sc, sc->t2_1);
goto START;
}
@@ -70651,7 +70403,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_SAFE_C_S_opSZq:
if (!c_function_is_ok(sc, code)) break;
case HOP_SAFE_C_S_opSZq:
- push_stack(sc, OP_SAFE_C_SZ_SZ, find_symbol_unchecked(sc, cadr(caddr(code))), code);
+ push_stack(sc, OP_SAFE_C_SZ_SZ, symbol_to_value_unchecked(sc, cadr(caddr(code))), code);
sc->code = _TPair(caddr(caddr(code)));
goto OPT_EVAL_CHECKED;
@@ -70766,7 +70518,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_SAFE_C_A:
if (!c_function_is_ok(sc, code))
{
- if (unknown_a_ex(sc, find_symbol_checked(sc, car(code))) == goto_OPT_EVAL)
+ if (unknown_a_ex(sc, symbol_to_value_checked(sc, car(code))) == goto_OPT_EVAL)
{
if (op_no_hop(sc->code) == OP_SAFE_C_A)
{
@@ -70776,7 +70528,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
}
}
else set_optimize_op(code, OP_S_A);
- goto OPT_EVAL;
+ goto INNER_OPT_EVAL;
}
case HOP_SAFE_C_A:
set_car(sc->a1_1, c_call(cdr(code))(sc, cadr(code)));
@@ -70824,9 +70576,9 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer arg, val1, val2;
arg = cdr(code);
- val1 = find_symbol_unchecked(sc, car(arg));
+ val1 = symbol_to_value_unchecked(sc, car(arg));
arg = cdr(arg);
- val2 = find_symbol_unchecked(sc, car(arg));
+ val2 = symbol_to_value_unchecked(sc, car(arg));
arg = cdr(arg);
set_car(sc->a3_3, c_call(arg)(sc, car(arg)));
set_car(sc->a3_1, val1);
@@ -70841,11 +70593,11 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer arg;
arg = cdr(code);
- set_car(sc->a3_1, find_symbol_unchecked(sc, car(arg)));
+ set_car(sc->a3_1, symbol_to_value_unchecked(sc, car(arg)));
arg = cdr(arg);
set_car(sc->a3_2, c_call(arg)(sc, car(arg)));
arg = cdr(arg);
- set_car(sc->a3_3, find_symbol_unchecked(sc, car(arg)));
+ set_car(sc->a3_3, symbol_to_value_unchecked(sc, car(arg)));
sc->value = c_call(code)(sc, sc->a3_1);
goto START;
}
@@ -70858,7 +70610,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
arg = cdr(code);
set_car(sc->a3_1, car(arg));
arg = cdr(arg);
- set_car(sc->a3_2, find_symbol_unchecked(sc, car(arg)));
+ set_car(sc->a3_2, symbol_to_value_unchecked(sc, car(arg)));
arg = cdr(arg);
set_car(sc->a3_3, c_call(arg)(sc, car(arg)));
sc->value = c_call(code)(sc, sc->a3_1);
@@ -70871,7 +70623,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer arg;
arg = cdr(code);
- set_car(sc->a3_1, find_symbol_unchecked(sc, car(arg)));
+ set_car(sc->a3_1, symbol_to_value_unchecked(sc, car(arg)));
arg = cdr(arg);
set_car(sc->a3_2, car(arg));
arg = cdr(arg);
@@ -70885,6 +70637,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case HOP_SAFE_C_AAAA:
{
s7_pointer arg, val1, val2, val3;
+ int32_t tx;
+ tx = next_tx(sc);
arg = cdr(code);
val1 = c_call(arg)(sc, car(arg));
sc->temp4 = val1;
@@ -70893,7 +70647,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
sc->temp11 = val2;
arg = cdr(arg);
val3 = c_call(arg)(sc, car(arg));
- sc->temp5 = val3;
+ sc->t_temps[tx] = val3;
arg = cdr(arg);
set_car(sc->a4_4, c_call(arg)(sc, car(arg)));
set_car(sc->a4_1, val1);
@@ -70901,7 +70655,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
set_car(sc->a4_3, val3);
sc->value = c_call(code)(sc, sc->a4_1);
sc->temp4 = sc->nil;
- sc->temp5 = sc->nil;
+ sc->t_temps[tx] = sc->nil;
sc->temp11 = sc->nil;
goto START;
}
@@ -70933,8 +70687,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
/* (let-set! gen 'fm fm); many of these are handled in safe_closure_star_s0 */
s7_pointer val1, args;
args = cdr(code);
- val1 = find_symbol_unchecked(sc, car(args));
- set_car(sc->t3_3, find_symbol_unchecked(sc, opt_sym2(args)));
+ val1 = symbol_to_value_unchecked(sc, car(args));
+ set_car(sc->t3_3, symbol_to_value_unchecked(sc, opt_sym2(args)));
set_car(sc->t3_2, opt_con1(args));
set_car(sc->t3_1, val1);
sc->value = c_call(code)(sc, sc->t3_1);
@@ -70949,8 +70703,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
s7_pointer val1, args;
args = cdr(code);
- val1 = find_symbol_unchecked(sc, car(args));
- set_car(sc->t3_3, find_symbol_unchecked(sc, opt_sym2(args)));
+ val1 = symbol_to_value_unchecked(sc, car(args));
+ set_car(sc->t3_3, symbol_to_value_unchecked(sc, opt_sym2(args)));
set_car(sc->t3_2, opt_con1(args));
set_car(sc->t3_1, val1);
sc->value = c_call(code)(sc, sc->t3_1);
@@ -70965,8 +70719,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
s7_pointer val1, args;
args = cdr(code);
- val1 = find_symbol_unchecked(sc, car(args));
- set_car(sc->t3_2, find_symbol_unchecked(sc, opt_sym1(args)));
+ val1 = symbol_to_value_unchecked(sc, car(args));
+ set_car(sc->t3_2, symbol_to_value_unchecked(sc, opt_sym1(args)));
set_car(sc->t3_3, opt_con2(args));
set_car(sc->t3_1, val1);
sc->value = c_call(code)(sc, sc->t3_1);
@@ -70981,7 +70735,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
s7_pointer args;
args = cdr(code);
- set_car(sc->t3_1, find_symbol_unchecked(sc, car(args)));
+ set_car(sc->t3_1, symbol_to_value_unchecked(sc, car(args)));
set_car(sc->t3_2, opt_con1(args));
set_car(sc->t3_3, opt_con2(args));
sc->value = c_call(code)(sc, sc->t3_1);
@@ -70995,7 +70749,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
s7_pointer args;
args = cdr(code);
- set_car(sc->t3_2, find_symbol_unchecked(sc, opt_sym1(args)));
+ set_car(sc->t3_2, symbol_to_value_unchecked(sc, opt_sym1(args)));
set_car(sc->t3_1, car(args));
set_car(sc->t3_3, opt_con2(args));
sc->value = c_call(code)(sc, sc->t3_1);
@@ -71009,7 +70763,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
s7_pointer args;
args = cdr(code);
- set_car(sc->t3_3, find_symbol_unchecked(sc, opt_sym1(args)));
+ set_car(sc->t3_3, symbol_to_value_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);
@@ -71023,8 +70777,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
s7_pointer val1, args;
args = cdr(code);
- val1 = find_symbol_unchecked(sc, opt_sym2(args));
- set_car(sc->t3_2, find_symbol_unchecked(sc, opt_sym1(args)));
+ val1 = symbol_to_value_unchecked(sc, opt_sym2(args));
+ set_car(sc->t3_2, symbol_to_value_unchecked(sc, opt_sym1(args)));
set_car(sc->t3_3, val1);
set_car(sc->t3_1, car(args));
sc->value = c_call(code)(sc, sc->t3_1);
@@ -71038,9 +70792,9 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
s7_pointer val1, val2, args;
args = cdr(code);
- val1 = find_symbol_unchecked(sc, car(args));
- val2 = find_symbol_unchecked(sc, opt_sym1(args));
- set_car(sc->t3_3, find_symbol_unchecked(sc, opt_sym2(args)));
+ val1 = symbol_to_value_unchecked(sc, car(args));
+ val2 = symbol_to_value_unchecked(sc, opt_sym1(args));
+ set_car(sc->t3_3, symbol_to_value_unchecked(sc, opt_sym2(args)));
set_car(sc->t3_1, val1);
set_car(sc->t3_2, val2);
sc->value = c_call(code)(sc, sc->t3_1);
@@ -71060,7 +70814,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer args;
args = cadr(code);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(args)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(args)));
set_car(sc->t1_1, c_call(args)(sc, sc->t1_1));
sc->value = c_call(code)(sc, sc->t1_1);
goto START;
@@ -71073,7 +70827,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
s7_pointer outer, args;
outer = cadr(code);
args = cadr(outer);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(args)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(args)));
set_car(sc->t1_1, c_call(args)(sc, sc->t1_1));
set_car(sc->t1_1, c_call(outer)(sc, sc->t1_1));
sc->value = c_call(code)(sc, sc->t1_1);
@@ -71089,9 +70843,9 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
s7_pointer outer, args;
outer = cadr(code);
args = caddr(outer);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(args)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(args)));
set_car(sc->t2_2, c_call(args)(sc, sc->t1_1));
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(outer)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(outer)));
set_car(sc->t1_1, c_call(outer)(sc, sc->t2_1));
sc->value = c_call(code)(sc, sc->t1_1);
goto START;
@@ -71105,9 +70859,9 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
s7_pointer outer, args;
outer = cadr(code);
args = cadr(outer);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(args)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(args)));
set_car(sc->t2_1, c_call(args)(sc, sc->t1_1));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(outer)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(outer)));
set_car(sc->t1_1, c_call(outer)(sc, sc->t2_1));
sc->value = c_call(code)(sc, sc->t1_1);
goto START;
@@ -71145,7 +70899,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (!c_function_is_ok(sc, code)) break;
case HOP_SAFE_C_SP:
check_stack_size(sc);
- push_stack(sc, OP_EVAL_ARGS_P_2, find_symbol_unchecked(sc, cadr(code)), code);
+ push_stack(sc, OP_EVAL_ARGS_P_2, symbol_to_value_unchecked(sc, cadr(code)), code);
sc->code = caddr(code);
goto EVAL;
@@ -71203,8 +70957,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer args, val1;
args = cadr(code);
- val1 = find_symbol_unchecked(sc, cadr(args));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(args)));
+ val1 = symbol_to_value_unchecked(sc, cadr(args));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(args)));
set_car(sc->t2_1, val1);
set_car(sc->t1_1, c_call(args)(sc, sc->t2_1));
sc->value = c_call(code)(sc, sc->t1_1);
@@ -71217,7 +70971,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer args;
args = cadr(code);
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(args)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(args)));
set_car(sc->t2_2, caddr(args));
set_car(sc->t1_1, c_call(args)(sc, sc->t2_1));
sc->value = c_call(code)(sc, sc->t1_1);
@@ -71230,7 +70984,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer args;
args = cadr(code);
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(args)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(args)));
set_car(sc->t2_1, cadr(args));
set_car(sc->t1_1, c_call(args)(sc, sc->t2_1));
sc->value = c_call(code)(sc, sc->t1_1);
@@ -71243,7 +70997,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer args;
args = cadr(code);
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(args)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(args)));
set_car(sc->t2_2, cadr(caddr(args)));
set_car(sc->t1_1, c_call(args)(sc, sc->t2_1));
sc->value = c_call(code)(sc, sc->t1_1);
@@ -71256,7 +71010,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer args;
args = cadr(code);
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(args)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(args)));
set_car(sc->t2_1, cadadr(args));
set_car(sc->t1_1, c_call(args)(sc, sc->t2_1));
sc->value = c_call(code)(sc, sc->t1_1);
@@ -71269,8 +71023,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer args, val;
args = cdr(code);
- val = find_symbol_unchecked(sc, car(args));
- set_car(sc->t1_1, find_symbol_unchecked(sc, opt_sym1(args)));
+ val = symbol_to_value_unchecked(sc, car(args));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, opt_sym1(args)));
set_car(sc->t2_2, c_call(cadr(args))(sc, sc->t1_1));
set_car(sc->t2_1, val);
sc->value = c_call(code)(sc, sc->t2_1);
@@ -71283,7 +71037,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer args, val;
args = cdr(code);
- val = find_symbol_unchecked(sc, car(args));
+ val = symbol_to_value_unchecked(sc, car(args));
set_car(sc->t2_2, c_call(cadr(args))(sc, opt_pair1(args))); /* any number of constants here */
set_car(sc->t2_1, val);
sc->value = c_call(code)(sc, sc->t2_1);
@@ -71296,7 +71050,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer args;
args = cdr(code);
- set_car(sc->t1_1, find_symbol_unchecked(sc, opt_sym1(args)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, opt_sym1(args)));
set_car(sc->t2_2, c_call(cadr(args))(sc, sc->t1_1));
set_car(sc->t2_1, car(args));
sc->value = c_call(code)(sc, sc->t2_1);
@@ -71321,7 +71075,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer args;
args = cdr(code);
- set_car(sc->t2_2, find_symbol_unchecked(sc, opt_sym2(args)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, opt_sym2(args)));
set_car(sc->t2_1, opt_con1(args));
set_car(sc->t2_2, c_call(cadr(args))(sc, sc->t2_1));
set_car(sc->t2_1, car(args));
@@ -71335,8 +71089,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer args, val;
args = cdr(code);
- val = find_symbol_unchecked(sc, opt_sym1(args));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(cadr(args)))); /* opt_sym2(args) */
+ val = symbol_to_value_unchecked(sc, opt_sym1(args));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(cadr(args)))); /* opt_sym2(args) */
set_car(sc->t2_1, val);
set_car(sc->t2_2, c_call(cadr(args))(sc, sc->t2_1));
set_car(sc->t2_1, car(args));
@@ -71350,7 +71104,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer args;
args = cdr(code);
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(car(args))));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(car(args))));
set_car(sc->t2_1, cadr(car(args)));
set_car(sc->t2_1, c_call(car(args))(sc, sc->t2_1));
set_car(sc->t2_2, cadr(args));
@@ -71364,8 +71118,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer args, val;
args = cdr(code);
- val = find_symbol_unchecked(sc, cadr(car(args)));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(car(args))));
+ val = symbol_to_value_unchecked(sc, cadr(car(args)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(car(args))));
set_car(sc->t2_1, val);
set_car(sc->t2_1, c_call(car(args))(sc, sc->t2_1));
set_car(sc->t2_2, cadr(args));
@@ -71379,9 +71133,9 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer args, val, val1;
args = cdr(code);
- val = find_symbol_unchecked(sc, cadr(car(args)));
- val1 = find_symbol_unchecked(sc, cadr(args));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(car(args))));
+ val = symbol_to_value_unchecked(sc, cadr(car(args)));
+ val1 = symbol_to_value_unchecked(sc, cadr(args));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(car(args))));
set_car(sc->t2_1, val);
set_car(sc->t2_1, c_call(car(args))(sc, sc->t2_1));
set_car(sc->t2_2, val1);
@@ -71396,8 +71150,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
/* code: (> (magnitude (- old new)) 0.001) */
s7_pointer arg;
arg = cadadr(code);
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(arg)));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(arg)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(arg)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(arg)));
set_car(sc->t1_1, c_call(arg)(sc, sc->t2_1));
set_car(sc->t2_1, c_call(cadr(code))(sc, sc->t1_1));
set_car(sc->t2_2, caddr(code));
@@ -71412,11 +71166,11 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
/* code: (> (magnitude (- old new)) s) */
s7_pointer arg;
arg = cadadr(code);
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(arg)));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(arg)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(arg)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(arg)));
set_car(sc->t1_1, c_call(arg)(sc, sc->t2_1));
set_car(sc->t2_1, c_call(cadr(code))(sc, sc->t1_1));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(code)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(code)));
sc->value = c_call(code)(sc, sc->t2_1);
goto START;
}
@@ -71427,7 +71181,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer arg;
arg = cadadr(code);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(arg)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(arg)));
set_car(sc->t1_1, c_call(arg)(sc, sc->t1_1));
set_car(sc->t2_1, c_call(cadr(code))(sc, sc->t1_1));
set_car(sc->t2_2, caddr(code));
@@ -71441,10 +71195,10 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer arg;
arg = cadadr(code);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(arg)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(arg)));
set_car(sc->t1_1, c_call(arg)(sc, sc->t1_1));
set_car(sc->t2_1, c_call(cadr(code))(sc, sc->t1_1));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(code)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(code)));
sc->value = c_call(code)(sc, sc->t2_1);
goto START;
}
@@ -71462,14 +71216,14 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
s7_pointer args, val, val1;
args = caddr(code); /* (* (- b c) d) */
val1 = cadr(args);
- val = find_symbol_unchecked(sc, cadr(val1)); /* b */
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(val1))); /* c */
+ val = symbol_to_value_unchecked(sc, cadr(val1)); /* b */
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(val1))); /* c */
set_car(sc->t2_1, val);
- val = find_symbol_unchecked(sc, caddr(args)); /* d */
+ val = symbol_to_value_unchecked(sc, caddr(args)); /* d */
set_car(sc->t2_1, c_call(val1)(sc, sc->t2_1)); /* (- b c) */
set_car(sc->t2_2, val);
set_car(sc->t2_2, c_call(args)(sc, sc->t2_1)); /* (* ...) */
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(code))); /* a */
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(code))); /* a */
sc->value = c_call(code)(sc, sc->t2_1); /* (+ ...) */
goto START;
}
@@ -71482,12 +71236,12 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
s7_pointer args, val, val1;
args = caddr(code);
val1 = caddr(args);
- val = find_symbol_unchecked(sc, cadr(args));
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(val1)));
+ val = symbol_to_value_unchecked(sc, cadr(args));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(val1)));
set_car(sc->t2_2, c_call(val1)(sc, sc->t1_1));
set_car(sc->t2_1, val);
set_car(sc->t2_2, c_call(args)(sc, sc->t2_1));
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(code)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(code)));
sc->value = c_call(code)(sc, sc->t2_1);
goto START;
}
@@ -71500,14 +71254,14 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
s7_pointer args, val, val1;
args = caddr(code); /* (* d (- b c)) */
val1 = caddr(args);
- val = find_symbol_unchecked(sc, cadr(val1)); /* b */
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(val1))); /* c */
+ val = symbol_to_value_unchecked(sc, cadr(val1)); /* b */
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(val1))); /* c */
set_car(sc->t2_1, val);
- val = find_symbol_unchecked(sc, cadr(args)); /* d */
+ val = symbol_to_value_unchecked(sc, cadr(args)); /* d */
set_car(sc->t2_2, c_call(val1)(sc, sc->t2_1)); /* (- b c) */
set_car(sc->t2_1, val);
set_car(sc->t2_2, c_call(args)(sc, sc->t2_1)); /* (* ...) */
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(code))); /* a */
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(code))); /* a */
sc->value = c_call(code)(sc, sc->t2_1); /* (+ ...) */
goto START;
}
@@ -71525,18 +71279,19 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
op1 = cadr(args);
op2 = caddr(args);
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(op1)));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(op1)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(op1)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(op1)));
sc->t_temps[tx] = c_call(op1)(sc, sc->t2_1);
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(op2)));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(op2)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(op2)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(op2)));
set_car(sc->t2_2, c_call(op2)(sc, sc->t2_1));
set_car(sc->t2_1, sc->t_temps[tx]);
set_car(sc->t2_2, c_call(args)(sc, sc->t2_1));
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(code)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(code)));
sc->value = c_call(code)(sc, sc->t2_1);
+ sc->t_temps[tx] = sc->F;
goto START;
}
@@ -71546,8 +71301,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer args, val1;
args = cdr(code);
- val1 = find_symbol_unchecked(sc, cadr(args));
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(car(args))));
+ val1 = symbol_to_value_unchecked(sc, cadr(args));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(car(args))));
set_car(sc->t2_2, caddr(car(args)));
set_car(sc->t2_1, c_call(car(args))(sc, sc->t2_1));
set_car(sc->t2_2, val1);
@@ -71561,7 +71316,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer args;
args = cdr(code);
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(car(args))));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(car(args))));
set_car(sc->t2_2, caddr(car(args)));
set_car(sc->t2_1, c_call(car(args))(sc, sc->t2_1));
set_car(sc->t2_2, cadr(args));
@@ -71575,8 +71330,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer args, val1;
args = cdr(code);
- val1 = find_symbol_unchecked(sc, cadr(args));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(car(args))));
+ val1 = symbol_to_value_unchecked(sc, cadr(args));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(car(args))));
set_car(sc->t2_1, cadr(car(args)));
set_car(sc->t2_1, c_call(car(args))(sc, sc->t2_1));
set_car(sc->t2_2, val1);
@@ -71590,8 +71345,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer val1, args;
args = cdr(code);
- val1 = find_symbol_unchecked(sc, car(args));
- set_car(sc->t2_1, find_symbol_unchecked(sc, opt_sym1(args)));
+ val1 = symbol_to_value_unchecked(sc, car(args));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, opt_sym1(args)));
set_car(sc->t2_2, opt_con2(args));
set_car(sc->t2_2, c_call(cadr(args))(sc, sc->t2_1));
set_car(sc->t2_1, val1);
@@ -71605,7 +71360,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer args;
args = cdr(code);
- set_car(sc->t2_1, find_symbol_unchecked(sc, opt_sym1(args)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, opt_sym1(args)));
set_car(sc->t2_2, opt_con2(args));
set_car(sc->t2_2, c_call(cadr(args))(sc, sc->t2_1));
set_car(sc->t2_1, car(args));
@@ -71620,9 +71375,9 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
/* (* a (- b c)) */
s7_pointer val1, val2, args;
args = cdr(code);
- val1 = find_symbol_unchecked(sc, car(args));
- val2 = find_symbol_unchecked(sc, opt_sym1(args));
- set_car(sc->t2_2, find_symbol_unchecked(sc, opt_sym2(args)));
+ val1 = symbol_to_value_unchecked(sc, car(args));
+ val2 = symbol_to_value_unchecked(sc, opt_sym1(args));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, opt_sym2(args)));
set_car(sc->t2_1, val2);
set_car(sc->t2_2, c_call(cadr(args))(sc, sc->t2_1));
set_car(sc->t2_1, val1);
@@ -71637,8 +71392,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
/* (* a (- 1 b)) or (logand a (ash 1 b)) */
s7_pointer val1, args;
args = cdr(code);
- val1 = find_symbol_unchecked(sc, car(args)); /* a */
- set_car(sc->t2_2, find_symbol_unchecked(sc, opt_sym2(args))); /* b */
+ val1 = symbol_to_value_unchecked(sc, car(args)); /* a */
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, opt_sym2(args))); /* b */
set_car(sc->t2_1, opt_con1(args)); /* 1 */
set_car(sc->t2_2, c_call(cadr(args))(sc, sc->t2_1)); /* (- 1 b) */
set_car(sc->t2_1, val1);
@@ -71654,11 +71409,12 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
int32_t tx;
tx = next_tx(sc);
args = cdr(code);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(car(args))));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(car(args))));
sc->t_temps[tx] = c_call(car(args))(sc, sc->t1_1);
- set_car(sc->t2_2, find_symbol_unchecked(sc, cadr(args)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, cadr(args)));
set_car(sc->t2_1, sc->t_temps[tx]);
sc->value = c_call(code)(sc, sc->t2_1);
+ sc->t_temps[tx] = sc->F;
goto START;
}
@@ -71669,7 +71425,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
s7_pointer args, val;
args = cadr(code);
check_stack_size(sc);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(args)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(args)));
val = c_call(args)(sc, sc->t1_1);
push_stack(sc, OP_EVAL_ARGS_P_2, val, sc->code);
sc->code = caddr(code);
@@ -71682,7 +71438,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer arg1; /* (let-ref (cdr v) 'x) */
arg1 = cadr(code);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(arg1)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(arg1)));
set_car(sc->t2_1, c_call(arg1)(sc, sc->t1_1));
set_car(sc->t2_2, opt_con2(cdr(code))); /* cadr(caddr(code)) */
sc->value = c_call(code)(sc, sc->t2_1);
@@ -71695,8 +71451,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer arg1, arg3; /* (let-set! (cdr v) 'x y) */
arg1 = cadr(code);
- arg3 = find_symbol_unchecked(sc, opt_sym2(cdr(code))); /* cadddr(code) */
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(arg1)));
+ arg3 = symbol_to_value_unchecked(sc, opt_sym2(cdr(code))); /* cadddr(code) */
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(arg1)));
set_car(sc->t3_1, c_call(arg1)(sc, sc->t1_1));
set_car(sc->t3_2, opt_con1(cdr(code))); /* cadr(caddr(code)) */
set_car(sc->t3_3, arg3);
@@ -71710,7 +71466,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer args, val;
args = cdr(code);
- val = find_symbol_unchecked(sc, cadr(args));
+ val = symbol_to_value_unchecked(sc, cadr(args));
set_car(sc->t2_1, c_call(car(args))(sc, cdar(args)));
set_car(sc->t2_2, val);
sc->value = c_call(code)(sc, sc->t2_1);
@@ -71735,7 +71491,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer args;
args = cdr(code);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(car(args))));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(car(args))));
set_car(sc->t2_1, c_call(car(args))(sc, sc->t1_1));
set_car(sc->t2_2, cadr(args));
sc->value = c_call(code)(sc, sc->t2_1);
@@ -71752,7 +71508,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
arg1 = cadr(args); /* op_S_opCqq */
arg2 = caddr(arg1); /* opCq */
set_car(sc->t2_2, c_call(arg2)(sc, cdr(arg2)));
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(arg1)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(arg1)));
set_car(sc->t2_2, c_call(arg1)(sc, sc->t2_1));
set_car(sc->t2_1, car(args));
sc->value = c_call(code)(sc, sc->t2_1);
@@ -71767,13 +71523,14 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
int32_t tx;
tx = next_tx(sc);
args = cdr(code);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(car(args))));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(car(args))));
sc->t_temps[tx] = c_call(car(args))(sc, sc->t1_1);
args = cadr(args);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(args)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(args)));
set_car(sc->t2_2, c_call(args)(sc, sc->t1_1));
set_car(sc->t2_1, sc->t_temps[tx]);
sc->value = c_call(code)(sc, sc->t2_1);
+ sc->t_temps[tx] = sc->F;
goto START;
}
@@ -71789,6 +71546,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
set_car(sc->t2_2, c_call(cadr(args))(sc, cdadr(args))); /* this can clobber sc->t2_1! */
set_car(sc->t2_1, sc->t_temps[tx]);
sc->value = c_call(code)(sc, sc->t2_1);
+ sc->t_temps[tx] = sc->F;
goto START;
}
@@ -71800,12 +71558,13 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
int32_t tx;
tx = next_tx(sc);
args = cdr(code);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(car(args))));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(car(args))));
sc->t_temps[tx] = c_call(car(args))(sc, sc->t1_1);
args = cadr(args);
set_car(sc->t2_2, c_call(args)(sc, cdr(args)));
set_car(sc->t2_1, sc->t_temps[tx]);
sc->value = c_call(code)(sc, sc->t2_1);
+ sc->t_temps[tx] = sc->F;
goto START;
}
@@ -71818,10 +71577,11 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
tx = next_tx(sc);
args = cdr(code);
sc->t_temps[tx] = c_call(car(args))(sc, cdar(args));
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadadr(args)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadadr(args)));
set_car(sc->t2_2, c_call(cadr(args))(sc, sc->t1_1));
set_car(sc->t2_1, sc->t_temps[tx]);
sc->value = c_call(code)(sc, sc->t2_1);
+ sc->t_temps[tx] = sc->F;
goto START;
}
@@ -71836,11 +71596,12 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
args = cdr(code);
sc->t_temps[tx] = c_call(car(args))(sc, cdar(args));
args = cdr(args);
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadar(args)));
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddar(args)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadar(args)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddar(args)));
set_car(sc->t2_2, c_call(car(args))(sc, sc->t2_1));
set_car(sc->t2_1, sc->t_temps[tx]);
sc->value = c_call(code)(sc, sc->t2_1);
+ sc->t_temps[tx] = sc->F;
goto START;
}
@@ -71852,8 +71613,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
int32_t tx;
tx = next_tx(sc);
args = cdr(code);
- val2 = find_symbol_unchecked(sc, cadadr(args));
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(car(args))));
+ val2 = symbol_to_value_unchecked(sc, cadadr(args));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(car(args))));
set_car(sc->t2_2, caddr(car(args)));
sc->t_temps[tx] = c_call(car(args))(sc, sc->t2_1);
set_car(sc->t2_1, val2);
@@ -71861,6 +71622,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
set_car(sc->t2_2, c_call(cadr(args))(sc, sc->t2_1));
set_car(sc->t2_1, sc->t_temps[tx]);
sc->value = c_call(code)(sc, sc->t2_1);
+ sc->t_temps[tx] = sc->F;
goto START;
}
@@ -71872,17 +71634,18 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
int32_t tx;
tx = next_tx(sc);
args = cdr(code);
- val3 = find_symbol_unchecked(sc, caddr(car(args)));
- val4 = find_symbol_unchecked(sc, caddr(cadr(args)));
+ val3 = symbol_to_value_unchecked(sc, caddr(car(args)));
+ val4 = symbol_to_value_unchecked(sc, caddr(cadr(args)));
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(car(args))));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(car(args))));
set_car(sc->t2_2, val3);
sc->t_temps[tx] = c_call(car(args))(sc, sc->t2_1);
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadadr(args)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadadr(args)));
set_car(sc->t2_2, val4);
set_car(sc->t2_2, c_call(cadr(args))(sc, sc->t2_1));
set_car(sc->t2_1, sc->t_temps[tx]);
sc->value = c_call(code)(sc, sc->t2_1);
+ sc->t_temps[tx] = sc->F;
goto START;
}
@@ -71894,14 +71657,15 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
int32_t tx;
tx = next_tx(sc);
args = cdr(code);
- val3 = find_symbol_unchecked(sc, caddr(car(args)));
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(car(args))));
+ val3 = symbol_to_value_unchecked(sc, caddr(car(args)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(car(args))));
set_car(sc->t2_2, val3);
sc->t_temps[tx] = c_call(car(args))(sc, sc->t2_1);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadadr(args)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadadr(args)));
set_car(sc->t2_2, c_call(cadr(args))(sc, sc->t1_1));
set_car(sc->t2_1, sc->t_temps[tx]);
sc->value = c_call(code)(sc, sc->t2_1);
+ sc->t_temps[tx] = sc->F;
goto START;
}
@@ -71913,13 +71677,14 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
int32_t tx;
tx = next_tx(sc);
args = cdr(code);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(car(args))));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(car(args))));
sc->t_temps[tx] = c_call(car(args))(sc, sc->t1_1);
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(cadr(args))));
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadadr(args)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(cadr(args))));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadadr(args)));
set_car(sc->t2_2, c_call(cadr(args))(sc, sc->t2_1));
set_car(sc->t2_1, sc->t_temps[tx]);
sc->value = c_call(code)(sc, sc->t2_1);
+ sc->t_temps[tx] = sc->F;
goto START;
}
@@ -71932,13 +71697,14 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
tx = next_tx(sc);
arg1 = cadr(code);
arg2 = caddr(code);
- val3 = find_symbol_unchecked(sc, caddr(arg1));
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(arg1)));
+ val3 = symbol_to_value_unchecked(sc, caddr(arg1));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(arg1)));
set_car(sc->t2_2, val3);
sc->t_temps[tx] = c_call(arg1)(sc, sc->t2_1);
set_car(sc->t2_2, c_call(arg2)(sc, cdr(arg2)));
set_car(sc->t2_1, sc->t_temps[tx]);
sc->value = c_call(code)(sc, sc->t2_1);
+ sc->t_temps[tx] = sc->F;
goto START;
}
@@ -71954,20 +71720,20 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
/* -------------------------------------------------------------------------------- */
case OP_C_S:
- if (!c_function_is_ok(sc, code)) {set_optimize_op(code, OP_S_S); goto OPT_EVAL;}
+ if (!c_function_is_ok(sc, code)) {set_optimize_op(code, OP_S_S); goto INNER_OPT_EVAL;}
case HOP_C_S:
- sc->args = list_1(sc, find_symbol_unchecked(sc, cadr(code)));
+ sc->args = list_1(sc, symbol_to_value_unchecked(sc, cadr(code)));
sc->value = c_call(code)(sc, sc->args);
goto START;
case OP_READ_S:
- if (!c_function_is_ok(sc, code)) {set_optimize_op(code, OP_S_S); goto OPT_EVAL;}
+ if (!c_function_is_ok(sc, code)) {set_optimize_op(code, OP_S_S); goto INNER_OPT_EVAL;}
case HOP_READ_S:
read_s_ex(sc);
goto START;
case OP_C_A:
- if (!c_function_is_ok(sc, code)) {set_optimize_op(code, OP_S_A); goto OPT_EVAL;}
+ if (!c_function_is_ok(sc, code)) {set_optimize_op(code, OP_S_A); goto INNER_OPT_EVAL;}
case HOP_C_A:
sc->args = list_1(sc, c_call(cdr(code))(sc, cadr(code)));
sc->value = c_call(code)(sc, sc->args);
@@ -71990,7 +71756,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_C_SS:
if (!c_function_is_ok(sc, code)) break;
case HOP_C_SS:
- sc->args = list_2(sc, find_symbol_unchecked(sc, cadr(code)), find_symbol_unchecked(sc, caddr(code)));
+ sc->args = list_2(sc, symbol_to_value_unchecked(sc, cadr(code)), symbol_to_value_unchecked(sc, caddr(code)));
sc->value = c_call(code)(sc, sc->args);
goto START;
@@ -72019,6 +71785,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
/* f=new closure cell, car=args, cdr=body, can't use sc->value here because c_call below may clobber it */
sc->args = list_2(sc, f, c_call(cddr(code))(sc, caddr(code)));
sc->value = c_call(code)(sc, sc->args);
+ sc->t_temps[tx] = sc->F;
goto START;
}
@@ -72034,6 +71801,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
sc->t_temps[tx] = f;
sc->value = c_call(code)(sc, set_plist_2(sc, f, c_call(cddr(code))(sc, caddr(code))));
set_plist_2(sc, sc->nil, sc->nil); /* hooboy -- GC protects plists */
+ sc->t_temps[tx] = sc->F;
goto START;
}
@@ -72049,10 +71817,10 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_APPLY_SS:
if (!c_function_is_ok(sc, code)) break;
case HOP_APPLY_SS:
- sc->code = find_symbol_unchecked(sc, cadr(code)); /* global search here was slower */
- sc->args = find_symbol_unchecked(sc, opt_sym2(code)); /* is this right if code=macro? */
+ sc->code = symbol_to_value_unchecked(sc, cadr(code)); /* global search here was slower */
+ sc->args = symbol_to_value_unchecked(sc, opt_sym2(code)); /* is this right if code=macro? */
if (!s7_is_proper_list(sc, sc->args)) /* (apply + #f) etc */
- return(apply_list_error(sc, sc->args));
+ apply_list_error(sc, sc->args);
if (needs_copied_args(sc->code))
sc->args = copy_list(sc, sc->args);
goto APPLY;
@@ -72063,8 +71831,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer args, val;
args = cdr(code);
- val = find_symbol_unchecked(sc, car(args));
- set_car(sc->t1_1, find_symbol_unchecked(sc, opt_sym1(args)));
+ val = symbol_to_value_unchecked(sc, car(args));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, opt_sym1(args)));
sc->args = list_2(sc, val, c_call(cadr(args))(sc, sc->t1_1));
sc->value = c_call(code)(sc, sc->args);
goto START;
@@ -72078,10 +71846,11 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
int32_t tx;
tx = next_tx(sc);
args = cdr(code);
- sc->t_temps[tx] = find_symbol_unchecked(sc, car(args));
+ sc->t_temps[tx] = symbol_to_value_unchecked(sc, car(args));
val = c_call(cadr(args))(sc, opt_pair1(args));
sc->args = list_2(sc, sc->t_temps[tx], val);
sc->value = c_call(code)(sc, sc->args);
+ sc->t_temps[tx] = sc->F;
goto START;
}
@@ -72092,7 +71861,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
s7_pointer a1, a2;
a1 = cdr(code);
a2 = cdr(a1);
- sc->args = list_3(sc, find_symbol_unchecked(sc, car(a1)), car(a2), find_symbol_unchecked(sc, cadr(a2)));
+ sc->args = list_3(sc, symbol_to_value_unchecked(sc, car(a1)), car(a2), symbol_to_value_unchecked(sc, cadr(a2)));
sc->value = c_call(code)(sc, sc->args);
goto START;
}
@@ -72144,7 +71913,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (!is_pair(f)) /* (catch #t ...) or (catch sym ...) */
{
if (is_symbol(f))
- tag = find_symbol_checked(sc, f);
+ tag = symbol_to_value_checked(sc, f);
else tag = f;
}
else tag = cadr(f); /* (catch 'sym ...) */
@@ -72194,13 +71963,13 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
/* unknown* fallback on these */
case OP_S:
case HOP_S:
- sc->code = find_symbol_unchecked(sc, car(code));
+ sc->code = symbol_to_value_unchecked(sc, car(code));
sc->args = sc->nil;
goto APPLY;
case OP_S_C:
case HOP_S_C:
- sc->code = find_symbol_unchecked(sc, car(code));
+ sc->code = symbol_to_value_unchecked(sc, car(code));
if (dont_eval_args(sc->code))
sc->args = cdr(code);
else
@@ -72214,13 +71983,13 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_S_S:
case HOP_S_S:
- sc->code = find_symbol_unchecked(sc, car(code));
+ sc->code = symbol_to_value_unchecked(sc, car(code));
if (dont_eval_args(sc->code))
sc->args = cdr(code);
else
{
sc->args = sc->t1_1;
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(code)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(code)));
}
if (needs_copied_args(sc->code))
sc->args = copy_list(sc, sc->args);
@@ -72228,7 +71997,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_S_A:
case HOP_S_A:
- sc->code = find_symbol_unchecked(sc, car(code));
+ sc->code = symbol_to_value_unchecked(sc, car(code));
if (dont_eval_args(sc->code))
sc->args = cdr(code);
else
@@ -72278,7 +72047,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
/* -------------------------------------------------------------------------------- */
case OP_THUNK:
- if (!closure_is_ok(sc, code, MATCH_UNSAFE_CLOSURE, 0)) {if (unknown_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ if (!closure_is_ok(sc, code, MATCH_UNSAFE_CLOSURE, 0)) {if (unknown_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_THUNK:
check_stack_size(sc);
/* this recursion check is consistent with the other unsafe closure calls, but we're probably in big trouble:
@@ -72290,90 +72059,96 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
* so if the inner (car(closure_body)) gets unopt'd for some reason, the outer HOP_THUNK never finds
* out, and peculiar things start to happen. (Also, is_h_optimized would need to be smarter).
*/
- new_frame(sc, closure_let(opt_lambda(code)), sc->envir);
- sc->code = _TPair(closure_body(opt_lambda(code)));
+ code = opt_lambda(code);
+ new_frame(sc, closure_let(code), sc->envir);
+ sc->code = _TPair(closure_body(code));
goto BEGIN1;
case OP_SAFE_THUNK:
- if (!closure_is_ok(sc, code, MATCH_SAFE_CLOSURE, 0)) {if (unknown_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ if (!closure_is_ok(sc, code, MATCH_SAFE_CLOSURE, 0)) {if (unknown_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_SAFE_THUNK: /* no frame needed */
/* (let ((x 1)) (let () (define (f) x) (let ((x 0)) (define (g) (set! x 32) (f)) (g)))) */
- sc->envir = closure_let(opt_lambda(code));
- sc->code = _TPair(closure_body(opt_lambda(code)));
+ code = opt_lambda(code);
+ sc->envir = closure_let(code);
+ sc->code = _TPair(closure_body(code));
goto BEGIN1;
case OP_SAFE_THUNK_E:
- if (!closure_is_equal(sc, code)) {if (unknown_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ if (!closure_is_equal(sc, code)) {if (unknown_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_SAFE_THUNK_E:
- sc->envir = closure_let(opt_lambda(code));
- sc->code = _TPair(car(closure_body(opt_lambda(code))));
+ code = opt_lambda(code);
+ sc->envir = closure_let(code);
+ sc->code = _TPair(car(closure_body(code)));
goto OPT_EVAL;
case OP_SAFE_THUNK_P:
- if (!closure_is_equal(sc, code)) {if (unknown_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL; break;}
- goto SAFE_LTHUNK_P;
- case OP_SAFE_LTHUNK_P:
- set_opt_lambda(code, local_symbol_value(car(code)));
- SAFE_LTHUNK_P:
+ if (!closure_is_equal(sc, code)) {if (unknown_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_SAFE_THUNK_P:
- case HOP_SAFE_LTHUNK_P:
- sc->envir = closure_let(opt_lambda(code));
- sc->code = car(closure_body(opt_lambda(code)));
+ code = opt_lambda(code);
+ sc->envir = closure_let(code);
+ sc->code = car(closure_body(code));
sc->cur_op = (opcode_t)pair_syntax_op(sc->code);
sc->code = cdr(sc->code);
goto START_WITHOUT_POP_STACK;
-
+
case OP_SAFE_CLOSURE_S:
- if (!closure_is_ok(sc, code, MATCH_SAFE_CLOSURE, 1)) {if (unknown_g_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ if (!closure_is_ok(sc, code, MATCH_SAFE_CLOSURE, 1)) {if (unknown_g_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_SAFE_CLOSURE_S:
/* since a tail call is safe, we can't change the current env's let_id until
* after we do the lookup -- it might be the current func's arg, and we're
* about to call the same func.
*/
- sc->envir = old_frame_with_slot(sc, closure_let(opt_lambda(code)), find_symbol_unchecked(sc, opt_sym2(code)));
- sc->code = _TPair(closure_body(opt_lambda(code)));
- goto BEGIN1;
+ {
+ s7_pointer f;
+ f = opt_lambda(code);
+ sc->envir = old_frame_with_slot(sc, closure_let(f), symbol_to_value_unchecked(sc, opt_sym2(code)));
+ sc->code = _TPair(closure_body(f));
+ goto BEGIN1;
+ }
case OP_SAFE_CLOSURE_S_C:
/* here and below the closure has to be the original -- matches are no good */
- if (!closure_is_equal(sc, code)) {if (unknown_g_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ if (!closure_is_equal(sc, code)) {if (unknown_g_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_SAFE_CLOSURE_S_C:
- sc->envir = old_frame_with_slot(sc, closure_let(opt_lambda(code)), find_symbol_unchecked(sc, opt_sym2(code)));
- sc->code = car(closure_body(opt_lambda(code)));
- sc->value = c_call(sc->code)(sc, cdr(sc->code));
- goto START;
+ {
+ s7_pointer f;
+ f = opt_lambda(code);
+ sc->envir = old_frame_with_slot(sc, closure_let(f), symbol_to_value_unchecked(sc, opt_sym2(code)));
+ sc->code = car(closure_body(f));
+ sc->value = c_call(sc->code)(sc, cdr(sc->code));
+ goto START;
+ }
case OP_SAFE_CLOSURE_S_P:
- if (!closure_is_equal(sc, code)) {if (unknown_g_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ if (!closure_is_equal(sc, code)) {if (unknown_g_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_SAFE_CLOSURE_S_P:
- sc->envir = old_frame_with_slot(sc, closure_let(opt_lambda(code)), find_symbol_unchecked(sc, opt_sym2(code)));
- sc->code = car(closure_body(opt_lambda(code)));
- sc->cur_op = (opcode_t)pair_syntax_op(sc->code);
- sc->code = cdr(sc->code);
- goto START_WITHOUT_POP_STACK;
-
- case OP_SAFE_LCLOSURE_L_P:
- set_opt_lambda(code, local_symbol_value(car(code)));
- case HOP_SAFE_LCLOSURE_L_P:
- sc->envir = old_frame_with_slot(sc, closure_let(opt_lambda(code)), local_symbol_value(opt_sym2(code)));
- sc->code = car(closure_body(opt_lambda(code)));
- sc->cur_op = (opcode_t)pair_syntax_op(sc->code);
- sc->code = cdr(sc->code);
- goto START_WITHOUT_POP_STACK;
+ {
+ s7_pointer f;
+ f = opt_lambda(code);
+ sc->envir = old_frame_with_slot(sc, closure_let(f), symbol_to_value_unchecked(sc, opt_sym2(code)));
+ sc->code = car(closure_body(f));
+ sc->cur_op = (opcode_t)pair_syntax_op(sc->code);
+ sc->code = cdr(sc->code);
+ goto START_WITHOUT_POP_STACK;
+ }
case OP_SAFE_CLOSURE_C:
- if (!closure_is_ok(sc, code, MATCH_SAFE_CLOSURE, 1)) {if (unknown_g_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ if (!closure_is_ok(sc, code, MATCH_SAFE_CLOSURE, 1)) {if (unknown_g_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_SAFE_CLOSURE_C:
- sc->envir = old_frame_with_slot(sc, closure_let(opt_lambda(code)), cadr(code));
- sc->code = _TPair(closure_body(opt_lambda(code)));
- goto BEGIN1;
+ {
+ s7_pointer f;
+ f = opt_lambda(code);
+ sc->envir = old_frame_with_slot(sc, closure_let(f), cadr(code));
+ sc->code = _TPair(closure_body(f));
+ goto BEGIN1;
+ }
case OP_SAFE_CLOSURE_P:
if (!closure_is_ok(sc, code, MATCH_SAFE_CLOSURE, 1))
{
if ((has_all_x(cdr(code))) &&
(unknown_a_ex(sc, sc->last_function) == goto_OPT_EVAL))
- goto OPT_EVAL;
+ goto INNER_OPT_EVAL;
break;
}
case HOP_SAFE_CLOSURE_P:
@@ -72382,33 +72157,42 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
goto EVAL;
case OP_SAFE_CLOSURE_A:
- if (!closure_is_ok(sc, code, MATCH_SAFE_CLOSURE, 1)) {if (unknown_a_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ if (!closure_is_ok(sc, code, MATCH_SAFE_CLOSURE, 1)) {if (unknown_a_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_SAFE_CLOSURE_A:
- sc->envir = old_frame_with_slot(sc, closure_let(opt_lambda(code)), c_call(cdr(code))(sc, cadr(code)));
- sc->code = _TPair(closure_body(opt_lambda(code)));
- goto BEGIN1;
-
- case OP_SAFE_LCLOSURE_A:
- set_opt_lambda(code, slot_value(local_slot(car(code))));
- case HOP_SAFE_LCLOSURE_A:
- sc->envir = old_frame_with_slot(sc, closure_let(opt_lambda(code)), c_call(cdr(code))(sc, cadr(code)));
- sc->code = _TPair(closure_body(opt_lambda(code)));
- goto BEGIN1;
+ {
+ s7_pointer f;
+ f = opt_lambda(code);
+ sc->envir = old_frame_with_slot(sc, closure_let(f), c_call(cdr(code))(sc, cadr(code)));
+ sc->code = _TPair(closure_body(f));
+ goto BEGIN1;
+ }
- case OP_SAFE_LCLOSURE_A_P:
- set_opt_lambda(code, slot_value(local_slot(car(code))));
- case HOP_SAFE_LCLOSURE_A_P:
- sc->envir = old_frame_with_slot(sc, closure_let(opt_lambda(code)), c_call(cdr(code))(sc, cadr(code)));
- sc->code = car(closure_body(opt_lambda(code)));
- goto EVAL;
+ case OP_SAFE_FUN_A:
+ /* symbol_id unchanged means local_slot is unchanged, so check current value against value used for optimization
+ * if either has changed, check as in closure_is_ok_1, reopt if type/arity changed
+ */
+ if (!fun_is_ok(sc, code, MATCH_SAFE_CLOSURE, 1)) {if (unknown_a_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
+ case HOP_SAFE_FUN_A:
+ {
+ s7_pointer f;
+ f = opt_lambda(code);
+ sc->envir = old_frame_with_slot(sc, closure_let(f), c_call(cdr(code))(sc, cadr(code)));
+ sc->code = _TPair(closure_body(f));
+ goto BEGIN1;
+ /* safe_fun_a_p also? */
+ }
case OP_SAFE_CLOSURE_A_C:
- if (!closure_is_equal(sc, code)) {if (unknown_a_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ if (!closure_is_equal(sc, code)) {if (unknown_a_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_SAFE_CLOSURE_A_C:
- sc->envir = old_frame_with_slot(sc, closure_let(opt_lambda(code)), c_call(cdr(code))(sc, cadr(code)));
- sc->code = car(closure_body(opt_lambda(code)));
- sc->value = c_call(sc->code)(sc, cdr(sc->code));
- goto START;
+ {
+ s7_pointer f;
+ f = opt_lambda(code);
+ sc->envir = old_frame_with_slot(sc, closure_let(f), c_call(cdr(code))(sc, cadr(code)));
+ sc->code = car(closure_body(f));
+ sc->value = c_call(sc->code)(sc, cdr(sc->code));
+ goto START;
+ }
case OP_SAFE_CLOSURE_AP:
if (!closure_is_ok(sc, code, MATCH_SAFE_CLOSURE, 2)) break;
@@ -72433,80 +72217,117 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
}
case OP_SAFE_CLOSURE_SS:
- if (!closure_is_ok(sc, code, MATCH_SAFE_CLOSURE, 2)) {if (unknown_gg_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ if (!closure_is_ok(sc, code, MATCH_SAFE_CLOSURE, 2)) {if (unknown_gg_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_SAFE_CLOSURE_SS:
- sc->envir = old_frame_with_two_slots(sc, closure_let(opt_lambda(code)),
- find_symbol_unchecked(sc, cadr(code)),
- find_symbol_unchecked(sc, opt_sym2(code)));
- sc->code = car(closure_body(opt_lambda(code)));
- goto EVAL;
+ {
+ s7_pointer f;
+ f = opt_lambda(code);
+ sc->envir = old_frame_with_two_slots(sc, closure_let(f),
+ symbol_to_value_unchecked(sc, cadr(code)),
+ symbol_to_value_unchecked(sc, opt_sym2(code)));
+ sc->code = car(closure_body(f));
+ goto EVAL;
+ }
case OP_SAFE_CLOSURE_SS_B:
- if (!closure_is_ok(sc, code, MATCH_SAFE_CLOSURE, 2)) {if (unknown_gg_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ if (!closure_is_ok(sc, code, MATCH_SAFE_CLOSURE, 2)) {if (unknown_gg_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_SAFE_CLOSURE_SS_B:
- sc->envir = old_frame_with_two_slots(sc, closure_let(opt_lambda(code)),
- find_symbol_unchecked(sc, cadr(code)),
- find_symbol_unchecked(sc, opt_sym2(code)));
- sc->code = closure_body(opt_lambda(code));
- push_stack_no_args(sc, OP_BEGIN1, _TPair(cdr(sc->code)));
- sc->code = car(sc->code);
- goto EVAL;
+ {
+ s7_pointer f;
+ f = opt_lambda(code);
+ sc->envir = old_frame_with_two_slots(sc, closure_let(f),
+ symbol_to_value_unchecked(sc, cadr(code)),
+ symbol_to_value_unchecked(sc, opt_sym2(code)));
+ sc->code = closure_body(f);
+ push_stack_no_args(sc, OP_BEGIN1, _TPair(cdr(sc->code)));
+ sc->code = car(sc->code);
+ goto EVAL;
+ }
case OP_SAFE_CLOSURE_SC:
- if (!closure_is_ok(sc, code, MATCH_SAFE_CLOSURE, 2)) {if (unknown_gg_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ if (!closure_is_ok(sc, code, MATCH_SAFE_CLOSURE, 2)) {if (unknown_gg_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_SAFE_CLOSURE_SC:
- sc->envir = old_frame_with_two_slots(sc, closure_let(opt_lambda(code)), find_symbol_unchecked(sc, cadr(code)), opt_con2(code));
- sc->code = _TPair(closure_body(opt_lambda(code)));
- goto BEGIN1;
+ {
+ s7_pointer f;
+ f = opt_lambda(code);
+ sc->envir = old_frame_with_two_slots(sc, closure_let(f), symbol_to_value_unchecked(sc, cadr(code)), opt_con2(code));
+ sc->code = _TPair(closure_body(f));
+ goto BEGIN1;
+ }
case OP_SAFE_CLOSURE_CS:
- if (!closure_is_ok(sc, code, MATCH_SAFE_CLOSURE, 2)) {if (unknown_gg_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ if (!closure_is_ok(sc, code, MATCH_SAFE_CLOSURE, 2)) {if (unknown_gg_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_SAFE_CLOSURE_CS:
- sc->envir = old_frame_with_two_slots(sc, closure_let(opt_lambda(code)), cadr(code), find_symbol_unchecked(sc, opt_sym2(code)));
- sc->code = _TPair(closure_body(opt_lambda(code)));
- goto BEGIN1;
+ {
+ s7_pointer f;
+ f = opt_lambda(code);
+ sc->envir = old_frame_with_two_slots(sc, closure_let(f), cadr(code), symbol_to_value_unchecked(sc, opt_sym2(code)));
+ sc->code = _TPair(closure_body(f));
+ goto BEGIN1;
+ }
case OP_SAFE_CLOSURE_SA:
- if (!closure_is_ok(sc, code, MATCH_SAFE_CLOSURE, 2)) {if (unknown_aa_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ if (!closure_is_ok(sc, code, MATCH_SAFE_CLOSURE, 2)) {if (unknown_aa_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_SAFE_CLOSURE_SA:
{
- s7_pointer args;
+ s7_pointer f, args;
+ f = opt_lambda(code);
args = cddr(code);
args = c_call(args)(sc, car(args));
- sc->envir = old_frame_with_two_slots(sc, closure_let(opt_lambda(code)), find_symbol_unchecked(sc, cadr(code)), args);
- sc->code = _TPair(closure_body(opt_lambda(code)));
+ sc->envir = old_frame_with_two_slots(sc, closure_let(f), symbol_to_value_unchecked(sc, cadr(code)), args);
+ sc->code = _TPair(closure_body(f));
goto BEGIN1;
}
case OP_SAFE_CLOSURE_AA:
- if (!closure_is_ok(sc, code, MATCH_SAFE_CLOSURE, 2)) {if (unknown_aa_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ if (!closure_is_ok(sc, code, MATCH_SAFE_CLOSURE, 2)) {if (unknown_aa_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_SAFE_CLOSURE_AA:
{
- s7_pointer args, z;
+ s7_pointer args, z, f;
int32_t tx;
+ f = opt_lambda(code);
tx = next_tx(sc);
args = cdr(code);
sc->t_temps[tx] = c_call(args)(sc, car(args));
args = cdr(args);
z = c_call(args)(sc, car(args));
- sc->envir = old_frame_with_two_slots(sc, closure_let(opt_lambda(code)), sc->t_temps[tx], z);
- sc->code = _TPair(closure_body(opt_lambda(code)));
+ sc->envir = old_frame_with_two_slots(sc, closure_let(f), sc->t_temps[tx], z);
+ sc->code = _TPair(closure_body(f));
goto BEGIN1;
}
+ case OP_SAFE_CLOSURE_AA_P:
+ if (!closure_is_equal(sc, code)) {if (unknown_aa_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
+ case HOP_SAFE_CLOSURE_AA_P:
+ {
+ s7_pointer args, z, f;
+ int32_t tx;
+ f = opt_lambda(code);
+ tx = next_tx(sc);
+ args = cdr(code);
+ sc->t_temps[tx] = c_call(args)(sc, car(args));
+ args = cdr(args);
+ z = c_call(args)(sc, car(args));
+ sc->envir = old_frame_with_two_slots(sc, closure_let(f), sc->t_temps[tx], z);
+ sc->code = car(closure_body(f));
+ goto EVAL;
+ }
+
case OP_SAFE_CLOSURE_SAA:
if (!closure_is_ok(sc, code, MATCH_SAFE_CLOSURE, 3)) break;
case HOP_SAFE_CLOSURE_SAA:
{
- s7_pointer args, z;
+ s7_pointer args, z, f;
int32_t tx;
+ f = opt_lambda(code);
tx = next_tx(sc);
args = cddr(code);
sc->t_temps[tx] = c_call(args)(sc, car(args));
args = cdr(args);
z = c_call(args)(sc, car(args));
- sc->envir = old_frame_with_three_slots(sc, closure_let(opt_lambda(code)), find_symbol_unchecked(sc, cadr(code)), sc->t_temps[tx], z);
- sc->code = _TPair(closure_body(opt_lambda(code)));
+ sc->envir = old_frame_with_three_slots(sc, closure_let(f), symbol_to_value_unchecked(sc, cadr(code)), sc->t_temps[tx], z);
+ sc->code = _TPair(closure_body(f));
+ sc->t_temps[tx] = sc->F;
goto BEGIN1;
}
@@ -72553,7 +72374,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
/* -------------------------------------------------------------------------------- */
case OP_SAFE_CLOSURE_STAR_A:
- if (!closure_star_is_ok(sc, code, MATCH_SAFE_CLOSURE_STAR, 1)) {if (unknown_a_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ if (!closure_star_is_ok(sc, code, MATCH_SAFE_CLOSURE_STAR, 1)) {if (unknown_a_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_SAFE_CLOSURE_STAR_A:
{
s7_pointer p, x, val;
@@ -72631,7 +72452,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_SAFE_CLOSURE_STAR_S0:
/* an old (probably now unnecessary) kludge to speed up generators.scm */
- if (!closure_is_equal(sc, code)) {if (unknown_g_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ if (!closure_is_equal(sc, code)) {if (unknown_g_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_SAFE_CLOSURE_STAR_S0:
/* here we know we have (let-set! arg1 'name arg2) (with-env arg1 ...) as the safe closure body.
* since no errors can come from the first, there's no need for the procedure env.
@@ -72639,7 +72460,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
*/
{
s7_pointer e;
- e = find_symbol_unchecked(sc, cadr(code)); /* S of S0 above */
+ e = symbol_to_value_unchecked(sc, cadr(code)); /* S of S0 above */
if (e == sc->rootlet)
sc->envir = sc->nil;
else
@@ -72688,8 +72509,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
/* -------------------------------------------------------------------------------- */
case OP_GOTO:
- set_opt_goto(code, find_symbol_checked(sc, car(code)));
- if (!is_goto(opt_goto(code))) {if (unknown_ex(sc, opt_goto(code)) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ set_opt_goto(code, symbol_to_value_checked(sc, car(code)));
+ if (!is_goto(opt_goto(code))) {if (unknown_ex(sc, opt_goto(code)) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_GOTO:
sc->args = sc->nil;
sc->code = opt_goto(code);
@@ -72698,8 +72519,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_GOTO_C:
/* call-with-exit repeat use internally is very rare, so let's just look it up */
- set_opt_goto(code, find_symbol_checked(sc, car(code)));
- if (!is_goto(opt_goto(code))) {if (unknown_g_ex(sc, opt_goto(code)) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ set_opt_goto(code, symbol_to_value_checked(sc, car(code)));
+ if (!is_goto(opt_goto(code))) {if (unknown_g_ex(sc, opt_goto(code)) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_GOTO_C:
/* (return #t) -- recognized via OP_UNKNOWN_G, opt_goto(code) is the function [parallels OP_CLOSURE_C] */
sc->args = cdr(code);
@@ -72708,18 +72529,18 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
goto START;
case OP_GOTO_S:
- set_opt_goto(code, find_symbol_unchecked(sc, car(code)));
- if (!is_goto(opt_goto(code))) {if (unknown_g_ex(sc, opt_goto(code)) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ set_opt_goto(code, symbol_to_value_unchecked(sc, car(code)));
+ if (!is_goto(opt_goto(code))) {if (unknown_g_ex(sc, opt_goto(code)) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_GOTO_S:
- sc->args = list_1(sc, find_symbol_unchecked(sc, cadr(code)));
+ sc->args = list_1(sc, symbol_to_value_unchecked(sc, cadr(code)));
/* I think this needs listification because call_with_exit might call dynamic unwinders etc. */
sc->code = opt_goto(code);
call_with_exit(sc);
goto START;
case OP_GOTO_A:
- set_opt_goto(code, find_symbol_checked(sc, car(code)));
- if (!is_goto(opt_goto(code))) {if (unknown_a_ex(sc, opt_goto(code)) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ set_opt_goto(code, symbol_to_value_checked(sc, car(code)));
+ if (!is_goto(opt_goto(code))) {if (unknown_a_ex(sc, opt_goto(code)) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_GOTO_A:
sc->args = list_1(sc, c_call(cdr(code))(sc, cadr(code)));
sc->code = opt_goto(code);
@@ -72747,7 +72568,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_CLOSURE_C:
- if (!closure_is_ok(sc, code, MATCH_UNSAFE_CLOSURE, 1)) {if (unknown_g_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ if (!closure_is_ok(sc, code, MATCH_UNSAFE_CLOSURE, 1)) {if (unknown_g_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_CLOSURE_C:
check_stack_size(sc);
code = opt_lambda(code);
@@ -72756,14 +72577,14 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
goto BEGIN1;
case OP_CLOSURE_P:
- if (!closure_is_ok(sc, code, MATCH_UNSAFE_CLOSURE, 1)) {if (unknown_g_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ if (!closure_is_ok(sc, code, MATCH_UNSAFE_CLOSURE, 1)) {if (unknown_g_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_CLOSURE_P:
push_stack(sc, OP_CLOSURE_P_1, sc->args, sc->code);
sc->code = cadr(code);
goto EVAL;
case OP_CLOSURE_A:
- if (!closure_is_ok(sc, code, MATCH_UNSAFE_CLOSURE, 1)) {if (unknown_a_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ if (!closure_is_ok(sc, code, MATCH_UNSAFE_CLOSURE, 1)) {if (unknown_a_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_CLOSURE_A:
sc->value = c_call(cdr(code))(sc, cadr(code));
check_stack_size(sc);
@@ -72773,7 +72594,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
goto BEGIN1;
case OP_CLOSURE_A_P:
- if (!closure_is_equal(sc, code)) {if (unknown_a_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ if (!closure_is_equal(sc, code)) {if (unknown_a_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_CLOSURE_A_P:
sc->value = c_call(cdr(code))(sc, cadr(code));
check_stack_size(sc);
@@ -72785,9 +72606,9 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
goto START_WITHOUT_POP_STACK;
case OP_CLOSURE_S:
- if (!closure_is_ok(sc, code, MATCH_UNSAFE_CLOSURE, 1)) {if (unknown_g_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ if (!closure_is_ok(sc, code, MATCH_UNSAFE_CLOSURE, 1)) {if (unknown_g_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_CLOSURE_S:
- sc->value = find_symbol_unchecked(sc, opt_sym2(code));
+ sc->value = symbol_to_value_unchecked(sc, opt_sym2(code));
check_stack_size(sc);
code = opt_lambda(code);
new_frame_with_slot(sc, closure_let(code), sc->envir, car(closure_args(code)), sc->value);
@@ -72795,7 +72616,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
goto BEGIN1;
case OP_CLOSURE_SS:
- if (!closure_is_ok(sc, code, MATCH_UNSAFE_CLOSURE, 2)) {if (unknown_gg_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ if (!closure_is_ok(sc, code, MATCH_UNSAFE_CLOSURE, 2)) {if (unknown_gg_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_CLOSURE_SS:
{
s7_pointer f, args;
@@ -72803,14 +72624,14 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
f = opt_lambda(sc->code);
args = closure_args(f);
new_frame_with_two_slots(sc, closure_let(f), sc->envir,
- car(args), find_symbol_unchecked(sc, cadr(code)),
- cadr(args), find_symbol_unchecked(sc, opt_sym2(code)));
+ car(args), symbol_to_value_unchecked(sc, cadr(code)),
+ cadr(args), symbol_to_value_unchecked(sc, opt_sym2(code)));
sc->code = _TPair(closure_body(f));
goto BEGIN1;
}
case OP_CLOSURE_SS_P:
- if (!closure_is_equal(sc, code)) {if (unknown_gg_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ if (!closure_is_equal(sc, code)) {if (unknown_gg_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_CLOSURE_SS_P:
{
s7_pointer func, args;
@@ -72818,8 +72639,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
func = opt_lambda(sc->code);
args = closure_args(func);
new_frame_with_two_slots(sc, closure_let(func), sc->envir,
- car(args), find_symbol_unchecked(sc, cadr(code)),
- cadr(args), find_symbol_unchecked(sc, opt_sym2(code)));
+ car(args), symbol_to_value_unchecked(sc, cadr(code)),
+ cadr(args), symbol_to_value_unchecked(sc, opt_sym2(code)));
sc->code = car(closure_body(func));
sc->cur_op = (opcode_t)pair_syntax_op(sc->code);
sc->code = cdr(sc->code);
@@ -72827,33 +72648,33 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
}
case OP_CLOSURE_SC:
- if (!closure_is_ok(sc, code, MATCH_UNSAFE_CLOSURE, 2)) {if (unknown_gg_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ if (!closure_is_ok(sc, code, MATCH_UNSAFE_CLOSURE, 2)) {if (unknown_gg_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_CLOSURE_SC:
{
s7_pointer f, args;
check_stack_size(sc);
f = opt_lambda(sc->code);
args = closure_args(f);
- new_frame_with_two_slots(sc, closure_let(f), sc->envir, car(args), find_symbol_unchecked(sc, cadr(code)), cadr(args), opt_con2(code));
+ new_frame_with_two_slots(sc, closure_let(f), sc->envir, car(args), symbol_to_value_unchecked(sc, cadr(code)), cadr(args), opt_con2(code));
sc->code = _TPair(closure_body(f));
goto BEGIN1;
}
case OP_CLOSURE_CS:
- if (!closure_is_ok(sc, code, MATCH_UNSAFE_CLOSURE, 2)) {if (unknown_gg_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ if (!closure_is_ok(sc, code, MATCH_UNSAFE_CLOSURE, 2)) {if (unknown_gg_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_CLOSURE_CS:
{
s7_pointer f, args;
check_stack_size(sc);
f = opt_lambda(sc->code);
args = closure_args(f);
- new_frame_with_two_slots(sc, closure_let(f), sc->envir, car(args), cadr(code), cadr(args), find_symbol_unchecked(sc, opt_sym2(code)));
+ new_frame_with_two_slots(sc, closure_let(f), sc->envir, car(args), cadr(code), cadr(args), symbol_to_value_unchecked(sc, opt_sym2(code)));
sc->code = _TPair(closure_body(f));
goto BEGIN1;
}
case OP_CLOSURE_AA:
- if (!closure_is_ok(sc, code, MATCH_UNSAFE_CLOSURE, 2)) {if (unknown_aa_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ if (!closure_is_ok(sc, code, MATCH_UNSAFE_CLOSURE, 2)) {if (unknown_aa_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_CLOSURE_AA:
{
s7_pointer f, args, a_args;
@@ -72869,6 +72690,23 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
goto BEGIN1;
}
+ case OP_CLOSURE_AA_P:
+ if (!closure_is_equal(sc, code)) {if (unknown_aa_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
+ case HOP_CLOSURE_AA_P:
+ {
+ s7_pointer f, args, a_args;
+ int32_t tx;
+ check_stack_size(sc);
+ tx = next_tx(sc);
+ a_args = cdr(code);
+ sc->t_temps[tx] = c_call(a_args)(sc, car(a_args));
+ f = opt_lambda(sc->code);
+ args = closure_args(f);
+ new_frame_with_two_slots(sc, closure_let(f), sc->envir, car(args), sc->t_temps[tx], cadr(args), c_call(cdr(a_args))(sc, cadr(a_args)));
+ sc->code = car(closure_body(f));
+ goto EVAL;
+ }
+
case OP_CLOSURE_AP:
if (!closure_is_ok(sc, code, MATCH_UNSAFE_CLOSURE, 2)) break;
case HOP_CLOSURE_AP:
@@ -72911,7 +72749,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (!closure_is_ok(sc, code, MATCH_UNSAFE_CLOSURE, integer(arglist_length(code))))
{
if (unknown_all_s_ex(sc, sc->last_function) == goto_OPT_EVAL)
- goto OPT_EVAL;
+ goto INNER_OPT_EVAL;
break;
}
case HOP_CLOSURE_ALL_S:
@@ -72926,7 +72764,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
new_frame(sc, closure_let(func), e);
sc->z = e;
for (p = closure_args(func), args = cdr(code); is_pair(p); p = cdr(p), args = cdr(args))
- add_slot(e, car(p), find_symbol_unchecked(sc, car(args)));
+ add_slot(e, car(p), symbol_to_value_unchecked(sc, car(args)));
sc->envir = e;
sc->z = sc->nil;
sc->code = _TPair(closure_body(func));
@@ -72934,7 +72772,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
}
case OP_CLOSURE_ALL_S_P:
- if (!closure_is_equal(sc, code)) {if (unknown_all_s_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ if (!closure_is_equal(sc, code)) {if (unknown_all_s_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_CLOSURE_ALL_S_P:
{
s7_pointer args, p, func, e;
@@ -72943,7 +72781,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
new_frame(sc, closure_let(func), e);
sc->z = e;
for (p = closure_args(func), args = cdr(code); is_pair(p); p = cdr(p), args = cdr(args))
- add_slot(e, car(p), find_symbol_unchecked(sc, car(args)));
+ add_slot(e, car(p), symbol_to_value_unchecked(sc, car(args)));
sc->envir = e;
sc->z = sc->nil;
sc->code = car(closure_body(func));
@@ -72951,11 +72789,12 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
}
case OP_CLOSURE_ALL_X:
+ /* lt: 3=11: 36409 5=101: 20546 b=1011: 64123 b: 4 is main=100 */
check_stack_size(sc);
if (!closure_is_ok(sc, code, MATCH_UNSAFE_CLOSURE, integer(arglist_length(code))))
{
if (unknown_all_x_ex(sc, sc->last_function) == goto_OPT_EVAL)
- goto OPT_EVAL;
+ goto INNER_OPT_EVAL;
break;
}
case HOP_CLOSURE_ALL_X:
@@ -72965,11 +72804,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
new_frame(sc, closure_let(func), e);
sc->z = e;
for (p = closure_args(func), args = cdr(code); is_pair(p); p = cdr(p), args = cdr(args))
- {
- s7_pointer val;
- val = c_call(args)(sc, car(args));
- add_slot_checked(e, car(p), val); /* can't use add_slot here -- all_x_c_* hit trigger? */
- }
+ add_slot_checked(e, car(p), c_call(args)(sc, car(args))); /* can't use add_slot here -- all_x_c_* hit GC trigger? */
sc->envir = e;
sc->z = sc->nil;
sc->code = _TPair(closure_body(func));
@@ -72978,7 +72813,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
/* -------------------------------------------------------------------------------- */
case OP_CLOSURE_STAR_A:
- if (!closure_star_is_ok(sc, code, MATCH_UNSAFE_CLOSURE_STAR, 1)) {if (unknown_a_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL; break;}
+ if (!closure_star_is_ok(sc, code, MATCH_UNSAFE_CLOSURE_STAR, 1)) {if (unknown_a_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL; break;}
case HOP_CLOSURE_STAR_A:
{
s7_pointer val, p;
@@ -73037,7 +72872,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (!closure_star_is_ok(sc, code, MATCH_UNSAFE_CLOSURE_STAR, integer(arglist_length(code))))
{
if (unknown_all_x_ex(sc, sc->last_function) == goto_OPT_EVAL)
- goto OPT_EVAL;
+ goto INNER_OPT_EVAL;
break;
}
case HOP_CLOSURE_STAR_ALL_X:
@@ -73059,44 +72894,44 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
/* -------------------------------------------------------------------------------- */
case OP_UNKNOWN:
case HOP_UNKNOWN:
- if (unknown_ex(sc, find_symbol_checked(sc, car(code))) == goto_OPT_EVAL)
- goto OPT_EVAL;
+ if (unknown_ex(sc, symbol_to_value_checked(sc, car(code))) == goto_OPT_EVAL)
+ goto INNER_OPT_EVAL;
break;
case OP_UNKNOWN_G:
case HOP_UNKNOWN_G:
- if (unknown_g_ex(sc, find_symbol_checked(sc, car(code))) == goto_OPT_EVAL)
- goto OPT_EVAL;
+ if (unknown_g_ex(sc, symbol_to_value_checked(sc, car(code))) == goto_OPT_EVAL)
+ goto INNER_OPT_EVAL;
break;
case OP_UNKNOWN_GG:
case HOP_UNKNOWN_GG:
- if (unknown_gg_ex(sc, find_symbol_checked(sc, car(code))) == goto_OPT_EVAL)
- goto OPT_EVAL;
+ if (unknown_gg_ex(sc, symbol_to_value_checked(sc, car(code))) == goto_OPT_EVAL)
+ goto INNER_OPT_EVAL;
break;
case OP_UNKNOWN_ALL_S:
case HOP_UNKNOWN_ALL_S:
- if (unknown_all_s_ex(sc, find_symbol_checked(sc, car(code))) == goto_OPT_EVAL)
- goto OPT_EVAL;
+ if (unknown_all_s_ex(sc, symbol_to_value_checked(sc, car(code))) == goto_OPT_EVAL)
+ goto INNER_OPT_EVAL;
break;
case OP_UNKNOWN_A:
case HOP_UNKNOWN_A:
- if (unknown_a_ex(sc, find_symbol_checked(sc, car(code))) == goto_OPT_EVAL)
- goto OPT_EVAL;
+ if (unknown_a_ex(sc, symbol_to_value_checked(sc, car(code))) == goto_OPT_EVAL)
+ goto INNER_OPT_EVAL;
break;
case OP_UNKNOWN_AA:
case HOP_UNKNOWN_AA:
- if (unknown_aa_ex(sc, find_symbol_checked(sc, car(code))) == goto_OPT_EVAL)
- goto OPT_EVAL;
+ if (unknown_aa_ex(sc, symbol_to_value_checked(sc, car(code))) == goto_OPT_EVAL)
+ goto INNER_OPT_EVAL;
break;
case OP_UNKNOWN_ALL_X:
case HOP_UNKNOWN_ALL_X:
- if (unknown_all_x_ex(sc, find_symbol_checked(sc, car(code))) == goto_OPT_EVAL)
- goto OPT_EVAL;
+ if (unknown_all_x_ex(sc, symbol_to_value_checked(sc, car(code))) == goto_OPT_EVAL)
+ goto INNER_OPT_EVAL;
break;
/* -------------------------------------------------------------------------------- */
@@ -73104,29 +72939,23 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_VECTOR_A:
case HOP_VECTOR_A:
if (vector_a_ex(sc) == goto_START) goto START;
- if (unknown_a_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL;
- break;
-
- case OP_CVECTOR_A:
- case HOP_CVECTOR_A:
- if (constant_vector_a_ex(sc) == goto_START) goto START;
- if (unknown_a_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL;
+ if (unknown_a_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL;
break;
case OP_STRING_A:
case HOP_STRING_A:
if (string_a_ex(sc) == goto_START) goto START;
- if (unknown_a_ex(sc, sc->last_function) == goto_OPT_EVAL) goto OPT_EVAL;
+ if (unknown_a_ex(sc, sc->last_function) == goto_OPT_EVAL) goto INNER_OPT_EVAL;
break;
case OP_HASH_TABLE_A:
case HOP_HASH_TABLE_A:
{
s7_pointer s;
- s = find_symbol_unchecked(sc, car(code));
+ s = symbol_to_value_unchecked(sc, car(code));
if (!is_hash_table(s))
{
- if (unknown_a_ex(sc, s) == goto_OPT_EVAL) goto OPT_EVAL;
+ if (unknown_a_ex(sc, s) == goto_OPT_EVAL) goto INNER_OPT_EVAL;
break;
}
sc->value = s7_hash_table_ref(sc, s, c_call(cdr(code))(sc, cadr(code)));
@@ -73137,10 +72966,10 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case HOP_CONTINUATION_A:
{
s7_pointer s;
- s = find_symbol_unchecked(sc, car(code));
+ s = symbol_to_value_unchecked(sc, car(code));
if (!is_continuation(s))
{
- if (unknown_a_ex(sc, s) == goto_OPT_EVAL) goto OPT_EVAL;
+ if (unknown_a_ex(sc, s) == goto_OPT_EVAL) goto INNER_OPT_EVAL;
break;
}
sc->code = s;
@@ -73153,10 +72982,10 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case HOP_ITERATE:
{
s7_pointer s;
- s = find_symbol_unchecked(sc, car(code));
+ s = symbol_to_value_unchecked(sc, car(code));
if (!is_iterator(s))
{
- if (unknown_ex(sc, s) == goto_OPT_EVAL) goto OPT_EVAL;
+ if (unknown_ex(sc, s) == goto_OPT_EVAL) goto INNER_OPT_EVAL;
break;
}
sc->value = (iterator_next(s))(sc, s);
@@ -73167,12 +72996,12 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case HOP_ENVIRONMENT_Q:
{
s7_pointer s;
- s = find_symbol_unchecked(sc, car(code));
+ s = symbol_to_value_unchecked(sc, car(code));
if (!is_let(s))
{
if (has_all_x(cdr(code)))
{
- if (unknown_a_ex(sc, s) == goto_OPT_EVAL) goto OPT_EVAL;
+ if (unknown_a_ex(sc, s) == goto_OPT_EVAL) goto INNER_OPT_EVAL;
}
break;
}
@@ -73184,10 +73013,10 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case HOP_ENVIRONMENT_A:
{
s7_pointer s;
- s = find_symbol_unchecked(sc, car(code));
+ s = symbol_to_value_unchecked(sc, car(code));
if (!is_let(s))
{
- if (unknown_a_ex(sc, s) == goto_OPT_EVAL) goto OPT_EVAL;
+ if (unknown_a_ex(sc, s) == goto_OPT_EVAL) goto INNER_OPT_EVAL;
break;
}
sc->value = g_let_ref(sc, set_qlist_2(sc, s, c_call(cdr(code))(sc, cadr(code))));
@@ -73198,10 +73027,10 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case HOP_PAIR_A:
{
s7_pointer s, x;
- s = find_symbol_unchecked(sc, car(code));
+ s = symbol_to_value_unchecked(sc, car(code));
if (!is_pair(s))
{
- if (unknown_a_ex(sc, s) == goto_OPT_EVAL) goto OPT_EVAL;
+ if (unknown_a_ex(sc, s) == goto_OPT_EVAL) goto INNER_OPT_EVAL;
break;
}
x = c_call(cdr(code))(sc, cadr(code));
@@ -73213,10 +73042,10 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case HOP_C_OBJECT_A:
{
s7_pointer c;
- c = find_symbol_unchecked(sc, car(code));
+ c = symbol_to_value_unchecked(sc, car(code));
if (!is_c_object(c))
{
- if (unknown_a_ex(sc, c) == goto_OPT_EVAL) goto OPT_EVAL;
+ if (unknown_a_ex(sc, c) == goto_OPT_EVAL) goto INNER_OPT_EVAL;
break;
}
set_car(sc->t1_1, c_call(cdr(code))(sc, cadr(code)));
@@ -73251,7 +73080,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
set_current_code(sc, code);
carc = car(code);
- if (typesflag(carc) == SYNTACTIC_TYPE)
+ if (is_syntactic_symbol(carc))
{
set_syntactic_pair(code); /* leave other bits (T_LINE_NUMBER) intact */
set_car(code, syntax_symbol(slot_value(initial_slot(carc)))); /* clear possible optimization confusion */
@@ -73282,7 +73111,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (sc->stack_end >= sc->stack_resize_trigger)
check_for_cyclic_code(sc, code);
push_stack(sc, OP_EVAL_ARGS, sc->nil, cdr(code));
- if (typesflag(car(carc)) == SYNTACTIC_TYPE)
+ if (is_syntactic_symbol(car(carc)))
/* was checking for is_syntactic here but that can be confused by successive optimizer passes:
* (define (hi) (((lambda () list)) 1 2 3)) etc
*/
@@ -73290,7 +73119,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if ((car(carc) == sc->quote_symbol) && /* ('and #f) */
((!is_pair(cdr(carc))) || /* ((quote . #\h) (2 . #\i)) ! */
(is_syntactic(cadr(carc)))))
- return(apply_error(sc, (is_pair(cdr(carc))) ? cadr(carc) : carc, cdr(code)));
+ apply_error(sc, (is_pair(cdr(carc))) ? cadr(carc) : carc, cdr(code));
sc->cur_op = (opcode_t)symbol_syntax_op(car(carc));
sc->code = cdr(carc);
goto START_WITHOUT_POP_STACK;
@@ -73312,7 +73141,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
else /* sc->code is not a pair */
{
if (is_symbol(code))
- sc->value = find_symbol_checked(sc, code);
+ sc->value = symbol_to_value_checked(sc, code);
else sc->value = _NFre(code);
goto START;
}
@@ -73333,8 +73162,10 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
goto APPLY; /* not UNSAFE_CLOSURE because it might be a bacro */
}
/* (define progn begin) (progn (display "hi") (+ 1 23)) */
+#if S7_DEBUGGING
if (!is_syntax(sc->value))
eval_error(sc, "attempt to evaluate: ~A?", sc->code);
+#endif
sc->cur_op = (opcode_t)syntax_opcode(sc->value);
goto START_WITHOUT_POP_STACK;
}
@@ -73382,6 +73213,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (!is_null(sc->args))
sc->args = safe_reverse_in_place(sc, x);
else sc->args = x;
+ /* fprintf(stderr, "goto apply %s %s\n", DISPLAY(sc->code), DISPLAY(sc->args)); */
goto APPLY;
}
@@ -73398,7 +73230,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
goto APPLY;
case OP_EVAL_ARGS_P_3:
- set_car(sc->t2_2, find_symbol_unchecked(sc, caddr(sc->code)));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, caddr(sc->code)));
/* we have to wait because we say the evaluation order is left to right (in lambda*)
* and the first arg's evaluation might change the value of the second arg.
*/
@@ -73407,7 +73239,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
break;
case OP_EVAL_ARGS_P_3_MV: /* (define (hi a) (+ (values 1 2) a)) */
- sc->args = s7_append(sc, sc->value, list_1(sc, find_symbol_unchecked(sc, caddr(sc->code))));
+ sc->args = s7_append(sc, sc->value, list_1(sc, symbol_to_value_unchecked(sc, caddr(sc->code))));
sc->code = c_function_base(opt_cfunc(sc->code));
goto APPLY;
@@ -73452,15 +73284,19 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
set_car(sc->t2_1, sc->args);
set_car(sc->t2_2, sc->value);
set_car(sc->t2_2, c_call(caddr(sc->code))(sc, sc->t2_1));
- set_car(sc->t2_1, find_symbol_unchecked(sc, cadr(sc->code)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, cadr(sc->code)));
sc->value = c_call(sc->code)(sc, sc->t2_1);
break;
case OP_SAFE_C_ZA_1:
- set_car(sc->t2_2, c_call(cddr(sc->code))(sc, caddr(sc->code)));
- set_car(sc->t2_1, sc->value);
- sc->value = c_call(sc->code)(sc, sc->t2_1);
- break;
+ {
+ s7_pointer val1;
+ val1 = sc->value;
+ set_car(sc->t2_2, c_call(cddr(sc->code))(sc, caddr(sc->code))); /* possible method call here, so sc->value needs to be saved first */
+ set_car(sc->t2_1, val1);
+ sc->value = c_call(sc->code)(sc, sc->t2_1);
+ break;
+ }
case OP_SAFE_C_ZZ_1:
push_stack(sc, OP_EVAL_ARGS_P_2, sc->value, sc->code);
@@ -73480,11 +73316,15 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
}
case OP_SAFE_C_AZA_1:
- set_car(sc->t3_3, c_call(cdddr(sc->code))(sc, cadddr(sc->code)));
- set_car(sc->t3_2, sc->value);
- set_car(sc->t3_1, sc->args);
- sc->value = c_call(sc->code)(sc, sc->t3_1);
- break;
+ {
+ s7_pointer val1;
+ val1 = sc->value;
+ set_car(sc->t3_3, c_call(cdddr(sc->code))(sc, cadddr(sc->code)));
+ set_car(sc->t3_2, val1);
+ set_car(sc->t3_1, sc->args);
+ sc->value = c_call(sc->code)(sc, sc->t3_1);
+ break;
+ }
case OP_SAFE_C_AAZ_1:
set_car(sc->t3_1, pop_op_stack(sc));
@@ -73545,7 +73385,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
s7_pointer x, y, val;
val = sc->code;
if (is_symbol(val))
- val = find_symbol_checked(sc, val);
+ val = symbol_to_value_checked(sc, val);
new_cell(sc, x, T_PAIR);
new_cell_no_check(sc, y, T_PAIR);
set_car(x, sc->value);
@@ -73620,7 +73460,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
sc->code = cdr(sc->code);
if (is_symbol(car_code))
- sc->value = find_symbol_checked(sc, car_code);
+ sc->value = symbol_to_value_checked(sc, car_code);
else sc->value = _NFre(car_code);
/* sc->value is the current arg's value, sc->code is pointing to the next */
@@ -73643,7 +73483,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
/* get the last arg */
if (is_symbol(car_code))
- val = find_symbol_checked(sc, car_code);
+ val = symbol_to_value_checked(sc, car_code);
else val = car_code;
sc->temp4 = val;
@@ -73681,7 +73521,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
sc->code = pop_op_stack(sc);
if (is_symbol(car_code))
- val = find_symbol_checked(sc, car_code); /* this has to precede the set_type below */
+ val = symbol_to_value_checked(sc, car_code); /* this has to precede the set_type below */
else val = car_code;
sc->temp4 = val;
new_cell(sc, x, T_PAIR);
@@ -73716,7 +73556,9 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
APPLY:
case OP_APPLY:
- /* fprintf(stderr, "apply %s to %s\n", DISPLAY(sc->code), DISPLAY(sc->args)); */
+#if SHOW_EVAL_OPS
+ fprintf(stderr, " apply %s to %s\n", DISPLAY(sc->code), DISPLAY(sc->args));
+#endif
switch (type(sc->code))
{
case T_C_FUNCTION: apply_c_function(sc); goto START;
@@ -73775,7 +73617,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
goto BEGIN1;
default:
- return(apply_error(sc, sc->code, sc->args));
+ apply_error(sc, sc->code, sc->args);
}
APPLY_LAMBDA:
@@ -73785,6 +73627,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_LAMBDA_STAR_DEFAULT:
/* sc->args is the current closure arg list position, sc->value is the default expression's value */
+ if (is_multiple_value(sc->value))
+ eval_error(sc, "lambda*: argument default value can't be ~S", cons(sc, sc->values_symbol, sc->value));
slot_set_value(sc->args, sc->value);
sc->args = slot_pending_value(sc->args);
if (lambda_star_default(sc) == goto_EVAL) goto EVAL;
@@ -73822,7 +73666,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
sc->args = copy_list(sc, cdar(sc->code)); /* apply_lambda reuses args as slots, and these have not been copied yet */
if (!is_symbol(caar(sc->code)))
eval_error(sc, "macroexpand argument is not a macro call: ~A", sc->code);
- sc->code = find_symbol_checked(sc, caar(sc->code));
+ sc->code = symbol_to_value_checked(sc, caar(sc->code));
MACROEXPAND:
switch (type(sc->code))
@@ -73880,10 +73724,12 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (is_symbol(sc->code))
{
s7_pointer slot;
- slot = find_symbol(sc, sc->code);
+ slot = symbol_to_slot(sc, sc->code);
/* set_immutable(sc->code); */ /* obsolete */
set_possibly_constant(sc->code);
set_immutable(slot);
+ if (is_any_closure(slot_value(slot)))
+ set_immutable(slot_value(slot)); /* for the optimizer mainly */
}
break;
@@ -73901,15 +73747,15 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
/* set_immutable(sym); */ /* obsolete */
set_immutable(global_slot(sym)); /* id == 0 so its global */
set_possibly_constant(sym);
-#if DEBUGGING
+#if S7_DEBUGGING
{
s7_pointer slot;
- slot = find_symbol(sc, sym);
+ slot = symbol_to_slot(sc, sym);
if (slot != global_slot(sym))
fprintf(stderr, "%s slots: %p %p %p\n", DISPLAY(sym), slot, global_slot(sym), local_slot(sym));
}
#endif
- sc->value = find_symbol_checked(sc, car(sc->code));
+ sc->value = symbol_to_value_checked(sc, car(sc->code));
goto START;
}
push_stack_no_args(sc, OP_DEFINE_CONSTANT1, sc->code);
@@ -73932,6 +73778,22 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_EVAL_STRING:
+ while (s7_peek_char(sc, sc->input_port) != EOF) /* (eval-string "(+ 1 2) this is a mistake") */
+ {
+ int32_t tk;
+ tk = token(sc); /* (eval-string "(+ 1 2) ; a comment (not a mistake)") */
+ if (tk != TOKEN_EOF)
+ {
+ int32_t trail_len;
+ s7_pointer trail_data;
+ trail_len = port_data_size(sc->input_port) - port_position(sc->input_port) + 1;
+ if (trail_len > 32) trail_len = 32;
+ trail_data = s7_make_string_with_length(sc, (const char *)(port_data(sc->input_port) + port_position(sc->input_port) - 1), trail_len);
+ s7_close_input_port(sc, sc->input_port);
+ pop_input_port(sc);
+ s7_error(sc, sc->read_error_symbol, set_elist_2(sc, make_string_wrapper_with_length(sc, "eval-string trailing junk: ~S", 29), trail_data));
+ }
+ }
s7_close_input_port(sc, sc->input_port);
pop_input_port(sc);
sc->code = sc->value;
@@ -73960,23 +73822,23 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_SET_PAIR_A:
{
s7_pointer obj, val;
- obj = find_symbol_checked(sc, caar(sc->code));
+ obj = symbol_to_value_checked(sc, caar(sc->code));
val = c_call(cdr(sc->code))(sc, cadr(sc->code)); /* this call can step on sc->tx_x */
set_car(sc->t2_1, cadar(sc->code)); /* might be a constant: (set! (mus-sound-srate "oboe.snd") 12345) */
if (is_symbol(car(sc->t2_1)))
- set_car(sc->t2_1, find_symbol_checked(sc, cadar(sc->code)));
+ set_car(sc->t2_1, symbol_to_value_checked(sc, cadar(sc->code)));
set_car(sc->t2_2, val);
sc->value = c_function_call(c_function_setter(obj))(sc, sc->t2_1);
}
break;
case OP_SET_LET_S: /* (set! (*s7* 'print-length) i) */
- if (set_pair_p_3(sc, find_symbol(sc, caar(sc->code)), cadr(cadar(sc->code)), find_symbol_unchecked(sc, cadr(sc->code))))
+ if (set_pair_p_3(sc, symbol_to_slot(sc, caar(sc->code)), cadr(cadar(sc->code)), symbol_to_value_unchecked(sc, cadr(sc->code))))
goto APPLY;
break;
case OP_SET_LET_ALL_X: /* (set! (hook 'result) 123) or (set! (H 'c) 32) */
- if (set_pair_p_3(sc, find_symbol(sc, caar(sc->code)), cadr(cadar(sc->code)), c_call(cdr(sc->code))(sc, cadr(sc->code))))
+ if (set_pair_p_3(sc, symbol_to_slot(sc, caar(sc->code)), cadr(cadar(sc->code)), c_call(cdr(sc->code))(sc, cadr(sc->code))))
goto APPLY;
break;
@@ -73994,13 +73856,13 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
value = sc->value;
arg = cadar(sc->code);
if (is_symbol(arg))
- arg = find_symbol_checked(sc, arg);
+ arg = symbol_to_value_checked(sc, arg);
else
{
if (is_pair(arg))
arg = cadr(arg); /* can only be (quote ...) in this case */
}
- if (set_pair_p_3(sc, find_symbol(sc, caar(sc->code)), arg, value))
+ if (set_pair_p_3(sc, symbol_to_slot(sc, caar(sc->code)), arg, value))
goto APPLY;
}
break;
@@ -74017,13 +73879,13 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
arg = cadar(sc->code);
if (is_symbol(arg))
- arg = find_symbol_checked(sc, arg);
+ arg = symbol_to_value_checked(sc, arg);
else
{
if (is_pair(arg))
arg = cadr(arg); /* can only be (quote ...) in this case */
}
- obj = find_symbol(sc, caar(sc->code));
+ obj = symbol_to_slot(sc, caar(sc->code));
func = slot_value(obj);
if ((is_closure(func)) &&
(is_safe_closure(closure_setter(func))))
@@ -74045,17 +73907,17 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
s7_pointer obj, func, arg, value;
value = cadr(sc->code);
if (is_symbol(value))
- value = find_symbol_checked(sc, value);
+ value = symbol_to_value_checked(sc, value);
arg = cadar(sc->code);
if (is_symbol(arg))
- arg = find_symbol_checked(sc, arg);
+ arg = symbol_to_value_checked(sc, arg);
else
{
if (is_pair(arg))
arg = cadr(arg); /* can only be (quote ...) in this case */
}
- obj = find_symbol(sc, caar(sc->code));
+ obj = symbol_to_slot(sc, caar(sc->code));
func = slot_value(obj);
if ((is_closure(func)) &&
(is_safe_closure(closure_setter(func))))
@@ -74077,11 +73939,11 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
s7_pointer obj, arg, value;
value = cadr(sc->code);
if (is_symbol(value))
- value = find_symbol_checked(sc, value);
+ value = symbol_to_value_checked(sc, value);
arg = cadar(sc->code);
if (is_symbol(arg))
- arg = find_symbol_checked(sc, arg);
+ arg = symbol_to_value_checked(sc, arg);
else
{
if (is_pair(arg))
@@ -74089,7 +73951,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
}
obj = caar(sc->code);
if (is_symbol(obj))
- obj = find_symbol(sc, obj);
+ obj = symbol_to_slot(sc, obj);
if (set_pair_p_3(sc, obj, arg, value))
goto APPLY;
}
@@ -74107,68 +73969,52 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_DECREMENT_1:
decrement_1_ex(sc);
break;
-
+
#define SET_CASE(Op, Code) \
case Op: \
{ \
s7_pointer lx; \
- lx = find_symbol(sc, _TSet(car(sc->code))); \
- if (!is_slot(lx)) eval_type_error(sc, "set! ~A: unbound variable", sc->code); \
+ lx = symbol_to_slot(sc, car(sc->code)); \
Code; \
sc->value = slot_value(lx); \
goto START; \
}
-
SET_CASE(OP_SET_SYMBOL_C, slot_set_value(lx, cadr(sc->code)))
SET_CASE(OP_SET_SYMBOL_Q, slot_set_value(lx, cadadr(sc->code)))
SET_CASE(OP_SET_SYMBOL_A, slot_set_value(lx, c_call(cdr(sc->code))(sc, cadr(sc->code))))
- SET_CASE(OP_SET_SYMBOL_L, slot_set_value(lx, local_symbol_value(cadr(sc->code))))
- SET_CASE(OP_SET_SYMBOL_S, slot_set_value(lx, find_symbol_unchecked(sc, cadr(sc->code))))
+ SET_CASE(OP_SET_SYMBOL_S, slot_set_value(lx, symbol_to_value_unchecked(sc, cadr(sc->code))))
- SET_CASE(OP_SET_CONS, slot_set_value(lx, cons(sc, find_symbol_unchecked(sc, opt_sym2(sc->code)), slot_value(lx)))) /* ([set!] bindings (cons v bindings)) */
+ SET_CASE(OP_SET_CONS, slot_set_value(lx, cons(sc, symbol_to_value_unchecked(sc, opt_sym2(sc->code)), slot_value(lx)))) /* ([set!] bindings (cons v bindings)) */
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 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))); \
- slot_set_value(lx, c_call(cadr(sc->code))(sc, sc->t1_1)); \
- } while (0))
- SET_CASE(OP_SET_SYMBOL_opLq,
- do { \
- set_car(sc->t1_1, local_symbol_value(opt_sym2(sc->code))); \
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, opt_sym2(sc->code))); \
slot_set_value(lx, c_call(cadr(sc->code))(sc, sc->t1_1)); \
} while (0))
-
SET_CASE(OP_SET_SYMBOL_opSSq,
do { \
- set_car(sc->t2_1, find_symbol_unchecked(sc, car(opt_pair2(sc->code)))); \
- set_car(sc->t2_2, find_symbol_unchecked(sc, cadr(opt_pair2(sc->code)))); \
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, car(opt_pair2(sc->code)))); \
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, cadr(opt_pair2(sc->code)))); \
slot_set_value(lx, c_call(cadr(sc->code))(sc, sc->t2_1)); \
} while (0))
- SET_CASE(OP_SET_SYMBOL_opLLq,
- do { \
- set_car(sc->t2_1, local_symbol_value(car(opt_pair2(sc->code)))); \
- set_car(sc->t2_2, local_symbol_value(cadr(opt_pair2(sc->code)))); \
- slot_set_value(lx, c_call(cadr(sc->code))(sc, sc->t2_1)); \
- } while (0))
-
SET_CASE(OP_SET_SYMBOL_opSSSq,
do { \
- set_car(sc->t3_1, find_symbol_unchecked(sc, car(opt_pair2(sc->code)))); \
- set_car(sc->t3_2, find_symbol_unchecked(sc, opt_sym1(opt_pair2(sc->code)))); \
- set_car(sc->t3_3, find_symbol_unchecked(sc, opt_sym2(opt_pair2(sc->code)))); \
+ set_car(sc->t3_1, symbol_to_value_unchecked(sc, car(opt_pair2(sc->code)))); \
+ set_car(sc->t3_2, symbol_to_value_unchecked(sc, opt_sym1(opt_pair2(sc->code)))); \
+ set_car(sc->t3_3, symbol_to_value_unchecked(sc, opt_sym2(opt_pair2(sc->code)))); \
slot_set_value(lx, c_call(cadr(sc->code))(sc, sc->t3_1)); \
} while (0))
SET_CASE(OP_INCREMENT_SS, /* ([set!] x (+ x i)) */
do { \
set_car(sc->t2_1, slot_value(lx)); \
- set_car(sc->t2_2, find_symbol_unchecked(sc, cadr(opt_pair2(sc->code)))); \
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, cadr(opt_pair2(sc->code)))); \
slot_set_value(lx, c_call(cadr(sc->code))(sc, sc->t2_1)); \
} while (0))
@@ -74176,8 +74022,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
do { \
s7_pointer x1; s7_pointer x2; s7_pointer x3; \
x1 = slot_value(lx); \
- x2 = find_symbol_unchecked(sc, opt_sym1(opt_pair2(sc->code))); \
- x3 = find_symbol_unchecked(sc, opt_sym2(opt_pair2(sc->code))); \
+ x2 = symbol_to_value_unchecked(sc, opt_sym1(opt_pair2(sc->code))); \
+ x3 = symbol_to_value_unchecked(sc, opt_sym2(opt_pair2(sc->code))); \
if ((is_t_real(x1)) && (is_t_real(x2)) && (is_t_real(x3))) \
slot_set_value(lx, make_real(sc, real(x1) + real(x2) + real(x3))); \
else { \
@@ -74208,8 +74054,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_SET_SAFE:
{
s7_pointer lx;
- lx = find_symbol(sc, _TSet(sc->code)); /* SET_CASE above looks for car(sc->code) */
- if (!is_slot(lx)) eval_type_error(sc, "set! ~A: unbound variable", sc->code);
+ lx = symbol_to_slot(sc, sc->code); /* SET_CASE above looks for car(sc->code) */
slot_set_value(lx, sc->value);
sc->value = slot_value(lx);
}
@@ -74229,14 +74074,10 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_INCREMENT_SZ:
{
s7_pointer sym;
- sym = find_symbol(sc, car(sc->code));
- if (is_slot(sym))
- {
- push_stack(sc, OP_INCREMENT_SZ_1, sym, sc->code);
- sc->code = _TPair(opt_pair2(sc->code)); /* caddr(cadr(sc->code)); */
- goto OPT_EVAL_CHECKED;
- }
- eval_type_error(sc, "set! ~A: unbound variable", sc->code);
+ sym = symbol_to_slot(sc, car(sc->code));
+ push_stack(sc, OP_INCREMENT_SZ_1, sym, sc->code);
+ sc->code = _TPair(opt_pair2(sc->code)); /* caddr(cadr(sc->code)); */
+ goto OPT_EVAL_CHECKED;
}
case OP_INCREMENT_SZ_1:
@@ -74328,7 +74169,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
}
if (is_symbol(x))
- sc->value = find_symbol_checked(sc, x);
+ sc->value = symbol_to_value_checked(sc, x);
else sc->value = _NFre(x);
sc->code = car(sc->code);
}
@@ -74337,7 +74178,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer lx;
/* if unbound variable hook here, we need the binding, not the current value */
- lx = find_symbol(sc, _TSet(sc->code));
+ lx = symbol_to_slot(sc, sc->code);
if (is_slot(lx))
{
if (slot_has_setter(lx))
@@ -74383,9 +74224,14 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
}
else
{
- if (is_syntactic_symbol(slot_symbol(lx)))
+ if ((is_syntactic_symbol(sc->code)) || /* (set! case 3) */
+ ((global_slot(sc->code) == lx) && /* (begin (let ((case 2)) case) (set! case 3)) */
+ (is_syntax(slot_value(lx))) &&
+ (sc->code == syntax_symbol(slot_value(lx)))))
eval_error(sc, "can't set! ~A", sc->code);
}
+ if (is_immutable(lx))
+ immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->set_symbol, lx));
slot_set_value(lx, sc->value);
goto START;
}
@@ -74393,6 +74239,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
}
case OP_SET_WITH_SETTER:
+ if (is_immutable(sc->code))
+ immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->set_symbol, sc->code));
slot_set_value(sc->code, sc->value);
break;
@@ -74414,13 +74262,13 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
if (is_symbol(b))
{
- e = find_symbol_checked(sc, e); /* the let */
+ e = symbol_to_value_checked(sc, e); /* the let */
if (!is_let(e))
- return(wrong_type_argument_with_type(sc, sc->let_set_symbol, 1, e, a_let_string));
+ wrong_type_argument_with_type(sc, sc->let_set_symbol, 1, e, a_let_string);
sc->value = let_set_1(sc, e, b, x);
goto START;
}
- sc->value = find_symbol_checked(sc, e);
+ sc->value = symbol_to_value_checked(sc, e);
sc->code = list_2(sc, b, ((is_symbol(x)) || (is_pair(x))) ? set_plist_2(sc, sc->quote_symbol, x) : x);
goto SET_WITH_LET;
}
@@ -74438,7 +74286,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
s7_pointer b, x;
/* here sc->value = let = 'e, args = '(b x) where 'b might be a pair */
if (!is_let(sc->value))
- return(wrong_type_argument_with_type(sc, sc->let_set_symbol, 1, sc->value, a_let_string));
+ wrong_type_argument_with_type(sc, sc->let_set_symbol, 1, sc->value, a_let_string);
b = car(sc->args);
x = cadr(sc->args);
if (is_symbol(b)) /* b is a symbol -- everything else is ready so call let-set! */
@@ -74462,7 +74310,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (choice == goto_APPLY) goto APPLY;
goto EVAL_ARGS;
}
- return(s7_error(sc, sc->error_symbol, set_elist_2(sc, s7_make_string_wrapper(sc, "can't set ~S"), sc->args)));
+ s7_error(sc, sc->error_symbol, set_elist_2(sc, s7_make_string_wrapper(sc, "can't set ~S"), sc->args));
/* -------------------------------- if -------------------------------- */
@@ -74481,7 +74329,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (is_pair(sc->code))
goto EVAL;
if (is_symbol(sc->code))
- sc->value = find_symbol_checked(sc, sc->code);
+ sc->value = symbol_to_value_checked(sc, sc->code);
else sc->value = sc->code;
break;
@@ -74494,8 +74342,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case Op ## _N_N: Not_Code {sc->code = cadr(sc->code); goto EVAL;} else {sc->code = caddr(sc->code); goto EVAL;}
IF_CASE(OP_IF_S,
- if (is_true(sc, find_symbol_unchecked(sc, car(sc->code)))),
- if (is_false(sc, find_symbol_unchecked(sc, cadar(sc->code)))))
+ if (is_true(sc, symbol_to_value_unchecked(sc, car(sc->code)))),
+ if (is_false(sc, symbol_to_value_unchecked(sc, cadar(sc->code)))))
IF_CASE(OP_IF_A,
if (is_true(sc, c_call(sc->code)(sc, car(sc->code)))),
@@ -74506,56 +74354,56 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (is_false(sc, c_call(cadar(sc->code))(sc, opt_pair2(sc->code)))))
IF_CASE(OP_IF_IS_TYPE_S,
- if (type(find_symbol_unchecked(sc, opt_sym2(sc->code))) == opt_con3(sc->code)),
- if (type(find_symbol_unchecked(sc, opt_sym2(sc->code))) != opt_con3(sc->code)))
+ if (type(symbol_to_value_unchecked(sc, opt_sym2(sc->code))) == opt_con3(sc->code)),
+ if (type(symbol_to_value_unchecked(sc, opt_sym2(sc->code))) != opt_con3(sc->code)))
IF_CASE(OP_IF_IS_TYPE_opSq,
- set_car(sc->t1_1, find_symbol_unchecked(sc, opt_sym2(sc->code))); \
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, opt_sym2(sc->code))); \
if (type(c_call(cadar(sc->code))(sc, sc->t1_1)) == opt_con3(sc->code)),
- set_car(sc->t1_1, find_symbol_unchecked(sc, opt_sym2(sc->code))); \
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, opt_sym2(sc->code))); \
if (type(c_call(cadr(cadar(sc->code)))(sc, sc->t1_1)) != opt_con3(sc->code)))
IF_CASE(OP_IF_CS,
- set_car(sc->t1_1, find_symbol_unchecked(sc, opt_sym2(sc->code))); if (is_true(sc, c_call(car(sc->code))(sc, sc->t1_1))),
- set_car(sc->t1_1, find_symbol_unchecked(sc, opt_sym2(sc->code))); if (is_false(sc, c_call(cadar(sc->code))(sc, sc->t1_1))))
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, opt_sym2(sc->code))); if (is_true(sc, c_call(car(sc->code))(sc, sc->t1_1))),
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, opt_sym2(sc->code))); if (is_false(sc, c_call(cadar(sc->code))(sc, sc->t1_1))))
IF_CASE(OP_IF_CSQ,
- set_car(sc->t2_1, find_symbol_unchecked(sc, opt_sym3(sc->code))); \
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, opt_sym3(sc->code))); \
set_car(sc->t2_2, opt_con2(sc->code)); \
if (is_true(sc, c_call(car(sc->code))(sc, sc->t2_1))),
- set_car(sc->t2_1, find_symbol_unchecked(sc, opt_sym3(sc->code))); \
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, opt_sym3(sc->code))); \
set_car(sc->t2_2, opt_con2(sc->code)); \
if (is_false(sc, c_call(cadar(sc->code))(sc, sc->t2_1))))
IF_CASE(OP_IF_CSS,
- set_car(sc->t2_1, find_symbol_unchecked(sc, opt_sym3(sc->code))); \
- set_car(sc->t2_2, find_symbol_unchecked(sc, opt_sym2(sc->code)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, opt_sym3(sc->code))); \
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, opt_sym2(sc->code)));
if (is_true(sc, c_call(car(sc->code))(sc, sc->t2_1))),
- set_car(sc->t2_1, find_symbol_unchecked(sc, opt_sym3(sc->code))); \
- set_car(sc->t2_2, find_symbol_unchecked(sc, opt_sym2(sc->code)));
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, opt_sym3(sc->code))); \
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, opt_sym2(sc->code)));
if (is_false(sc, c_call(cadar(sc->code))(sc, sc->t2_1))))
IF_CASE(OP_IF_CSC,
- set_car(sc->t2_1, find_symbol_unchecked(sc, opt_sym3(sc->code))); \
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, opt_sym3(sc->code))); \
set_car(sc->t2_2, opt_con2(sc->code)); \
if (is_true(sc, c_call(car(sc->code))(sc, sc->t2_1))),
- set_car(sc->t2_1, find_symbol_unchecked(sc, opt_sym3(sc->code))); \
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, opt_sym3(sc->code))); \
set_car(sc->t2_2, opt_con2(sc->code)); \
if (is_false(sc, c_call(cadar(sc->code))(sc, sc->t2_1))))
IF_CASE(OP_IF_S_opCq,
set_car(sc->t2_2, c_call(opt_pair2(sc->code))(sc, cdr(opt_pair2(sc->code)))); \
- set_car(sc->t2_1, find_symbol_unchecked(sc, opt_sym3(sc->code))); \
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, opt_sym3(sc->code))); \
if (is_true(sc, c_call(car(sc->code))(sc, sc->t2_1))),
set_car(sc->t2_2, c_call(opt_pair2(sc->code))(sc, cdr(opt_pair2(sc->code)))); \
- set_car(sc->t2_1, find_symbol_unchecked(sc, opt_sym3(sc->code))); \
+ set_car(sc->t2_1, symbol_to_value_unchecked(sc, opt_sym3(sc->code))); \
if (is_false(sc, c_call(cadar(sc->code))(sc, sc->t2_1))))
IF_CASE(OP_IF_opSq,
- set_car(sc->t1_1, find_symbol_unchecked(sc, opt_sym3(sc->code))); \
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, opt_sym3(sc->code))); \
set_car(sc->t1_1, c_call(opt_pair2(sc->code))(sc, sc->t1_1)); \
if (is_true(sc, c_call(car(sc->code))(sc, sc->t1_1))),
- set_car(sc->t1_1, find_symbol_unchecked(sc, opt_sym3(sc->code))); \
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, opt_sym3(sc->code))); \
set_car(sc->t1_1, c_call(opt_pair2(sc->code))(sc, sc->t1_1)); \
if (is_false(sc, c_call(cadar(sc->code))(sc, sc->t1_1))))
@@ -74673,7 +74521,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
break;
case OP_WHEN_S:
- if (is_true(sc, find_symbol_unchecked(sc, car(sc->code))))
+ if (is_true(sc, symbol_to_value_unchecked(sc, car(sc->code))))
{
push_stack_no_args(sc, OP_BEGIN1, _TPair(cddr(sc->code)));
sc->code = cadr(sc->code);
@@ -74712,7 +74560,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
break;
case OP_UNLESS_S:
- if (is_false(sc, find_symbol_unchecked(sc, car(sc->code))))
+ if (is_false(sc, symbol_to_value_unchecked(sc, car(sc->code))))
{
push_stack_no_args(sc, OP_BEGIN1, _TPair(cddr(sc->code)));
sc->code = cadr(sc->code);
@@ -74818,6 +74666,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_C_P_2:
/* op_c_p_1 -> mv case: (define (hi) (format (values #f "~A ~D" 1 2))) */
+ /* fprintf(stderr, "op_c_p_2: code: %s, value: %s\n", DISPLAY(sc->code), DISPLAY(sc->value)); */
sc->code = c_function_base(opt_cfunc(sc->code)); /* see comment above */
sc->args = copy_list(sc, sc->value);
goto APPLY;
@@ -74896,7 +74745,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
/* one var, init is symbol, incoming sc->code is '(((var sym))...) */
s7_pointer binding;
binding = _TPair(caar(sc->code));
- sc->value = find_symbol_checked(sc, cadr(binding));
+ sc->value = symbol_to_value_checked(sc, cadr(binding));
new_frame_with_slot(sc, sc->envir, sc->envir, car(binding), sc->value);
sc->code = _TPair(cdr(sc->code));
goto BEGIN1;
@@ -74906,7 +74755,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer binding;
binding = _TPair(caar(sc->code));
- sc->value = find_symbol_checked(sc, cadr(binding));
+ sc->value = symbol_to_value_checked(sc, cadr(binding));
new_frame_with_slot(sc, sc->envir, sc->envir, car(binding), sc->value);
sc->code = _TPair(cadr(sc->code));
goto OPT_EVAL_CHECKED;
@@ -74916,7 +74765,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer binding;
binding = _TPair(caar(sc->code));
- set_car(sc->t1_1, find_symbol_unchecked(sc, opt_sym2(sc->code)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, opt_sym2(sc->code)));
sc->value = c_call(cadr(binding))(sc, sc->t1_1);
new_frame_with_slot(sc, sc->envir, sc->envir, car(binding), sc->value);
push_stack_no_args(sc, OP_BEGIN1, _TPair(cddr(sc->code)));
@@ -74928,7 +74777,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer binding, val;
binding = _TPair(caar(sc->code));
- val = find_symbol_unchecked(sc, opt_sym2(sc->code));
+ val = symbol_to_value_unchecked(sc, opt_sym2(sc->code));
sc->value = (is_pair(val)) ? car(val) : g_car(sc, set_plist_1(sc, val));
new_frame_with_slot(sc, sc->envir, sc->envir, car(binding), sc->value);
push_stack_no_args(sc, OP_BEGIN1, _TPair(cddr(sc->code)));
@@ -74940,7 +74789,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer binding;
binding = _TPair(caar(sc->code));
- set_car(sc->t1_1, find_symbol_unchecked(sc, opt_sym2(sc->code)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, opt_sym2(sc->code)));
sc->value = c_call(cadr(binding))(sc, sc->t1_1);
new_frame_with_slot(sc, sc->envir, sc->envir, car(binding), sc->value);
sc->code = cadr(sc->code);
@@ -74957,8 +74806,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer largs, in_val;
largs = _TPair(opt_pair2(sc->code)); /* cadr(caar(sc->code)); */
- in_val = find_symbol_unchecked(sc, cadr(largs));
- set_car(sc->t2_2, find_symbol_unchecked(sc, opt_sym3(sc->code))); /* caddr(largs)); */
+ in_val = symbol_to_value_unchecked(sc, cadr(largs));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, opt_sym3(sc->code))); /* caddr(largs)); */
set_car(sc->t2_1, in_val);
sc->value = c_call(largs)(sc, sc->t2_1);
new_frame_with_slot(sc, sc->envir, sc->envir, caaar(sc->code), sc->value);
@@ -74970,8 +74819,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer largs, in_val;
largs = _TPair(opt_pair2(sc->code)); /* cadr(caar(sc->code)); */
- in_val = find_symbol_unchecked(sc, cadr(largs));
- set_car(sc->t2_2, find_symbol_unchecked(sc, opt_sym3(sc->code))); /* caddr(largs)); */
+ in_val = symbol_to_value_unchecked(sc, cadr(largs));
+ set_car(sc->t2_2, symbol_to_value_unchecked(sc, opt_sym3(sc->code))); /* caddr(largs)); */
set_car(sc->t2_1, in_val);
sc->value = c_call(largs)(sc, sc->t2_1);
new_frame_with_slot(sc, sc->envir, sc->envir, caaar(sc->code), sc->value);
@@ -74982,8 +74831,8 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_LET_opaSSq_E:
{
s7_pointer in_val, lst;
- in_val = find_symbol_unchecked(sc, cadr(opt_pair2(sc->code)));
- lst = find_symbol_unchecked(sc, opt_sym3(sc->code));
+ in_val = symbol_to_value_unchecked(sc, cadr(opt_pair2(sc->code)));
+ lst = symbol_to_value_unchecked(sc, opt_sym3(sc->code));
if (is_pair(lst))
sc->value = s7_assq(sc, in_val, lst);
else
@@ -75036,7 +74885,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
goto EVAL;
}
if (is_symbol(sc->value))
- sc->value = find_symbol_checked(sc, sc->value);
+ sc->value = symbol_to_value_checked(sc, sc->value);
sc->code = _TPair(cdr(sc->code));
sc->args = car(p);
/* drop through */
@@ -75065,7 +74914,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
frame = make_simple_let(sc);
sc->args = frame;
for (p = car(sc->code); is_pair(p); p = cdr(p))
- add_slot(frame, caar(p), find_symbol_checked(sc, cadar(p)));
+ add_slot(frame, caar(p), symbol_to_value_checked(sc, cadar(p)));
sc->let_number++;
sc->envir = frame;
sc->code = _TPair(cdr(sc->code));
@@ -75081,7 +74930,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
s7_pointer cp;
cp = cadar(p);
- set_car(sc->t1_1, find_symbol_unchecked(sc, cadr(cp)));
+ set_car(sc->t1_1, symbol_to_value_unchecked(sc, cadr(cp)));
add_slot(frame, caar(p), c_call(cp)(sc, sc->t1_1));
}
sc->let_number++;
@@ -75194,7 +75043,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
*/
}
if (is_symbol(x))
- sc->value = find_symbol_checked(sc, x);
+ sc->value = symbol_to_value_checked(sc, x);
else sc->value = _NFre(x);
sc->code = cdr(sc->code);
goto LET1;
@@ -75413,7 +75262,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
goto EVAL;
}
if (is_symbol(x))
- sc->value = find_symbol_checked(sc, x);
+ sc->value = symbol_to_value_checked(sc, x);
else sc->value = _NFre(x);
}
else break;
@@ -75439,17 +75288,15 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
check_letrec(sc, true);
case OP_LETREC_UNCHECKED:
- /* get all local vars and set to #<undefined>
- * get parallel list of values
- * eval each member of values list with env still full of #<undefined>'s
- * assign each value to its variable
- * eval body
- *
+ /* get all local vars and set to #<undefined>
+ * get parallel list of values
+ * eval each member of values list with env still full of #<undefined>'s
+ * assign each value to its variable
+ * eval body
* which means that (letrec ((x x)) x) is not an error!
* but this assumes the environment is not changed by evaluating the exprs?
* (letrec ((a (define b 1))) b) -- if let, the define takes place in the calling env, not the current env
* (letrec ((f1 (lambda (x) (f2 (* 2 x))))) (define (f2 y) (- y 1)) (f1 3)) -> 5 (Guile says unbound f2)
- *
* I think I need to check here that slot_pending_value is set (using the is_checked bit below).
*/
sc->envir = new_frame_in_env(sc, sc->envir);
@@ -75555,6 +75402,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
check_let_temporarily(sc);
case OP_LET_TEMP_UNCHECKED:
+ /* fprintf(stderr, "let-temp: %s\n", DISPLAY(sc->envir)); */
push_stack(sc, OP_GC_PROTECT, sc->args = list_4(sc, car(sc->code), sc->nil, sc->nil, sc->nil), sc->code);
/* sc->args: varlist, settees, old_values, new_values */
goto LET_TEMP_INIT1;
@@ -75574,7 +75422,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
cadddr(sc->args) = cons(sc, new_value, cadddr(sc->args));
car(sc->args) = cdar(sc->args);
if (is_symbol(settee))
- caddr(sc->args) = cons(sc, find_symbol_checked(sc, settee), caddr(sc->args));
+ caddr(sc->args) = cons(sc, symbol_to_value_checked(sc, settee), caddr(sc->args));
else
{
if (is_pair(settee))
@@ -75592,7 +75440,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
/* now eval set car new-val, cadr=settees, cadddr= new_values */
while (is_pair(car(sc->args)))
{
- s7_pointer settee, new_value;
+ s7_pointer settee, new_value, slot;
settee = caar(sc->args);
new_value = car(cadddr(sc->args));
cadddr(sc->args) = cdr(cadddr(sc->args));
@@ -75605,13 +75453,17 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
sc->code = list_3(sc, sc->set_symbol, settee, new_value);
goto EVAL;
}
+ slot = symbol_to_slot(sc, settee);
+ if (is_immutable_slot(slot))
+ immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->let_temporarily_symbol, settee));
if (is_symbol(new_value))
- new_value = find_symbol_checked(sc, new_value);
- slot_set_value(find_symbol(sc, settee), new_value);
+ new_value = symbol_to_value_checked(sc, new_value);
+ slot_set_value(slot, new_value);
}
car(sc->args) = cadr(sc->args);
pop_stack(sc);
+ /* fprintf(stderr, "push done: %s\n", DISPLAY(sc->envir)); */
push_stack(sc, OP_LET_TEMP_DONE, sc->args, sc->code);
sc->code = cdr(sc->code);
if (is_pair(sc->code))
@@ -75619,12 +75471,14 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
else sc->value = sc->nil; /* so (let-temporarily (<vars)) -> () like begin I guess */
case OP_LET_TEMP_DONE:
+ /* fprintf(stderr, "at done: %s\n", DISPLAY(sc->envir)); */
push_stack(sc, OP_GC_PROTECT, sc->args, sc->value);
case OP_LET_TEMP_DONE1:
+ /* fprintf(stderr, "done: %s\n", DISPLAY(sc->envir)); */
while (is_pair(car(sc->args)))
{
- s7_pointer settee, old_value;
+ s7_pointer settee, old_value, slot;
settee = caar(sc->args);
old_value = caaddr(sc->args);
caddr(sc->args) = cdaddr(sc->args);
@@ -75638,7 +75492,10 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
else sc->code = list_3(sc, sc->set_symbol, settee, old_value);
goto EVAL;
}
- slot_set_value(find_symbol(sc, settee), old_value);
+ slot = symbol_to_slot(sc, settee);
+ if (is_immutable_slot(slot))
+ immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->let_temporarily_symbol, settee));
+ slot_set_value(slot, old_value);
}
pop_stack(sc);
sc->value = sc->code;
@@ -75731,7 +75588,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
}
if ((is_symbol(sc->value)) &&
((sc->value != sc->else_symbol) || (symbol_id(sc->else_symbol) != 0)))
- sc->value = find_symbol_checked(sc, sc->value);
+ sc->value = symbol_to_value_checked(sc, sc->value);
case OP_COND1_SIMPLE:
if (is_true(sc, sc->value))
@@ -75939,7 +75796,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
{
sc->value = car(sc->code);
if (is_symbol(sc->value))
- sc->value = find_symbol_checked(sc, sc->value);
+ sc->value = symbol_to_value_checked(sc, sc->value);
if ((is_true(sc, sc->value)) ||
(is_null(cdr(sc->code))))
@@ -76066,9 +75923,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
else
{
if (is_pair(sc->value))
- /* annotate_expansion(sc->value); */
sc->value = copy_body(sc, sc->value);
- /* TODO: can the copy be avoided? */
}
break;
@@ -76093,7 +75948,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (symbol_has_setter(caar(sc->code)))
{
s7_pointer x;
- x = find_symbol(sc, caar(sc->code));
+ x = symbol_to_slot(sc, caar(sc->code));
if ((is_slot(x)) &&
(slot_has_setter(x)))
{
@@ -76105,7 +75960,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
}
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));
+ eval_error_no_return(sc, sc->syntax_error_symbol, "define-macro ~S: let is immutable", caar(sc->code)); /* need eval_error_no_return_with_caller? */
sc->value = make_macro(sc, sc->cur_op);
break;
@@ -76124,7 +75979,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
break;
- /* -------------------------------- CASE -------------------------------- */
+ /* -------------------------------- case -------------------------------- */
case OP_CASE: /* case, car(sc->code) is the selector */
check_case(sc);
@@ -76135,7 +75990,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (!is_pair(carc))
{
if (is_symbol(carc))
- sc->value = find_symbol_checked(sc, carc);
+ sc->value = symbol_to_value_checked(sc, carc);
else sc->value = carc;
/* fall through */
}
@@ -76232,11 +76087,11 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
goto CASE_G_G;
case OP_CASE_S_G_S:
- sc->value = find_symbol_checked(sc, car(sc->code));
+ sc->value = symbol_to_value_checked(sc, car(sc->code));
goto CASE_G_S;
case OP_CASE_S_G_G:
- sc->value = find_symbol_checked(sc, car(sc->code));
+ sc->value = symbol_to_value_checked(sc, car(sc->code));
goto CASE_G_G;
/* selector = any */
@@ -76266,7 +76121,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
goto EVAL;
case OP_CASE_S_E_S:
- sc->value = find_symbol_checked(sc, car(sc->code));
+ sc->value = symbol_to_value_checked(sc, car(sc->code));
/* goto CASE_E_S; */
CASE_E_S:
@@ -76289,7 +76144,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
break;
case OP_CASE_S_I_S:
- sc->value = find_symbol_checked(sc, car(sc->code));
+ sc->value = symbol_to_value_checked(sc, car(sc->code));
/* goto CASE_I_S; */
CASE_I_S:
@@ -76361,7 +76216,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
break;
case OP_CASE_S_E_G:
- sc->value = find_symbol_checked(sc, car(sc->code));
+ sc->value = symbol_to_value_checked(sc, car(sc->code));
/* goto CASE_E_G; */
CASE_E_G:
@@ -76445,7 +76300,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
push_stack_op(sc, OP_ERROR_QUIT); /* added 3-Dec-16: try to make sure we actually exit! */
sc->cur_op = OP_ERROR_QUIT;
if (sc->longjmp_ok) longjmp(sc->goto_start, ERROR_QUIT_JUMP);
-#if DEBUGGING
+#if S7_DEBUGGING
fprintf(stderr, "%d: op_error_hook_quit did not jump, returns %s\n", __LINE__, DISPLAY(sc->value));
#endif
return(sc->value); /* not executed I hope */
@@ -76507,7 +76362,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_WITH_LET_S:
{
s7_pointer e;
- e = find_symbol_checked(sc, car(sc->code));
+ e = symbol_to_value_checked(sc, car(sc->code));
if (e == sc->rootlet)
sc->envir = sc->nil;
else
@@ -76544,7 +76399,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (!is_pair(sc->value))
{
if (is_symbol(sc->value))
- sc->value = find_symbol_checked(sc, sc->value);
+ sc->value = symbol_to_value_checked(sc, sc->value);
sc->code = cdr(sc->code);
if (!is_pair(sc->code))
@@ -76680,7 +76535,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (sc->tok == TOKEN_DOT)
{
do {c = inchar(pt);} while ((c != ')') && (c != EOF));
- return(read_error(sc, "stray dot after '('?")); /* (car '( . )) */
+ read_error(sc, "stray dot after '('?"); /* (car '( . )) */
}
if (sc->tok == TOKEN_EOF)
@@ -76717,7 +76572,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (sc->value == sc->F) /* can happen if input code ends in the middle of a string */
return(string_read_error(sc, "end of input encountered while in a string"));
if (sc->value == sc->T)
- return(read_error(sc, "unknown backslash usage -- perhaps you meant two backslashes?"));
+ read_error(sc, "unknown backslash usage -- perhaps you meant two backslashes?");
if (sc->safety > IMMUTABLE_VECTOR_SAFETY) set_immutable(sc->value);
goto READ_LIST;
@@ -76800,7 +76655,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
if (sc->value == sc->F) /* can happen if input code ends in the middle of a string */
return(string_read_error(sc, "end of input encountered while in a string"));
if (sc->value == sc->T)
- return(read_error(sc, "unknown backslash usage -- perhaps you meant two backslashes?"));
+ read_error(sc, "unknown backslash usage -- perhaps you meant two backslashes?");
if (sc->safety > IMMUTABLE_VECTOR_SAFETY) set_immutable(sc->value);
goto READ_LIST;
@@ -76858,6 +76713,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
break;
case OP_READ_QUOTE:
+ /* fprintf(stderr, "op_read_quote: %s %d\n", DISPLAY(sc->value), sc->safety); */
/* can't check for sc->value = sc->nil here because we want ''() to be different from '() */
if ((sc->safety > IMMUTABLE_VECTOR_SAFETY) &&
((is_pair(sc->value)) || (s7_is_vector(sc->value)) || (is_string(sc->value))))
@@ -76881,7 +76737,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_READ_VECTOR:
if (is_dotted_pair(sc->value)) /* #(1 . 2) */
- return(read_error(sc, "vector constant data is not a proper list"));
+ read_error(sc, "vector constant data is not a proper list");
sc->v = sc->value;
if (sc->args == small_int(1)) /* sc->args was sc->w earlier from read_sharp */
sc->value = g_vector(sc, sc->value);
@@ -76894,7 +76750,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_READ_INT_VECTOR:
if (is_dotted_pair(sc->value))
- return(read_error(sc, "vector constant data is not a proper list"));
+ read_error(sc, "vector constant data is not a proper list");
sc->v = sc->value;
if (sc->args == small_int(1)) /* sc->args was sc->w earlier from read_sharp */
sc->value = g_int_vector(sc, sc->value);
@@ -76906,7 +76762,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_READ_FLOAT_VECTOR:
if (is_dotted_pair(sc->value))
- return(read_error(sc, "vector constant data is not a proper list"));
+ read_error(sc, "vector constant data is not a proper list");
sc->v = sc->value;
if (sc->args == small_int(1)) /* sc->args was sc->w earlier from read_sharp */
sc->value = g_float_vector(sc, sc->value);
@@ -76918,7 +76774,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
case OP_READ_BYTE_VECTOR:
if (is_dotted_pair(sc->value))
- return(read_error(sc, "byte-vector constant data is not a proper list"));
+ read_error(sc, "byte-vector constant data is not a proper list");
sc->v = sc->value;
sc->value = g_byte_vector(sc, sc->value);
free_vlist(sc, sc->v);
@@ -76941,7 +76797,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
default:
fprintf(stderr, "unknown operator: %" PRIdPTR " in %s\n", sc->cur_op, DISPLAY(current_code(sc)));
-#if DEBUGGING
+#if S7_DEBUGGING
fprintf(stderr, "stack size: %u\n", sc->stack_size);
if (sc->stack_end < sc->stack_start)
fprintf(stderr, "%sstack underflow%s\n", BOLD_TEXT, UNBOLD_TEXT);
@@ -76957,7 +76813,7 @@ static s7_pointer eval(s7_scheme *sc, opcode_t first_op)
#if WITH_GCC
#undef new_cell
-#if (!DEBUGGING)
+#if (!S7_DEBUGGING)
#define new_cell(Sc, Obj, Type) \
do { \
if (Sc->free_heap_top <= Sc->free_heap_trigger) try_to_call_gc(Sc); \
@@ -78499,10 +78355,6 @@ static s7_pointer big_divide(s7_scheme *sc, s7_pointer args)
result_type = get_result_type(sc, result_type, p);
if (result_type < 0)
return(g_divide(sc, args));
-
- if ((x != args) &&
- (s7_is_zero(p)))
- return(division_by_zero_error(sc, sc->divide_symbol, args));
}
if (result_type < T_BIG_INTEGER)
@@ -80176,7 +80028,7 @@ static s7_pointer big_rationalize(s7_scheme *sc, s7_pointer args)
static s7_pointer big_exact_to_inexact(s7_scheme *sc, s7_pointer args)
{
#define H_exact_to_inexact "(exact->inexact num) converts num to an inexact number; (exact->inexact 3/2) = 1.5"
- #define Q_exact_to_inexact pcl_r
+ #define Q_exact_to_inexact s7_make_signature(sc, 2, sc->is_number_symbol, sc->is_number_symbol)
s7_pointer p;
@@ -81277,6 +81129,7 @@ static void init_s7_let(s7_scheme *sc)
sc->safety_symbol = s7_let_field(sc, "safety");
sc->undefined_identifier_warnings_symbol = s7_let_field(sc, "undefined-identifier-warnings");
sc->gc_stats_symbol = s7_let_field(sc, "gc-stats");
+ sc->max_heap_size_symbol = s7_let_field(sc, "max-heap-size");
sc->max_stack_size_symbol = s7_let_field(sc, "max-stack-size");
sc->cpu_time_symbol = s7_let_field(sc, "cpu-time");
sc->catches_symbol = s7_let_field(sc, "catches");
@@ -81322,7 +81175,7 @@ static s7_pointer describe_memory_usage(s7_scheme *sc)
struct timeval ut;
#endif
- if (!is_output_port(sc->output_port)) return(sc->F); /* might be #f */
+ if (!is_output_port(sc->output_port)) return(sc->F); /* might be #f -- if #f should we set up a string port and return the string at the end? */
#ifdef __linux__
getrusage(RUSAGE_SELF, &info);
@@ -81362,7 +81215,10 @@ static s7_pointer describe_memory_usage(s7_scheme *sc)
n = snprintf(buf, 1024, "permanent cells: %d (%" PRId64 " bytes)\n", permanent_cells, (s7_int)(permanent_cells * sizeof(s7_cell)));
port_write_string(sc->output_port)(sc, buf, n, sc->output_port);
- n = snprintf(buf, 1024, "gc protected size: %u, unused: %d\n", sc->protected_objects_size, sc->gpofl_loc);
+ n = snprintf(buf, 1024, "gc protected objects size: %u, unused: %d\n", sc->protected_objects_size, sc->gpofl_loc);
+ port_write_string(sc->output_port)(sc, buf, n, sc->output_port);
+
+ n = snprintf(buf, 1024, "gc protected setters: %u\n", sc->protected_setters_loc);
port_write_string(sc->output_port)(sc, buf, n, sc->output_port);
{
@@ -81411,7 +81267,7 @@ static s7_pointer describe_memory_usage(s7_scheme *sc)
port_write_string(sc->output_port)(sc, buf, n, sc->output_port);
}
{
- int64_t len = 0, flen = 0, ilen = 0;
+ int64_t vlen = 0, flen = 0, ilen = 0;
gp = sc->vectors;
for (i = 0; i < (int32_t)(gp->loc); i++)
{
@@ -81423,14 +81279,14 @@ static s7_pointer describe_memory_usage(s7_scheme *sc)
{
if (is_int_vector(v))
ilen += vector_length(v);
- else len += vector_length(v);
+ else vlen += vector_length(v);
}
}
- n = snprintf(buf, 1024, "vectors: %u (size: %" PRId64 ", float: %" PRId64 ", int: %" PRId64 ")\n", sc->vectors->loc, len, flen, ilen);
+ n = snprintf(buf, 1024, "vectors: %u (size: %" PRId64 ", float: %" PRId64 ", int: %" PRId64 ")\n", sc->vectors->loc, vlen, flen, ilen);
port_write_string(sc->output_port)(sc, buf, n, sc->output_port);
}
{
- int64_t len = 0, flen = 0;
+ int64_t ulen = 0, flen = 0;
gp = sc->input_ports;
for (i = 0; i < (int32_t)(gp->loc); i++)
{
@@ -81440,10 +81296,10 @@ static s7_pointer describe_memory_usage(s7_scheme *sc)
{
flen += port_data_size(v);
if (port_needs_free(v))
- len += port_data_size(v);
+ ulen += port_data_size(v);
}
}
- n = snprintf(buf, 1024, "input ports: %d (bytes (free): %" PRId64 ", (in use): %" PRId64 ")\n", sc->input_ports->loc, len, flen - len);
+ n = snprintf(buf, 1024, "input ports: %d (bytes (free): %" PRId64 ", (in use): %" PRId64 ")\n", sc->input_ports->loc, ulen, flen - ulen);
port_write_string(sc->output_port)(sc, buf, n, sc->output_port);
}
{
@@ -81456,7 +81312,7 @@ static s7_pointer describe_memory_usage(s7_scheme *sc)
cc_stacks += continuation_stack_size(gp->list[i]);
n = snprintf(buf, 1024, "output ports: %u, free port: %u (%lu bytes)\ncontinuations: %u (total stack: %u), c_objects: %u, gensyms: %u, setters: %u, optlists: %u, unknowns: %u\n",
- sc->output_ports->loc, fs, fs * sizeof(port_t),
+ sc->output_ports->loc, fs, (unsigned long)(fs * sizeof(port_t)),
gp->loc, cc_stacks,
sc->c_objects->loc, sc->gensyms->loc, sc->setters_loc, sc->optlists->loc, sc->unknowns->loc);
port_write_string(sc->output_port)(sc, buf, n, sc->output_port);
@@ -81503,6 +81359,8 @@ static s7_pointer g_s7_let_ref_fallback(s7_scheme *sc, s7_pointer args)
if (sym == sc->stack_symbol) /* stack */
return(stack_entries(sc, sc->stack, s7_stack_top(sc)));
+ if (sym == sc->max_heap_size_symbol) /* max-heap-size */
+ return(s7_make_integer(sc, sc->max_heap_size));
if (sym == sc->heap_size_symbol) /* heap-size */
return(s7_make_integer(sc, sc->heap_size));
if (sym == sc->free_heap_size_symbol) /* free-heap-size (number of unused cells in the heap) */
@@ -81693,9 +81551,31 @@ static s7_pointer g_s7_let_set_fallback(s7_scheme *sc, s7_pointer args)
return(simple_wrong_type_argument(sc, sym, val, T_INTEGER));
}
+ if (sym == sc->max_heap_size_symbol)
+ {
+ if (s7_is_integer(val))
+ {
+ s7_int size;
+ size = s7_integer(val);
+ if (size > 0)
+ {
+ sc->max_heap_size = size;
+ return(val);
+ }
+ return(simple_out_of_range(sc, sym, val, s7_make_string_wrapper(sc, "should be greater than 0")));
+ }
+ return(simple_wrong_type_argument(sc, sym, val, T_INTEGER));
+ }
+
if (sym == sc->safety_symbol)
{
- if (s7_is_integer(val)) {sc->safety = s7_integer(val); return(val);}
+ if (s7_is_integer(val))
+ {
+ if ((s7_integer(val) > 2) || (s7_integer(val) < 0))
+ return(simple_out_of_range(sc, sym, val, s7_make_string_wrapper(sc, "should be between 0 (no safety) and 2 (max safety)")));
+ sc->safety = s7_integer(val);
+ return(val);
+ }
return(simple_wrong_type_argument(sc, sym, val, T_INTEGER));
}
@@ -82021,7 +81901,7 @@ s7_scheme *s7_init(void)
sc->eof_object = make_unique("#<eof>", T_EOF_OBJECT);
sc->undefined = make_unique("#<undefined>", T_UNDEFINED);
sc->unspecified = make_unique("#<unspecified>", T_UNSPECIFIED);
-#if DEBUGGING
+#if S7_DEBUGGING
sc->no_value = make_unique("#<no-value>", T_UNSPECIFIED);
#else
sc->no_value = make_unique("#<unspecified>", T_UNSPECIFIED);
@@ -82101,7 +81981,6 @@ s7_scheme *s7_init(void)
sc->temp2 = sc->nil;
sc->temp3 = sc->nil;
sc->temp4 = sc->nil;
- sc->temp5 = sc->nil;
sc->temp6 = sc->nil;
sc->temp7 = sc->nil;
sc->temp8 = sc->nil;
@@ -82147,6 +82026,7 @@ s7_scheme *s7_init(void)
heap_location(sc->heap[i]) = i;
}
}
+ sc->max_heap_size = (1LL << 62);
/* this has to precede s7_make_* allocations */
sc->protected_objects_size = INITIAL_PROTECTED_OBJECTS_SIZE;
@@ -82164,7 +82044,7 @@ s7_scheme *s7_init(void)
vector_element(sc->protected_setters, i) = sc->gc_nil;
sc->gpofl[i] = i;
}
-#if DEBUGGING
+#if S7_DEBUGGING
sc->protected_lines = (int *)calloc(INITIAL_PROTECTED_OBJECTS_SIZE, sizeof(int));
#endif
@@ -82491,13 +82371,10 @@ s7_scheme *s7_init(void)
sc->define_constant_unchecked_symbol = assign_internal_syntax(sc, "define-constant", OP_DEFINE_CONSTANT_UNCHECKED);
sc->set_unchecked_symbol = assign_internal_syntax(sc, "set!", OP_SET_UNCHECKED);
sc->set_symbol_c_symbol = assign_internal_syntax(sc, "set!", OP_SET_SYMBOL_C);
- sc->set_symbol_l_symbol = assign_internal_syntax(sc, "set!", OP_SET_SYMBOL_L);
sc->set_symbol_s_symbol = assign_internal_syntax(sc, "set!", OP_SET_SYMBOL_S);
sc->set_symbol_q_symbol = assign_internal_syntax(sc, "set!", OP_SET_SYMBOL_Q);
sc->set_symbol_opsq_symbol = assign_internal_syntax(sc, "set!", OP_SET_SYMBOL_opSq);
- sc->set_symbol_oplq_symbol = assign_internal_syntax(sc, "set!", OP_SET_SYMBOL_opLq);
sc->set_symbol_opssq_symbol = assign_internal_syntax(sc, "set!", OP_SET_SYMBOL_opSSq);
- sc->set_symbol_opllq_symbol = assign_internal_syntax(sc, "set!", OP_SET_SYMBOL_opLLq);
sc->set_symbol_opsssq_symbol = assign_internal_syntax(sc, "set!", OP_SET_SYMBOL_opSSSq);
sc->set_symbol_opcq_symbol = assign_internal_syntax(sc, "set!", OP_SET_SYMBOL_opCq);
sc->set_symbol_p_symbol = assign_internal_syntax(sc, "set!", OP_SET_SYMBOL_P);
@@ -82668,7 +82545,7 @@ s7_scheme *s7_init(void)
#define defun(Scheme_Name, C_Name, Req, Opt, Rst) s7_define_typed_function(sc, Scheme_Name, g_ ## C_Name, Req, Opt, Rst, H_ ## C_Name, Q_ ## C_Name)
#define unsafe_defun(Scheme_Name, C_Name, Req, Opt, Rst) s7_define_unsafe_typed_function(sc, Scheme_Name, g_ ## C_Name, Req, Opt, Rst, H_ ## C_Name, Q_ ## C_Name)
- /* we need the sc->IS_* symbols first for the procedure signature lists */
+ /* we need the sc->is_* symbols first for the procedure signature lists */
sc->is_boolean_symbol = make_symbol(sc, "boolean?");
pl_bt = s7_make_signature(sc, 2, sc->is_boolean_symbol, sc->T);
@@ -82744,7 +82621,7 @@ s7_scheme *s7_init(void)
sc->symbol_to_dynamic_value_symbol = defun("symbol->dynamic-value", symbol_to_dynamic_value, 1, 0, false);
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->immutable_symbol = unsafe_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);
@@ -83147,7 +83024,8 @@ s7_scheme *s7_init(void)
sc->s7_version_symbol = defun("s7-version", s7_version, 0, 0, false);
defun("emergency-exit", emergency_exit, 0, 1, false);
sc->exit_symbol = defun("exit", exit, 0, 1, false);
-#if DEBUGGING
+
+#if WITH_GCC
s7_define_function(sc, "abort", g_abort, 0, 0, true, "drop into gdb I hope");
#endif
s7_define_function(sc, "s7-optimize", g_optimize, 1, 0, false, "short-term debugging aid");
@@ -83179,10 +83057,11 @@ 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)));
- 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);
+ 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);
+ sc->tree_is_cyclic_symbol = defun("tree-cyclic?", tree_is_cyclic, 1, 0, false);
/* -------- *features* -------- */
@@ -83267,7 +83146,7 @@ s7_scheme *s7_init(void)
#if WITH_IMMUTABLE_UNQUOTE
s7_provide(sc, "immutable-unquote");
#endif
-#if DEBUGGING
+#if S7_DEBUGGING
s7_provide(sc, "debugging");
#endif
#if WITH_PROFILE
@@ -83450,10 +83329,6 @@ s7_scheme *s7_init(void)
init_choosers(sc);
init_typers(sc);
-#if DEBUGGING
- s7_define_safe_function(sc, "local-symbol?", g_is_local_symbol, 1, 0, false, "an experiment");
-#endif
-
/* -------------------------------------------------------------------------------- */
s7_set_d_pi_function(slot_value(global_slot(sc->float_vector_ref_symbol)), float_vector_ref_d);
s7_set_d_pid_function(slot_value(global_slot(sc->float_vector_set_symbol)), float_vector_set_d);
@@ -83602,6 +83477,7 @@ s7_scheme *s7_init(void)
s7_set_i_d_function(slot_value(global_slot(sc->round_symbol)), round_i_d);
s7_set_i_d_function(slot_value(global_slot(sc->floor_symbol)), floor_i_d);
s7_set_i_p_function(slot_value(global_slot(sc->floor_symbol)), floor_i_p);
+ s7_set_i_p_function(slot_value(global_slot(sc->ceiling_symbol)), ceiling_i_p);
s7_set_i_d_function(slot_value(global_slot(sc->truncate_symbol)), truncate_i_d);
s7_set_i_d_function(slot_value(global_slot(sc->ceiling_symbol)), ceiling_i_d);
s7_set_i_i_function(slot_value(global_slot(sc->random_symbol)), random_i_i);
@@ -83845,13 +83721,15 @@ s7_scheme *s7_init(void)
s7_eval_c_string(sc, "(define-macro (cond-expand . clauses) \n\
(letrec ((traverse (lambda (tree) \n\
(if (pair? tree) \n\
- (cons (traverse (car tree)) \n\
- (case (cdr tree) ((())) (else => traverse))) \n\
- (if (memq tree '(and or not else)) tree \n\
- (and (symbol? tree) (provided? tree))))))) \n\
+ (cons (traverse (car tree)) \n\
+ (case (cdr tree) ((())) (else => traverse))) \n\
+ (if (memq tree '(and or not else)) tree \n\
+ (and (symbol? tree) (provided? tree))))))) \n\
(cons 'cond (map (lambda (clause) \n\
- (cons (traverse (car clause)) \n\
- (case (cdr clause) ((()) '(#f)) (else)))) \n\
+ (if (pair? clause) \n\
+ (cons (traverse (car clause)) \n\
+ (case (cdr clause) ((()) '(#f)) (else))) \n\
+ (error 'read-error \"cond-expand: bad clause\"))) \n\
clauses))))");
#endif
@@ -83867,7 +83745,7 @@ s7_scheme *s7_init(void)
((null? (cddr clause)) (cadr clause)) \n\
(else (apply values (map quote (cdr clause))))))))) \n\
clauses) \n\
- (values))))"); /* this is not redundant */
+ (values))))"); /* this is not redundant */ /* map above ignores trailing cdr if improper */
s7_eval_c_string(sc, "(define make-hook \n\
(let ((+signature+ '(procedure?)) \n\
@@ -83945,15 +83823,14 @@ s7_scheme *s7_init(void)
(define make-procedure-with-setter dilambda) \n\
(define procedure-with-setter? dilambda?) \n\
(define make-random-state random-state) \n\
- (define make-complex complex) \n\
- (define make-keyword string->keyword) \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
+#if S7_DEBUGGING
if (strcmp(opt_names[HOP_SAFE_C_AAP], "h_safe_c_aap") != 0)
fprintf(stderr, "opt_name: %s\n", opt_names[HOP_SAFE_C_AAP]);
if (strcmp(op_names[OP_SET_WITH_LET_2], "set_with_let_2") != 0)
@@ -83961,7 +83838,7 @@ 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: 411, opt: 446 */
+ /* 64 bit machine: size: 56 [size 80 if gmp, 136 if debugging], op: 408, opt: 438, 48 if 32 (let_id/typeflag etc is 64 bit) */
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 *));
@@ -84019,9 +83896,9 @@ int main(int argc, char **argv)
return(0);
}
-/* in Linux: gcc s7.c -o repl -DWITH_MAIN -I. -g3 -ldl -lm -Wl,-export-dynamic
- * in *BSD: gcc s7.c -o repl -DWITH_MAIN -I. -g3 -lm -Wl,-export-dynamic
- * in OSX: gcc s7.c -o repl -DWITH_MAIN -I. -g3 -lm
+/* in Linux: gcc s7.c -o repl -DWITH_MAIN -DUSE_SND=0 -I. -g3 -ldl -lm -Wl,-export-dynamic
+ * in *BSD: gcc s7.c -o repl -DWITH_MAIN -DUSE_SND=0 -I. -g3 -lm -Wl,-export-dynamic
+ * in OSX: gcc s7.c -o repl -DWITH_MAIN -DUSE_SND=0 -I. -g3 -lm
* (clang also needs LDFLAGS="-Wl,-export-dynamic" in Linux)
*/
#endif
@@ -84033,11 +83910,15 @@ int main(int argc, char **argv)
*
* if profile, use line/file num to get at hashed count? and use that to annotate pp output via [count]-symbol pre-rewrite
* (profile-count file line)?
- * lint no-gmp (< int most-negative-fixnum) etc?
- * with-let signature? (i.e. guarantee types etc) or local safety/optimize setting == -1? (let-temporarily (((*s7* 'safety) -1)) (with-let...))?
- * or maybe opt/unopt choice made at call-time (if in loop??)
- * need non-numeric safety choices = bits -- maybe (*s7* 'speed|optimize)?
- * macroexpand before s7_optimize? or restart if macro encountered?
+ *
+ * is_type_||cdr|cddr|cadr|_s?
+ * fun*_is_ok throughout and remove symbol_ctr and the extension struct
+ * can this symbol handling be used in all opt'd (unchecked) accesses? see ~/old/sym-s7.c
+ * fun_a -> closure_a (perhaps closure_a*? -- this requires fun_is_equal in op_safe_fun_a)
+ * if type removed also, tag->64 bits
+ * does (define-constant first car) fully optimize (first p)?
+ * fix the 32-bit symbol_id opt2 snafu (t32--is it ok as is?) [try 32 t725]
+ * nth-value would make the lambda* kludge unnecessary but it needs to work when arg is not mv -- need better name
*
* musglyphs gtk version is broken (probably cairo_t confusion -- make/free-cairo are obsolete for example)
* the problem is less obvious:
@@ -84053,9 +83934,11 @@ int main(int argc, char **argv)
* gtk_box_pack* has changed -- many uses!
* no draw signal -- need to set the draw func
* gtk gl: I can't see how to switch gl in and out as in the motif version -- I guess I need both gl_area and drawing_area
+ * lv2 (/usr/include/lv2.h)
* object->let for gtk widgets?
+ * maybe NO_VECTORIZE or fixup WITH_VECTORIZE and OVERFLOW_CHECKS testsnd/compsnd compiler flag
*
- * the old mus-audio-* code needs to use play or something, especially bess*
+ * the old mus-audio-* code needs to use play (see bess.scm)
* snd+gtk+script->eps fails?? Also why not make a graph in the no-gui case? t415.scm.
* 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
@@ -84064,30 +83947,29 @@ int main(int argc, char **argv)
* libgtk: callback funcs need calling check -- 5 list as fields of c-pointer? several more special funcs
* libc needs many type checks
*
- * --------------------------------------------------------------
+ * ----------------------------------------------------------------------
*
- * 12 | 13 | 14 | 15 || 16 || 17 | 18.0
- * tmac | | | || 9052 || 264 | 264
- * tref | | | 2372 || 2125 || 1036 | 1036
- * index 44.3 | 3291 | 1725 | 1276 || 1255 || 1168 | 1165
- * tauto 265 | 89 | 9 | 8.4 || 2993 || 1457 | 1475
- * teq | | | 6612 || 2777 || 1931 | 1913
- * s7test 1721 | 1358 | 995 | 1194 || 2926 || 2110 | 2129
- * tlet 5318 | 3701 | 3712 | 3700 || 4006 || 2467 | 2467
- * lint | | | || 4041 || 2702 | 2696 2744?
- * lg | | | || 211 || 133 | 133.4
- * tform | | | 6816 || 3714 || 2762 | 2751
- * tcopy | | | 13.6 || 3183 || 2974 | 2965
- * tmap | | | 9.3 || 5279 || 3445 | 3445
- * tfft | | 15.5 | 16.4 || 17.3 || 3966 | 3966
- * tsort | | | || 8584 || 4111 | 4111
- * titer | | | || 5971 || 4646 | 4646
- * bench | | | || 7012 || 5093 | 5143
- * thash | | | 50.7 || 8778 || 7697 | 7694
- * tgen | 71 | 70.6 | 38.0 || 12.6 || 11.9 | 12.1
- * tall 90 | 43 | 14.5 | 12.7 || 17.9 || 18.8 | 18.9
- * calls 359 | 275 | 54 | 34.7 || 43.7 || 40.4 | 42.0
- * || 139 || 85.9 | 86.5
+ * 12 | 13 | 14 | 15 || 16 || 17 | 18.0 18.1 18.2
+ * tmac | | | || 9052 || 264 | 264 266
+ * tref | | | 2372 || 2125 || 1036 | 1036 1038
+ * index 44.3 | 3291 | 1725 | 1276 || 1255 || 1168 | 1165 1168
+ * tauto 265 | 89 | 9 | 8.4 || 2993 || 1457 | 1475 1468
+ * teq | | | 6612 || 2777 || 1931 | 1913 1912
+ * s7test 1721 | 1358 | 995 | 1194 || 2926 || 2110 | 2129 2111
+ * tlet 5318 | 3701 | 3712 | 3700 || 4006 || 2467 | 2467 2586
+ * lint | | | || 4041 || 2702 | 2696 2645
+ * lg | | | || 211 || 133 | 133.4 132.2
+ * tform | | | 6816 || 3714 || 2762 | 2751 2781
+ * tcopy | | | 13.6 || 3183 || 2974 | 2965 3018
+ * tmap | | | 9.3 || 5279 || 3445 | 3445 3450
+ * tfft | | 15.5 | 16.4 || 17.3 || 3966 | 3966 3988
+ * tsort | | | || 8584 || 4111 | 4111 4200
+ * titer | | | || 5971 || 4646 | 4646 5175
+ * thash | | | 50.7 || 8778 || 7697 | 7694 7830
+ * tgen | 71 | 70.6 | 38.0 || 12.6 || 11.9 | 12.1 11.9
+ * tall 90 | 43 | 14.5 | 12.7 || 17.9 || 18.8 | 18.9 18.9
+ * calls 359 | 275 | 54 | 34.7 || 43.7 || 40.4 | 42.0 42.0
+ * || 139 || 85.9 | 86.5 87.2
*
- * --------------------------------------------------------------
+ * ----------------------------------------------------------------------
*/
diff --git a/s7.h b/s7.h
index 34c7eb1..8a66a96 100644
--- a/s7.h
+++ b/s7.h
@@ -1,8 +1,8 @@
#ifndef S7_H
#define S7_H
-#define S7_VERSION "5.12"
-#define S7_DATE "11-Dec-17"
+#define S7_VERSION "5.13"
+#define S7_DATE "26-Jan-18"
#include <stdint.h> /* for int64_t */
@@ -468,6 +468,7 @@ s7_pointer s7_make_continuation(s7_scheme *sc); /* c
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_set_setter(s7_scheme *sc, s7_pointer p, s7_pointer setter); /* (set! (setter p) setter) */
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, ...);
@@ -884,6 +885,7 @@ void s7_define_function_with_setter(s7_scheme *sc, const char *name, s7_function
*
* s7 changes
*
+ * 26-Jan-18: s7_set_setter.
* 11-Dec: s7_gc_protect_via_stack
* 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.
diff --git a/s7.html b/s7.html
index a54948a..56a0587 100644
--- a/s7.html
+++ b/s7.html
@@ -886,6 +886,17 @@ unknown key handling is not good, :allow-key-values?
((lambda* (hi ho) (list hi ho)) (symbol->keyword a) b))
(f8 'hi 32) -> (32 #f)
(f8 'ho 32) -> (#f 32)
+
+
+another amusing lambda* case:
+(call/cc
+ (lambda* (a (b (call/cc (lambda (c) c)))) ; even with-baffle still a loop (legit)
+ (b (call/cc (lambda (d) d)))))
+
+;; equivalent to:
+(let ((c (call/cc (lambda (c) c))))
+ (call/cc (lambda (a)
+ (c (call/cc (lambda (d) d))))))
-->
</blockquote>
@@ -5162,7 +5173,8 @@ is also passed (the weird argument order is an historical artifact).
<em class="gray">#(1 2 0)</em>
</pre>
-<p>define-constant is more restrictive than a symbol-setter that raises an error: the latter
+<p>See also typed-let in stuff.scm.
+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:
@@ -5376,7 +5388,7 @@ at startup *features* is:
<pre class="indented">
&gt; *features*
-<em class="gray">(snd-17.0 snd17 snd audio snd-s7 snd-gtk gsl alsa gtk2 xg clm6 clm sndlib linux
+<em class="gray">(snd-18.0 snd17 snd audio snd-s7 snd-gtk gsl alsa gtk2 xg clm6 clm sndlib linux
dlopen complex-numbers system-extras ratio s7-4.14 s7) </em>
&gt; (provided? 'gsl)
<em class="gray">#t</em>
@@ -6032,6 +6044,7 @@ stacktrace-defaults stacktrace formatting info for error handler
symbol-table a vector
rootlet-size the number of globals
heap-size total cells currently available (settable)
+max-heap-size max heap size (settable)
free-heap-size the number of currently unused cells
gc-freed number of cells freed by the last GC pass
gc-protected-objects vector of the objects permanently protected from the GC
@@ -6058,11 +6071,9 @@ Use the standard environment syntax to access these fields:
more info in (*s7* 'history) for s7_apply_function, s7_call and s7_eval
less aggressive optimization in with-let and lambda
warnings about syntax redefinition
-2: incoming s7_pointer checks in some FFI functions
- clm optimization off
+ incoming s7_pointer checks in some FFI functions
bignum int to s7_int conversion checks
-3: all optimization off
-4: vector, string, and pair constants are immutable (but checks for this are currently sparse)
+2: vector, string, and pair constants are immutable (but checks for this are currently sparse)
</pre>
<p><code>(*s7* 'stacktrace-defaults)</code> is a list of four integers and a boolean that tell the error
@@ -6117,6 +6128,20 @@ the generic functions mechanism, much like a c-object:
<em class="gray">"I am pointer 1 of type 'abc!"</em>
</pre>
+
+<div class="separator"></div>
+
+<p>There are several tree-oriented functions currently built into s7:
+</p>
+<pre class="indented">
+(<em class=def id="treecyclic">tree-cyclic?</em> tree) returns #t if tree contains a cycle.
+(<em class=def id="treeleaves">tree-leaves</em> tree) returns the number of leaves in tree.
+(<em class=def id="treememq">tree-memq</em> obj tree) returns #t if obj is in tree (using eq?).
+(<em class=def id="treesetmemq">tree-set-memq</em> set tree) returns #t if any member of the list set is in tree.
+(<em class=def id="treecount">tree-count</em> obj tree) returns how many times obj is in tree.
+</pre>
+
+
<div class="separator"></div>
<blockquote>
@@ -6200,15 +6225,25 @@ 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>move all the "*var*" names to *s7*: *load-hook* becomes (*s7* 'load-hook) for example.
</ul>
+<p>With the move to s7_setter and s7_set_setter (setter in Scheme),
+dilambda and dilambda? have been reduced to trivial conveniences, so perhaps they can also be
+removed.
+</p>
+
<p>There are several less-than-ideal names. Perhaps s7 should use *pi*, *most-negative-fixnum*,
*most-positive-fixnum* (*fixleast* and *fixmost*?) so that all the built-in variables and constants have the
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.
-And let-temporarily should be templet, or maybe set-temporarily.
+let-temporarily should be templet, or maybe set-temporarily.
+Finally, the CL-inspired "log*" names such as logand look very old-fashioned. Standard scheme opts
+for the name "bitwise*"; why not "integerwise" or "bytevectorwise"? The "wise" business is just noise.
+Perhaps <code>(define & logand) (define | logior) (define ~ lognot)</code> and so on, but ^ for logxor
+(as in C) is not ideal; ^ should be expt.
</p>
<p>
@@ -8822,7 +8857,7 @@ int main(int argc, char **argv)
*
* and run it:
* ex3
- * &gt; (cload "/home/bil/snd-17/ex3a.so" "init_ex")
+ * &gt; (cload "/home/bil/snd-18/ex3a.so" "init_ex")
* <em class="gray">#t</em>
* &gt; (add-1 2)
* <em class="gray">3</em>
@@ -9999,8 +10034,8 @@ addStyle();
<!--
circular env without set!:
(let ()
- (let ((b (curlet)))
- (curlet)))
+ (let ((b (curlet)))
+ (curlet)))
circular func (implicit set!):
(letrec* ((b (lambda () (a)))
@@ -10010,4 +10045,8 @@ circular func (implicit set!):
(letrec ((b (lambda () (a)))
(a (lambda () (b))))
(a))
+
+circular macro result:
+((define-macro (_m_)
+ (signature int-vector)))
-->
diff --git a/s7test.scm b/s7test.scm
index c42d850..389ee54 100644
--- a/s7test.scm
+++ b/s7test.scm
@@ -430,6 +430,14 @@ typedef struct {
static int g_block_type = 0;
static s7_pointer g_block_methods;
+static s7_pointer g_block_let(s7_scheme *sc, s7_pointer args)
+{
+ #define g_block_let_help \"(block-let block) returns the block'e let.\"
+ if (s7_c_object_type(s7_car(args)) != g_block_type)
+ return(s7_wrong_type_arg_error(sc, \"block-let\", 1, s7_car(args), \"a block\"));
+ return(s7_c_object_let(s7_car(args)));
+}
+
static s7_pointer g_make_block(s7_scheme *sc, s7_pointer args)
{
#define g_make_block_help \"(make-block size) returns a new block of the given size\"
@@ -553,10 +561,13 @@ static s7_pointer g_block_ref(s7_scheme *sc, s7_pointer obj, s7_pointer args)
static s7_pointer g_block_set(s7_scheme *sc, s7_pointer obj, s7_pointer args)
{
- g_block *g = (g_block *)s7_c_object_value(obj);
+ g_block *g;
s7_int index;
+ if (s7_is_immutable(obj))
+ return(s7_wrong_type_arg_error(sc, \"block-set!\", 0, obj, \"a mutable block\"));
if (!s7_is_integer(s7_car(args)))
return(s7_wrong_type_arg_error(sc, \"block-set!\", 1, s7_car(args), \"an integer\"));
+ g = (g_block *)s7_c_object_value(obj);
index = s7_integer(s7_car(args));
if ((index >= 0) && (index < g->size))
{
@@ -570,15 +581,23 @@ static s7_pointer block_direct_ref(s7_scheme *sc, s7_pointer obj, s7_int index)
{
g_block *g;
g = (g_block *)s7_c_object_value(obj);
- return(s7_make_real(sc, g->data[index]));
+ if ((index >= 0) && (index < g->size))
+ return(s7_make_real(sc, g->data[index]));
+ return(s7_out_of_range_error(sc, \"block-ref\", 1, s7_make_integer(sc, index), \"should be less than block length\"));
}
static s7_pointer block_direct_set(s7_scheme *sc, s7_pointer obj, s7_int index, s7_pointer val)
{
g_block *g;
+ if (s7_is_immutable(obj))
+ return(s7_wrong_type_arg_error(sc, \"block-set!\", 0, obj, \"a mutable block\"));
g = (g_block *)s7_c_object_value(obj);
- g->data[index] = s7_number_to_real(sc, val);
- return(val);
+ if ((index >= 0) && (index < g->size))
+ {
+ g->data[index] = s7_number_to_real(sc, val);
+ return(val);
+ }
+ return(s7_out_of_range_error(sc, \"block-set\", 1, s7_make_integer(sc, index), \"should be less than block length\"));
}
static s7_pointer g_block_length(s7_scheme *sc, s7_pointer obj)
@@ -629,6 +648,8 @@ static s7_pointer g_block_copy(s7_scheme *sc, s7_pointer args)
if (s7_is_pair(s7_cdr(args)))
{
new_g = s7_cadr(args);
+ if (s7_is_immutable(new_g))
+ return(s7_wrong_type_arg_error(sc, \"block-copy!\", 0, new_g, \"a mutable block\"));
if (s7_c_object_type(new_g) != g_block_type) /* fall back on the float-vector code using a wrapper */
{
s7_pointer v;
@@ -695,6 +716,8 @@ static s7_pointer g_block_reverse_in_place(s7_scheme *sc, s7_pointer args)
obj = s7_car(args);
if (s7_c_object_type(obj) != g_block_type)
return(s7_wrong_type_arg_error(sc, \"block-reverse!\", 0, obj, \"a block\"));
+ if (s7_is_immutable(obj))
+ return(s7_wrong_type_arg_error(sc, \"block-reverse!\", 0, obj, \"a mutable block\"));
g = (g_block *)s7_c_object_value(obj);
if (g->size < 2) return(obj);
for (i = 0, j = g->size - 1; i < j; i++, j--)
@@ -715,6 +738,8 @@ static s7_pointer g_block_fill(s7_scheme *sc, s7_pointer args)
double fill_val;
g_block *g;
obj = s7_car(args);
+ if (s7_is_immutable(obj))
+ return(s7_wrong_type_arg_error(sc, \"block-fill!\", 0, obj, \"a mutable block\"));
val = s7_cadr(args);
g = (g_block *)s7_c_object_value(obj);
fill_val = s7_number_to_real(sc, val);
@@ -923,16 +948,18 @@ void block_init(s7_scheme *sc)
s7_c_type_set_print_readably(sc, g_block_type, g_block_display_readably);
s7_define_safe_function(sc, \"make-block\", g_make_block, 1, 0, false, g_make_block_help);
s7_define_safe_function(sc, \"block\", g_to_block, 0, 0, true, g_block_help);
+ s7_define_safe_function(sc, \"block-let\", g_block_let, 1, 0, false, g_block_let_help);
s7_define_safe_function(sc, \"subblock\", g_subblock, 1, 0, true, g_subblock_help);
s7_define_safe_function(sc, \"block-append\", g_block_append, 0, 0, true, g_block_append_help);
s7_define_safe_function(sc, \"block-reverse!\", g_block_reverse_in_place, 1, 0, true, g_block_reverse_in_place_help);
s7_define_safe_function(sc, \"block?\", g_is_block, 1, 0, false, g_is_block_help);
s7_define_function_star(sc, \"blocks\", g_blocks, \"(frequency 4) (scaler 1)\", \"test for function*\");
- g_block_methods = s7_eval_c_string(sc, \"(openlet (inlet 'float-vector? (lambda (p) #t) \
- 'empty (lambda (p) (zero? (length p))) \
- 'subsequence subblock \
- 'append block-append \
- 'reverse! block-reverse!))\");
+ g_block_methods = s7_eval_c_string(sc, \"(openlet (immutable! (inlet 'float-vector? (lambda (p) #t) \
+ 'vector-dimensions (lambda (p) (list (length p))) \
+ 'empty (lambda (p) (zero? (length p))) \
+ 'subsequence subblock \
+ 'append block-append \
+ 'reverse! block-reverse!)))\");
s7_gc_protect(sc, g_block_methods);
s7_c_type_set_apply_direct(sc, g_block_type, block_direct_ref);
s7_c_type_set_set_direct(sc, g_block_type, block_direct_set);
@@ -975,6 +1002,12 @@ void block_init(s7_scheme *sc)
}
")))
+ ;; immutable! above to counteract:
+ ;; wrong-number-of-args ("~A: not enough arguments: ~A" let-temporarily ((block)))
+ ;; where (float-vector? (block)) was evaluated.
+ ;; (gdb) p DISPLAY(s7_eval_c_string(sc, "((block 0.0) 'float-vector?)"))
+ ;; $3 = 0x555555f11380 "let-temporarily"
+
(cond ((provided? 'osx)
(system "gcc -c s7test-block.c -O2")
(system "gcc s7test-block.o -o s7test-block.so -dynamic -bundle -undefined suppress -flat_namespace"))
@@ -1000,6 +1033,8 @@ void block_init(s7_scheme *sc)
(load "s7test-block.so" new-env))
(define _c_obj_ (make-block 16))
+
+(unless (immutable? (block-let _c_obj_)) (format *stderr* "~S's let is mutable~%" _c_obj_))
) ; with-block
(define _c_obj_ (c-pointer 0))) ; not with-block
@@ -1291,6 +1326,8 @@ void block_init(s7_scheme *sc)
(let () (define (hi b) (b 0)) (hi b) (test (hi b) 32.0))
(let () (define (hi b) (b)) (hi b) (test (hi b) 32))
(test b (block 32.0 0.0 0.0 0.0))
+ (test (let? (block-let b)) #t)
+ (test (((block-let b) 'float-vector?) b) #t)
(test (object->string b) "(block 32.000 0.000 0.000 0.000)")
(let ((b1 (make-block 4)))
(test (eq? b b1) #f)))
@@ -1487,6 +1524,7 @@ void block_init(s7_scheme *sc)
;(test (eqv? "" "") #f)
(test (eqv? "hi" "hi") #f) ; unspecified
(test (eqv? #() #()) #f) ; unspecified, but in s7 (eqv? () ()) is #t
+(test (eqv? (vector) (vector)) #f)
(let ((c1 (let ((x 32))
(lambda () x)))
@@ -5712,6 +5750,7 @@ i" (lambda (p) (eval (read p)))) pi)
(test (string->symbol ":0") ':0)
(test (symbol? (string->symbol " hi") ) #t)
(test (symbol? (string->symbol "hi ")) #t)
+(test (keyword? (string->symbol ":asdf")) #t)
(test (reinvert 12 string->symbol symbol->string "hiho") "hiho")
@@ -6013,6 +6052,8 @@ i" (lambda (p) (eval (read p)))) pi)
(test (eval-string "#u8(1 2 . 3)") 'error)
(test #u8(255) (byte-vector 255))
+(test (byte-vector 256) 'error)
+(test (byte-vector -1) 'error)
(test (object->string #u8()) "#u8()")
(test (object->string #u8(255)) "#u8(255)")
(test (object->string #u8(255 255)) "#u8(255 255)")
@@ -6055,6 +6096,7 @@ i" (lambda (p) (eval (read p)))) pi)
3.14 3/4 1.0+1.0i #t (if #f #f) #<eof> (lambda (a) (+ a 1))))
(test (string->byte-vector #x010203) 'error)
+(test (string->byte-vector (immutable! "123")) 'error)
(test (let ((str "123")) (string->byte-vector str) (byte-vector? str)) #t) ;??
(test (let ((str (string #\a))) (string->byte-vector str) (byte-vector? str)) #t) ;??
@@ -7240,6 +7282,14 @@ i" (lambda (p) (eval (read p)))) pi)
v))
(make-shared-vector (int-vector 0 1 2 5 4 3 6 7 8) '(3 3)))
+(test (catch #t
+ (lambda ()
+ (reverse! (catch #t 1 cons))
+ (reverse! (catch #t 1 cons))) ; this will clobber sc->wrong_type_arg_info if not caught
+ (lambda args 'error))
+ 'error)
+(test (reverse! `((1) . x)) 'error)
+(if with-block (test (reverse! (immutable! (block 0 0))) 'error))
@@ -8279,6 +8329,9 @@ i" (lambda (p) (eval (read p)))) pi)
'((1 . 1) (3/4 . 2) (23 . 3)) '((a . 1) (1 . 2) (#(1) . 4) (23 . 3))
'((1 . 1) ("hi" . 2) (23 . 3))))
+(test (catch #t (lambda () (assoc 1 (list (list 3 2) (list 2)) (lambda (a b) (catch #t 1 cons)))) (lambda args 'error)) '(3 2))
+(test (catch #t (lambda () (member 1 (list 3 2) (lambda (a b) (catch #t 1 cons)))) (lambda args 'error)) '(3 2))
+;;; are those correct?? at least it doesn't die.
;;; --------------------------------------------------------------------------------
@@ -8553,6 +8606,9 @@ i" (lambda (p) (eval (read p)))) pi)
(test (member '(1 2) '((1) (1 . 2) (1 2 . 3) (1 2 3) (1 2) 1 . 2)) '((1 2) 1 . 2))
(test (member '(1 2 . 3) '((1) (1 . 2) (1 2 . 3) (1 2 3) (1 2) 1 . 2)) '((1 2 . 3) (1 2 3) (1 2) 1 . 2))
+(when with-block
+ (test (member 1 (list 2 3) (lambda (a b) (float-vector? (block)))) '(2 3)))
+
(let ()
(define (sfind obj lst)
(member obj lst (lambda (a b)
@@ -8833,7 +8889,8 @@ i" (lambda (p) (eval (read p)))) pi)
(test (append (int-vector 1 2 3) '(1 2 3) #u8(101 102)) (int-vector 1 2 3 1 2 3 101 102))
(test (append (hash-table '(c . 3) '(d . 4)) (hash-table '(c . 3) '(d . 4)) '((e . 5) (f . 6))) (hash-table '(e . 5) '(f . 6) '(c . 3) '(d . 4)))
(when with-block
- (test (append (block 1 2) (block 3 4)) (block 1 2 3 4)))
+ (test (append (block 1 2) (block 3 4)) (block 1 2 3 4))
+ (test (let () (define (func) (append (list (list (list 1)) (setter car)) (vector-dimensions (block 0.0)))) (define (hi) (func)) (hi)) (list '((1)) set-car! 1)))
(test (random-state? (cdr (append '(1) (random-state 123)))) #t)
(test (append '(1) (random-state 123) ()) 'error)
@@ -8885,6 +8942,82 @@ i" (lambda (p) (eval (read p)))) pi)
(test-append)))
+;;; tree-cyclic
+(test (tree-cyclic? '(1 2)) #f)
+(test (tree-cyclic? 1) #f)
+(test (tree-cyclic? (let ((lst (list 1))) (set-cdr! lst lst))) #t)
+(test (tree-cyclic? (let ((lst (list 1))) (set-car! lst lst))) #t)
+(test (tree-cyclic? (let ((lst (list 1 2))) (set-cdr! (cdr lst) lst))) #t)
+(test (tree-cyclic? (let ((lst (list (list 1 3) 2))) (set-cdr! (car lst) lst))) #t)
+(test (tree-cyclic? (let ((lst (list (list 1 3) 2))) (set-car! (car lst) lst))) #t)
+(test (tree-cyclic? (let ((lst (list 1 (list 1 3) 2))) (set-car! (cdr lst) lst))) #t)
+(test (tree-cyclic? (let ((lst (list 1 (list 1 3) 2))) (set-cdr! (cdr lst) lst))) #t)
+(test (tree-cyclic? (let ((lst (list 1 (list 1 3) 2))) (set-cdr! (cddr lst) lst))) #t)
+(test (tree-cyclic? '(1 2 (3 4))) #f)
+(test (tree-cyclic? '(1 . 2)) #f)
+(test (tree-cyclic? '(1 2 . 3)) #f)
+(test (tree-cyclic? (let ((lst (list 1 (list 1 3) 2))) (set-cdr! (cddr lst) lst) (list 1 lst))) #t)
+(test (tree-cyclic? (let ((lst (list 1 (list 1 3) 2))) (set-cdr! (cddr lst) lst) (list 1 (cdr lst)))) #t)
+(test (tree-cyclic? (let ((lst (list (cons 1 3) 2))) (set-cdr! (cdr lst) lst))) #t)
+(test (tree-cyclic? (let ((lst (list (list 1 4) (cons 2 3)))) (set-cdr! (car lst) lst))) #t)
+(test (tree-cyclic? (let ((lst (list (list 1 4) (cons 2 3)))) (set-cdr! (cadr lst) lst))) #t)
+(test (tree-cyclic? (let ((lst (list (list 1 2) (list 3) (list 4 5 6)))) (set-car! (car lst) lst))) #t)
+(test (tree-cyclic? (let ((lst (list (list 1 2) (list 3) (list 4 5 6)))) (set-car! (cdar lst) lst))) #t)
+(test (tree-cyclic? (let ((lst (list (list 1 2) (list 3) (list 4 5 6)))) (set-cdr! (car lst) lst))) #t)
+(test (tree-cyclic? (let ((lst (list (list 1 2) (list 3) (list 4 5 6)))) (set-cdr! (cdar lst) lst))) #t)
+(test (tree-cyclic? (let ((lst (list (list 1 2) (list 3) (list 4 5 6)))) (set-car! (cadr lst) lst))) #t)
+(test (tree-cyclic? (let ((lst (list (list 1 2) (list 3) (list 4 5 6)))) (set-cdr! (cadr lst) lst))) #t)
+(test (tree-cyclic? (let ((lst (list (list 1 2) (list 3) (list 4 5 6)))) (set-car! (cadr lst) (cdr lst)))) #t)
+(test (tree-cyclic? (let ((lst (list (list 1 2) (list 3) (list 4 5 6)))) (set-cdr! (cadr lst) (cdr lst)))) #t)
+(test (tree-cyclic? (let ((lst (list (list 1 2) (list 3) (list 4 5 6)))) (set-car! (caddr lst) lst))) #t)
+(test (tree-cyclic? (let ((lst (list (list 1 2) (list 3) (list 4 5 6)))) (set-cdr! (caddr lst) lst))) #t)
+(test (tree-cyclic? (let ((lst (list (list 1 2) (list 3) (list 4 5 6)))) (set-car! (caddr lst) (cdr lst)))) #t)
+(test (tree-cyclic? (let ((lst (list (list 1 2) (list 3) (list 4 5 6)))) (set-cdr! (caddr lst) (cdr lst)))) #t)
+(test (tree-cyclic? (let ((lst (list (list 1 2) (list 3) (list 4 5 6)))) (set-car! (caddr lst) (cddr lst)))) #t)
+(test (tree-cyclic? (let ((lst (list (list 1 2) (list 3) (list 4 5 6)))) (set-cdr! (caddr lst) (cddr lst)))) #t)
+(test (tree-cyclic? (let ((lst (list (list 1 2) (list 3) (list 4 5 6)))) (set-car! (cdaddr lst) lst))) #t)
+(test (tree-cyclic? (let ((lst (list (list 1 2) (list 3) (list 4 5 6)))) (set-cdr! (cdaddr lst) lst))) #t)
+(test (tree-cyclic? (let ((lst (list (list 1 2) (list 3) (list 4 5 6)))) (set-car! (cdaddr lst) (cdr lst)))) #t)
+(test (tree-cyclic? (let ((lst (list (list 1 2) (list 3) (list 4 5 6)))) (set-cdr! (cdaddr lst) (cdr lst)))) #t)
+(test (tree-cyclic? (let ((lst (list (list 1 2) (list 3) (list 4 5 6)))) (set-car! (cdaddr lst) (cddr lst)))) #t)
+(test (tree-cyclic? (let ((lst (list (list 1 2) (list 3) (list 4 5 6)))) (set-cdr! (cdaddr lst) (cddr lst)))) #t)
+
+;;; tree-leaves
+(test (tree-leaves '(lambda () 1)) 3)
+(test (tree-leaves ()) 0)
+(test (tree-leaves 1) 1)
+(test (tree-leaves '(a . b)) 2)
+(test (tree-leaves '(1 (2 3) (4 (5 . 6) . 7))) 7)
+(test (tree-leaves '((() (1) (())))) 3)
+
+;; tree-memq
+(test (tree-memq 'a '(a b c)) #t)
+(test (tree-memq 'a '(b c . a)) #t)
+(test (tree-memq 'a '(b c . e)) #f)
+(test (tree-memq 'a '(c b c)) #f)
+(test (tree-memq 'a '(b c ((b a)))) #t)
+(test (tree-memq 3 '(b c ((b 3)))) #t)
+
+;;; tree-count
+(test (tree-count 'x '(a b c)) 0)
+(test (tree-count 'x '(a x c)) 1)
+(test (tree-count 'x '(a x x)) 2)
+(test (tree-count 'x '(a x x) 1) 1)
+(test (tree-count 'x '(x x x) 2) 2)
+
+;;; tree-set-memq
+(test (tree-set-memq '(a b) '(1 (2 3 a) 4)) #t)
+(test (tree-set-memq '(a b) '(1 (2 3 b) 4)) #t)
+(test (tree-set-memq '(a b) '(1 (2 3 c) 4)) #f)
+(test (tree-set-memq '(a) ()) #f)
+
+(let-temporarily (((*s7* 'safety) 1))
+ (test (tree-count 'a (let ((lst (list 1))) (set-cdr! lst lst))) 'error)
+ (test (tree-leaves (let ((lst (list 1))) (set-cdr! lst lst))) 'error)
+ (test (tree-memq 'a (let ((lst (list 1))) (set-cdr! lst lst))) 'error)
+ (test (tree-set-memq '(a b c) (let ((lst (list 1))) (set-cdr! lst lst))) 'error))
+
+
;;; --------------------------------------------------------------------------------
;;; VECTORS
@@ -8984,7 +9117,7 @@ i" (lambda (p) (eval (read p)))) pi)
3.14 3/4 1.0+1.0i #t (vector 1 2 3) (lambda (a) (+ a 1))))
(test (eval-string "#2147483649D()") 'error)
-(test (type-of (eval-string "#-9223372036854775808D()")) 'undefined?)
+(test (type-of (eval-string "#-9223372036854775808D()")) 'error)
(test (eval-string "#922D()") 'error)
@@ -9591,8 +9724,8 @@ i" (lambda (p) (eval (read p)))) pi)
(test (#2d((1 2) (3 4))) 'error)
(test (apply (make-vector '(1 2))) 'error)
-(test (type-of (eval-string "#2/3d(1 2)")) 'undefined?)
-(test (type-of (eval-string "#2.1d(1 2)")) 'undefined?)
+(test (type-of (eval-string "#2/3d(1 2)")) 'error)
+(test (type-of (eval-string "#2.1d(1 2)")) 'error)
(test (eval-string "#(1 2 . 3)") 'error)
(test (#(#(#(#t))) 0 0 0) #t)
(test (let ((v (make-vector 3 0 #t))) (v 0 0)) 'error)
@@ -11041,15 +11174,20 @@ i" (lambda (p) (eval (read p)))) pi)
(test (for-each (lambda (x y) x) lst1 lst1) #<unspecified>) ; was 'error
(test (not (member (map (lambda (x y) (+ x y)) lst1 '(1 2 3)) (list () '(2)))) #f)))
+(test (map abs (let ((lst (list 0))) (set! (cdr lst) lst))) '(0))
+(test (map (lambda (x) x) (let ((lst (list 0))) (set! (cdr lst) lst))) '(0))
+(test (map abs (let ((lst (list 0 1))) (set-cdr! (cdr lst) lst))) '(0 1 0))
+(test (map (lambda (x) x) (let ((lst (list 0 1))) (set-cdr! (cdr lst) lst))) '(0 1))
+
(let ((lst1 (list 1 -1)))
(set-cdr! (cdr lst1) lst1)
(let ((vals (map * '(1 2 3 4) lst1)))
- (test vals '(1)))) ; was '(1 -2 3 -4) -- as in other cases above, map/for-each stop when a cycle is encountered
+ (test vals '(1 -2)))) ; was '(1 -2 3 -4), then later (1) -- as in other cases above, map/for-each stop when a cycle is encountered
(test (let ((lst '(a b c)))
(set! (cdr (cddr lst)) lst)
(map cons lst '(0 1 2 3 4 5)))
- '((a . 0) (b . 1) (c . 2)))
+ '((a . 0) (b . 1) (c . 2) (a . 3)))
(test (object->string (let ((l1 (list 0 1))) (set! (l1 1) l1) (copy l1))) "(0 #1=(0 #1#))")
@@ -11701,8 +11839,7 @@ i" (lambda (p) (eval (read p)))) pi)
(+ a b))
(vector 4 5 6 7 8 9 10)
lst))
- '(5 7 9)) ; this now quits when it sees the cycle
- ;'(5 7 9 8 10 12 11))
+ '(5 7 9 8)) ; this now quits when it sees the cycle
(test (map (lambda (a) a) '(0 1 2 . 3)) '(0 1 2))
(test (let ((ctr 0)) (for-each (lambda (a) (set! ctr (+ ctr a))) '(1 2 . 3)) ctr) 3)
(let ((lst (list 1 2 3)))
@@ -14665,6 +14802,7 @@ i" (lambda (p) (eval (read p)))) pi)
(test (port-closed?) 'error)
(test (port-closed? (current-input-port) (current-output-port)) 'error)
+(test (let-temporarily (((current-output-port) #f)) (port-closed? (current-output-port))) #f)
(call-with-output-file tmp-output-file (lambda (p) (display "3.14" p)))
(test (call-with-input-file tmp-output-file (lambda (p) (read p) (let ((val (read p))) (eof-object? val)))) #t)
@@ -14690,9 +14828,7 @@ i" (lambda (p) (eval (read p)))) pi)
(if with-bignums 1239223372036854775808 123)
(if with-bignums 144580536300674537151081081515762353325831/229154728370723013560448485454219755525522 11/10)
(if with-bignums 221529797579218180403518826416685087012.0 1000.1)
- (if with-bignums 1239223372036854775808+1239223372036854775808i 1000.1-1234i)
-
- ))
+ (if with-bignums 1239223372036854775808+1239223372036854775808i 1000.1-1234i)))
(for-each
(lambda (arg)
@@ -18333,8 +18469,6 @@ so anything that quotes ` is not going to equal quote quasiquote
(test (vector? (owlet 0. 3/4 #(reader-cond ))) 'error)
(test (vector? #(reader-cond)) #t)
-(test ((cond-expand (string (integer->char 255)) (hash-table '(a . 2) 0 (abs (append (string (integer->char 255)) (make-block 32) (inlet 'value 1 '+ (lambda args 1)) (int-vector 1 2 3))))) cdddr) 'error)
-
;;; -------- object->string
@@ -19450,6 +19584,7 @@ c"
(test (let ((sum 0) (lst (vector 1 2 3))) (for-each (lambda (a b c) (set! sum (+ sum a b c))) lst lst lst) sum) 18)
(test (let ((v (vector 1 2 3))) (for-each vector-set! (list v v v) (list 0 1 2) (list 32 33 34)) v) #(32 33 34))
(test (let () (define (hi) (for-each (lambda (x) (+ x 1)) (list 1 2 3))) (hi) (hi)) #<unspecified>)
+(test (let () (define (func) (for-each (let ((x 4)) (lambda (y) (+ x y))) (make-float-vector 8 0))) (define (hi) (func)) (hi)) #<unspecified>)
(test (let ((d 0))
(for-each (let ((a 0))
@@ -20393,7 +20528,7 @@ c"
;; from scheme working group
(test (let ((L (list 1 2 3 4 5))) (map (lambda (x) (set-cdr! (cddr L) 5) x) L)) '(1 2 3))
-(test (let ((L (list 1 2))) (map (lambda (x) (set! (cdr (cdr L)) L) x) L)) '(1)) ;'(1 2)
+(test (let ((L (list 1 2))) (map (lambda (x) (set! (cdr (cdr L)) L) x) L)) '(1 2))
(test (let ((L (list 1 2))) (object->string (map (lambda (x) (set! (car (cdr L)) L) x) L))) "(1 #1=(1 #1#))")
;;;(test (let ((L (list 1 2))) (map (lambda (x) (set-cdr! L L) x) L)) '(1 2)) ;?? this depends on when we cdr? infinite loop in Guile
;;;(let ((L (list 1 2 3 4 5))) (map (lambda (x) (set-cdr! L ()) x) L)) ; another similar case -- s7 doesn't notice what happened
@@ -20454,7 +20589,7 @@ c"
(test (map () ()) 'error)
(test (map "" "") 'error)
(test (map (let ((lst (list 1 2))) (set! (cdr (cdr lst)) lst) lst) '(0)) '(1))
-(let ((lst (list 1 2)) (os (*s7* 'safety))) (set! (*s7* 'safety) 1) (set! (cdr (cdr lst)) lst) (test (map lst lst) '(2)) (set! (*s7* 'safety) os))
+(let ((lst (list 1 2)) (os (*s7* 'safety))) (set! (*s7* 'safety) 1) (set! (cdr (cdr lst)) lst) (test (map lst lst) '(2 1)) (set! (*s7* 'safety) os))
(test (map 1 "hi" ()) 'error)
(test (map 0 #() ()) 'error)
(test (map #\a #(1 2) '(3 4) "") 'error)
@@ -20776,6 +20911,8 @@ in s7:
(test (iterator-sequence "hi" "ho") 'error)
(test (iterator-at-end? "hi" "ho") 'error)
(test (iterate "hi" "ho") 'error)
+(test (make-iterator (hash-table* 'a 1) (immutable! (cons 0 0))) 'error)
+(test (make-iterator (inlet 'a 1) (immutable! (cons 0 0))) 'error)
(for-each
(lambda (arg)
@@ -21393,8 +21530,9 @@ in s7:
(let ()
(define (f lst)
(do ((p lst (cdr p)))
- ((or (not (pair? p))
- (apply values (car p)))
+ ((if (pair? p)
+ (apply values (car p))
+ #t)
=> +)))
(test (f '((1 2) 2)) 3)
(test (f '((2 3 4) 3)) 9))
@@ -21408,7 +21546,12 @@ in s7:
(test (do ((i 1 (+ i j))) ((>= i 2) (+ i j)) (define j (+ i 10)) j) 23)
;(test (do ((i 1 (+ i j))) ((>= i 2) (+ i j)) (if (integer? i) (define j i)) j) 3)
(test (do ((i 0 (+ i 1))) ((>= i 2) i) (define i 10) i) 11)
-
+(test (do ((x (values (substring "0123" 2) #b101))) (#t (vector))) 'error)
+(test (do ((x 0 (values 1 2))) ((= x 2)) (display x #f)) 'error)
+(test (do ((i 0 (+ i 1))) ((values #t #f) 21) (abs i)) 21)
+(test (+ 1 (do ((i 0 (+ i 1))) ((values (= i 1) 2 3) 4)) 5) 10) ; (+ 1 (do (...) (#t 2 3 4)) 5) -> (+ 1 4 5)
+(test (+ 1 (do ((i 0 (+ i 1))) ((values (= i 1) 2 3))) 5) 'error) ; the #f gets spliced into + args
+(test (+ 1 (do ((i 0 (+ i 1))) ((values 2 3))) 5) 11) ; (+ 1 2 3 5) -- hmmm.
(test (let ((x (do ((i 0 (+ i 1))) (#t)))) x) #t) ; guile: #<unspecified>
(test (let ((lst '(1 2 3))
@@ -22258,6 +22401,17 @@ in s7:
(use-bad-increment 1)
(use-bad-increment 1))
+(when with-block
+ (let ((b (block 0.0 1.0)))
+ (define (f) (do ((i 0 (+ i 1))) ((= i 2)) (set! (b i) 3.0)))
+ (set! (b 0) 2.0)
+ (test b (block 2.0 1.0))
+ (test (b 0) 2.0)
+ (f)
+ (test b (block 3.0 3.0))
+ (immutable! b)
+ (test (set! (b 0) 4.0) 'error)
+ (test (f) 'error)))
@@ -23927,6 +24081,10 @@ in s7:
(test (let () (define* x 3)) 'error)
(test (let () (define (hi) 1 . 2)) 'error)
(test (let () (define (hi) (1) . "hi")) 'error)
+(test (let () (define _definee_ (values))) #<unspecified>)
+(test (let () (define _definee_ (values 1))) 1)
+(test (let () (define _definee_ (values 1 2))) 'error)
+(test ((lambda () (define _definee_ (values 1 2)))) 'error)
(test (let () (define (f f) f) (f 0)) 0)
(test (let () (define (f . f) f) (f 1 2)) '(1 2))
@@ -24246,7 +24404,7 @@ in s7:
(define (f4 a b c d e) (list a b c d e))
(test (f4 1 2 3 4 5) '(1 2 3 4 5)))
-(let-temporarily (((*s7* 'safety) 2))
+(let-temporarily (((*s7* 'safety) 1))
(define (redef-1 a) (+ a 1))
(define (use-redef-1 b) (+ (redef-1 b) 2)) ; [use-redef](+ [redef-1](+ b 1) 2)
(test (use-redef-1 3) 6) ; b=6
@@ -25509,6 +25667,8 @@ in s7:
;; from lisp bboard
(test (let ((x 1) (y 2)) (let ((x y) (y x)) (let ((x y) (y x)) (let ((x y) (y x)) (+ (* x x) y))))) 5)
+(test (let* ((x 1) (fx (lambda () x)) (y (define x (* x 2))) (fy (lambda () (* x y)))) (list x y (fx) (fy))) '(2 2 1 4))
+
;; from r7rs errata
(let ()
(let ((ton '(3 (1 4))))
@@ -27895,6 +28055,42 @@ who says the continuation has to restart the map from the top?
(test (call-with-exit (lambda (quit) ((lambda* ((a (quit 32))) a)))) 32)
(test ((call-with-exit (lambda (go) (go quasiquote))) go) 'go)
+(test (let ((x #f))
+ ((lambda ()
+ (let-temporarily ((x 1234))
+ (call/cc (lambda (return) (let ((x 1) (y 2)) (return x y)))))
+ (if x y) ; y unbound, so x better be #f
+ 3))) 3)
+
+(test (let ((x #f))
+ ((lambda ()
+ (call-with-exit
+ (lambda (go)
+ (let-temporarily ((x 1234))
+ (call/cc (lambda (return) (let ((x 1) (y 2)) (return x y)))))
+ (if x y)
+ (go 3)))))) 3)
+
+(test (let ((x #f))
+ ((lambda ()
+ (let-temporarily ((x 1234))
+ (call-with-exit
+ (lambda (go)
+ (call/cc (lambda (return) (let ((x 1) (y 2)) (return x y)))))))
+ (if x y)
+ 3))) 3)
+
+(test (let ((x #f))
+ (dynamic-wind
+ (lambda () #f)
+ (lambda ()
+ (let-temporarily ((x 1234))
+ (call/cc (lambda (return) (let ((x 1) (y 2)) (return x y)))))
+ (if x y)
+ 3)
+ (lambda () #f)))
+ 3)
+
(test (let ((c #f))
(let ((val -1))
(set! val (call/cc
@@ -29383,6 +29579,8 @@ who says the continuation has to restart the map from the top?
(test (keyword->symbol (string->keyword (string #\"))) (symbol "\""))
)
+(test (string->keyword "a b") (symbol ":a b"))
+(test (keyword? (symbol ":a b")) #t)
(test (symbol->keyword 'begin) :begin)
(test (symbol->keyword 'quote) :quote)
(test (symbol->keyword if) 'error)
@@ -29391,6 +29589,17 @@ who says the continuation has to restart the map from the top?
(test (keyword->symbol ::a) :a)
(test (symbol->keyword (symbol "(a)")) (symbol ":(a)"))
(test (keyword? (symbol ":(a)")) #t)
+(test (keyword? :|) #t)
+(test (keyword? :,) #t)
+(when full-test
+ (do ((i 1 (+ i 1))) ; not #\null -- : by itself is not a keyword in s7
+ ((= i 128))
+ (if (not (keyword? (string->keyword (string (integer->char i)))))
+ (format *stderr* "not key: :~A~%" (integer->char i)))
+ (if (not (keyword? (symbol (string #\: (integer->char i)))))
+ (format *stderr* "not key: (symbol \":~A\")~%" (integer->char i)))
+ (if (not (keyword? (symbol (string (integer->char i) #\:))))
+ (format *stderr* "not key: (symbol \"~A:\")~%" (integer->char i)))))
(test (let ((:hi 3)) :hi) 'error)
(test (set! :hi 2) 'error)
@@ -29598,8 +29807,7 @@ who says the continuation has to restart the map from the top?
(test (set! (*s7* 'safety) arg) 'error)
(test (set! *features* arg) 'error)
(test (set! *load-path* arg) 'error)
- (test (set! *#readers* arg) 'error)
- )
+ (test (set! *#readers* arg) 'error))
(list #\a #(1 2 3) 3.14 3/4 1.0+1.0i abs 'hi #t #f #(())))
;(test (let ((*features* 123)) *features*) 'error)
;(test (let (((*s7* 'safety) '(1 2 3))) (*s7* 'safety)) 'error)
@@ -29608,7 +29816,7 @@ who says the continuation has to restart the map from the top?
(set! *#readers* old-readers)
(define old-safety (*s7* 'safety))
-(set! (*s7* 'safety) 4)
+(set! (*s7* 'safety) 2)
(let ((v #(1 2 3))
(iv #i(1 2 3))
@@ -29666,6 +29874,9 @@ who says the continuation has to restart the map from the top?
(set! (*s7* 'print-length) (bignum "2"))
(test (format #f "~A" #(1 2 3 4)) "#(1 ...)")))
+(test (set! (*s7* 'safety) -1) 'error)
+(test (set! (*s7* 'safety) 5) 'error)
+
;;; --------------------------------------------------------------------------------
;;; sort!
@@ -30801,6 +31012,10 @@ who says the continuation has to restart the map from the top?
(= x val 30)))
#t)
+(test (list (catch #t (lambda () (call-with-exit (lambda (goto) (values 1 2 3)))) (lambda args 'err))) '(1 2 3))
+(test (let () (define (func) (list (catch #t (lambda () (call-with-exit (lambda (goto) (values 1 2 3)))) (lambda args 'err))) '(1 2 3)) (define (hi) (func)) (hi)) '(1 2 3))
+(test (list (catch #t (lambda () (call-with-exit (lambda (goto) (goto 1 2 3)))) (lambda args 'err))) '(1 2 3))
+(test (let () (define (func) (list (catch #t (lambda () (call-with-exit (lambda (goto) (goto 1 2 3)))) (lambda args 'err))) '(1 2 3)) (define (hi) (func)) (hi)) '(1 2 3))
@@ -31301,6 +31516,7 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
(test ((lambda* (:rest a :rest b) (map + a b)) 1 2 3 4 5) '(3 5 7 9))
(test ((lambda* (:rest a c :rest b) (map (lambda (a b) (+ a b c)) a b)) 1 2 3 4 5) '(6 8 10))
(test ((lambda* (a :rest (b 2)) (list a b)) 1 2 3 4) 'error)
+(test ((lambda* ((x (values 1 2))) (+ x 1))) 'error)
(let ()
(define* (f1 (a 0) :allow-other-keys) (+ a 1))
@@ -31431,7 +31647,8 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
(test (procedure? (let () (define* (x (x #t)) x) (x x))) #t)
(test (procedure? (let () (define* (x (x x)) x) (x (x x)))) #t)
;(test (procedure? (let () (define* (x (x x)) x) (x))) #t)
-(test (apply + ((lambda* ((x (values 1 2 3))) x))) 6)
+(test (apply + ((lambda* ((x (values 1 2 3))) x))) 'error) ; else mv plugged into every 'x in the body??
+(test (let () (define* (f (x (values 1 2))) (+ x 1)) (f)) 'error)
(test ((lambda* ((x (lambda* ((y (+ 1 2))) y))) (x))) 3)
;;; define-macro
@@ -32319,215 +32536,220 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
st))
|#
-(test (arity *) (cons 0 *max-arity*))
-(test (arity +) (cons 0 *max-arity*))
-(test (arity -) (cons 1 *max-arity*))
-(test (arity /) (cons 1 *max-arity*))
-(test (arity curlet) '(0 . 0))
-(test (arity <) (cons 2 *max-arity*))
-(test (arity =) (cons 2 *max-arity*))
-(test (arity >) (cons 2 *max-arity*))
-(test (arity lambda*) (cons 2 *max-arity*))
-(test (arity unlet) '(0 . 0))
-(test (arity call-with-output-file) '(2 . 2))
-(test (arity round) '(1 . 1))
-(test (arity keyword?) '(1 . 1))
-(test (arity openlet) '(1 . 1))
-(test (arity varlet) (cons 1 *max-arity*))
-(test (arity quote) '(1 . 1))
-(test (arity <=) (cons 2 *max-arity*))
-(test (arity with-baffle) (cons 1 *max-arity*))
-(test (arity >=) (cons 2 *max-arity*))
-(test (arity sort!) '(2 . 2))
-(test (arity let->list) '(1 . 1))
-(test (arity cdaddr) '(1 . 1))
-(test (arity do) (cons 2 *max-arity*))
-(test (arity if) '(2 . 3))
-(test (arity pi) '#f)
-(test (arity or) (cons 0 *max-arity*))
-(test (arity *stdin*) '#f)
-(test (arity complex) '(2 . 2))
-(test (arity values) (cons 0 *max-arity*))
-(test (arity string->number) '(1 . 2))
-(test (arity most-negative-fixnum) '#f)
-(test (arity char-downcase) '(1 . 1))
-(test (arity char->integer) '(1 . 1))
-(test (arity vector) (cons 0 *max-arity*))
-(test (arity call/cc) '(1 . 1))
+(test (arity *) (cons 0 *max-arity*))
+(test (arity +) (cons 0 *max-arity*))
+(test (arity -) (cons 1 *max-arity*))
+(test (arity /) (cons 1 *max-arity*))
+(test (arity curlet) '(0 . 0))
+(test (arity <) (cons 2 *max-arity*))
+(test (arity =) (cons 2 *max-arity*))
+(test (arity >) (cons 2 *max-arity*))
+(test (arity lambda*) (cons 2 *max-arity*))
+(test (arity unlet) '(0 . 0))
+(test (arity call-with-output-file) '(2 . 2))
+(test (arity round) '(1 . 1))
+(test (arity keyword?) '(1 . 1))
+(test (arity openlet) '(1 . 1))
+(test (arity varlet) (cons 1 *max-arity*))
+(test (arity quote) '(1 . 1))
+(test (arity <=) (cons 2 *max-arity*))
+(test (arity with-baffle) (cons 1 *max-arity*))
+(test (arity >=) (cons 2 *max-arity*))
+(test (arity sort!) '(2 . 2))
+(test (arity let->list) '(1 . 1))
+(test (arity cdaddr) '(1 . 1))
+(test (arity do) (cons 2 *max-arity*))
+(test (arity if) '(2 . 3))
+(test (arity pi) '#f)
+(test (arity or) (cons 0 *max-arity*))
+(test (arity *stdin*) '#f)
+(test (arity complex) '(2 . 2))
+(test (arity values) (cons 0 *max-arity*))
+(test (arity string->number) '(1 . 2))
+(test (arity most-negative-fixnum) '#f)
+(test (arity char-downcase) '(1 . 1))
+(test (arity char->integer) '(1 . 1))
+(test (arity vector) (cons 0 *max-arity*))
+(test (arity call/cc) '(1 . 1))
(when (not pure-s7)
- (test (arity set-current-input-port) '(1 . 1)))
-(test (arity current-input-port) '(0 . 0))
-(test (arity write) '(1 . 2))
-(test (arity zero?) '(1 . 1))
-(test (arity char<?) (cons 2 *max-arity*))
+ (test (arity set-current-input-port) '(1 . 1)))
+(test (arity current-input-port) '(0 . 0))
+(test (arity write) '(1 . 2))
+(test (arity zero?) '(1 . 1))
+(test (arity char<?) (cons 2 *max-arity*))
(when (not pure-s7)
- (test (arity char-ci<?) (cons 2 *max-arity*)))
-(test (arity infinite?) '(1 . 1))
-(test (arity open-input-file) '(1 . 2))
-(test (arity with-let) (cons 1 *max-arity*))
-(test (arity write-char) '(1 . 2))
-(test (arity car) '(1 . 1))
-(test (arity and) (cons 0 *max-arity*))
-(test (arity cdr) '(1 . 1))
-(test (arity ash) '(2 . 2))
-(test (arity define) (cons 2 *max-arity*))
-(test (arity exp) '(1 . 1))
-(test (arity lcm) (cons 0 *max-arity*))
-(test (arity map) (cons 2 *max-arity*))
-(test (arity let) (cons 2 *max-arity*))
-(test (arity max) (cons 1 *max-arity*))
-(test (arity write-byte) '(1 . 2))
-(test (arity min) (cons 1 *max-arity*))
-(test (arity log) '(1 . 2))
-(test (arity not) '(1 . 1))
-(test (arity append) (cons 0 *max-arity*))
-(test (arity list-ref) (cons 2 *max-arity*))
-(test (arity *stderr*) '#f)
-(test (arity object->string) '(1 . 3))
-(test (arity string) (cons 0 *max-arity*))
-(test (arity dynamic-wind) '(3 . 3))
-(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))
-(test (arity random-state->list) '(0 . 1))
-(test (arity with-output-to-file) '(2 . 2))
-(test (arity s7-version) '(0 . 0))
-(test (arity peek-char) '(0 . 1))
-(test (arity :rest) '#f)
-(test (arity aritable?) '(2 . 2))
-(test (arity ceiling) '(1 . 1))
-(test (arity define-bacro*) (cons 2 *max-arity*))
-(test (arity :allow-other-keys) '#f)
-(test (arity call-with-exit) '(1 . 1))
-(test (arity gensym) '(0 . 1))
-(test (arity make-hash-table) '(0 . 2))
-(test (arity multiple-value-bind) (cons 2 *max-arity*))
-(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))
-(test (arity dilambda) '(2 . 2))
-(test (arity letrec*) (cons 2 *max-arity*))
-(test (arity make-iterator) '(1 . 2))
-(test (arity random-state) '(1 . 2))
-(test (arity format) (cons 1 *max-arity*))
-(test (arity vector-ref) (cons 2 *max-arity*))
-(test (arity with-input-from-file) '(2 . 2))
-(test (arity cadr) '(1 . 1))
-(test (arity cond-expand) (cons 0 *max-arity*))
-(test (arity case) (cons 2 *max-arity*))
-(test (arity string-set!) '(3 . 3))
-(test (arity rationalize) '(1 . 2))
-(test (arity atan) '(1 . 2))
-(test (arity asin) '(1 . 1))
-(test (arity assq) '(2 . 2))
-(test (arity assv) '(2 . 2))
-(test (arity cond) (cons 1 *max-arity*))
-(test (arity cons) '(2 . 2))
-(test (arity copy) '(1 . 4))
-(test (arity else) '#f)
-(test (arity eqv?) '(2 . 2))
-(test (arity define*) (cons 2 *max-arity*))
-(test (arity eval) '(1 . 2))
-(test (arity let*) (cons 2 *max-arity*))
-(test (arity define-macro) (cons 2 *max-arity*))
-(test (arity nan?) '(1 . 1))
-(test (arity memq) '(2 . 2))
-(test (arity memv) '(2 . 2))
-(test (arity list) (cons 0 *max-arity*))
-(test (arity load) '(1 . 2))
-(test (arity for-each) (cons 2 *max-arity*))
-(test (arity read) '(0 . 1))
-(test (arity set!) '(2 . 2))
-(test (arity lambda) (cons 2 *max-arity*))
-(test (arity set-car!) '(2 . 2))
-(test (arity set-cdr!) '(2 . 2))
-(test (arity *features*) (cons 1 *max-arity*))
-(test (arity *load-hook*) '(0 . 1))
-(test (arity list-set!) (cons 3 *max-arity*))
-(test (arity list-tail) '(2 . 2))
-(test (arity *error-hook*) '(0 . 2))
-(test (arity current-error-port) '(0 . 0))
-(test (arity define-expansion) (cons 2 *max-arity*))
-(test (arity symbol->value) '(1 . 2))
-(test (arity letrec) (cons 2 *max-arity*))
-(test (arity symbol->string) '(1 . 1))
-(test (arity funclet) '(1 . 1))
-(test (arity make-vector) '(1 . 2))
-(test (arity member) '(2 . 3))
-(unless pure-s7 (test (arity string-fill!) '(2 . 4)))
-(test (arity hook-functions) '(1 . 1))
-(test (arity make-hook) (cons 0 *max-arity*))
-(test (arity number->string) '(1 . 2))
-(test (arity make-list) '(1 . 2))
-(test (arity owlet) '(0 . 0))
-(test (arity open-output-string) '(0 . 0))
-(test (arity rational?) '(1 . 1))
-(test (arity open-input-string) '(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))
-(test (arity logand) (cons 0 *max-arity*))
-(test (arity logior) (cons 0 *max-arity*))
-(test (arity lognot) '(1 . 1))
-(test (arity logbit?) '(2 . 2))
-(test (arity make-string) '(1 . 2))
-(test (arity logxor) (cons 0 *max-arity*))
-(test (arity vector-set!) (cons 3 *max-arity*))
-(test (arity modulo) '(2 . 2))
-(test (arity begin) (cons 0 *max-arity*))
-(test (arity catch) '(3 . 3))
-(test (arity apply) (cons 1 *max-arity*))
-(test (arity denominator) '(1 . 1))
-(test (arity arity) '(1 . 1))
-(test (arity most-positive-fixnum) '#f)
-(test (arity with-output-to-string) '(1 . 1))
-(test (arity assoc) '(2 . 3))
-(test (arity call-with-input-file) '(2 . 2))
-(test (arity quasiquote) '(1 . 1))
-(test (arity fill!) '(2 . 4))
-(test (arity newline) '(0 . 1))
-(test (arity provided?) '(1 . 1))
-(test (arity call-with-current-continuation) '(1 . 1))
-(test (arity char-whitespace?) '(1 . 1))
-(test (arity random) '(1 . 2))
-(test (arity floor) '(1 . 1))
-(test (arity read-char) '(0 . 1))
-(test (arity even?) '(1 . 1))
-(test (arity error) (cons 0 *max-arity*))
-(test (arity defined?) '(1 . 3))
-(test (arity read-byte) '(0 . 1))
-(test (arity macroexpand) '(1 . 1))
-(test (arity output-port?) '(1 . 1))
-(test (arity substring) '(2 . 3))
-(test (arity string-ref) '(2 . 2))
-(test (arity *unbound-variable-hook*) '(0 . 1))
-(test (arity display) '(1 . 2))
-(test (arity read-line) '(0 . 2))
-(test (arity define-macro*) (cons 2 *max-arity*))
-(test (arity eval-string) '(1 . 2))
-(test (arity port-filename) '(0 . 1))
-(test (arity define-constant) (cons 2 *max-arity*))
-(test (arity list?) '(1 . 1))
-(test (arity open-output-file) '(1 . 2))
-(test (arity rootlet) '(0 . 0))
-(test (arity quotient) '(2 . 2))
-(test (arity pair?) '(1 . 1))
-(test (arity call-with-input-string) '(2 . 2))
-(test (arity random-state?) '(1 . 1))
-(test (arity with-input-from-string) '(2 . 2))
-(test (arity null?) '(1 . 1))
-(test (arity eof-object?) '(1 . 1))
-(test (arity hash-table?) '(1 . 1))
-(test (arity hash-table) (cons 0 *max-arity*))
-(test (arity close-output-port) '(1 . 1))
-(test (arity type-of) '(1 . 1))
-(test (arity c-pointer) '(1 . 3))
-(test (arity c-pointer?) '(1 . 2))
-(test (arity require) (cons 1 *max-arity*))
-(test (arity provide) '(1 . 1))
+ (test (arity char-ci<?) (cons 2 *max-arity*)))
+(test (arity infinite?) '(1 . 1))
+(test (arity open-input-file) '(1 . 2))
+(test (arity with-let) (cons 1 *max-arity*))
+(test (arity write-char) '(1 . 2))
+(test (arity car) '(1 . 1))
+(test (arity and) (cons 0 *max-arity*))
+(test (arity cdr) '(1 . 1))
+(test (arity ash) '(2 . 2))
+(test (arity define) (cons 2 *max-arity*))
+(test (arity exp) '(1 . 1))
+(test (arity lcm) (cons 0 *max-arity*))
+(test (arity map) (cons 2 *max-arity*))
+(test (arity let) (cons 2 *max-arity*))
+(test (arity max) (cons 1 *max-arity*))
+(test (arity write-byte) '(1 . 2))
+(test (arity min) (cons 1 *max-arity*))
+(test (arity log) '(1 . 2))
+(test (arity not) '(1 . 1))
+(test (arity append) (cons 0 *max-arity*))
+(test (arity list-ref) (cons 2 *max-arity*))
+(test (arity *stderr*) '#f)
+(test (arity object->string) '(1 . 3))
+(test (arity string) (cons 0 *max-arity*))
+(test (arity dynamic-wind) '(3 . 3))
+(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))
+(test (arity random-state->list) '(0 . 1))
+(test (arity with-output-to-file) '(2 . 2))
+(test (arity s7-version) '(0 . 0))
+(test (arity peek-char) '(0 . 1))
+(test (arity :rest) '#f)
+(test (arity aritable?) '(2 . 2))
+(test (arity ceiling) '(1 . 1))
+(test (arity define-bacro*) (cons 2 *max-arity*))
+(test (arity :allow-other-keys) '#f)
+(test (arity call-with-exit) '(1 . 1))
+(test (arity gensym) '(0 . 1))
+(test (arity make-hash-table) '(0 . 2))
+(test (arity multiple-value-bind) (cons 2 *max-arity*))
+(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))
+(test (arity dilambda) '(2 . 2))
+(test (arity letrec*) (cons 2 *max-arity*))
+(test (arity make-iterator) '(1 . 2))
+(test (arity random-state) '(1 . 2))
+(test (arity format) (cons 1 *max-arity*))
+(test (arity vector-ref) (cons 2 *max-arity*))
+(test (arity with-input-from-file) '(2 . 2))
+(test (arity cadr) '(1 . 1))
+(test (arity cond-expand) (cons 0 *max-arity*))
+(test (arity case) (cons 2 *max-arity*))
+(test (arity string-set!) '(3 . 3))
+(test (arity rationalize) '(1 . 2))
+(test (arity atan) '(1 . 2))
+(test (arity asin) '(1 . 1))
+(test (arity assq) '(2 . 2))
+(test (arity assv) '(2 . 2))
+(test (arity cond) (cons 1 *max-arity*))
+(test (arity cons) '(2 . 2))
+(test (arity copy) '(1 . 4))
+(test (arity else) '#f)
+(test (arity eqv?) '(2 . 2))
+(test (arity define*) (cons 2 *max-arity*))
+(test (arity eval) '(1 . 2))
+(test (arity let*) (cons 2 *max-arity*))
+(test (arity define-macro) (cons 2 *max-arity*))
+(test (arity nan?) '(1 . 1))
+(test (arity memq) '(2 . 2))
+(test (arity memv) '(2 . 2))
+(test (arity list) (cons 0 *max-arity*))
+(test (arity load) '(1 . 2))
+(test (arity for-each) (cons 2 *max-arity*))
+(test (arity read) '(0 . 1))
+(test (arity set!) '(2 . 2))
+(test (arity lambda) (cons 2 *max-arity*))
+(test (arity set-car!) '(2 . 2))
+(test (arity set-cdr!) '(2 . 2))
+(test (arity *features*) (cons 1 *max-arity*))
+(test (arity *load-hook*) '(0 . 1))
+(test (arity list-set!) (cons 3 *max-arity*))
+(test (arity list-tail) '(2 . 2))
+(test (arity *error-hook*) '(0 . 2))
+(test (arity current-error-port) '(0 . 0))
+(test (arity define-expansion) (cons 2 *max-arity*))
+(test (arity symbol->value) '(1 . 2))
+(test (arity letrec) (cons 2 *max-arity*))
+(test (arity symbol->string) '(1 . 1))
+(test (arity funclet) '(1 . 1))
+(test (arity make-vector) '(1 . 2))
+(test (arity member) '(2 . 3))
+(unless pure-s7 (test (arity string-fill!) '(2 . 4)))
+(test (arity hook-functions) '(1 . 1))
+(test (arity make-hook) (cons 0 *max-arity*))
+(test (arity number->string) '(1 . 2))
+(test (arity make-list) '(1 . 2))
+(test (arity owlet) '(0 . 0))
+(test (arity open-output-string) '(0 . 0))
+(test (arity rational?) '(1 . 1))
+(test (arity open-input-string) '(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))
+(test (arity logand) (cons 0 *max-arity*))
+(test (arity logior) (cons 0 *max-arity*))
+(test (arity lognot) '(1 . 1))
+(test (arity logbit?) '(2 . 2))
+(test (arity make-string) '(1 . 2))
+(test (arity logxor) (cons 0 *max-arity*))
+(test (arity vector-set!) (cons 3 *max-arity*))
+(test (arity modulo) '(2 . 2))
+(test (arity begin) (cons 0 *max-arity*))
+(test (arity catch) '(3 . 3))
+(test (arity apply) (cons 1 *max-arity*))
+(test (arity denominator) '(1 . 1))
+(test (arity arity) '(1 . 1))
+(test (arity most-positive-fixnum) '#f)
+(test (arity with-output-to-string) '(1 . 1))
+(test (arity assoc) '(2 . 3))
+(test (arity call-with-input-file) '(2 . 2))
+(test (arity quasiquote) '(1 . 1))
+(test (arity fill!) '(2 . 4))
+(test (arity newline) '(0 . 1))
+(test (arity provided?) '(1 . 1))
+(test (arity call-with-current-continuation) '(1 . 1))
+(test (arity char-whitespace?) '(1 . 1))
+(test (arity random) '(1 . 2))
+(test (arity floor) '(1 . 1))
+(test (arity read-char) '(0 . 1))
+(test (arity even?) '(1 . 1))
+(test (arity error) (cons 0 *max-arity*))
+(test (arity defined?) '(1 . 3))
+(test (arity read-byte) '(0 . 1))
+(test (arity macroexpand) '(1 . 1))
+(test (arity output-port?) '(1 . 1))
+(test (arity substring) '(2 . 3))
+(test (arity string-ref) '(2 . 2))
+(test (arity *unbound-variable-hook*) '(0 . 1))
+(test (arity display) '(1 . 2))
+(test (arity read-line) '(0 . 2))
+(test (arity define-macro*) (cons 2 *max-arity*))
+(test (arity eval-string) '(1 . 2))
+(test (arity port-filename) '(0 . 1))
+(test (arity define-constant) (cons 2 *max-arity*))
+(test (arity list?) '(1 . 1))
+(test (arity open-output-file) '(1 . 2))
+(test (arity rootlet) '(0 . 0))
+(test (arity quotient) '(2 . 2))
+(test (arity pair?) '(1 . 1))
+(test (arity call-with-input-string) '(2 . 2))
+(test (arity random-state?) '(1 . 1))
+(test (arity with-input-from-string) '(2 . 2))
+(test (arity null?) '(1 . 1))
+(test (arity eof-object?) '(1 . 1))
+(test (arity hash-table?) '(1 . 1))
+(test (arity hash-table) (cons 0 *max-arity*))
+(test (arity close-output-port) '(1 . 1))
+(test (arity type-of) '(1 . 1))
+(test (arity c-pointer) '(1 . 3))
+(test (arity c-pointer?) '(1 . 2))
+(test (arity require) (cons 1 *max-arity*))
+(test (arity provide) '(1 . 1))
+(test (arity tree-count) '(2 . 3))
+(test (arity tree-leaves) '(1 . 1))
+(test (arity tree-memq) '(2 . 2))
+(test (arity tree-set-memq) '(2 . 2))
+(test (arity tree-cyclic?) '(1 . 1))
(test (let () (define-macro (mac1 a b c) `(+ ,a ,b)) (arity mac1)) '(3 . 3))
(test (let () (define-macro (mac1 a b . c) `(+ ,a ,b)) (arity mac1)) (cons 2 *max-arity*))
@@ -32822,6 +33044,9 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
(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)
+(test (setter (inlet)) let-set!)
+(test (set! (setter (inlet) (lambda (lt sym val) val))) 'error)
+(test (setter (hash-table)) hash-table-set!)
(let ()
(define flocals
@@ -32979,6 +33204,8 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
(test (signature round abs) 'error)
(test (signature) 'error)
+(test (signature :rest) #f)
+
(let ()
(define f1 (let ((+signature+ '(real? boolean?)))
(lambda (x)
@@ -33354,6 +33581,7 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
(test (signature tree-leaves) '(integer? #t))
(test (signature tree-memq) '(boolean? #t #t))
(test (signature tree-set-memq) '(boolean? #t #t))
+(test (signature tree-cyclic?) '(boolean? #t))
(test (signature truncate) '(integer? real?))
(test (signature type-of) '((symbol? boolean?) #t))
(test (signature unlet) '(let?))
@@ -33907,6 +34135,12 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
;(test (eval-string "#b") 'error)
(test (eval-string "(+ 123") 'error)
(test (eval-string "(+ 123 0000000000") 'error)
+(test (eval-string "(+ 1 2) a mistake") 'error)
+(test (eval-string "(+ 1 2) ; a comment") 3)
+(test (eval-string "(+ 1 2) #| a block \n comment |# ; a normal comment\n") 3)
+(test (eval-string "(+ 1 2) ()") 'error)
+(test (eval-string "(+ 1 2) ; a comment\n a mistake") 'error)
+(test (eval-string "(+ 1 2) ") 3)
(test (eval-string "(+ 1 2)") 3)
(test (eval '(+ 1 2)) 3)
@@ -35823,6 +36057,9 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
(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 ()
+ (define-constant (func) 1)
+ (test (immutable? func) #t))
(let ((old-stdin *stdin*)
(old-closed (port-closed? *stdin*)))
@@ -36057,6 +36294,11 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
(test (let ((lt (immutable! (inlet 'a 1)))) (with-let lt (provide 'hiho))) 'error)
(test (let ((a 1)) (immutable! (curlet)) (provide 'hiho)) 'error)
+(test (let () (let ((x 0)) (immutable! 'x)) (let ((x 0)) x)) 0)
+(test (let () (let ((x 0)) (set! x 3) x)) 3)
+(test (let () (let ((x 3)) (immutable! 'x) (set! x 31))) 'error)
+(test (let ((a (openlet (immutable! (inlet 'asdf 1))))) (a 'asdf)) 1)
+
(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\")")
@@ -36113,6 +36355,73 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
(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)
+(test (immutable? (make-shared-vector (immutable! (vector 1 2 3 4)) 1)) #t)
+(let ((lst (make-shared-vector (immutable! (vector 1 2 3 4)) 1)))
+ (when (not (eq? 'error (let () (define (f) (catch #t (lambda () (vector-set! lst 1 32)) (lambda args 'error))) (define (h) (f)) (h))))
+ (format *stderr* "vector-set! immutable ~S~%" lst))
+ (when (not (eq? 'error (let () (define (f) (catch #t (lambda () (fill! lst 32)) (lambda args 'error))) (define (h) (f)) (h))))
+ (format *stderr* "fill! immutable ~S~%" lst))
+ (when (not (eq? 'error (let () (define (f) (catch #t (lambda () (reverse! lst)) (lambda args 'error))) (define (h) (f)) (h))))
+ (format *stderr* "reverse! immutable ~S~%" lst))
+ (when (not (eq? 'error (let () (define (f) (catch #t (lambda () (set! (lst 1) 32)) (lambda args 'error))) (define (h) (f)) (h))))
+ (format *stderr* "set! immutable ~S~%" lst))
+ (when (not (eq? 'error (let () (define (f) (catch #t (lambda () (sort! lst >)) (lambda args 'error))) (define (h) (f)) (h))))
+ (format *stderr* "sort! immutable ~S~%" lst)))
+
+#|
+;; can't decide about this
+(let ((lst (cons 1 (immutable! (cons 2 (immutable! (cons 3 ())))))))
+ (when (not (eq? 'error (let () (define (f) (catch #t (lambda () (list-set! lst 1 32)) (lambda args 'error))) (define (h) (f)) (h))))
+ (format *stderr* "list-set! ~S~%" lst))
+ (when (not (eq? 'error (let () (define (f) (catch #t (lambda () (fill! lst 32)) (lambda args 'error))) (define (h) (f)) (h))))
+ (format *stderr* "fill! ~S~%" lst))
+ (when (not (eq? 'error (let () (define (f) (catch #t (lambda () (reverse! lst)) (lambda args 'error))) (define (h) (f)) (h))))
+ (format *stderr* "reverse! ~S~%" lst)) ; ok
+ (when (not (eq? 'error (let () (define (f) (catch #t (lambda () (set! (lst 1) 32)) (lambda args 'error))) (define (h) (f)) (h))))
+ (format *stderr* "set! ~S~%" lst))
+ (when (not (eq? 'error (let () (define (f) (catch #t (lambda () (sort! lst >)) (lambda args 'error))) (define (h) (f)) (h))))
+ (format *stderr* "sort! ~S~%" lst))
+ (when (not (eq? 'error (let () (define (f) (catch #t (lambda () (set-car! (cdr lst) 32)) (lambda args 'error))) (define (h) (f)) (h))))
+ (format *stderr* "set-car! ~S~%" lst)) ; ok
+ (when (not (eq? 'error (let () (define (f) (catch #t (lambda () (set-cdr! (cdr lst) 32)) (lambda args 'error))) (define (h) (f)) (h))))
+ (format *stderr* "set-cdr! ~S~%" lst))) ; ok
+|#
+
+(let-temporarily (((*s7* 'safety) 2))
+ (test (immutable? (eval (with-input-from-string "'(1 2)" read))) #t))
+
+(test (catch #t
+ (lambda ()
+ (catch #t 1
+ (lambda (type info)
+ (set-cdr! (cdr info) info))))
+ (lambda args 'error))
+ 'error)
+
+(test (catch #t
+ (lambda ()
+ (catch #t 1
+ (lambda (type info)
+ (reverse! info))))
+ (lambda args 'error))
+ 'error)
+
+(test (let ((lst (immutable! (cons 1 2))))
+ (define (f) (set! (cdr lst) 3))
+ (define (h) (f)) (h))
+ 'error)
+#|
+
+;;; it's possible to clobber the built-in error cases:
+(let ()
+ (copy (catch #t 1 (lambda (type info) info)) (catch #t 1 cons))
+ (catch #t 1 (lambda (type info) (apply format #f info))))
+|#
+
+;;; does this make sense?:
+(test (let ((x 1)) (immutable! 'x) (let ((x x)) (set! x 2))) 2)
+(test (let () (define-constant x 1) (let ((x x)) (set! x 2))) 'error)
+
;;; --------------------------------------------------------------------------------
@@ -36253,6 +36562,8 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
(test ((sublet () '(asdf . 32)) 'asd) #<undefined>)
(test (let? (sublet (curlet))) #t) ; no bindings is like (let () ...)
(test (varlet (rootlet) '(quote . 1)) 'error)
+(test (varlet (rootlet) 'if 3) 'error)
+(test (let-set! (rootlet) 'if 3) 'error)
(test (eq? (curlet) (let ((a (curlet))) a)) #t)
(test (eq? (curlet) (let* ((a (curlet))) a)) #t)
@@ -36327,6 +36638,11 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
(test (inlet 'if 3) 'error)
(test (inlet 'pi 3) 'error)
+(test (varlet (immutable! (inlet 'a 1)) 'b 2) 'error)
+(test (cutlet (immutable! (inlet 'a 1)) 'a) 'error)
+(test (let ((a 1)) (immutable! (curlet)) (define b 2)) 'error)
+(test (with-let (immutable! (inlet 'a 1)) (define b 2)) 'error)
+
(test (let ((e (inlet 'a 1 'a 2)))
(let ((c (copy e)))
(list (e 'a) (c 'a))))
@@ -38042,6 +38358,26 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
))
+;;; let field writer
+(let ()
+ (define lt (let ((a 1))
+ (set! (symbol-setter 'a)
+ (lambda (s v)
+ (if (integer? v)
+ v
+ (error 'wrong-type-arg "'a value should be an integer"))))
+ (curlet)))
+ (test (lt 'a) 1)
+ (set! (lt 'a) 32)
+ (test (lt 'a) 32)
+ (test (catch #t (lambda () (set! (lt 'a) pi)) (lambda args 'error)) 'error)
+ (define a 12)
+ (test a 12)
+ (set! a pi)
+ (test a pi)
+ (test (lt 'a) 32)
+ (test (catch #t (lambda () (set! (lt 'a) pi)) (lambda args 'error)) 'error))
+
;;; --------------------------------------------------------------------------------
;;; owlet
@@ -38069,14 +38405,15 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
(test (object->let ()) (inlet :value () :type 'null?))
(test (object->let #<unspecified>) (inlet :value #<unspecified> :type 'unspecified?))
(test (object->let #<undefined>) (inlet :value #<undefined> :type 'undefined?))
-(test (object->let else) (inlet :value else :type 'symbol?))
+(test (object->let else) (inlet :value else :type 'symbol? :setter #f))
(test (object->let with-baffle) (inlet :value with-baffle :type 'syntax?))
(test (object->let #<eof>) (inlet :value #<eof> :type 'eof-object?))
(test (object->let #t) (inlet :value #t :type 'boolean?))
-(test (object->let 'abc) (inlet :value 'abc :type 'symbol?))
-(test (object->let :abc) (inlet :value :abc :type 'keyword?))
+(test (object->let 'abc) (inlet :value 'abc :type 'symbol? :setter #f))
+(test (object->let :abc) (inlet :value :abc :type 'keyword? :setter #f))
(test (object->let #\space) (inlet :value #\space :type 'char?))
+(let ((_sym_ 3)) (set! (symbol-setter '_sym_) abs) (test (object->let '_sym_) (inlet :value '_sym_ :type 'symbol? :setter abs)))
(test (object->let 123) (inlet :value 123 :type 'integer?))
(test (object->let 1/2) (inlet :value 1/2 :type 'rational?))
@@ -38097,8 +38434,7 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
(call/cc (lambda (f) (set! c f)))
(let ((obj (object->let c)))
(test (obj 'value) c)
- (test (obj 'type) 'continuation?)
- (test (pair? (obj 'stack)) #t)))
+ (test (obj 'type) 'continuation?)))
(let ((c #f))
(call-with-exit (lambda (f) (set! c f)))
(test (object->let c) (inlet :value c :type 'goto? :active #f)))
@@ -38358,7 +38694,8 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
(test (let-temporarily ((if 3)) if) 'error)
(test (let-temporarily ((x . 1)) x) 'error)
(test (let-temporarily ((x 1 2 3)) x) 'error)
-;; let ((x 0) (y 0)) (let-temporarily ((x 1) (x 2)) (set! y x)) (list x y)) '(0 1) ? let*-temp -> '(0 2)
+;; (let ((x 0) (y 0)) (let-temporarily ((x 1) (x 2)) (set! y x)) (list x y)) '(0 1) ? let*-temp -> '(0 2)
+(test (let ((x 3)) (list (let-temporarily ((x 1)) (values x 2)))) '(1 2))
(let ()
(define ourlet
@@ -38373,6 +38710,54 @@ or better (define-macro (prog vars . body) `(call-with-exit (lambda (return) (ta
(test ((funclet (ourlet 'b-func)) 'y) 1)
(test (let-temporarily ((((funclet (ourlet 'b-func)) 'y) 3)) ((ourlet 'b-func))) 4))
+(let ((x 0))
+ (let ((y (call-with-exit
+ (lambda (go)
+ (let-temporarily ((x 1))
+ (go (+ x 1)))))))
+ (test (list x y) '(0 2))))
+(let ((x 0))
+ (let ((y (let-temporarily ((x 1))
+ (call-with-exit
+ (lambda (go)
+ (go (+ x 1)))))))
+ (test (list x y) '(0 2))))
+(let ((x 0))
+ (let ((y (call/cc
+ (lambda (go)
+ (let-temporarily ((x 1))
+ (go (+ x 1)))))))
+ (test (list x y) '(0 2))))
+(let ((x 0))
+ (let ((y (let-temporarily ((x 1))
+ (call/cc
+ (lambda (go)
+ (go (+ x 1)))))))
+ (test (list x y) '(0 2))))
+(let ((x 10)
+ (y 10))
+ (catch #t
+ (lambda ()
+ (let-temporarily ((x 1))
+ (set! y x)
+ (error 'oops)))
+ (lambda args 'error))
+ (test (list x y) '(10 1)))
+(let ((x 10)
+ (y 10))
+ (catch #t
+ (lambda ()
+ (let-temporarily ((x 1))
+ (set! y x)
+ (throw 'oops)))
+ (lambda args 'error))
+ (test (list x y) '(10 1)))
+
+(test (let ((x 1)) (immutable! 'x) (let-temporarily ((x 1234)) (+ x 1))) 'error)
+(test (let ((x 1)) (let-temporarily ((x 1234)) (immutable! 'x) (+ x 1))) 'error)
+(test (let ((x 1)) (define (f) (do ((i 0 (+ i 1))) ((= i 1)) (let-temporarily ((x 1234)) (+ x 1)))) (immutable! 'x) (f)) 'error)
+(test (let () (define (g) (cadr ())) (let ((x #f) (y 0)) (let-temporarily ((x 1234) (y 1/2)) (g)))) 'error)
+
;;; --------------------------------------------------------------------------------
@@ -38502,6 +38887,15 @@ hi6: (string-app...
(test (set! (*s7* 'max-stack-size) 3/4) 'error)
(test (set! (*s7* 'max-stack-size) 123123.123) 'error)
(test (integer? (*s7* 'max-stack-size)) #t)
+(test (> (*s7* 'max-stack-size) 256) #t)
+
+(test (set! (*s7* 'max-heap-size) -1) 'error)
+(test (set! (*s7* 'max-heap-size) 0) 'error)
+(test (set! (*s7* 'max-heap-size) #\a) 'error)
+(test (set! (*s7* 'max-heap-size) 3/4) 'error)
+(test (set! (*s7* 'max-heap-size) 123123.123) 'error)
+(test (integer? (*s7* 'max-heap-size)) #t)
+(test (> (*s7* 'max-heap-size) (ash 1 20)) #t)
;;; --------------------------------------------------------------------------------
@@ -38737,6 +39131,21 @@ hi6: (string-app...
(test (signature sf1) '(integer?))
(test (signature (setter sf1)) '(integer? integer?)))
+;;; dilambda?
+(test (dilambda? (dilambda (lambda () 1) (make-hook))) #t)
+(test (dilambda? (dilambda (make-hook) (setter car))) #t)
+
+(for-each
+ (lambda (arg)
+ (if (dilambda? arg)
+ (format #t ";(dilambda? ~A) -> #t?~%" arg)))
+ (list "hi" _ht_ _undef_ _null_ :hi (integer->char 65) 1 (list 1 2) '#t '3 (make-vector 3) 3.14 3/4 1.0+1.0i #\f #() (if #f #f)))
+
+(test (dilambda?) 'error)
+(test (dilambda? abs car) 'error)
+(test (dilambda? abs) #f)
+(test (dilambda? car) #t)
+
;;; --------------------------------------------------------------------------------
@@ -38832,6 +39241,7 @@ hi6: (string-app...
(test (eq? (copy 2/3) 2/3) #f)
(test (eq? (copy "") "") #f)
(test (copy #u8(101 102) (vector 1 2)) #(101 102))
+(if with-block (test (copy (block 1.0) (immutable! (block 2.0))) 'error))
(let ((lst (list 1 2 3))) ; segfault before source==dest check
(test (copy lst lst) lst)
@@ -39539,6 +39949,7 @@ hi6: (string-app...
3.14 3/4 1.0+1.0i 1 () "" :hi (if #f #f) (lambda (a) (+ a 1))))
(test (gc #f #t) 'error)
+(if with-block (test (fill! (immutable! (block 0)) 1.0) 'error))
@@ -39736,18 +40147,17 @@ hi6: (string-app...
(let ((val (tc-17 0 32)))
(test (and (= val 32) (< max-stack 28)) #t)))
-#|
-(let ((max-stack 0))
- (define (tc-19 a c)
- (if (> (-s7-stack-top-) max-stack)
- (set! max-stack (-s7-stack-top-)))
- (call/cc
- (lambda (r)
- (if (>= a c) (r a))
- (tc-19 (+ a 1) c))))
- (let ((val (tc-19 0 16)))
- (test (and (= val 16) (< max-stack 8)) #t)))
-|#
+(when full-test
+ (let ((max-stack 0))
+ (define (tc-19 a c)
+ (if (> (-s7-stack-top-) max-stack)
+ (set! max-stack (-s7-stack-top-)))
+ (call/cc
+ (lambda (r)
+ (if (>= a c) (r a))
+ (tc-19 (+ a 1) c))))
+ (let ((val (tc-19 0 16)))
+ (test (and (= val 16) (< max-stack 8)) #t))))
(let ((max-stack 0))
(define (tc-21 a)
@@ -52617,8 +53027,8 @@ hi6: (string-app...
(test (integer-decode-float 1/0) '(6755399441055744 972 1)) ; nan
(test (integer-decode-float (real-part (log 0))) '(4503599627370496 972 -1)) ; -inf
(test (integer-decode-float (- (real-part (log 0)))) '(4503599627370496 972 1)) ; inf
- (test (integer-decode-float (/ (real-part (log 0)) (real-part (log 0)))) '(6755399441055744 972 -1)) ; -nan
- (test (integer-decode-float (- (/ (real-part (log 0)) (real-part (log 0))))) '(6755399441055744 972 1)) ; nan
+ (test (integer-decode-float (/ (real-part (log 0)) (real-part (log 0)))) '(6755399441055744 972 1)) ; nan
+ (test (integer-decode-float (- (/ (real-part (log 0)) (real-part (log 0))))) '(6755399441055744 972 -1)) ; -nan
))
(do ((i 0 (+ i 1)))
@@ -53448,27 +53858,36 @@ hi6: (string-app...
(test (let ((x 1) (y 321)) (<=> x y) (list x y)) (list 321 1))
)
-(let ()
-
- (define (bit-reverse int)
- ;; from "Hacker's Delight" Henry Warren p101, but 64 bit
- (let ((x int))
- (set! x (logior (ash (logand x #x5555555555555555) 1)
- (ash (logand x #xAAAAAAAAAAAAAAAA) -1)))
- (set! x (logior (ash (logand x #x3333333333333333) 2)
- (ash (logand x #xCCCCCCCCCCCCCCCC) -2)))
- (set! x (logior (ash (logand x #x0F0F0F0F0F0F0F0F) 4)
- (ash (logand x #xF0F0F0F0F0F0F0F0) -4)))
- (set! x (logior (ash (logand x #x00FF00FF00FF00FF) 8)
- (ash (logand x #xFF00FF00FF00FF00) -8)))
- (set! x (logior (ash (logand x #x0000FFFF0000FFFF) 16)
- (ash (logand x #xFFFF0000FFFF0000) -16)))
- (logior (ash (logand x #x00000000FFFFFFFF) 32)
- (ash (logand x #xFFFFFFFF00000000) -32))))
-
- ;(let ((x (ash (bit-reverse #x01234566) -32))) (num-test x 1721943168))
- )
+;; these added 28-Jan-18 but maybe they're a bad idea
+(num-test #xffffffffffffffff -1)
+(num-test #x7fffffffffffffff most-positive-fixnum)
+(num-test #x7ffffffffffffffe (- most-positive-fixnum 1))
+(num-test #x8000000000000000 most-negative-fixnum)
+(num-test #x8000000000000001 (+ most-negative-fixnum 1))
+(num-test #xfffffffffffffffe -2)
+
+(define (bit-reverse int)
+ ;; from "Hacker's Delight" Henry Warren p101, but 64 bit
+ (let ((x int))
+ (set! x (logior (ash (logand x #x5555555555555555) 1)
+ (ash (logand x #xAAAAAAAAAAAAAAAA) -1)))
+ (set! x (logior (ash (logand x #x3333333333333333) 2)
+ (ash (logand x #xCCCCCCCCCCCCCCCC) -2)))
+ (set! x (logior (ash (logand x #x0F0F0F0F0F0F0F0F) 4)
+ (ash (logand x #xF0F0F0F0F0F0F0F0) -4)))
+ (set! x (logior (ash (logand x #x00FF00FF00FF00FF) 8)
+ (ash (logand x #xFF00FF00FF00FF00) -8)))
+ (set! x (logior (ash (logand x #x0000FFFF0000FFFF) 16)
+ (ash (logand x #xFFFF0000FFFF0000) -16)))
+ (logior (ash (logand x #x00000000FFFFFFFF) 32)
+ (ash (logand x #xFFFFFFFF00000000) -32))))
+
+(let ((x (ash (bit-reverse #x01234566) -32)))
+ (num-test x 1721943168))
+
+
+(test (let () (define (func) ((lambda* ((x 1)) (do ((i 0 (+ i 1))) ((= i 1) 1) (ash x 1234))))) (define (hi) (func)) (hi)) 'error)
;; from CL spec
(test (let ((str ""))
@@ -53786,6 +54205,7 @@ hi6: (string-app...
(list "hi" () (integer->char 65) #f #t '(1 2) _ht_ _undef_ _null_ _c_obj_ 'a-symbol (cons 1 2) (make-vector 3) abs
#<eof> '(1 2 3) #\newline (lambda (a) (+ a 1)) #<unspecified> #<undefined>))
+(test (let () (define (func) (do ((i 0 (+ i 1))) ((= i 1)) (floor (atanh (logand))))) (define (hi) (func)) (hi)) 'error) ; floor_i_p real arg case
@@ -53946,6 +54366,7 @@ hi6: (string-app...
(list "hi" () (integer->char 65) #f #t '(1 2) _ht_ _undef_ _null_ _c_obj_ 'a-symbol (cons 1 2) (make-vector 3) abs
#<eof> '(1 2 3) #\newline (lambda (a) (+ a 1)) #<unspecified> #<undefined>))
+(test (let () (define (func) (do ((i 0 (+ i 1))) ((= i 1)) (ceiling (atanh (logand))))) (define (hi) (func)) (hi)) 'error)
@@ -74054,6 +74475,10 @@ hi6: (string-app...
(test (* 1 0.0 #\a) 'error)
(test (* 2 2 2.0 2) 16.0)
+(test (nan? (* nan.0 0)) #t)
+(test (nan? (* inf.0 0)) #t)
+(test (infinite? (* inf.0 inf.0)) #t)
+
(for-each
(lambda (arg)
(test (* arg nan.0) 'error)
@@ -74073,7 +74498,8 @@ hi6: (string-app...
(list "hi" () (integer->char 65) #f #t '(1 2) _ht_ _undef_ _null_ _c_obj_ 'a-symbol (cons 1 2) (make-vector 3) abs
#<eof> '(1 2 3) #\newline (lambda (a) (+ a 1)) #<unspecified> #<undefined>))
-
+(test (let () (define (func) (do ((i 0 (+ i 1))) ((= i 1)) (make-float-vector (* (ash 1 43) (ash 1 43))))) (define (hi) (func)) (hi)) 'error)
+(test (let () (define (func) (do ((i 0 (+ i 1))) ((= i 1)) (make-float-vector (* (ash 1 2) (ash 1 43) (ash 1 43))))) (define (hi) (func)) (hi)) 'error)
@@ -77963,8 +78389,8 @@ but it's the printout that is at fault:
(test (/ 1.0 0.0) 'error)
(test (/ 0 1 2 3 0 4) 'error)
(test (/ 0.0 1 2.0 3 0.0 4) 'error)
-(let ((NaN 1/0)) (test (/ 0 1 NaN 2 0 3) 'error)) ; i.e. divide by zero takes precedence over the NaN
-(let ((NaN 1/0)) (test (/ 0.0 1.0 NaN 0 1+i) 'error))
+(let ((NaN 1/0)) (test (nan? (/ 0 1 NaN 2 0 3)) #t))
+(let ((NaN 1/0)) (test (nan? (/ 0.0 1.0 NaN 0 1+i)) #t))
(test (/ 1/9223372036854775807 0) 'error)
(test (/ 1/9223372036854775807 0.0) 'error)
(when with-bignums
@@ -77989,6 +78415,21 @@ but it's the printout that is at fault:
(list "hi" () (integer->char 65) #f #t '(1 2) _ht_ _undef_ _null_ _c_obj_ 'a-symbol (cons 1 2) (make-vector 3) abs
#<eof> '(1 2 3) #\newline (lambda (a) (+ a 1)) #<unspecified> #<undefined>))
+(test (nan? (/ 0 nan.0)) #t)
+(test (nan? (/ 0 nan.0 0)) #t)
+(test (nan? (/ 0 0 inf.0 nan.0)) #t)
+(test (zero? (/ 0 inf.0)) #t)
+(test (nan? (/ 0 0 inf.0)) #t)
+(test (nan? (/ 1 nan.0 0)) #t)
+(test (nan? (/ 2 0 inf.0 nan.0)) #t)
+(test (zero? (/ 3 inf.0)) #t)
+(test (nan? (/ 4 0 inf.0)) #t)
+(test (negative? (/ inf.0 2.0)) #f)
+(test (negative? (/ inf.0 -2.0)) #t)
+(test (negative? (/ -inf.0 2)) #t)
+(test (negative? (/ -inf.0 -2)) #f)
+(test (negative? (/ inf.0 -2)) #t)
+
(for-each
(lambda (arg)
(test (/ arg) 'error))
@@ -78513,6 +78954,7 @@ but it's the printout that is at fault:
(if (not (<= -0.5 v2 0.5)) (format *stderr* ";f2: sub_random_rc: ~A~%" v2))
(if (not (<= 0.0 v4 1.0)) (format *stderr* ";f4: random_rc: ~A~%" v4)))))
+(test (real-part (random 0+i)) 0.0)
@@ -81016,6 +81458,22 @@ etc
(let ()
;(load "stuff.scm" (curlet))
+ (typed-let ((i 0 integer?)
+ (x () list?))
+ (test (set! i 3) 3)
+ (test (set! i pi) 'error)
+ (test (set! x (list 3)) '(3))
+ (test (set! x pi) 'error))
+
+ (let ((i 0))
+ (typed-let ((i () list?))
+ (set! i ()))
+ (set! i 2))
+ (typed-let ((i 0)
+ (x pi real?))
+ (test (set! i ()) ())
+ (test (set! x ()) 'error))
+
(test (first '(1 2 3 4 5 6 7 8 9 10)) 1)
(test (second '(1 2 3 4 5 6 7 8 9 10)) 2)
(test (third '(1 2 3 4 5 6 7 8 9 10)) 3)
@@ -83313,8 +83771,8 @@ etc
(test (/ ((*mock-number* 'mock-number) 0) ((*mock-number* 'mock-number) 0.0)) 'error)
(test (/ 0.0 0) 'error)
(test (/ ((*mock-number* 'mock-number) 0.0) ((*mock-number* 'mock-number) 0)) 'error)
- (test (/ 2.0 inf.0 1-1i 0.0) 'error)
- (test (/ ((*mock-number* 'mock-number) 2.0) ((*mock-number* 'mock-number) inf.0) ((*mock-number* 'mock-number) 1-1i) ((*mock-number* 'mock-number) 0.0)) 'error)
+ (test (nan? (/ 2.0 inf.0 1-1i 0.0)) #t)
+ (test (nan? (/ ((*mock-number* 'mock-number) 2.0) ((*mock-number* 'mock-number) inf.0) ((*mock-number* 'mock-number) 1-1i) ((*mock-number* 'mock-number) 0.0))) #t)
(test (length (append '(1) ((*mock-number* 'mock-number) 1))) -1)
(test (number? (append ((*mock-number* 'mock-number) 1))) #t)
@@ -84440,6 +84898,7 @@ etc
(test (integer? (*s7* 'stack-top)) #t)
(test (integer? (*s7* 'stack-size)) #t)
(test (integer? (*s7* 'max-stack-size)) #t)
+(test (integer? (*s7* 'max-heap-size)) #t)
(test (integer? (*s7* 'rootlet-size)) #t)
(test (integer? (*s7* 'heap-size)) #t)
(test (integer? (*s7* 'free-heap-size)) #t)
@@ -84640,6 +85099,27 @@ etc
(stack-test (let () (define (f x) (map car x)) (define (r3 lst) (f (r3 (cdr lst)))) (r3 (make-list 200))))
)
+(let ()
+ (define (freef) (local-func 0))
+ (test (freef) 'error)
+ (define (local-func x) (+ x 1))
+ (test (freef) 1)
+ (set! local-func (lambda (x y) (+ x y)))
+ (test (freef) 'error)
+ (set! local-func (lambda (x) (+ x 2)))
+ (test (freef) 2)
+ (set! local-func 2)
+ (test (freef) 'error))
+
+(let ()
+ (define (freeg) (+ local-var 1))
+ (define (freeh) (set! local-var 2))
+ (test (freeg) 'error)
+ (test (freeh) 'error)
+ (define local-var 1)
+ (test (freeg) 2)
+ (test (freeh) 2))
+
;;; bizarre optimizer checks
(test (let () (define (func x) (if (pair? (cdr /)) 3)) (define (hi) (func (integer->char 255))) (catch #t (lambda () (hi) (func (integer->char 255))) (lambda arg #f))) #f)
(test (catch #t (lambda () (define (func x) (cond (case `((1)) (if x y) =>))) (define (hi) (func ())) (hi)) (lambda args 'error)) 'error)
@@ -84784,6 +85264,7 @@ etc
(test (let () (define (func x) (with-let (openlet (inlet 'abs (lambda (x) (- x)))) '(- 1) (abs 1+1i))) (define (hi) (func #f)) (hi)) -1-i)
(test (let ((x #f)) (define (func) (member "c" '(x) (lambda (a b) (call/cc (lambda (return) (return #f)))))) (define (hi) (func)) (hi)) #f)
(test (let ((x #f)) (define (func) (assoc "c" '((x . 1)) (lambda (a b) (call/cc (lambda (return) (return #t)))))) (define (hi) (func)) (hi)) '(x . 1))
+(let ((imp '(0 1))) (define (func) (list (hash-table-ref imp imp) #u8(0 1) #r())) (define (hi) (func)) (test (hi) 'error))
(let ((x #f))
(define (func) (do ((i 0 (+ i 1))) ((= i 1) x) (set! x (eval-string (object->string (curlet))))))
@@ -84838,6 +85319,7 @@ etc
(test (with-let (inlet) (letrec () (signature abs) . if)) 'error)
(test (let-temporarily ((__var__ 1)) (signature abs) . if) 'error)
(test (with-let (inlet 'i 0) 1 cons . 2) 'error)
+(test (call-with-output-file "/dev/null" (lambda* '(- 1) (vector 1 '(3)) '((1)))) '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)
@@ -84851,12 +85333,34 @@ etc
(test (let () (define (f) (define _x_ (+ .1 _x_)) 1) (f)) 'error)
(test (let () (define (f) (define _x_ (+ _x_ .1)) 1) (f)) 'error)
+(test (let () (define (func) (do ((i 0 (+ i 1))) ((= i 1)) (set!))) (define (hi) (func)) (hi)) 'error)
+(test (let () (define (func) (do ((i 0 (+ i 1))) ((= i 1)) (do ((j 0 (+ j 1))) ((= j 1)) (if (list 1) (byte-vector 0 1 2))))) (define (hi) (func)) (hi)) #t)
+(test (let () (define (func) (do ((i 0 (+ i 1))) ((= i 1)) (do ((j 0 (+ j 1))) ((= j 1)) (if (c-pointer 1234) #i(1))))) (define (hi) (func)) (hi)) #t)
+(test (let () (define (func) (let ((x #f)) (do ((i 0 (+ i 1))) ((= i 1)) (do ((j 0 (+ j 1))) ((= j 1)) (let _let_ #x123.123))))) (define (hi) (func)) (hi)) 'error)
+(test (let () (define (func) (do ((i 0 (+ i 1))) ((= i 1)) (do ((j 0 (+ j 1))) ((= j 1)) (if (immutable! (float-vector 0 1 2)) #_cons)))) (define (hi) (func)) (hi)) #t)
+(test (let () (define (func) (let ((x #f)) (do ((i 0 (+ i 1))) ((= i 1)) (do ((j 0 (+ j 1))) ((= j 1)) (if (let-temporarily ((x 1234)) (+ x 1)) _undef_))))) (define (hi) (func)) (hi)) #t)
+(test (let () (define (func) (do ((i 0 (+ i 1))) ((= i 1)) (do ((j 0 (+ j 1))) ((= j 1)) (if (list 1 2) and)))) (define (hi) (func)) (hi)) #t)
+(test (let () (define (func) (do ((i 0 (+ i 1))) ((= i 1)) (do ((j 0 (+ j 1))) ((= j 1)) (if (string #\c #\b) '((1 (2)) (((3) 4))))))) (define (hi) (func)) (hi)) #t)
+(test (let () (define (func) (do ((i 0 (+ i 1))) ((= i 1)) (do ((j 0 (+ j 1))) ((= j 1)) (if 1 (* 2 x 3.0 4))))) (define (hi) (func)) (hi)) 'error)
+(test (let () (define (func) (let ((x #f) (i 0)) (do ((i 0 (+ i 1))) ((= i 1)) (do ((j 0 (+ j 1))) ((= j 1)) (let _let_ #x123.123))))) (define (hi) (func)) (hi)) 'error)
+(test (let () (define (func) (do ((i 0 (+ i 1))) ((= i 1)) (do ((j 0 (+ j 1))) ((= j 1)) (hash-table-set! (immutable! (hash-table* 'a 1)) 'x 3)))) (define (hi) (func)) (hi)) 'error)
+(test (let () (define (func) (let ((x #f) (i 0)) (do ((i 0 (+ i 1))) ((= i 1)) (do ((j 0 (+ j 1))) ((= j 1)) (cond (set! __var__ . #x123)))))) (define (hi) (func)) (hi)) 'error)
+(test (let () (define (func) (do ((i 0 (+ i 1))) ((= i 1)) (do ((j 0 (+ j 1))) ((= j 1)) (if (not :readable #i()) (vector))))) (define (hi) (func)) (hi)) 'error)
+(test (let () (define (func) (let ((x #f) (i 0)) (do ((i 0 (+ i 1))) ((= i 1)) (let ((j 0)) (truncate (exp #x123.123)))))) (define (hi) (func)) (hi)) 'error)
+(test (eval-string "(let ((x #f) (i 0)) (do ((i 0 (+ i 1))) ((= i 1)) (do ((j 0 (+ j 1))) ((= j 1)) (cond-expand (x => y) (values 1 2) #\\newline `(+ ,a ,b)))))") 'error)
+
(test (multiple-value-bind lambda #f (call-with-exit (lambda (return) (return 1)))) 'error)
(unless pure-s7
(test (let ((x #f) (i 0)) (if (not x) (begin (quasiquote (type-of `((x)) "" #r2d((.1 .2) (.3 .4)) unquote))))) 'error)
(test (let () (define (func) (let ((x #f) (i 0)) (let () (values (zero? (quasiquote (unquote . #x123.123))))))) (define (hi) (func)) (hi)) 'error))
(test (let ((x #f) (i 0)) (call/cc (lambda* quote `((1) . x)))) 'error)
(test (let () (define (func) (let ((x #f) (i 0)) (call/cc (lambda* quote `((1) . x) (begin))))) (define (hi) (func)) (hi)) 'error)
+(test (let () (define (func) (do ((i 0 (+ i 1))) ((= i 1)) (fill! (immutable! (list 0 1 2)) (call/cc (lambda (return) (return 1 2)))))) (define (hi) (func)) (hi)) 'error)
+(test (let () (define (func) (member 1 '(2 3) (lambda (a b) (do ((i 0 (+ i 1))) ((= i 1) 1) (/ (random 1)))))) (define (hi) (func)) (hi)) 'error)
+(test (let () (define (func) (let ((x #f) (i 0)) (let () (_do1_ (make-vector (do ())) (make-byte-vector (hash-table-ref)))))) (define (hi) (func)) (hi)) 'error)
+(let-temporarily (((current-output-port) #f))
+ (if (let ((false #f)) (define (func) (do () ((not false) (format () "ra")))) (define (hi) (func)) (hi)) (format *stderr* "format1 bug~%"))
+ (if (let ((false #f)) (define (func) (when (not false) (format () "ra"))) (define (hi) (func)) (hi)) (format *stderr* "format2 bug~%")))
(let ()
(let ((x 1)) (define (func) (do ((i 0 (+ i 1))) ((= i 1) x) (set! x (clamp 0 x 10)))) (define (hi) (func)) (hi))
@@ -84871,6 +85375,166 @@ etc
(test (s7-optimize (list (catch #t (lambda () (with-input-from-string "(if (not) (cadddr (rational?)))" read)) (lambda args args)))) #<undefined>)
)
+;;; same as above but change location of test
+(let () (define (func x) (object->string (list (funclet /)))) (define (hi) (func abs)) (test (hi) "((rootlet))"))
+(let () (define (func x) (cdadar (not (eq? / '())))) (define (hi) (func '((())))) (test (hi) 'error))
+(let () (define (func x) (append (inlet 'integer? (lambda (f) #f)) (hash-table `((+ x 1)) '(((x 1) 2) 3)))) (define (hi) (func 1)) (test (hi) 'error))
+(let () (define (func x) (float-vector? (<= / (let-ref 1+0/0i 0)))) (define (hi) (func 0/0+i)) (test (hi) 'error))
+(let () (set! else #(0 0)) (define (func x) (car (boolean? (char=? (else ()) (= i 2))))) (define (hi) (func '(()))) (test (hi) 'error))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1) i) (logior // (+)))) (define (hi) (func 0+1/0i)) (test (hi) 'error))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1) i) (int-vector-ref /(asinh (logand))))) (define (hi) (func 0+1/0i)) (test (hi) 'error))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1) i) (logxor /(lognot (gcd))))) (define (hi) (func (list (list 1 2)))) (test (hi) 'error))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1) i) (int-vector-set! / 1 2))) (define (hi) (func 1.5)) (test (hi) 'error))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1)) (quote . /))) (define (hi) (func (integer->char 255))) (test (hi) 'error))
+(let () (define (func x) (cond ((if if . :readable) #f))) (define (hi) (func begin)) (test (hi) 'error))
+(let () (define (func x) (if (not . /) x)) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (set! (with-let / begin `(+ ,a ,b ,@c) #<undefined>) #f)) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (let () (define _x_ (lambda* '((x 1 . 2) . 3) `((x)) (reverse! /))))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (let () (define _x_ (lambda* . let*)))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (set! (with-let . ()) #f)) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (call/cc (lambda (_x_) (acosh (unlet))))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1)) (member :rest (cons 1 2) /))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1)) (char-numeric? (make-vector 3) 1.5 `((+ x 1)) ))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1)) (procedure? //))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1)) (iterator-at-end? /))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1)) (hash-table-ref /(flush-output-port )))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (let () (set! ((dilambda / (let ((x 3)) (lambda (y) (+ x y))) )) 3))) (define (hi) (func #f)) (test (hi) 6))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1)) (unlet /(immutable? )))) (define (hi) (func #f)) (test (hi) 'error))
+(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)) (test (hi) 'error))
+(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)) (test (hi) 'error))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1)) (format `((x)) (list 1) cons else (read (string-append /))))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1)) (<= -1 (round /)))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1)) (byte-vector-ref (make-string 3) 0))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1)) (char-ci<? (null? i) (quote . let)))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1)) (int-vector-ref #i2d((1 2) (3 4)) 0))) (define (hi) (func #f)) (test (hi) #t))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1)) (denominator (sqrt (hash-table-ref (if x y) 0+0/0i))))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1)) (and `((x)) (string (integer->char 255))))) (define (hi) (func #f)) (test (hi) #t))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1)) (string>? (null? i) (object->let /)) (string>? (null? i) (object->let /)))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1) i) / (letrec . #t))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1) i) :readable `((x . 1)) (provide (quote /)))) (define (hi) (func #f)) (test (hi) 1))
+(let () (define (func x) (iterator-sequence (string-ci<=? (do ((i 0 (+ i 1))) ((= i 1) i) (when (+ i 1) `(+ x 1) (list 1) (- i 1)))))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (continuation? (do ((i 0 (+ i 1))) ((= i 1) i) (unless (+ i 1) quasiquote )))) (define (hi) (func #f)) (test (hi) #f))
+(let () (define (func x) (error `(x 1) (null? i) (list 1 2) (lambda . /))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1) i) / (case / (if x y) #2d((1 2) (3 4)) (x => y)))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (char>=? (inlet 'a 1) (hook-functions (output-port?))) (vector? (letrec))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (letrec // . letrec)) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (for-each quasiquote (object->let /))) (define (hi) (func #f)) (test (hi) #<unspecified>))
+(let () (define (func x) (provided? (eval-string (do ((i 0 (+ i 1))) ((= i 1) i) (case))))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (cond (denominator 1 . 2))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (when denominator 1 . 2)) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (case 0 ((0) 1 . 2))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (case denominator ((0) 1) (else 1 . 2))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (cond (denominator . 2))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (when denominator . 2)) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (case 0 ((0) . 2))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (case denominator ((0) 1) (else . 2))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (string? (object->string (hash-table (list-values (object->let /)))))) (define (hi) (func #f)) (test (hi) #t))
+(let () (define (func x) (sort! / (lambda (zero? i) (zero? i)))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1) i) (string>? (string) (read-line)))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 3)) (let-set! cons '() macroexpand))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (call-with-values quasiquote macroexpand )) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1) i) (modulo (expt 2 32) (make-iterator (list 1 2 3))))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (< (read-char (cond (boolean? lambda* (lambda (a) (values a (+ a 1))) `(+ ,a ,b) 0+0/0i))))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (exact->inexact (cond (continuation? lambda (lambda (a) (values a (+ a 1))) (values "ho") `(x) `(+ ,a ,b))))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1) i) 0 (cond (quote (define _definee_ 0))))) (define (hi) (func #f)) (test (hi) 1))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1) i) 0 (cond '(define _definee_ 0)))) (define (hi) (func #f)) (test (hi) 1))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1) i) (let* ()))) (define (hi) (func #f)) (test (hi) 'error)) ; not 0!
+(let () (define (func x) (input-port? (c-pointer (values 1 2) begin))) (define (hi) (func #f)) (test (hi) #f))
+(let () (define (func x) (member letrec '#())) (define (hi) (func #f)) (test (hi) 'error)) ; not #f
+(let () (define (func abs) (abs 1)) (define (hi) (func '(1 2 3))) (test (hi) 2))
+(let () (define (hi) ((lambda (abs) (abs 1)) '(1 2 3))) (test (hi) 2))
+(let () (define (func x) ((lambda (values) (values "ho")) '((x 1) 2))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (multiple-value-bind (values) '((x 1) 2) (values "ho"))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (multiple-value-bind (list) macroexpand '((1 2) (3 4)) (length (list)))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (multiple-value-bind (hash-table) (integer->char 255) (pair? (hash-table? (let* () 0+1/0i (hash-table)))))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (multiple-value-bind (list) -1 `((1) . x) #() (make-iterator (list 1 2 3)) (random-state 1234) 1234)) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1) i) (char-numeric? most-negative-fixnum))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1) i) (char-alphabetic? (list)))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1) i) (char-whitespace? (make-hash-table)))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (vector->list (values 1 2) #(1 2))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (truncate (/ (values 1 2) 0))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (fill! (values 1 2) `(+ x 1))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (not (zero? :readable))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1) i) (exact->inexact 1.0+123.0i))) (define (hi) (func #f)) (test (hi) 1))
+(let () (define (func x) (inlet 'if 3)) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (vector (setter car) (quote (null? i) #r2d((.1 .2) (.3 .4))))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (c-pointer? begin (member let-temporarily (values 1 2)))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (integer? (assoc (values) '((x 1) (y) . 2) cons))) (define (hi) (func #f)) (test (hi) #f))
+(let () (define-macro (_mac_ x) `(+ ,x 1)) (let () (define (func x) (do ((i 0 (+ i 1))) ((= i 1) 1) (_mac_ inf.0 . #x123.123))) (define (hi) (func #f)) (test (hi) 'error)) 'error)
+(let () (define (func x) (reverse! (write-string (symbol->string :allow-other-keys) #f))) (define (hi) (func #f)) (test (hi) "syek-rehto-wolla:"))
+(let () (define (func x) (with-let (openlet (inlet 'abs (lambda (x) (- x)))) '(- 1) (abs 1+1i))) (define (hi) (func #f)) (test (hi) -1-i))
+(let ((x #f)) (define (func) (member "c" '(x) (lambda (a b) (call/cc (lambda (return) (return #f)))))) (define (hi) (func)) (test (hi) #f))
+(let ((x #f)) (define (func) (assoc "c" '((x . 1)) (lambda (a b) (call/cc (lambda (return) (return #t)))))) (define (hi) (func)) (test (hi) '(x . 1)))
+(let ((imp '(0 1))) (define (func) (list (hash-table-ref imp imp) #u8(0 1) #r())) (define (hi) (func)) (test (hi) 'error))
+(let ((x #f)) (define (func) (do ((i 0 (+ i 1))) ((= i 1) x) (set! x (let-temporarily ((i 0 (+ i 1))) #i(1) 1)))) (define (hi) (func)) (test (hi) 'error))
+(let ((x #f)) (define (func) (do ((i 0 (+ i 1))) ((= i 1) x) (set! x (for-each (lambda s s) (object->let (block)))))) (define (hi) (func)) (test (hi) #<unspecified>))
+(let ((x #f)) (define (func) (call-with-exit (lambda (x) (char-ci>? (call-with-output-string x))))) (define (hi) (func)) (test (hi) 'error))
+(let ((x #f)) (define (func) (call-with-exit (lambda (x) (char-ci>? (with-output-to-string x))))) (define (hi) (func)) (test (hi) 'error))
+(let ((x #f)) (define (func) (call-with-exit (lambda (x) (char-ci>? (with-output-to-file "/dev/null" x))))) (define (hi) (func)) (test (hi) 'error))
+(let ((x #f)) (define (func) (do ((i 0 (+ i 1))) ((= i 1) x) (set! x (indexable?)))) (define (hi) (func)) (test (hi) 'error))
+(let () (define (func x) (make-list (reader-cond (#t _definee_ (define _definee_ 0))))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (make-list _definee_ (define _definee_ 0))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (make-list z (define z 0))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (string-ci>=? _definee_ -1.0 (define-bacro* _definee_ 0 (tan (string (A (f x) B) '() 1+i))))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (string-ci>=? _definee_ -1.0 (define _definee_ 0))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (call-with-input-string _definee_ (define _definee_ 0 `(x 1) (openlet (inlet 'abs (lambda (x) x))) lambda))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (call-with-input-string _definee_ (define _definee_ 0 (openlet (inlet 'abs 1))))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (quasiquote (define _definee_ 0)) (symbol _definee_)) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (int-vector-ref _definee_ (define _definee_ (define _definee_ 0)))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (vector-fill! _definee_ (char<=? enver (begin (define _definee_ 0))))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (fill! _definee_ (set! __var__ (define _definee_ 0)))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (list-ref _definee_ (with-baffle (define _definee_ 0)))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (max _definee_ (let 1/0+i (define _definee_ 0)))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (hash-table _definee_ (let-temporarily 1.0+123.0i (define _definee_ 0)))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (with-baffle (define _definee_ 0)) (for-each _definee_ (make-int-vector 3))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (let-temporarily () (define _definee_ 2)) (+ 1 _definee_)) (define (hi) (func #f)) (test (hi) 3))
+(let () (define (func x) (with-input-from-string _definee_ (lambda* 0/0+0/0i (define _definee_ 0)))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (with-input-from-string _definee_ (lambda* ((x (define _definee_ 0))) x))) (define (hi) (func #f)) (test (hi) 'error))
+(let () (define (func x) (c-pointer? _definee_ (let-temporarily () (define _definee_ 0)))) (define (hi) (func #f)) (test (hi) 'error))
+(let ((x -1)) (define (func) (with-let (inlet 'a 1) (+ x 1))) (define (hi) (func)) (test (hi) 'error))
+(let ((x -1)) (define (func) (with-let (inlet 'a 1) (+ 2 x 1))) (define (hi) (func)) (test (hi) 'error))
+(let ((x -1)) (define (func) (with-let (inlet 'a 1) (+ 3 2 x 1))) (define (hi) (func)) (test (hi) 'error))
+(let ((x -1)) (define (func) (with-let (inlet 'a 1) (abs x))) (define (hi) (func)) (test (hi) 'error))
+(let ((x #f)) (define (func) (do ((i 0 (+ i 1))) ((= i 1) x) (set! x (with-let (inlet 'a 1) (setter x))))) (define (hi) (func)) (test (hi) 'error))
+(let ((x -1)) (define (func) (with-let (inlet 'a 1) (with-let (inlet 'b 1) (+ b 1)) (+ x 1))) (define (hi) (func)) (test (hi) 'error))
+(let ((x -1)) (define (func) (with-let (inlet 'a 1) (let ((x 1)) (+ x 1)))) (define (hi) (func)) (test (hi) 2))
+(let ((x -1)) (define (func) (with-let (inlet 'a 1) (let ((x 1)) (with-let (inlet 'b 1) (+ b 1)) (+ x 1)))) (define (hi) (func)) (test (hi) 2))
+(let ((x -1)) (define (func) (with-let (inlet 'a 1) (let ((x 1)) (with-let (inlet 'b 1) (+ b 1)))) (+ x 1)) (define (hi) (func)) (test (hi) 0))
+(let ((x #f)) (define (func) (do ((i 0 (+ i 1))) ((= i 1) x) (set! x (atanh (with-let (inlet 'integer? (lambda (f) #f)) (+ x 1)))))) (define (hi) (func)) (test (hi) 'error))
+(let () (define (func) (call-with-exit (lambda (_x_) 1 . 2))) (define (hi) (func)) (test (hi) 'error))
+(let () (define (func) (list (quote 1 abs) (quote 1))) (define (hi) (func)) (test (hi) 'error))
+(let () (define (func) (do ((i 0 (+ i 1))) ((= i 1)) (set!))) (define (hi) (func)) (test (hi) 'error))
+(let () (define (func) (do ((i 0 (+ i 1))) ((= i 1)) (do ((j 0 (+ j 1))) ((= j 1)) (if (list 1) (byte-vector 0 1 2))))) (define (hi) (func)) (test (hi) #t))
+(let () (define (func) (do ((i 0 (+ i 1))) ((= i 1)) (do ((j 0 (+ j 1))) ((= j 1)) (if (c-pointer 1234) #i(1))))) (define (hi) (func)) (test (hi) #t))
+(let () (define (func) (let ((x #f)) (do ((i 0 (+ i 1))) ((= i 1)) (do ((j 0 (+ j 1))) ((= j 1)) (let _let_ #x123.123))))) (define (hi) (func)) (test (hi) 'error))
+(let () (define (func) (do ((i 0 (+ i 1))) ((= i 1)) (do ((j 0 (+ j 1))) ((= j 1)) (if (immutable! (float-vector 0 1 2)) #_cons)))) (define (hi) (func)) (test (hi) #t))
+(let () (define (func) (let ((x #f)) (do ((i 0 (+ i 1))) ((= i 1)) (do ((j 0 (+ j 1))) ((= j 1)) (if (let-temporarily ((x 1234)) (+ x 1)) _undef_))))) (define (hi) (func)) (test (hi) #t))
+(let () (define (func) (do ((i 0 (+ i 1))) ((= i 1)) (do ((j 0 (+ j 1))) ((= j 1)) (if (list 1 2) and)))) (define (hi) (func)) (test (hi) #t))
+(let () (define (func) (do ((i 0 (+ i 1))) ((= i 1)) (do ((j 0 (+ j 1))) ((= j 1)) (if (string #\c #\b) '((1 (2)) (((3) 4))))))) (define (hi) (func)) (test (hi) #t))
+(let () (define (func) (do ((i 0 (+ i 1))) ((= i 1)) (do ((j 0 (+ j 1))) ((= j 1)) (if 1 (* 2 x 3.0 4))))) (define (hi) (func)) (test (hi) 'error))
+(let () (define (func) (let ((x #f) (i 0)) (do ((i 0 (+ i 1))) ((= i 1)) (do ((j 0 (+ j 1))) ((= j 1)) (let _let_ #x123.123))))) (define (hi) (func)) (test (hi) 'error))
+(let () (define (func) (do ((i 0 (+ i 1))) ((= i 1)) (do ((j 0 (+ j 1))) ((= j 1)) (hash-table-set! (immutable! (hash-table* 'a 1)) 'x 3)))) (define (hi) (func)) (test (hi) 'error))
+(let () (define (func) (let ((x #f) (i 0)) (do ((i 0 (+ i 1))) ((= i 1)) (do ((j 0 (+ j 1))) ((= j 1)) (cond (set! __var__ . #x123)))))) (define (hi) (func)) (test (hi) 'error))
+(let () (define (func) (do ((i 0 (+ i 1))) ((= i 1)) (do ((j 0 (+ j 1))) ((= j 1)) (if (not :readable #i()) (vector))))) (define (hi) (func)) (test (hi) 'error))
+(let () (define (func) (let ((x #f) (i 0)) (do ((i 0 (+ i 1))) ((= i 1)) (let ((j 0)) (truncate (exp #x123.123)))))) (define (hi) (func)) (test (hi) 'error))
+
+
+
+(let () ; (copy func) after func use -- clearing all opts is a problem, here OP_IF -> OP_IF_IS_TYPE needs to be reset
+ (define h->a
+ (let ((+documentation+ "(h->a table) returns the contents of table as an association list:\n\
+ (h->a (hash-table '(a . 1))) -> '((a . 1))"))
+ (lambda (table)
+ (if (hash-table? table)
+ (map values table)
+ (error 'wrong-type-arg "h->a argument, ~A, is not a hash-table" table)))))
+ (define (func)
+ (h->a (hash-table* 'a 1)))
+ (func)
+ (define (func1)
+ (call-with-output-file "/dev/null" (copy h->a)))
+ (test (func1) 'error))
+
;;; clumsy test, but will hang in older s7's
(define global_fi
(let ((+documentation+ "docs"))
@@ -86655,6 +87319,7 @@ etc
(let ()
(require lint.scm)
(set! *report-repeated-code-fragments* #f)
+ (set! (setter /) #f); clear stuff from above
(define lint-test
(letrec ((no-lines
@@ -86975,7 +87640,8 @@ etc
(lint-test "(random 0)" " random: perhaps (random 0) -> 0")
(lint-test "(random 0.0)" " random: perhaps (random 0.0) -> 0.0")
(lint-test "(random x)" "")
- (lint-test "(random 1)" "")
+ (lint-test "(random 1)" " random (line 0): perhaps (random 1) -> 0")
+ (lint-test "(random -1)" " random (line 0): perhaps (random -1) -> 0")
(lint-test "(random 0 y)" "")
(lint-test "(lognot 1)" " lognot: perhaps (lognot 1) -> -2")
@@ -88229,6 +88895,8 @@ etc
(lint-test "(set-car! (cddr (cdddr x)) y)" " set-car!: perhaps (set-car! (cddr (cdddr x)) y) -> (list-set! x 5 y)")
(lint-test "(begin (set-car! x (car y)) (set-cdr! x (cdr y)))" " begin: perhaps ...(set-car! x (car y)) (set-cdr! x (cdr y)) -> (copy y x)")
(lint-test "(car (list-tail x y))" " car: perhaps (car (list-tail x y)) -> (list-ref x y)")
+ (lint-test "(car (list x y))" " car: perhaps (car (list x y)) -> x")
+ (lint-test "(car (append x y))" " car: perhaps (car (append x y)) -> (car x)")
(lint-test "(caddr (vector->list x))" " caddr: perhaps (caddr (vector->list x)) -> (vector-ref x 2)")
(lint-test "(and x x y)" " and: perhaps (and x x y) -> (and x y)")
(lint-test "(or x x y)" " or: perhaps (or x x y) -> (or x y)")
@@ -89210,7 +89878,8 @@ etc
(lint-test "(let () (do ((i 0 (+ i 1))) ((= i 1))) x)"
" let: let could be begin: (let () (do ((i 0 (+ i 1))) ((= i 1))) x) -> (begin (do ((i 0 (+ i 1))) ((= i 1))) x)
let: this could be omitted: (do ((i 0 (+ i 1))) ((= i 1)))
- let: this do-loop could probably be replaced by the end test in a let: (do ((i 0 (+ i 1))) ((= i 1)))")
+ let: this do-loop could probably be replaced by the end test in a let: (do ((i 0 (+ i 1))) ((= i 1)))
+ let: do is unnecessary: (do ((i 0 (+ i 1))) ((= i 1)))")
(lint-test "(let () (write-byte i) (write-byte i) (write-byte i) (write-byte i) (write-byte i) (newline))"
" let: let could be begin: (let () (write-byte i) (write-byte i) (write-byte i) (write-byte i)... ->
(begin (write-byte i) (write-byte i) (write-byte i) (write-byte i)...
@@ -89387,6 +90056,12 @@ etc
(lint-test "(do ((i 0 (+ i 1))) ((+ i 10) i))" " do: end test is never false: (+ i 10)")
(lint-test "(do ((i 0 (+ i 1))) (#f i))" " do: result is unreachable: (#f i)")
(lint-test "(do ((i 0 (+ i 0))) ((= i 10) i))" " do: perhaps (+ i 0) -> i")
+ (lint-test "(do ((i 0 (+ i 1))) ((= i 0)) (display i))"
+ " do (line 0): do is a no-op because (= i 0) is true at the start: (do ((i 0 (+ i 1))) ((= i 0)) (display i))")
+ (lint-test "(do ((i 0 (+ i 1))) ((>= 0 i)) (display i))"
+ " do (line 0): do is a no-op because (>= 0 i) is true at the start: (do ((i 0 (+ i 1))) ((>= 0 i)) (display i))")
+ (lint-test "(do ((i 0 (+ i 1))) ((= i 1)) (display i))" " do: do is unnecessary: (do ((i 0 (+ i 1))) ((= i 1)) (display i))")
+ (lint-test "(do ((i 0 (+ i 1))) ((= 1 i)) (display i))" " do: do is unnecessary: (do ((i 0 (+ i 1))) ((= 1 i)) (display i))")
(lint-test "(do ((i 0 (+ i 1))) ((= i len)) (string-set! s i #\\a))"
" do: perhaps (do ((i 0 (+ i 1))) ((= i len)) (string-set! s i #\\a)) -> (fill! s #\\a 0 len)")
(lint-test "(do ((i 2 (+ i 1))) ((= i len)) (string-set! s i #\\a))"
@@ -89406,20 +90081,23 @@ etc
(lint-test "(do ((i 0 (+ i 1))) (= i 10) (display i))"
"do: this could be omitted: i
do: perhaps missing parens: (= i 10)
+ do: do is a no-op because = is true at the start: (do ((i 0 (+ i 1))) (= i 10) (display i))
do: strange do end-test: = in (= i 10) is a procedure")
(lint-test "(do ((i 0 (+ i 1)) (j 0 (+ j 1))) ((= i 10)) (display i))" " do: j set, but not used: 0 from do")
(lint-test "(let ((x #t)) (do ((i 0 (+ i 1))) (x) (display i)))"
" let: perhaps (let ((x #t)) (do ((i 0 (+ i 1))) (x) (display i))) -> (do ((x #t) (i 0 (+ i 1))) ...)")
(lint-test "(do ((i 0 (display i))) ((x y) z))" "")
- (lint-test "(do ((i 0 (+ i 1))) (abs i) (display i))" " do: strange do end-test: abs in (abs i) is a procedure")
+ (lint-test "(do ((i 0 (+ i 1))) (abs i) (display i))"
+ " do: do is a no-op because abs is true at the start: (do ((i 0 (+ i 1))) (abs i) (display i))
+ do: strange do end-test: abs in (abs i) is a procedure")
(lint-test "(begin (do ((i 0 (+ i 1))) ((= i 10) i) (display i)) x)"
" begin: perhaps (begin (do ((i 0 (+ i 1))) ((= i 10) i) (display i)) x) -> (do ((i 0 (+ i 1))) ((= i 10) i x) (display i))
begin: (do ((i 0 (+ i 1))) ((= i 10) i) (display i)): result i is not used")
- (lint-test "(do ((p (list 1) (cdr p))) ((null? p)) (display p))" "")
-
+ (lint-test "(do ((p (list 1) (cdr p))) ((null? p)) (display p))" " do: do is unnecessary: (do ((p (list 1) (cdr p))) ((null? p)) (display p))")
(lint-test "(do ((p (list 1) (cdr p))) ((null? p)) (set! y (log z 2)) (do ((z z (+ z 1))) ((= z 0)) (display z)) (display x))"
- " do: perhaps (do ((p (list 1) (cdr p))) ((null? p)) (set! y (log z 2)) (do ((z z (+ z... ->
- (for-each (lambda ([p]) (set! y (log z 2)) (do ((z z (+ z 1))) ((= z 0)) (display z)) (display x)) (list 1))")
+ " do: do is unnecessary: (do ((p (list 1) (cdr p))) ((null? p)) (set! y (log z 2)) (do ((z z (+ z 1))) ((= z 0)) (display z)) (display x))
+ do: perhaps (do ((p (list 1) (cdr p))) ((null? p)) (set! y (log z 2)) (do ((z z (+ z... ->
+ (for-each (lambda ([p]) (set! y (log z 2)) (do ((z z (+ z 1))) ((= z 0)) (display z)) (display x)) (list 1))")
(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)))
@@ -92841,7 +93519,9 @@ etc
(lint-test "(cond (A =>) (else B))" " cond: cond => target is messed up: (A =>)")
(lint-test "(case x ((A) =>) (else B))" " case: perhaps (case x ((A) =>) (else B)) -> (if (eq? x 'A) => B) case: case => target is messed up: ((A) =>)")
- (lint-test "(do ((i 0 (+ i 1))) (i =>))" " do: do-result => target is messed up: (i =>)")
+ (lint-test "(do ((i 0 (+ i 1))) (i =>))"
+ " do: do-result => target is messed up: (i =>)
+ do: do is a no-op because i is true at the start: (do ((i 0 (+ i 1))) (i =>))")
(lint-test "(cond (A => . B) (else B))" " cond: cond => target is messed up: (A => . B)")
(lint-test "(case x ((A) => . B) (else B))" " case: case => target is messed up: ((A) => . B)")
(lint-test "(do ((i 0 (+ i 1))) (i => . B))" " do: do is messed up: (do ((i 0 (+ i 1))) (i => . B))")
@@ -93297,28 +93977,6 @@ etc
(glint "(lambda* `(string>? inf.0 ((set! x (+ x 1)) (* x 2)) macroexpand `(+ ,a ,b ,@c) (()) pi (pi 0) (= i 2) let (1) begin (1 2 . 3) if cond (begin (f x) B) (()) (define-macro (_m1_ a) `(+ ,a 1)) (x y) (values \"hi\") ((+ x 1)) :hi ((set! x (+ x 1)) (* x 2)) inf.0 (()) (pi 0) ((x 1 . 2) . 3) (x y) (x . 1) ((x . 1) . 2) nan.0 (if x y) `(+ ,a b ,@c ',d) (make-dilambda (lambda () 1) (lambda (a) a)) with-let ))")
)
- (test (tree-leaves '(lambda () 1)) 3)
- (test (tree-leaves ()) 0)
- (test (tree-leaves 1) 1)
- (test (tree-leaves '(a . b)) 2)
- (test (tree-leaves '(1 (2 3) (4 (5 . 6) . 7))) 7)
- (test (tree-leaves '((() (1) (())))) 3)
- (test (tree-memq 'a '(a b c)) #t)
- (test (tree-memq 'a '(b c . a)) #t)
- (test (tree-memq 'a '(b c . e)) #f)
- (test (tree-memq 'a '(c b c)) #f)
- (test (tree-memq 'a '(b c ((b a)))) #t)
- (test (tree-memq 3 '(b c ((b 3)))) #t)
- (test (tree-count 'x '(a b c)) 0)
- (test (tree-count 'x '(a x c)) 1)
- (test (tree-count 'x '(a x x)) 2)
- (test (tree-count 'x '(a x x) 1) 1)
- (test (tree-count 'x '(x x x) 2) 2)
- (test (tree-set-memq '(a b) '(1 (2 3 a) 4)) #t)
- (test (tree-set-memq '(a b) '(1 (2 3 b) 4)) #t)
- (test (tree-set-memq '(a b) '(1 (2 3 c) 4)) #f)
- (test (tree-set-memq '(a) ()) #f)
-
(let ((out-vars (*lint* 'out-vars)))
(test (out-vars 'hi '(a b) '(+ a b)) '(() ()))
(test (out-vars 'hi '(a b) '(set! a b)) '(() ()))
@@ -93649,6 +94307,18 @@ etc
(test (call-with-exit (lambda* (quote (ho 1)) (quote ho))) 1)
(test (lambda 'ho (hash-table* 'a 1) . #<unspecified>) 'error) ; stray dot check
+(test (set! case 3) 'error)
+(test (begin (let ((case 2)) case) (set! case 4)) 'error)
+(test (let () (define (f case) (+ case 4)) (set! case (f 1))) 'error)
+(test (begin (let () (define case 8) case) (set! case 6)) 'error)
+
+(test (let ((max min) (min max)) (min 10 (max 100 5))) 10)
+(test (let ((max min) (min max)) (min 10 (max 12 15))) 12)
+(test ((let ((mx max)) (lambda* ((max min) (min mx)) (min 10 (max 100 5))))) 10)
+(test ((let ((mx max)) (lambda* ((max min) (min mx)) (min 10 (max 12 15))))) 12)
+(test (let ((max min) (min max)) (define (func) (min 10 (max 100 5))) (define (hi) (func)) (hi)) 10)
+(test (let ((max min) (min max)) (define (func) (min 10 (max 12 15))) (define (hi) (func)) (hi)) 12)
+
(test (catch #t (lambda () ((lambda quote (abs '__a__)))) (lambda (type info) (car info))) "~A: unbound variable")
(test (catch #t (lambda () ((lambda quote (+ '__a__ 1)))) (lambda (type info) (car info))) "~A: unbound variable")
(test (catch #t (lambda () ((lambda quote (+ 1 '__a__)))) (lambda (type info) (car info))) "~A: unbound variable")
diff --git a/snd-file.c b/snd-file.c
index bdd0a4e..d1d1ea5 100644
--- a/snd-file.c
+++ b/snd-file.c
@@ -1216,6 +1216,18 @@ snd_info *finish_opening_sound(snd_info *sp, bool selected)
else superimpose_sound(sp);
}
}
+#if USE_GTK
+#if GTK_CHECK_VERSION(3, 0, 0)
+ if ((listener_exists()) &&
+ (sound_style(ss) != SOUNDS_IN_SEPARATE_WINDOWS))
+ {
+ int hgt;
+ hgt = widget_height(sound_pane(ss));
+ if (hgt > 50)
+ gtk_paned_set_position(GTK_PANED(sound_pane(ss)), (gint)(hgt * .8));
+ }
+#endif
+#endif
return(sp);
}
diff --git a/snd-g0.h b/snd-g0.h
index 8494059..d3c16e5 100644
--- a/snd-g0.h
+++ b/snd-g0.h
@@ -305,7 +305,11 @@ typedef enum {WITHOUT_COMMENT_FIELD, WITH_COMMENT_FIELD} dialog_comment_t;
#define PEAKS_FONT(a) (a)->peaks_fnt
#define BOLD_PEAKS_FONT(a) (a)->bold_peaks_fnt
#define KEY_TO_NAME(key) gdk_keyval_name(key)
-#define DEFAULT_GRAPH_CURSOR GDK_CROSSHAIR
+#if (GTK_CHECK_VERSION(3, 93, 0))
+ #define DEFAULT_GRAPH_CURSOR 0
+#else
+ #define DEFAULT_GRAPH_CURSOR GDK_CROSSHAIR
+#endif
#define snd_ShiftMask GDK_SHIFT_MASK
#define snd_ControlMask GDK_CONTROL_MASK
diff --git a/snd-gmenu.c b/snd-gmenu.c
index b3dc988..18cc8c7 100644
--- a/snd-gmenu.c
+++ b/snd-gmenu.c
@@ -1871,8 +1871,10 @@ void show_toolbar(void)
toolbar = gtk_toolbar_new();
#if GTK_CHECK_VERSION(3, 0, 0)
add_toolbar_style(toolbar);
+#if (!GTK_CHECK_VERSION(3, 93, 0))
gtk_toolbar_set_icon_size(GTK_TOOLBAR(toolbar), GTK_ICON_SIZE_SMALL_TOOLBAR);
#endif
+#endif
sg_box_pack_start(GTK_BOX(main_pane(ss)), toolbar, false, false, 0); /* main_pane = top level vbox */
gtk_box_reorder_child(GTK_BOX(main_pane(ss)), toolbar, 1); /* put toolbar just under the top level menubar */
diff --git a/snd-gsnd.c b/snd-gsnd.c
index 98b8495..7fb0d50 100644
--- a/snd-gsnd.c
+++ b/snd-gsnd.c
@@ -2050,12 +2050,6 @@ snd_info *add_sound_window(char *filename, read_only_t read_only, file_info *hdr
reset_controls(sp);
}
if (free_filename) free(filename);
-
-#if GTK_CHECK_VERSION(3, 0, 0)
- if (listener_exists())
- gtk_paned_set_position(GTK_PANED(sound_pane(ss)), 50);
- /* actually we haven't reached full size here at start-up */
-#endif
return(sp);
}
diff --git a/snd-test.scm b/snd-test.scm
index e56d40c..c5357f5 100644
--- a/snd-test.scm
+++ b/snd-test.scm
@@ -22832,7 +22832,7 @@ EDITS: 2
(lambda args #f)))))
(marks->string (lambda (sndf)
- (let ((str (format #f "(require snd-marks.scm)~%(let ((m #f))~%"))
+ (let ((str (format #f "(let ((m #f))~%"))
(chan 0))
(for-each
(lambda (chan-marks)
@@ -23848,10 +23848,10 @@ EDITS: 2
(let ((vf-files (view-files-files dialog)))
(if (not (and (or (member "1a.snd" vf-files)
(member (string-append home-dir "/cl/1a.snd") vf-files)
- (member (string-append home-dir "/snd-17/1a.snd") vf-files))
+ (member (string-append home-dir "/snd-18/1a.snd") vf-files))
(or (member "pistol.snd" vf-files)
(member (string-append home-dir "/cl/pistol.snd") vf-files)
- (member (string-append home-dir "/snd-17/pistol.snd") vf-files))
+ (member (string-append home-dir "/snd-18/pistol.snd") vf-files))
(= (length vf-files) 4)))
(snd-display "vf files set: ~A (~A, ~A)" vf-files (string-append home-dir "/cl/1a.snd") (length vf-files))))
(set! (hook-functions view-files-select-hook) ())
@@ -23864,11 +23864,11 @@ EDITS: 2
(set! (view-files-selected-files dialog) (list "1a.snd"))
(if (not (or (equal? selected-file "1a.snd")
(equal? selected-file (string-append home-dir "/cl/1a.snd"))
- (equal? selected-file (string-append home-dir "/snd-17/1a.snd"))))
+ (equal? selected-file (string-append home-dir "/snd-18/1a.snd"))))
(snd-display "vf set selected select hook arg: ~A" selected-file))
(if (not (or (equal? (view-files-selected-files dialog) '("1a.snd"))
(equal? (view-files-selected-files dialog) (list (string-append home-dir "/cl/1a.snd")))
- (equal? (view-files-selected-files dialog) (list (string-append home-dir "/snd-17/1a.snd")))))
+ (equal? (view-files-selected-files dialog) (list (string-append home-dir "/snd-18/1a.snd")))))
(snd-display "vf selected files set: ~A" (view-files-selected-files dialog))))
(hide-widget dialog)))
(dismiss-all-dialogs)))
@@ -24611,7 +24611,7 @@ EDITS: 2
(set! (hook-functions after-save-as-hook) ())
(if save-as-dialog (snd-display "after-save-as-hook dialog: ~A" save-as-dialog)))
(if (not (or (string=? (string-append home-dir "/cl/test.snd") save-as-name)
- (string=? (string-append home-dir "/snd-17/test.snd") save-as-name)))
+ (string=? (string-append home-dir "/snd-18/test.snd") save-as-name)))
(snd-display "after-save-as-hook name: ~A (~A)" save-as-name (string-append home-dir "/cl/test.snd"))))
(hook-push open-raw-sound-hook
(lambda (hook)
@@ -32251,7 +32251,7 @@ EDITS: 1
(snd-display "edit-list->function 10a: ~A" func))
(if (not (member (procedure-source func)
'((lambda (snd chn) (insert-sound "/home/bil/cl/pistol.snd" 1000 0 snd chn))
- (lambda (snd chn) (insert-sound "/home/bil/snd-17/pistol.snd" 1000 0 snd chn)))))
+ (lambda (snd chn) (insert-sound "/home/bil/snd-18/pistol.snd" 1000 0 snd chn)))))
(snd-display "edit-list->function 10a: ~A" (procedure-source func)))
(revert-sound ind)
(func ind 0)
@@ -32266,7 +32266,7 @@ EDITS: 1
(snd-display "edit-list->function 11: ~A" func))
(if (not (member (procedure-source func)
'((lambda (snd chn) (insert-samples 1000 41623 "/home/bil/cl/pistol.snd" snd chn))
- (lambda (snd chn) (insert-samples 1000 41623 "/home/bil/snd-17/pistol.snd" snd chn)))))
+ (lambda (snd chn) (insert-samples 1000 41623 "/home/bil/snd-18/pistol.snd" snd chn)))))
(snd-display "edit-list->function 11: ~A" (procedure-source func)))
(revert-sound ind)
(func ind 0)
@@ -43157,63 +43157,63 @@ callgrind_annotate --auto=yes callgrind.out.<pid> > hi
14-Dec-11:
153,472,402,051
15,964,352,672 ???:sin [/lib64/libm-2.12.so]
-15,349,566,001 io.c:mus_read_any_1 [/home/bil/snd-17/snd]
- 9,724,315,504 s7.c:eval [/home/bil/snd-17/snd]
- 9,340,050,109 snd-edits.c:channel_local_maxamp [/home/bil/snd-17/snd]
- 8,904,652,480 snd-sig.c:direct_filter [/home/bil/snd-17/snd]
- 8,727,766,020 run.c:eval_ptree [/home/bil/snd-17/snd]
- 7,219,826,287 io.c:mus_write_1 [/home/bil/snd-17/snd]
- 5,925,019,812 s7.c:eval'2 [/home/bil/snd-17/snd]
- 2,960,895,840 clm.c:mus_fir_filter [/home/bil/snd-17/snd]
- 2,765,667,308 clm.c:mus_out_any_to_file [/home/bil/snd-17/snd]
+15,349,566,001 io.c:mus_read_any_1 [/home/bil/snd/snd]
+ 9,724,315,504 s7.c:eval [/home/bil/snd/snd]
+ 9,340,050,109 snd-edits.c:channel_local_maxamp [/home/bil/snd/snd]
+ 8,904,652,480 snd-sig.c:direct_filter [/home/bil/snd/snd]
+ 8,727,766,020 run.c:eval_ptree [/home/bil/snd/snd]
+ 7,219,826,287 io.c:mus_write_1 [/home/bil/snd/snd]
+ 5,925,019,812 s7.c:eval'2 [/home/bil/snd/snd]
+ 2,960,895,840 clm.c:mus_fir_filter [/home/bil/snd/snd]
+ 2,765,667,308 clm.c:mus_out_any_to_file [/home/bil/snd/snd]
2,732,722,538 ???:cos [/lib64/libm-2.12.so]
- 2,654,002,973 clm.c:mus_src [/home/bil/snd-17/snd]
- 2,216,029,830 s7.c:find_symbol_or_bust [/home/bil/snd-17/snd]
- 2,051,926,172 s7.c:gc [/home/bil/snd-17/snd]
+ 2,654,002,973 clm.c:mus_src [/home/bil/snd/snd]
+ 2,216,029,830 s7.c:find_symbol_or_bust [/home/bil/snd/snd]
+ 2,051,926,172 s7.c:gc [/home/bil/snd/snd]
6-Jul-12:
314,557,435,854
-96,266,822,080 s7.c:eval [/home/bil/snd-17/snd]
-20,140,459,790 s7.c:find_symbol_or_bust [/home/bil/snd-17/snd]
+96,266,822,080 s7.c:eval [/home/bil/snd/snd]
+20,140,459,790 s7.c:find_symbol_or_bust [/home/bil/snd/snd]
15,094,536,285 ???:sin [/lib64/libm-2.12.so]
-14,561,228,879 io.c:mus_read_any_1 [/home/bil/snd-17/snd]
-13,267,844,138 s7.c:gc [/home/bil/snd-17/snd]
-10,735,806,413 s7.c:s7_make_real [/home/bil/snd-17/snd]
- 9,597,104,099 snd-edits.c:channel_local_maxamp [/home/bil/snd-17/snd]
- 8,903,732,430 snd-sig.c:direct_filter [/home/bil/snd-17/snd]
- 8,756,184,253 s7.c:eval'2 [/home/bil/snd-17/snd]
- 6,939,439,659 io.c:mus_write_1 [/home/bil/snd-17/snd]
- 4,221,129,319 s7.c:g_add [/home/bil/snd-17/snd]
- 3,790,496,511 s7.c:g_multiply_2 [/home/bil/snd-17/snd]
- 2,960,895,524 clm.c:mus_fir_filter [/home/bil/snd-17/snd]
- 2,866,346,964 s7.c:g_equal_2 [/home/bil/snd-17/snd]
- 2,647,149,349 clm.c:mus_src [/home/bil/snd-17/snd]
- 2,373,255,704 s7.c:g_add_2 [/home/bil/snd-17/snd]
- 2,365,017,452 s7.c:g_add_1s [/home/bil/snd-17/snd]
+14,561,228,879 io.c:mus_read_any_1 [/home/bil/snd/snd]
+13,267,844,138 s7.c:gc [/home/bil/snd/snd]
+10,735,806,413 s7.c:s7_make_real [/home/bil/snd/snd]
+ 9,597,104,099 snd-edits.c:channel_local_maxamp [/home/bil/snd/snd]
+ 8,903,732,430 snd-sig.c:direct_filter [/home/bil/snd/snd]
+ 8,756,184,253 s7.c:eval'2 [/home/bil/snd/snd]
+ 6,939,439,659 io.c:mus_write_1 [/home/bil/snd/snd]
+ 4,221,129,319 s7.c:g_add [/home/bil/snd/snd]
+ 3,790,496,511 s7.c:g_multiply_2 [/home/bil/snd/snd]
+ 2,960,895,524 clm.c:mus_fir_filter [/home/bil/snd/snd]
+ 2,866,346,964 s7.c:g_equal_2 [/home/bil/snd/snd]
+ 2,647,149,349 clm.c:mus_src [/home/bil/snd/snd]
+ 2,373,255,704 s7.c:g_add_2 [/home/bil/snd/snd]
+ 2,365,017,452 s7.c:g_add_1s [/home/bil/snd/snd]
2,014,711,657 ???:cos [/lib64/libm-2.12.so]
23-Apr-13:
52,886,592,302
-6,697,050,795 s7.c:eval [/home/bil/snd-17/snd]
+6,697,050,795 s7.c:eval [/home/bil/snd/snd]
6,228,616,918 ???:sin [/lib64/libm-2.12.so]
-2,546,631,823 clm.c:mus_src [/home/bil/snd-17/snd]
+2,546,631,823 clm.c:mus_src [/home/bil/snd/snd]
2,496,647,180 ???:cos [/lib64/libm-2.12.so]
-2,176,750,987 s7.c:find_symbol_or_bust [/home/bil/snd-17/snd]
-1,263,726,083 s7.c:eval'2 [/home/bil/snd-17/snd]
-1,248,608,065 s7.c:gc [/home/bil/snd-17/snd]
-1,021,282,278 io.c:mus_read_any_1 [/home/bil/snd-17/snd]
-1,003,986,022 clm.c:mus_phase_vocoder_with_editors [/home/bil/snd-17/snd]
- 933,290,098 clm.c:mus_formant_bank [/home/bil/snd-17/snd]
- 911,248,552 clm.c:fir_8 [/home/bil/snd-17/snd]
- 885,305,356 ???:t2_32 [/home/bil/snd-17/snd]
- 796,412,317 snd-edits.c:channel_local_maxamp [/home/bil/snd-17/snd]
- 785,981,295 ???:t2_64 [/home/bil/snd-17/snd]
- 693,360,038 clm.c:run_hilbert [/home/bil/snd-17/snd]
- 507,150,000 clm.c:mus_formant_bank_with_inputs [/home/bil/snd-17/snd]
- 459,853,855 clm.c:mus_src_20 [/home/bil/snd-17/snd]
- 449,476,048 ???:n1_64 [/home/bil/snd-17/snd]
- 444,970,752 io.c:mus_write_1 [/home/bil/snd-17/snd]
- 428,928,818 float-vector.c:g_float-vector_add [/home/bil/snd-17/snd]
+2,176,750,987 s7.c:find_symbol_or_bust [/home/bil/snd/snd]
+1,263,726,083 s7.c:eval'2 [/home/bil/snd/snd]
+1,248,608,065 s7.c:gc [/home/bil/snd/snd]
+1,021,282,278 io.c:mus_read_any_1 [/home/bil/snd/snd]
+1,003,986,022 clm.c:mus_phase_vocoder_with_editors [/home/bil/snd/snd]
+ 933,290,098 clm.c:mus_formant_bank [/home/bil/snd/snd]
+ 911,248,552 clm.c:fir_8 [/home/bil/snd/snd]
+ 885,305,356 ???:t2_32 [/home/bil/snd/snd]
+ 796,412,317 snd-edits.c:channel_local_maxamp [/home/bil/snd/snd]
+ 785,981,295 ???:t2_64 [/home/bil/snd/snd]
+ 693,360,038 clm.c:run_hilbert [/home/bil/snd/snd]
+ 507,150,000 clm.c:mus_formant_bank_with_inputs [/home/bil/snd/snd]
+ 459,853,855 clm.c:mus_src_20 [/home/bil/snd/snd]
+ 449,476,048 ???:n1_64 [/home/bil/snd/snd]
+ 444,970,752 io.c:mus_write_1 [/home/bil/snd/snd]
+ 428,928,818 float-vector.c:g_float-vector_add [/home/bil/snd/snd]
27-Apr-14:
35,390,341,125
diff --git a/snd-xen.c b/snd-xen.c
index 8ee6fcd..69e265e 100644
--- a/snd-xen.c
+++ b/snd-xen.c
@@ -3127,10 +3127,14 @@ be written, or rely on the default (-1.0 or 1.0 depending on the sign of 'val').
#if USE_GTK
Xen_provide_feature("snd-gtk");
-#if GTK_CHECK_VERSION(3, 0, 0)
- Xen_provide_feature("gtk3");
+#if GTK_CHECK_VERSION(3, 91, 0)
+ Xen_provide_feature("gtk4");
#else
- Xen_provide_feature("gtk2");
+ #if GTK_CHECK_VERSION(3, 0, 0)
+ Xen_provide_feature("gtk3");
+ #else
+ Xen_provide_feature("gtk2");
+ #endif
#endif
#endif
diff --git a/snd.h b/snd.h
index ba3daa1..b845f64 100644
--- a/snd.h
+++ b/snd.h
@@ -55,11 +55,11 @@
#include "snd-strings.h"
-#define SND_DATE "9-Jan-18"
+#define SND_DATE "15-Feb-18"
#ifndef SND_VERSION
-#define SND_VERSION "18.0"
+#define SND_VERSION "18.1"
#endif
#define SND_MAJOR_VERSION "18"
-#define SND_MINOR_VERSION "0"
+#define SND_MINOR_VERSION "1"
#endif
diff --git a/snd.html b/snd.html
index 7b35bcd..e68d8fb 100644
--- a/snd.html
+++ b/snd.html
@@ -125,7 +125,7 @@ using either <a href="s7.html">s7</a> (included in the Snd sources),
<a href="http://www.ruby-lang.org">Ruby</a>, or
<a href="http://www.sourceforge.net/projects/fth">Forth</a>.
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>.
+<a href="ftp://ccrma-ftp.stanford.edu/pub/Lisp/snd-18.tar.gz">snd-18.tar.gz</a>.
Snd has a <a href="http://ccrma.stanford.edu/software/snd/">home page</a>
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>.
diff --git a/sndlib.html b/sndlib.html
index f61401d..51ceb2e 100644
--- a/sndlib.html
+++ b/sndlib.html
@@ -316,9 +316,9 @@ requested by mus_audio_open_output with channels interleaved.</p>
music V implementation, and clm2xen.c ties these into the languages supported by the
xen package (currently s7, Ruby, and Forth). The
primary clm documentation (which describes both the Scheme and Common Lisp implementations)
-is clm.html found in clm-5.tar.gz or sndclm.html in snd-17.tar.gz alongside sndlib at ccrma-ftp.
+is clm.html found in clm-5.tar.gz or sndclm.html in snd.tar.gz alongside sndlib at ccrma-ftp.
The simplest way to try these out is to load them into Snd; see extsnd.html,
-<a href="sndscm.html#exampdoc">examp.scm</a>, and <a href="sndscm.html#sndtestdoc">snd-test.scm</a> in snd-17.tar.gz for more details.
+<a href="sndscm.html#exampdoc">examp.scm</a>, and <a href="sndscm.html#sndtestdoc">snd-test.scm</a> in snd.tar.gz for more details.
The following briefly describes the C calls (see clm.h).
</p>
diff --git a/sndscm.html b/sndscm.html
index 45e23c5..5720d45 100644
--- a/sndscm.html
+++ b/sndscm.html
@@ -778,9 +778,8 @@ stops autosaving, and (auto-save) restarts it.
<div class="header" id="bessdoc">bess</div>
<p>bess.scm creates a dialog (named "FM Forever!"),
-opens the DAC, puts up a bunch of scale widgets, and starts two CLM oscils doing
-frequency modulation in semi-real-time (how "real-time" it is depends on your
-audio setup).
+puts up a bunch of scale widgets, and starts two CLM oscils doing
+frequency modulation.
Michael Scholz has contributed a Ruby translation of this with many improvements:
bess.rb.
</p>
@@ -788,7 +787,7 @@ bess.rb.
<img class="indented" src="pix/fm.png" alt="fm dialog">
<pre class="indented">
-;; bess opens the DAC and continuously sends the following:
+;; bess plays the following:
(* amp
(<a class=quiet href="sndclm.html#oscil">oscil</a> carosc
(+ (<a class=quiet href="sndclm.html#hztoradians">hz-&gt;radians</a> frequency)
@@ -8807,10 +8806,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.323 0.5049 | 256 16.306 0.5034 | 8 3.198 0.5590 | 256 23.955 0.5728
-1024 33.172 0.5052 | 512 23.550 0.5064 | 9 3.454 0.5641 | 7 3.062 0.5750
-2048 49.284 0.5112 | 1024 33.836 0.5080 | 7 3.047 0.5726 | 6 2.805 0.5757
-4 2.039 0.5139 | 2048 48.452 0.5090 | 6 2.837 0.5820 | 512 38.603 0.5856
+512 23.268 0.5045 | 256 16.279 0.5031 | 8 3.198 0.5590 | 256 23.955 0.5728
+1024 33.087 0.5048 | 512 23.526 0.5062 | 9 3.454 0.5641 | 7 3.062 0.5750
+2048 49.112 0.5107 | 1024 33.783 0.5078 | 7 3.047 0.5726 | 6 2.805 0.5757
+4 2.039 0.5139 | 2048 48.364 0.5087 | 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/stuff.scm b/stuff.scm
index c629bae..db8560b 100644
--- a/stuff.scm
+++ b/stuff.scm
@@ -36,7 +36,11 @@
(let ((info (ow 'error-data)))
(if (and (pair? info)
(string? (car info)))
- (format p ": ~A" (apply format #f info))
+ (format p ": ~A" (catch #t
+ (lambda ()
+ (apply format #f info))
+ (lambda args
+ "<error in format>")))
(if (not (null? info))
(format p ": ~A" info))))
@@ -93,6 +97,22 @@
(format *stderr* "~%~A~%" (stacktrace)))))
|#
+;;; ----------------
+(define-macro (typed-let vals . body) ; vals: ((var init [type])...)...) as in (typed-let ((i 0 integer?))...)
+ `(let ,(map (lambda (val)
+ (list (car val) (cadr val)))
+ vals)
+ ,@(map (lambda (val)
+ (if (pair? (cddr val))
+ `(set! (symbol-setter ',(car val))
+ (lambda (s v)
+ (if (not (,(caddr val) v))
+ (error 'wrong-type-arg "(set! ~S ~S) but ~S is not ~A" s v v ',(caddr val)))
+ v))
+ (values)))
+ vals)
+ ,@body))
+
;;; ----------------
(define (first obj) (if (sequence? obj) (obj 0) (error 'wrong-type-arg "first argument, ~S, is not a sequence" obj)))
@@ -120,12 +140,7 @@
((null? p) lst)
(set! (car p) i))))))
-(define (cdr* lst n)
- (do ((i n (- i 1))
- (result lst (cdr result)))
- ((or (null? result)
- (zero? i))
- result)))
+;(define cdr* list-tail)
(define make-circular-list
(let ((+documentation+ "(make-circular-list n init) returns a circular list with n entries initialized to init:\n\
@@ -1669,7 +1684,7 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
#f))
((not end)
- (cdr* obj start))
+ (list-tail obj start))
(else
(do ((lst (make-list new-len #f))
@@ -2058,6 +2073,7 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
:cpu-time (*s7* 'cpu-time)
:heap-size (*s7* 'heap-size)
:free-heap-size (*s7* 'free-heap-size)
+ :max-heap-size (*s7* 'max-heap-size)
:gc-freed (*s7* 'gc-freed)
:gc-protected-objects (*s7* 'gc-protected-objects)
:gc-stats (*s7* 'gc-stats)
@@ -2162,6 +2178,7 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
(sublet lt)))))))
;;; (sandbox '(let ((x 1)) (+ x 2))) -> 3
+;;; (sandbox '(let ((x 1)) (+ x 2) (exit))) -> #f
(define sandbox
(let ((+documentation+ "(sandbox code) evaluates code in an environment where nothing outside that code can be affected by its evaluation.")
@@ -2206,7 +2223,7 @@ Unlike full-find-if, safe-find-if can handle any circularity in the sequences.")
call-with-exit apply for-each map dynamic-wind values type-of
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
+ dilambda make-hook hook-functions stacktrace tree-leaves tree-memq tree-set-memq tree-cyclic? tree-count object->let
pi most-positive-fixnum most-negative-fixnum nan.0 inf.0 -nan.0 -inf.0
*stderr* *stdout* *stdin*
apply-values list-values
diff --git a/tools/auto-tester.scm b/tools/auto-tester.scm
index e403aa5..a4b9d3a 100644
--- a/tools/auto-tester.scm
+++ b/tools/auto-tester.scm
@@ -3,20 +3,38 @@
;(set! (hook-functions *load-hook*) (list (lambda (hook) (format () "loading ~S...~%" (hook 'name)))))
(load "stuff.scm")
+;(load "write.scm")
+;(load "mockery.scm")
+
+;(set! (*s7* 'safety) 2)
(set! (*s7* 'max-stack-size) 32768)
-(set! (*s7* 'gc-stats) 6)
+(set! (*s7* 'max-heap-size) (ash 1 23)) ; 8M -- 560000000 is about 8G
+;(set! (*s7* 'gc-stats) 6)
+(set! (*s7* 'print-length) 1000)
(define ostr "")
+(define nostr "")
(set! (*s7* 'max-string-length) 100000)
-(set! (*s7* 'max-list-length) 100000)
-(set! (*s7* 'max-vector-length) 100000)
+(set! (*s7* 'max-list-length) 10000)
+(set! (*s7* 'max-vector-length) 10000)
(set! (*s7* 'max-vector-dimensions) 10)
+(set! (*s7* 'autoloading?) #f)
(set! (current-output-port) #f)
(define __var__ #f)
(define __var1__ #f)
(define error-type #f)
(define error-info #f)
(define false #f)
+(define _undef_ (car (with-input-from-string "(#_asdf 1 2)" read)))
+(define kar car)
+;(set! (setter kar) (lambda (x) car))
+(set! (setter kar) (lambda (x) (error 'oops "kar not settable: ~A" ostr)))
+(define-constant _1234_ 1234)
+(define _dilambda_ (dilambda (lambda (x) (+ x 1)) (lambda (x y) (+ x y))))
+(define __var2__ 3)
+(set! (symbol-setter '__var2__) (lambda (s v) (if (integer? v) v 3)))
+
+(define (finite? n) (not (or (nan? n) (infinite? n))))
(define (s7-print-length) (*s7* 'print-length))
(define (s7-max-string-length) (*s7* 'max-string-length))
@@ -25,6 +43,8 @@
(define (s7-max-vector-dimensions) (*s7* 'max-vector-dimensions))
(define (s7-default-hash-table-length) (*s7* 'default-hash-table-length))
(define (s7-initial-string-port-length) (*s7* 'initial-string-port-length))
+(define (s7-safety) (*s7* 'safety))
+(define (s7-set-safety val) (set! (*s7* 'safety) val))
#|
(define (s7-undefined-identifier-warnings) (*s7* 'undefined-identifier-warnings))
(define (s7-autoloading?) (*s7* 'autoloading?))
@@ -148,22 +168,20 @@
(define-macro (_mac_ x) `(+ ,x 1))
(define-macro* (_mac*_ (x 1)) `(+ ,x 1))
-(define-bacro (_mac_ x) `(+ ,x 1))
-(define-bacro* (_mac*_ (x 1)) `(+ ,x 1))
+(define-bacro (_bac_ x) `(+ ,x 1))
+(define-bacro* (_bac*_ (x 1)) `(+ ,x 1))
(define (_fnc_ x) (+ x 1))
(define* (_fnc*_ (x 1)) (+ x 1))
(define (_fnc1_ x) (apply + (list x 1)))
+(define (_fnc2_ x) (- x 1))
+(define (_fnc3_ x) (* x 2.0))
+(define (_fnc4_ x) (/ x))
+(define (_fnc5_ x) (not (pair? x)))
(define (checked-eval code)
(and (null? (cyclic-sequences code))
(eval code)))
-(define (checked-cutlet e . args)
- (or (eq? e (curlet))
- (eq? e (rootlet))
- (null? e)
- (apply cutlet e args)))
-
(load "s7test-block.so" (sublet (curlet) (cons 'init_func 'block_init)))
(define-expansion (_dw_ . args)
@@ -183,13 +201,74 @@
(close-input-port _port_)
(set-current-input-port _old_port_)))))
+(define-expansion (_dw_out_ . args)
+ `(let ((_port_ #f)
+ (_old_port_ #f))
+ (dynamic-wind
+ (lambda ()
+ (set! _old_port_ (current-output-port))
+ (set! _port_ (open-output-string))
+ (set-current-output-port _port_))
+ (lambda ()
+ ,@args
+ (flush-output-port _port_)
+ (get-output-string _port_))
+ (lambda ()
+ (close-output-port _port_)
+ (set-current-output-port _old_port_)))))
+
(define-expansion (_cw_ . args)
`(call-with-exit (lambda (_x_) (_x_ ,@args))))
-;(define 1- #f)
-;(define 1+ #f)
-(set! (hook-functions *unbound-variable-hook*) ())
+(define-expansion (_ct1_ . args)
+ `(catch #t (lambda () (call-with-exit (lambda (goto) (values ,@args)))) (lambda args 'error)))
+
+(define-expansion (_ct2_ . args)
+ `(catch #t (lambda () (call-with-exit (lambda (goto) (goto ,@args)))) (lambda args 'error)))
+
+(define-expansion (_mem1_ . args)
+ `(member 1 (list 3 2) (lambda (a b) ,@args)))
+
+(define-expansion (_mem2_ . args)
+ `(assoc 1 (list (list 3 2) (list 2)) (lambda (a b) ,@args)))
+
+(define-expansion (_ft1_ . args)
+ `(let ((_f_ (lambda () ,@args))) (_f_) (_f_)))
+
+(define-expansion (_ft2_ . args)
+ `(let () (define (_f_) ,@args) (_f_) (_f_)))
+
+(define-expansion (_lt2_ . args)
+ `(let ((mx max)) ((lambda* ((max min) (min mx)) ,@args))))
+
+(define-expansion (_rf1_ . args)
+ `(let ((y 0)) (define (_rf11_ i x) (if (> i 0) (_rf11_ (- i 1) x) (x))) (_rf11_ 1 (lambda () ,@args))))
+
+(define-expansion (_rf2_ . args)
+ `(let () (define (_rf22_ i x) (if (> i 0) (_rf22_ (- i 1) x) (x i))) (_rf22_ 1 (lambda (y) (begin ,@args)))))
+
+(define-expansion (_do1_ . args)
+ `(with-output-to-string
+ (lambda ()
+ (do ((i 0 (+ i 1)))
+ ((= i 1))
+ ,@(map (lambda (x)
+ `(display ,x))
+ args)))))
+
+(define-expansion (_do2_ . args)
+ `(with-output-to-string
+ (lambda ()
+ ,@(map (lambda (x)
+ `(display ,x))
+ args))))
+(define-expansion (_do3_ . args)
+ `(let ((exiter (vector #f))) (do ,(car args) ((vector-ref exiter 0) 1) ,@(cdr args) (vector-set! exiter 0 #t))))
+
+
+(set! (hook-functions *unbound-variable-hook*) ())
+(define x 0)
(define max-stack (*s7* 'stack-top))
(let ((functions (vector 'not '= '+ 'cdr 'real? 'rational? 'number? '> '- 'integer? 'apply
@@ -205,7 +284,7 @@
'char-downcase 'acosh 'vector-length 'asinh 'format 'make-list
'sort! 'atanh 'modulo 'make-polar 'gcd 'angle 'remainder 'quotient 'lcm
'char-whitespace? 'assoc 'procedure? 'char<?
- 'inexact->exact 'vector->list 'boolean?
+ 'inexact->exact 'vector->list 'boolean? 'undefined? 'unspecified?
'caar 'ash 'list-tail 'symbol->string 'string->symbol 'exact->inexact
'object->string 'char>? 'symbol->value 'cadar 'integer-decode-float 'string-copy 'cdddr 'logand 'cadddr
'with-input-from-string 'substring 'string->list 'char-upper-case?
@@ -214,7 +293,8 @@
'lognot 'cdar 'char-ci>=? 'string>=?
'dilambda 'string-ci<? 'char<=? 'logior 'char-ci<=? 'assv
'string>? 'char-ci>? 'char-lower-case? 'string-ci>=? 'string-ci>? 'string<=? 'caadr 'char-ci<? 'reverse!
- 'string-ci<=? 'cadadr 'cdadr 'provided? 'caaaar 'caaddr 'caddar 'cdaaar 'cdaadr 'cdaddr 'cddar 'fill!
+ 'string-ci<=? 'cadadr 'cdadr 'provided? 'caaaar 'caaddr 'caddar 'cdaaar 'cdaadr 'cdaddr 'cddar
+ 'fill!
'hash-table-ref 'list->vector 'caaadr 'caaar 'caadar 'cadaar 'cdadar 'cdddar 'string-fill! 'cdaar 'cddaar 'cddadr
'keyword? 'memv 'char-ready?
'symbol->keyword 'logxor
@@ -223,7 +303,8 @@
'with-input-from-file 'type-of
'vector-fill!
'symbol 'peek-char 'make-hash-table
- 'close-input-port 'current-error-port 'macro? ;'load
+ 'close-input-port ;'current-error-port ;-- spurious output
+ 'macro? ;'load
'quasiquote
'immutable? 'char-position 'string-position
'infinite?
@@ -236,19 +317,35 @@
;;'current-output-port
'with-output-to-string
;;'current-input-port -- too many (read...)
- 'symbol-setter 'unlet
+ 'symbol-setter ;'unlet -- spurious diffs
's7-version
'dilambda?
- 'hook-functions 'make-hook
+ 'hook-functions
+
+ ;; -------- naming funcs
+ 'make-hook
+ 'let 'let* 'letrec
+ 'lambda 'lambda*
+ 'multiple-value-bind 'call-with-values
+ 'inlet
+ 'object->let
+ ;; --------
+
+ ;'pair-line-number
'open-input-string 'open-output-string
'open-input-file
'define
'newline
- 'funclet
+ ;'funclet
;'random
- 'random-state 'port-line-number 'gensym
- 'quote 'if 'begin 'let 'let* 'letrec 'cond 'case 'or 'and 'do 'with-let 'with-baffle 'when 'unless
- 'lambda 'lambda* 'let-temporarily
+ 'random-state ;;'port-line-number -- too many spurious diffs
+ 'gensym
+ ;'quote
+ 'if 'begin
+
+ 'cond 'case 'or 'and 'do 'with-let 'with-baffle 'when 'unless
+
+ 'let-temporarily
'byte-vector-set! 'make-byte-vector
'write-char 'call/cc 'write-byte 'write-string
'file-mtime
@@ -259,8 +356,8 @@
'define* 'define-macro 'define-macro* 'define-bacro 'define-bacro*
'set! 'set-car! ;'set-cdr!
'call-with-output-file 'with-output-to-file
- 'cutlet
- ;'set-current-error-port -- too many bogus eq? complaints
+ ;'cutlet
+ ;'set-current-error-port ;-- too many bogus eq? complaints
;'stacktrace ; -- with eval-string, causes stack to grow continuously? (length (stacktrace))
'signature ; -- circular lists cause infinite loops with (e.g.) for-each??
;'define-constant
@@ -269,7 +366,7 @@
;'open-output-file
;'delete-file 'set-current-output-port
;'autoload ;-- possibly causes stack growth
- ;'varlet ;-- error exits
+ ;'varlet ;-- error exits, chaos in rootlet
;'tree-count 'tree-leaves 'tree-memq 'tree-set-memq ;-- no cycle checks and we have signature creating circular lists
;'eval ; -- can't use if signature (circular program)
;'immutable!
@@ -277,17 +374,16 @@
'eval-string
;;'owlet ;too many uninteresting diffs
;'gc
- 'openlet
;'reader-cond -- cond test clause can involve unbound vars: (null? i) for example
- 'require 'help
+ 'require ;'help -- snd goes crazy
'else '_mac_ '_mac*_ '_bac_ '_bac*_
- '_fnc_ '_fnc*_ '_fnc1_
- 'block 'make-block 'block? 'empty
- 'reactive-let
-
+ '_fnc_ '_fnc*_ '_fnc1_ '_fnc2_ '_fnc3_ '_fnc4_ '_fnc5_
+ 'block 'make-block 'block?
+
'constant?
- 'openlet 'multiple-value-bind 'call-with-values
- 'cond-expand
+ 'openlet
+
+ ;;'cond-expand
'*unbound-variable-hook* '*load-hook* '*rootlet-redefinition-hook* '*missing-close-paren-hook* '*read-error-hook*
'*autoload*
;;'*error-hook*
@@ -296,31 +392,29 @@
'random-state? 'throw 'float-vector-set! 'make-iterator 'complex
'let-ref 'int-vector 'aritable? 'gensym? 'syntax? 'iterator-at-end? 'let?
'make-shared-vector 'float-vector 'iterator-sequence 'getenv 'float-vector-ref
- 'cyclic-sequences 'let->list 'inlet 'setter 'int-vector?
- 'int-vector-set! 'dilambda 'c-object? 'proper-list? 'symbol->dynamic-value 'vector-append
- 'random-state->list 'pair-filename 'flush-output-port 'c-pointer 'make-float-vector
- 'object->let 'pair-line-number 'iterate 'float-vector?
+ 'cyclic-sequences 'let->list
+
+ 'setter 'int-vector?
+ 'int-vector-set! 'c-object? 'proper-list? 'symbol->dynamic-value 'vector-append
+ ;'random-state->list ;'pair-filename
+ 'flush-output-port 'c-pointer 'make-float-vector
+ 'iterate 'float-vector?
'apply-values 'values
'byte-vector-ref 'file-exists? 'make-int-vector 'string-downcase 'string-upcase
- 'byte-vector 'morally-equal? 'let-set! 'c-pointer? 'int-vector-ref 'coverlet 'float?
- 'list-values 'random-state 'byte-vector? 'openlet? 'iterator?
+ 'byte-vector 'morally-equal?
+ ;;'let-set! -- rootlet troubles?
+ 'c-pointer? 'int-vector-ref 'coverlet 'float?
+ 'list-values 'byte-vector? 'openlet? 'iterator?
'string->byte-vector
- 's7-memory-usage
#|
- ;'s7-print-length 's7-max-string-length 's7-max-list-length 's7-max-vector-length 's7-max-vector-dimensions 's7-default-hash-table-length
- ;'s7-initial-string-port-length 's7-history-size
's7-profile-info
's7-undefined-identifier-warnings
;'s7-autoloading?
- 's7-history
- 's7-catches 's7-exits 's7-c-types
- 's7-stack-top 's7-stack 's7-stacktrace-defaults
+ 's7-catches 's7-exits
+ 's7-stack-top 's7-stack
's7-symbol-table
's7-gc-protected-objects
- ;'s7-rootlet-size 's7-heap-size 's7-free-heap-size 's7-gc-freed 's7-stack-size 's7-max-stack-size
- ;'s7-gc-stats
-
's7-set-print-length
's7-set-max-string-length
@@ -332,257 +426,362 @@
's7-set-undefined-identifier-warnings 's7-set-autoloading? 's7-set-max-stack-size
's7-set-stacktrace-defaults
's7-set-gc-stats
+ ;;'s7-set-default-rationalize-error
+ ;;'s7-set-morally-equal-float-epsilon
+ ;;'s7-set-hash-table-float-epsilon
+ ;;'s7-set-bignum-precision
+ ;;'s7-set-float-format-precision
|#
- ;;'s7-history -- causes stack to grow?
+ 's7-memory-usage
+ ;;'s7-safety 's7-set-safety ;-- these need work...
+ 's7-c-types
+ ;;'s7-history ;-- causes stack to grow?
's7-print-length 's7-max-string-length 's7-max-list-length 's7-max-vector-length 's7-max-vector-dimensions 's7-default-hash-table-length
's7-initial-string-port-length 's7-history-size
's7-default-rationalize-error 's7-morally-equal-float-epsilon
's7-hash-table-float-epsilon 's7-bignum-precision
- ;;'s7-float-format-precision
- 's7-default-random-state
+ 's7-float-format-precision
+ ;'s7-default-random-state
;'s7-cpu-time
's7-file-names
's7-autoloading?
's7-rootlet-size 's7-heap-size 's7-free-heap-size 's7-gc-freed 's7-stack-size 's7-max-stack-size 's7-gc-stats
+ 's7-stacktrace-defaults
- ;;'s7-set-default-rationalize-error
- ;;'s7-set-morally-equal-float-epsilon
- ;;'s7-set-hash-table-float-epsilon
- ;;'s7-set-bignum-precision
- ;;'s7-set-float-format-precision
-
- 'macroexpand 'block-reverse! 'subblock 'local-symbol? 'unquote 'unspecified? 'block-append 'undefined?
+ 'macroexpand 'block-reverse! 'subblock 'local-symbol? 'unquote 'block-append 'block-let
;'subsequence
- 'empty? 'indexable? 'first 'cdr*
+ 'empty? 'indexable? 'first
;'copy-tree ; cycles cause stack overflow
'adjoin 'cdr-assoc
- 'progv ;'value->symbol -- correctly different values sometimes
+ ;'progv ;'value->symbol -- correctly different values sometimes, progv localizes
'and-let* 'string-case 'hash-table->alist 'concatenate
'union '2^n? 'lognor 'ldb 'clamp
'sequence->string
;'*s7*->list ; reverse! etc
'log-n-of ; stack grows if n < 0?
+ 'pp
+ 'kar '_dilambda_
+
+ 'tree-cyclic?
))
(args (vector "-123" "1234" "-3/4" "-1" "(expt 2 32)" "4294967297" "(+ a 1)" "(- a 1)" "(logand (ash 1 b) a)"
"(make-block 2)" "(block 1.0 2.0 3.0)" "(block)"
"\"ho\"" ":ho" "'ho" "':go" "(list 1)" "(list 1 2)" "(cons 1 2)" "'()" "(list (list 1 2))" "(list (list 1))" "(list ())" "=>"
"#f" "#t" "()" "#()" "\"\"" "'#()" ":readable" ":rest" ":allow-other-keys" ":a" ;"__func__"
- ;;"1/0+i" "0+0/0i" "0+1/0i" "1+0/0i" "0/0+0/0i" "0/0+i"
- "cons" "''2"
+ "1/0+i" "0+0/0i" "0+1/0i" "1+0/0i" "0/0+0/0i" "0/0+i"
+ "cons" "''2" "\"ra\""
"(make-hook)" "(make-hook '__x__)"
- "1+i" "0+i"
- "(integer->char 255)" "(string (integer->char 255))"
+ "1+i" "0+i" "(ash 1 43)"
+ "(integer->char 255)" "(string (integer->char 255))" "(string #\\null)" "(byte-vector 0)"
;;"most-positive-fixnum" "most-negative-fixnum"
"pi" "nan.0" "inf.0"
- "(list)" "(string)" "#r()" "#u8()" "(vector)" "#i()" "(make-iterator #(1 2))" "#i(1)"
- "0" "1" "1.0" "-1.0" "1.0+123.0i" "3/4" "(make-vector 3)" "(make-string 3)" "(make-vector '(2 3))"
- "'((1 2) (3 4))" "'((1 (2)) (((3) 4)))" "(byte-vector 255)"
- "#(1 2)" "(vector 1 '(3))" "(let ((x 3)) (lambda (y) (+ x y)))" "abs" "(lambda sym-args sym-args)" "#u8(0 1)"
+ "(list)" "(string)" "#r()" "#u8()" "(vector)" "#i()" "(make-iterator #(10 20))" "#i(1)"
+ "0" "1" "4" "1.0" "-1.0" "1.0+123.0i" "3/4" "(make-vector 3)" "(make-string 3)" "(make-vector '(2 3))"
+ "'((111 2222) (3 4))" "'((1 (2)) (((3) 4)))" "(byte-vector 255)"
+ "#(123 223)" "(vector 1 '(3))" "(let ((x 3)) (lambda (y) (+ x y)))" "abs" "(lambda sym-args sym-args)" "#u8(0 1)"
"(dilambda (lambda () 1) (lambda (a) a))" "quasiquote" "macroexpand" "(lambda* ((a 1) (b 2)) (+ a b))"
"((lambda (a) (+ a 1)) 2)" "((lambda* ((a 1)) (+ a 1)) 1)" "(lambda (a) (values a (+ a 1)))" "((lambda (a) (values a (+ a 1))) 2)"
"(define-macro (_m1_ a) `(+ ,a 1))"
- "(string #\\c #\\null #\\b)" "#2d((1 2) (3 4))" "#r(0 1)" "#i2d((1 2) (3 4))" "#r2d((.1 .2) (.3 .4))" "#i1d(1 2)"
+ "(string #\\c #\\null #\\b)" "#2d((100 200) (3 4))" "#r(0 1)" "#i2d((101 201) (3 4))" "#r2d((.1 .2) (.3 .4))" "#i1d(15 25)"
"(values 1 2)" "(values)" "(values #\\c 3 1.2)" "(values \"ho\")"
"`(x)" "`(+ x 1)" "`(x 1)" "`((x))" "`((+ x 1))" "`(((+ x 1)))" "`((set! x (+ x 1)) (* x 2))" "`((x 1))" "`(((x 1))) "
- "`(x . 1)" "`((x . 1))" "`(1)" "`((1))" "`((1) . x)" "`(x 1)" "'(- 1)" "(+ i 1)"
+ "`(x . 1)" "`((x . 1))" "`(1)" "`((1))" "`((1) . x)" "'(- 1)" "(+ i 1)"
;;"'((X . 1) . 2)" "'((x 1) . 2)" "'((x 1) (y . 2))" "'((x 1) y . 2)" "'((x 1) (y) . 2)" "'((x 1 . 2) . 3)" "'((x 1) 2)" "'(((x 1) 2) 3)"
"'(())" "'((()))" "(random-state 1234)"
"(c-pointer 0 'integer?)" "(c-pointer -1)" "(c-pointer 1234)"
- "'(1 2 . 3)" " . "
- "((i 0 (+ i 1)))" "(null? i)" "(= i 2)" "(zero? i)" "((null? i) i)" "(#t ())"
- "(x => y)" "((0 1) ())" "(- i 1)" "(if x y)" "(A (f x) B)"
- "(begin (f x) B)"
- "(f x) i" "x y z" "1 2" "`(+ ,a ,@b)" "`(+ ,a ,b)" "`(+ ,a ,b ,@c)" "`(+ ,a b ,@c ',d)"
- "_definee_" ;; "(_definee_ wxyz)"
"(inlet 'integer? (lambda (f) #f))" "(inlet 'a 1)" "(openlet (inlet 'abs (lambda (x) (- x))))"
+ "'(15 26 . 36)"
+ " . "
+ "((i 0 (+ i 1)))" "(null? i)"
+ "(= i 2)" "(zero? i)" "((null? i) i)" "(#t ())"
+ "(x => y)" "((0 1) ())" "(- i 1)" "(if x y)" "(or x y)"
+ ;;"(begin (f x) B)" "(A (f x) B)"
+ ;;"(f x) i" "x y z" "1 2"
+ "`(+ ,a ,@b)" "`(+ ,a ,b)" "`(+ ,a ,b ,@c)" "`(+ ,a b ,@c ',d)"
+ "_definee_" "(_definee_ __var__)" "(_definee_ x)"
"(hash-table* 'a 1)" "(hash-table)"
- "(make-iterator (list 1 2 3))" "(make-iterator (vector 1 2 3))" "(make-iterator (string #\\1))" "(make-iterator x)"
- "#<eof>" "#<undefined>" "#<unspecified>"
- "#o123" "#b101" "#\\newline" "#_cons" "#x123.123"
+ "(make-iterator (list 11 22 33))" "(make-iterator (vector 1 2 3))" "(make-iterator (string #\\1))" "(make-iterator x)"
+ "#<eof>" "#<undefined>" "#<unspecified>"
+ "#o123" "#b101" "#\\newline" "#_cons" "#x123.123" "#\\x65" ;"_1234_" "kar"
"(call-with-exit (lambda (goto) goto))"
"(with-baffle (call/cc (lambda (cc) cc)))"
- ;;"(symbol->string (gensym))"
- "(setter _definee_)" "(setter x)" "(setter car)"
+ "(symbol->string 'x)" "(symbol \"a b\")" "(symbol \"(\")\")"
+ "(setter _definee_)" "(setter car)" "(setter kar)"
"(call-with-exit (lambda (return) (let ((x 1) (y 2)) (return x y))))"
"(call/cc (lambda (return) (let ((x 1) (y 2)) (return x y))))"
"(let ((x 1)) (dynamic-wind (lambda () (set! x 2)) (lambda () (+ x 1)) (lambda () (set! x 1))))"
- ;;"(apply inlet (gensym) 1/0 ())"
- "1+1e10i" "1e15+1e15i"
- "0+1e18i" "1e18"
- ;;"(else ())"
- ;;"(else)"
- ;;"(else (f x) B)"
+ "1+1e10i" "1e15+1e15i" "0+1e18i" "1e18"
+ ;;"(real-part (random 0+i))" -- (cond (real-part...))!
+ ;;"(random 1.0)" ; number->string so lengths differ
+ "(random 1)"
+ ;;"(else ())" "(else (f x) B)"
+ "(else)"
"else" "x" "(+ x 1)" "(+ 1/2 x)" "(abs x)" "(+ x 1 2+i)" "(* 2 x 3.0 4)" "((x 1234))" "((x 1234) (y 1/2))" "'x" "(x 1)"
- "if" "begin" "cond" "case" "when" "unless"
- "letrec" "letrec*" "or" "and"
- "let-temporarily"
- ;;"+signature+" "+documentation+" "+setter+"
- "~S~%" "~A~D~X" "~{~A~^~}~%" "~NC~&"
+ "_undef_"
+ "+signature+" "+documentation+" "+setter+"
+ "__var2__"
+ "\"~S~%\"" "\"~A~D~X\"" "\"~{~A~^~}~%\"" "\"~NC~&\""
+ "(immutable! (string #\\a #\\b #\\c))" "(immutable! (byte-vector 0 1 2))"
+ "(immutable! (vector 0 1 2))" "(immutable! (int-vector 0 1 2))" "(immutable! (float-vector 0 1 2))"
+ "(immutable! (inlet 'a 1 'b 2))"
+ "(immutable! (block 0.0 1.0 2.0))"
+ "(immutable! (hash-table* 'a 1 'b 2))"
+ "(immutable! (cons 0 (immutable! (cons 1 (immutable! (cons 2 ()))))))"
+ ;"(immutable! 'x)"
+
+ ;;"(make-list 16 0)" "(make-vector 16 0)" "(make-int-vector 16 0)" "(make-float-vector 16 0)" "(make-byte-vector 16 0)"
+ ;;"(make-string 16 #\\0)"
+ ;;"(let ((hash (make-hash-table))) (do ((i 0 (+ i 1))) ((= i 16) hash) (hash-table-set! hash i 0)))"
+ ;;"(let ((lt (inlet))) (do ((i 0 (+ i 1))) ((= i 16) lt) (varlet lt (symbol \"i\" (number->string i)) 0)))"
- "quote" "'"
+ ;;" #| a comment |# "
+ "(make-shared-vector (vector 0 1 2 3 4) 3)" "(substring \"0123\" 2)"
+ "(vector-dimensions (block))"
+ "(append (block) (block))"
+ "(let-temporarily ((x 1234)) (+ x 1))"
+ "(error 'oops \"an error!\")"
+ "(set! (symbol-setter 'x) (lambda (s v) 1))"
+
+ "(catch #t 1 cons)" "(catch #t (lambda () (fill! (rootlet) 1)) (lambda (type info) info))"
+
+ "#xfeedback" "#_asdf"
+ ;"quote" "'"
+ "if" "begin" "cond" "case" "when" "unless" "letrec" "letrec*" "or" "and" "let-temporarily"
"lambda*" "lambda"
- ; "let" "let*" "do" "set!" "with-let" "define" "define*" "define-macro" "define-macro*" "define-bacro" "define-bacro*"
+ ;; "let" "let*" "do" "set!" "with-let" "define" "define*" "define-macro" "define-macro*" "define-bacro" "define-bacro*"
))
- (codes (vector (list "(do ((i 0 (+ i 1))) ((= i 1) x) (set! x " "(let ((i 0)) (set! x ")
- (list "(let () (let () " "((lambda () ")
- (list "((lambda x " "((lambda* ((x ())) ")
- (list "((lambda* ((x 1)) " "(let* ((_aaa_ 1) (x _aaa_)) (begin ")
- (list "(cond (else " "(case x (else ")
- (list "(case false ((#f) " "(case false ((1) #t) (else ")
- (list "(call-with-exit (lambda (_x_) " "(call/cc (lambda (_x_) ")
- (list "(if (not x) (begin " "(if x #<unspecified> (begin ")
- (list "(cond ((not false) " "(unless false (begin ")
- (list "(list (let-temporarily ((x 1)) " "(list (let ((x 1)) ")
- (list "(begin (_dw_ " "((lambda () ")
- (list "(begin (vector " "(apply vector (list ")
- (list "(begin (with-let (inlet 'i 0) " "(with-let (inlet) (let ((i 0)) ")
- (list "(list (_cw_ " "(list (values ")
- (list "(set! __var1__ (list " "(list (let () ")
- (list "(do () ((not false) " "(begin (when (not false) ")
- (list "((define-macro () " "((define-bacro () ")
- (list "(begin (let ((max 1) (min 3)) " "((lambda* ((max 1) (min 3)) ")
- (list "(list (letrec ((x 1)) " "(list (letrec* ((x 1)) ")
- (reader-cond ((not (provided? 'pure-s7)) (list "(with-input-from-string \"1234\" (lambda () " "(begin (_dw_string_ ")))
- ))
+ (codes (vector
+ (list "(do ((x 0) (i 0 (+ i 1))) ((= i 1) x) (set! x " "(let ((x 0) (i 0)) (set! x ")
+ ;;(list "(let () (let () " "((lambda () ")
+ (list "((lambda x " "((lambda* ((x ())) ")
+ ;;(list "((lambda* ((x 1)) " "(let* ((_aaa_ 1) (x _aaa_)) (begin ")
+ (list "(cond (else " "(case x (else ")
+ (list "(case false ((#f) " "(case false ((1) #t) (else ")
+ (list "(call-with-exit (lambda (_x_) " "(call/cc (lambda (_x_) ")
+ (list "(if (not x) (begin " "(if x #<unspecified> (begin ")
+ (list "(cond ((not false) " "(unless false (begin ")
+ (list "(let () (let-temporarily ((x 1)) " "(let () (let ((x 1)) ")
+ (list "(let-temporarily ((x 1)) (call-with-exit (lambda (go) "
+ "(call-with-exit (lambda (go) (let-temporarily ((x 1)) ")
+ (list "(begin (_dw_ " "((lambda () ")
+ (list "(begin (append " "(apply append (list ")
+ (list "(begin (with-let (inlet 'i 0) " "(with-let (inlet) (let ((i 0)) ")
+ (list "(list (_cw_ " "(list (values ")
+ (list "(set! __var1__ (list " "(list (let () ")
+ (list "(do () ((not false) " "(begin (when (not false) ")
+ ;;(list "((define-macro (_m_) " "((define-bacro (_m_) ") ; circular source if signature in body
+ ;;(list "(let ((mx max)) (let ((max min) (min mx)) " "(begin (_lt2_ ") ; loops?
+ ;;(list "(begin (letrec ((x 1)) " "(begin (letrec* ((x 1)) ")
+ (reader-cond ((not (provided? 'pure-s7)) (list "(with-input-from-string \"1234\" (lambda () " "(begin (_dw_string_ ")))
+ (list "(map abs (begin " "(map (lambda (x) (if (>= x 0.0) x (- x))) (begin ")
+ (list "(for-each display (list " "(for-each (lambda (x) (display x)) (list ")
+ (list "(begin (_ct1_ " "(begin (_ct2_ ")
+ (list "(begin (_mem1_ " "(begin (_mem2_ ")
+ (list "(begin (_ft1_ " "(begin (_ft2_ ")
+ (list "(with-output-to-string (lambda () " "(begin (_dw_out_ ")
+ (list "(begin (_rf1_ " "(begin (_rf2_ ")
+ (list "(let () (_do1_ " "(let () (_do2_ ")
+ (list "(let () (let-temporarily ((x 1234)) (call-with-exit (lambda (goto) (goto 1))) "
+ "(let () (let-temporarily ((x 1234)) (call/cc (lambda (goto) (goto 1))) ")
+ (list "(let ((x 1)) (immutable! 'x) (begin " "((lambda* ((x 1)) (immutable! 'x) ")
+ (list "(do ((i 0 (+ i 1))) ((= i 1)) (do ((j 0 (+ j 1))) ((= j 1)) "
+ "(do ((i 0 (+ i 1))) ((= i 1)) (let ((j 0)) ")
+ ))
- (chars (vector #\( #\( #\space #\space))) ; #\/ #\# #\, #\` #\@ #\. #\:)) ; #\\ #\> #\space))
+ (chars (vector #\( #\( #\) #\space))) ; #\/ #\# #\, #\` #\@ #\. #\:)) ; #\\ #\> #\space))
(let ((clen (length chars))
(flen (length functions))
(alen (length args))
- (codes-len (length codes))
- )
-
- (for-each (lambda (x) (if (not (symbol? x)) (format *stderr* "~A " x))) functions)
- (for-each (lambda (x) (if (not (string? x)) (format *stderr* "~A " x))) args)
- ;; (let ((st (symbol-table))) (for-each (lambda (x) (if (not (memq x functions)) (format *stderr* "~A " x))) st))
-
+ (codes-len (length codes)))
+
+ ;(for-each (lambda (x) (if (not (symbol? x)) (format *stderr* "~A " x))) functions)
+ ;(for-each (lambda (x) (if (not (string? x)) (format *stderr* "~A " x))) args)
+ ;(do ((p (vector->list functions) (cdr p))) ((null? p)) (if (memq (car p) (cdr p)) (format *stderr* "~A repeats~%" (car p))))
+ ;(do ((p (vector->list args) (cdr p))) ((null? p)) (if (member (car p) (cdr p) string=?) (format *stderr* "~A repeats~%" (car p))))
+
+ ;;(let ((st (symbol-table))) (for-each (lambda (x) (if (and (procedure? (symbol->value x)) (not (memq x (vector->list functions)))) (format *stderr* "~A~%" x))) st))
+
(define (fix-op op)
(case op
((set!) "set! __var__")
- ;((set-cdr!) "set-cdr! __var2__")
((let) "let ()")
((let*) "let* ()")
- ((do) "do ((i 0 (+ i 1))) ((= i 1) 1)")
+ ((do) "_do3_")
((call-with-output-file) "call-with-output-file \"/dev/null\" ")
((with-output-to-file) "with-output-to-file \"/dev/null\" ")
- ((newline) "newline #f")
- ((define define* define-macro define-macro* define-bacro define-bacro*)
- (format #f "~A _definee_ 0" op))
- ;(format #f "~A _definee_ (_its_arg_)" op))
- ((format) "format #t ")
+ ((define define* define-macro define-macro* define-bacro define-bacro*) (format #f "~A _definee_ " op))
((eval) "checked-eval")
- ((cutlet) "checked-cutlet")
- (else (symbol->string op))))
-
+ (else => symbol->string)))
- (define (make-expr size)
+ (define make-expr
(let ((parens 1)
(dqs 0)
(j 1)
- (str (make-string 2048)))
- (fill! str #\space)
- (set! (str 0) #\()
- (let ((op (functions (random flen))))
- (let ((opstr (fix-op op)))
- (let ((oplen (length opstr)))
- (do ((n 0 (+ n 1))
- (k j (+ k 1)))
- ((= n oplen)
- (set! j k))
- (string-set! str k (string-ref opstr n))))))
+ (str (make-string 2048 #\space)))
+ (lambda (size)
+ (set! parens 1)
+ (set! dqs 0)
+ (set! j 1)
+ (fill! str #\space)
+ (set! (str 0) #\()
+ (let* ((op (functions (random flen)))
+ (opstr (fix-op op)))
+ (do ((oplen (length opstr))
+ (n 0 (+ n 1))
+ (k j (+ k 1)))
+ ((= n oplen)
+ (set! j k))
+ (string-set! str k (string-ref opstr n))))
+
+ (set! (str j) #\space)
+ (set! j (+ j 1))
+
+ (do ((k 1 (+ k 1)))
+ ((= k size))
+
+ (set! (str j) (chars (random clen)))
+ (if (= dqs 1)
+ (if (and (char=? (str j) #\")
+ (or (= j 0)
+ (not (char=? (str (- j 1)) #\\))))
+ (set! dqs 0))
- (set! (str j) #\space)
- (set! j (+ j 1))
-
- (do ((k 1 (+ k 1)))
- ((= k size))
+ ;; else not in a string constant
+ (case (str j)
+ ((#\()
+ (set! parens (+ parens 1))
+ (let* ((op (functions (random flen)))
+ (opstr (fix-op op)))
+ (do ((oplen (length opstr))
+ (n 0 (+ n 1))
+ (k (+ j 1) (+ k 1)))
+ ((= n oplen)
+ (set! j k))
+ (string-set! str k (string-ref opstr n))))
+ (set! j (+ j 1))
+ (set! (str j) #\space))
+
+ ((#\))
+ (set! parens (- parens 1))
+ (when (negative? parens)
+ (set! (str j) #\space)
+ (set! parens 0)))
+
+ ((#\space)
+ (let ((nargs (random 5)))
+ (do ((n 0 (+ n 1)))
+ ((= n nargs))
+ (let ((argstr (args (random alen))))
+ (do ((arglen (length argstr))
+ (n 0 (+ n 1))
+ (k (+ j 1) (+ k 1)))
+ ((= n arglen)
+ (set! j k))
+ (string-set! str k (string-ref argstr n))))
+ (set! j (+ j 1))
+ (set! (str j) #\space))))
+
+ ((#\")
+ (set! dqs 1))))
+
+ (set! j (+ j 1)))
- (set! (str j) (chars (random clen)))
(if (= dqs 1)
- (if (and (char=? (str j) #\")
- (or (= j 0)
- (not (char=? (str (- j 1)) #\\))))
- (set! dqs 0))
-
- ;; else not in a string
- (if (char=? (str j) #\()
- (begin
- (set! parens (+ parens 1))
-
- (let ((op (functions (random flen))))
- (let ((opstr (fix-op op)))
- (let ((oplen (length opstr)))
- (do ((n 0 (+ n 1))
- (k (+ j 1) (+ k 1)))
- ((= n oplen)
- (set! j k))
- (string-set! str k (string-ref opstr n))))))
-
- (set! j (+ j 1))
- (set! (str j) #\space))
-
- (if (char=? (str j) #\))
- (begin
- (set! parens (- parens 1))
- (if (negative? parens)
- (begin
- (set! (str j) #\space)
- (set! parens 0))))
-
- (if (char=? (str j) #\space)
- (let ((nargs (+ 0 (random 5))))
- (do ((n 0 (+ n 1)))
- ((= n nargs))
- (let ((argstr (args (random alen))))
- (let ((arglen (length argstr)))
- (do ((n 0 (+ n 1))
- (k (+ j 1) (+ k 1)))
- ((= n arglen)
- (set! j k))
- (string-set! str k (string-ref argstr n)))))
-
- (set! j (+ j 1))
- (set! (str j) #\space)))
-
- (if (char=? (str j) #\")
- (set! dqs 1))))))
+ (begin
+ (set! (str j) #\")
+ (set! j (+ j 1))))
- (set! j (+ j 1)))
-
- (if (= dqs 1)
- (begin
- (set! (str j) #\")
- (set! j (+ j 1))))
-
- (if (> parens 0)
- (do ((k parens (- k 1))
- (n j (+ n 1)))
- ((= k 0)
- (set! j n))
- (string-set! str n #\))))
-
- ;(format #t "~A~%" (substring str 0 j))
- (substring str 0 j)))
+ (if (> parens 0)
+ (do ((k parens (- k 1))
+ (n j (+ n 1)))
+ ((= k 0)
+ (set! j n))
+ (string-set! str n #\))))
+
+ ;(format #t "~A~%" (substring str 0 j))
+ (substring str 0 j))))
+
+ (define (same-type? val1 val2 val3 val4 str str1 str2 str3 str4)
+ (if (and (eq? (type-of val1) (type-of val2))
+ (eq? (type-of val1) (type-of val3))
+ (eq? (type-of val1) (type-of val4)))
+ (unless (or (openlet? val1)
+ (string-position "(set!" str1)
+ (string-position "gensym" str1))
+
+ (cond ((or (and (symbol? val1)
+ (not (gensym? val1)))
+ (boolean? val1)
+ (syntax? val1))
+ (unless (and (eq? val1 val2)
+ (eq? val1 val3)
+ (eq? val1 val4))
+ (format *stderr* "~%~%~S~%~S~%~S~%~S~%~S~% ~S ~S ~S ~S~%"
+ str str1 str2 str3 str4
+ val1 val2 val3 val4)))
+
+ ((sequence? val1)
+ (let ((len1 (length val1)))
+ (unless (or (let? val1)
+ (and (eqv? len1 (length val2))
+ (eqv? len1 (length val3))
+ (eqv? len1 (length val4))))
+ (format *stderr* "~%~%~S~%~S~%~S~%~S~%~S~% ~S~% ~S~% ~S~% ~S~%~%"
+ str str1 str2 str3 str4
+ val1 val2 val3 val4))
+ (if (or (and (string? val1)
+ (not (and (eq? (byte-vector? val1) (byte-vector? val2))
+ (eq? (byte-vector? val1) (byte-vector? val3))
+ (eq? (byte-vector? val1) (byte-vector? val4)))))
+ (and (gensym? val1)
+ (not (and (gensym? val2) (gensym? val3) (gensym? val4))))
+ (and (keyword? val1)
+ (not (and (keyword? val2) (keyword? val3) (keyword? val4)))))
+ (format *stderr* "~%~%~S~%~S~%~S~%~S~%~S~% ~S~% ~S~% ~S~% ~S~%~%"
+ str str1 str2 str3 str4
+ val1 val2 val3 val4))))
+
+ ((number? val1)
+ (if (or (and (nan? val1)
+ (not (and (nan? val2) (nan? val3) (nan? val4))))
+ (and (infinite? val1)
+ (not (and (infinite? val2) (infinite? val3) (infinite? val4))))
+ (and (finite? val1)
+ (not (and (finite? val2) (finite? val3) (finite? val4)))))
+ (format *stderr* "~%~%~S~%~S~%~S~%~S~%~S~% ~S~% ~S~% ~S~% ~S~%~%"
+ str str1 str2 str3 str4
+ val1 val2 val3 val4)))))
+ (begin
+ (format *stderr* "~%~%~S~%~S~%~S~%~S~% ~S~% ~S~% ~S~% ~S~%"
+ str1 str2 str3 str4
+ val1 val2 val3 val4)
+ (if (or (eq? val1 'error)
+ (eq? val2 'error)
+ (eq? val3 'error)
+ (eq? val4 'error))
+ (format *stderr* " ~S ~S~%"
+ error-type error-info))
+ ;(format *stderr* "~S~%~%" (stacktrace))
+ )))
(define (eval-it str) ;(format #t "~A~%" str)
+ ;(format *stderr* "~S~%" str)
(catch #t
(lambda ()
- ((lambda* args (car args)) (eval-string str)))
+ (car (list (eval-string str))))
(lambda (type info)
(set! error-type type)
(set! error-info info)
'error)))
(define (try-both str)
- ;(format *stderr* "~S~%" str)
(set! ostr str)
-
(catch #t
(lambda ()
(s7-optimize (list (catch #t
@@ -590,8 +789,7 @@
(with-input-from-string str read))
(lambda args ())))))
(lambda arg 'error))
-
- (let* ((outer (codes (random codes-len)))
+ (let* ((outer (codes (random codes-len)))
(str1 (string-append "(let ((x #f) (i 0)) " (car outer) str ")))"))
(str2 (string-append "(let () (define (func) " str1 ") (define (hi) (func)) (hi))"))
(str3 (string-append "(let ((x #f) (i 0)) " (cadr outer) str ")))"))
@@ -600,30 +798,51 @@
(val2 (eval-it str2))
(val3 (eval-it str3))
(val4 (eval-it str4)))
- (unless (and (eq? (type-of val1) (type-of val2))
- (eq? (type-of val1) (type-of val3))
- (eq? (type-of val1) (type-of val4)))
- (format *stderr* "~%~S~%~S~%~S~%~S~% ~S~% ~S~% ~S~% ~S~%" str1 str2 str3 str4 val1 val2 val3 val4)
- (if (or (eq? val1 'error)
- (eq? val2 'error)
- (eq? val3 'error)
- (eq? val4 'error))
- (format *stderr* " ~S ~S~%" error-type error-info))
- (format *stderr* "~%")))))
-
+ (same-type? val1 val2 val3 val4 str str1 str2 str3 str4)))
+ (let ((nstr (make-expr (+ 1 (random 6)))))
+ (set! nostr nstr)
+ (catch #t
+ (lambda ()
+ (s7-optimize (list (catch #t
+ (lambda ()
+ (with-input-from-string nstr read))
+ (lambda args ())))))
+ (lambda arg 'error))
+ (let ((str5 (string-append "(let ((_y_ (begin " nstr "))) (define (f x) " str ") (define (g) (f _y_)) (g))"))
+ (str6 (string-append "((lambda (x) " str ") (begin " nstr "))"))
+ (str7 (string-append "(let ((x (begin " nstr "))) " str ")"))
+ (str8 (string-append "(do ((x (begin " nstr "))) (#t " str "))")))
+ (let ((val5 (eval-it str5))
+ (val6 (eval-it str6))
+ (val7 (eval-it str7))
+ (val8 (eval-it str8)))
+ (same-type? val5 val6 val7 val8 nstr str5 str6 str7 str8)))))
+
+ (define dots (vector "." "-" "+" "-"))
(define (test-it)
- (do ((m 0 (+ m 1)))
+ (do ((m 0 (+ m 1))
+ (n 0))
((= m 100000000)
(format *stderr* "reached end of loop??~%"))
(when (zero? (modulo m 100000))
(set! m 0)
- (format *stderr* "."))
-
+ (set! n (+ n 1))
+ (if (= n 4) (set! n 0))
+ (format *stderr* "~A" (vector-ref dots n)))
+
+ (try-both (make-expr (+ 1 (random 8)))) ; min 1 here not 0
+ (set! __var__ #f)
+#|
(catch #t
(lambda ()
- (try-both (make-expr (+ 1 (random 6))))) ; min 1 here not 0
+ (try-both (make-expr (+ 1 (random 9))))) ; min 1 here not 0
(lambda (type info)
- (format *stderr* "~A: ~A ~A ~A~%" type (apply format #f info) ostr (owlet))))))
+ (format *stderr* "~A: ~S ~S ~S~%" type (apply format #f info) ostr (owlet))))
+|#
+ ))
(test-it)))
+
+;;; arity/signature checks? -- need access to returning caller
+
diff --git a/tools/compsnd b/tools/compsnd
index 357e640..913cce7 100755
--- a/tools/compsnd
+++ b/tools/compsnd
@@ -408,7 +408,7 @@ rm -f config.cache
echo ' -------------------------------------------------------------------------------- '
echo ' ---- --with-gsl ---- '
echo ' -------------------------------------------------------------------------------- '
-./configure --quiet LDFLAGS="-L/usr/X11R6/lib" CFLAGS="-Wall -I/usr/X11R6/include -DDEBUGGING" --with-motif --with-gsl
+./configure --quiet LDFLAGS="-L/usr/X11R6/lib" CFLAGS="-Wall -I/usr/X11R6/include -DS7_DEBUGGING" --with-motif --with-gsl
make
echo ' '
echo ' '
@@ -500,7 +500,7 @@ make allclean
echo ' -------------------------------------------------------------------------------- '
echo ' ----- --with-ruby --with-gl --with-alsa '
echo ' -------------------------------------------------------------------------------- '
-./configure --quiet LDFLAGS="-L/usr/X11R6/lib" CFLAGS="-Wall -I/usr/X11R6/include -DDEBUGGING" --with-ruby --with-motif --with-gl --with-alsa
+./configure --quiet LDFLAGS="-L/usr/X11R6/lib" CFLAGS="-Wall -I/usr/X11R6/include -DS7_DEBUGGING" --with-ruby --with-motif --with-gl --with-alsa
make
echo ' '
echo ' '
@@ -536,7 +536,7 @@ make allclean
echo ' -------------------------------------------------------------------------------- '
echo ' ---- --with-ruby --with-gtk --without-gsl '
echo ' -------------------------------------------------------------------------------- '
-./configure --quiet LDFLAGS="-L/usr/X11R6/lib" CFLAGS="-Wall -I/usr/X11R6/include -DDEBUGGING" --with-ruby --with-gtk --without-gsl
+./configure --quiet LDFLAGS="-L/usr/X11R6/lib" CFLAGS="-Wall -I/usr/X11R6/include -DS7_DEBUGGING" --with-ruby --with-gtk --without-gsl
make
echo ' '
echo ' '
@@ -572,7 +572,7 @@ make allclean
echo ' -------------------------------------------------------------------------------- '
echo ' ----- --with-ruby --without-gui ----- '
echo ' -------------------------------------------------------------------------------- '
-./configure --quiet LDFLAGS="-L/usr/X11R6/lib" CFLAGS="-Wall -I/usr/X11R6/include -DDEBUGGING" --with-ruby --without-gui
+./configure --quiet LDFLAGS="-L/usr/X11R6/lib" CFLAGS="-Wall -I/usr/X11R6/include -DS7_DEBUGGING" --with-ruby --without-gui
make
echo ' '
echo ' '
@@ -583,7 +583,7 @@ make allclean
echo ' -------------------------------------------------------------------------------- '
echo ' ---- g++ --with-ruby --without-gui ---- '
echo ' -------------------------------------------------------------------------------- '
-./configure --quiet CC=g++ LDFLAGS="-L/usr/X11R6/lib" CFLAGS="-Wall -I/usr/X11R6/include -DDEBUGGING" --with-ruby --without-gui
+./configure --quiet CC=g++ LDFLAGS="-L/usr/X11R6/lib" CFLAGS="-Wall -I/usr/X11R6/include -DS7_DEBUGGING" --with-ruby --without-gui
make
echo ' '
echo ' '
diff --git a/tools/makexg.scm b/tools/makexg.scm
index a2b34cc..66b7303 100755
--- a/tools/makexg.scm
+++ b/tools/makexg.scm
@@ -64,7 +64,7 @@
"GtkAlignment*" "GtkAllocation*"
"GtkArrow*" "GtkAspectFrame*" "GtkBin*" "GtkBox*" "GtkButton*" "GtkButtonBox*"
"GtkCalendar*" "GtkCellLayout*" "GtkCellLayoutDataFunc" "GtkCellRendererPixbuf*" "GtkCellRendererText*" "GtkCellRendererToggle*"
- "GtkCheckMenuItem*" "GtkClipboardTargetsReceivedFunc"
+ "GtkCheckMenuItem*" ;"GtkClipboardTargetsReceivedFunc"
"GtkCombo*" "GtkComboBox*" "GtkComboBoxEntry*" "GtkContainer*" "GtkCurve*" "GtkDialog*" "GtkDrawingArea*" "GtkEditable*"
"GtkEventBox*" "GtkExpander*" "GtkFileChooser*" "GtkFileFilterFunc"
"GtkFileSelection*" "GtkFixed*" "GtkFontButton*" "GtkFontSelection*" "GtkFontSelectionDialog*" "GtkFrame*" "GtkGammaCurve*"
@@ -79,7 +79,8 @@
"GtkViewport*" "PangoAnalysis*" "PangoAttrList**" "PangoFontDescription**" "PangoRectangle*"
"gchar***" "gfloat*" "gint8*" "gssize" "guint16*" "gunichar*" "GtkFileChooserButton*" ;"GtkPathPriorityType"
"GtkCellView*" "GValue*" "GtkAboutDialog*" "PangoAttrFilterFunc" "PangoScript*" "GtkMenuToolButton*"
- "GtkClipboardImageReceivedFunc" "PangoMatrix*" "GdkTrapezoid*" "GdkPangoRenderer*" "PangoRenderPart"
+ ;"GtkClipboardImageReceivedFunc"
+ "PangoMatrix*" "GdkTrapezoid*" "GdkPangoRenderer*" "PangoRenderPart"
"GLogFunc" "GError*" "guint32*"
"GConnectFlags" "GSignalFlags" "GSignalMatchType"
@@ -150,6 +151,7 @@
"GdkDevicePadFeature" "GtkPadActionType"
"GtkShortcutLabel*" "GtkPadActionEntry*" "GdkDevicePad*" "GActionGroup*"
+ "GtkDrawingAreaFunc"
))
(define no-xen-p
@@ -625,6 +627,7 @@
(cons "GtkEventControllerScrollFlags" "INT")
(cons "GdkDeviceType" "INT")
(cons "GtkIconSize" "INT")
+ (cons "GtkApplicationInhibitFlags" "INT")
))
(define (c-to-xen-macro-name type str)
@@ -901,6 +904,7 @@
"tree_selection_func"
(parse-args "GtkTreeModel* model GtkTreePath* path GtkTreeIter* iter lambda_data func_info" 'callback)
'temporary)
+#|
(list 'GtkClipboardReceivedFunc
"void"
"clip_received"
@@ -916,6 +920,7 @@
"clip_targets_received"
(parse-args "GtkClipboard* clipboard GdkAtom* atoms gint n_atoms lambda_data func_info" 'callback)
'temporary)
+|#
; (list 'GtkMenuDetachFunc
; "void"
; "menu_detach_func"
@@ -957,6 +962,7 @@
"tree_selection"
(parse-args "GtkTreeSelection* selection GtkTreeModel* model GtkTreePath* path gboolean path_currently_selected lambda_data func_info" 'callback)
'permanent)
+#|
(list 'GtkClipboardGetFunc
"void"
"clip_get"
@@ -967,6 +973,7 @@
"clip_clear"
(parse-args "GtkClipboard* clipboard lambda_data func_info" 'callback)
'permanent)
+|#
; GCallback 'lambda can be whatever is indicated by caller (2 or more args)
@@ -991,7 +998,7 @@
"icon_view_foreach"
(parse-args "GtkIconView* icon_view GtkTreePath* path lambda_data func_info" 'callback)
'permanent)
-
+#|
(list 'GtkClipboardImageReceivedFunc
"void"
"clip_image_received"
@@ -1002,18 +1009,21 @@
;; are not new in version 2.5.6, we don't want the callback flag to sequester them
;; on the 256-type list.
'permanent)
+|#
(list 'GLogFunc
"void"
"g_message_log_func"
(parse-args "gchar* domain GLogLevelFlags log_level gchar* message lambda_data func_info" 'callback)
'permanent)
+#|
(list 'GtkClipboardRichTextReceivedFunc
"void"
"clip_rich_text_received"
(parse-args "GtkClipboard* clipboard GdkAtom format guint8* text gsize length lambda_data func_info" 'callback); 'callback)
;; guint8* is const
'permanent-gcc)
+|#
; (list 'GtkRecentFilterFunc
; "gboolean"
; "recent_filter"
@@ -1806,7 +1816,7 @@
(hey "#define XLL(a, b) (Xen_llong_to_C_llong(Xen_list_ref(a, b)))~%")
(hey "#define XLG(a, b) Xen_to_C_GType(Xen_list_ref(a, b))~%")
(hey "#define XLT(a, b) Xen_to_C_GtkTextTag_(Xen_list_ref(a, b))~%")
-(hey "#define XLA(a, b) ((Xen_is_integer(Xen_list_ref(a, b))) ? ((gpointer)XLL(a, b)) : ((Xen_is_string(Xen_list_ref(a, b))) ? ((gpointer)XLS(a, b)) : ((gpointer)XLG(a, b))))~%~%")
+(hey "#define XLA(a, b) ((Xen_is_integer(Xen_list_ref(a, b))) ? ((gpointer)((intptr_t)XLL(a, b))) : ((Xen_is_string(Xen_list_ref(a, b))) ? ((gpointer)XLS(a, b)) : ((gpointer)XLG(a, b))))~%~%")
(hey "/* -------------------------------- gc protection -------------------------------- */~%")
(hey "~%")
@@ -1931,8 +1941,8 @@
(hay "static ~A lg_~A(" type name)
(let ((previous-arg #f)
(ctr 0)
- (ctr1 (memq fname '(GtkClipboardTextReceivedFunc GtkAccelMapForeach GtkEntryCompletionMatchFunc)))
- (ctr2 (memq fname '(GtkTreeViewSearchEqualFunc GLogFunc GtkClipboardRichTextReceivedFunc)))
+ (ctr1 (memq fname '(GtkAccelMapForeach GtkEntryCompletionMatchFunc)))
+ (ctr2 (memq fname '(GtkTreeViewSearchEqualFunc GLogFunc)))
(ctr0 (memq fname '(GtkFileFilterFunc GtkRecentFilterFunc GLogFunc))))
(for-each
(lambda (arg)
@@ -1966,12 +1976,12 @@
(if (null? args) "no" (length args))
(if (and (pair? args) (null? (cdr args))) "" "s")
(case fname
- ((GtkClipboardClearFunc) "Xen_caddr")
+ ;((GtkClipboardClearFunc) "Xen_caddr")
((GtkDestroyNotify) "Xen_cadddr")
(else "Xen_car")))
(hay "s7_apply_function(cbsc, ~% ~A((s7_pointer)func_info), ~A~%"
(case fname
- ((GtkClipboardClearFunc) "s7_caddr")
+ ;((GtkClipboardClearFunc) "s7_caddr")
((GtkDestroyNotify) "s7_cadddr")
(else "s7_car"))
(if (null? args) "s7_nil(cbsc" (format #f "~% s7_list(cbsc, ~D," (length args))))
@@ -2373,9 +2383,12 @@
(begin
(hey " xm_protect(gxg_ptr);~%")
(hay " s7_gc_protect(sc, lg_ptr);~%")
+#|
(when (eq? lambda-type 'GtkClipboardGetFunc)
(hey " Xen_list_set(gxg_ptr, 2, clear_func);~%")
- (hay " s7_list_set(sc, lg_ptr, 2, clear_func);~%"))))
+ (hay " s7_list_set(sc, lg_ptr, 2, clear_func);~%"))
+|#
+ ))
(for-each
(lambda (arg)
@@ -3130,7 +3143,7 @@
(hay " }~%")
(hay "#else~%")
(hay " gtk_text_view_get_iter_at_position((GtkTextView*)s7_c_pointer(text_view), (GtkTextIter*)s7_c_pointer(iter), &ref_trailing, s7_integer(x), s7_integer(y));~%")
-(hay " return(s7_list(sc, 1, s7_make_integer(sc, (ref_trailing)));~%")
+(hay " return(s7_list(sc, 1, s7_make_integer(sc, ref_trailing)));~%")
(hay "#endif~%")
(hay "}~%~%")
(hay "static s7_pointer lg_gtk_text_view_get_iter_at_location(s7_scheme *sc, s7_pointer args)~%")
@@ -3606,32 +3619,32 @@
(hay "}~%~%")
;;; ----------------
-
-(hey "/* -------------------------------- predefined Atoms -------------------------------- */~%")
-(hey "~%")
-(hey "static void define_atoms(void)~%")
-(hey "{~%")
-(hey "#define define_atom(Name) Xen_define(Xg_pre #Name Xg_post, C_to_Xen_GdkAtom(Name))~%~%")
-(for-each
- (lambda (atom)
- (hey " define_atom(~A);~%" atom))
- (reverse atoms))
-(hey "}~%~%")
-
-;;; ----------------
-(hay "~%")
-(hay "static void define_atoms(s7_scheme *sc)~%")
-(hay "{~%")
-(hay " s7_pointer cur_env, gdkatom_symbol;~%")
-(hay " cur_env = s7_curlet(sc);~%")
-(hay " gdkatom_symbol = s7_make_symbol(sc, \"GdkAtom\");~%~%")
-(for-each
- (lambda (atom)
- (hay " s7_define(sc, cur_env, s7_make_symbol(sc, \"~A\"), s7_make_c_pointer_with_type(sc, ~A, gdkatom_symbol, lg_false));~%" atom atom))
- (reverse atoms))
-(hay "}~%~%")
-;;; ----------------
-
+(when (pair? atoms)
+ (hey "/* -------------------------------- predefined Atoms -------------------------------- */~%")
+ (hey "~%")
+ (hey "static void define_atoms(void)~%")
+ (hey "{~%")
+ (hey "#define define_atom(Name) Xen_define(Xg_pre #Name Xg_post, C_to_Xen_GdkAtom(Name))~%~%")
+ (for-each
+ (lambda (atom)
+ (hey " define_atom(~A);~%" atom))
+ (reverse atoms))
+ (hey "}~%~%")
+
+ ;; ----------------
+ (hay "~%")
+ (hay "static void define_atoms(s7_scheme *sc)~%")
+ (hay "{~%")
+ (hay " s7_pointer cur_env, gdkatom_symbol;~%")
+ (hay " cur_env = s7_curlet(sc);~%")
+ (hay " gdkatom_symbol = s7_make_symbol(sc, \"GdkAtom\");~%~%")
+ (for-each
+ (lambda (atom)
+ (hay " s7_define(sc, cur_env, s7_make_symbol(sc, \"~A\"), s7_make_c_pointer_with_type(sc, ~A, gdkatom_symbol, lg_false));~%" atom atom))
+ (reverse atoms))
+ (hay "}~%~%")
+ ;; ----------------
+ )
(hey "/* -------------------------------- symbols -------------------------------- */~%")
(hey "~%")
@@ -3857,7 +3870,8 @@
(hey " define_integers();~%")
(hey " define_doubles();~%")
(hey " define_functions();~%")
-(hey " define_atoms();~%")
+(when (pair? atoms)
+ (hey " define_atoms();~%"))
(hey " define_strings();~%")
(hey " define_structs();~%")
(hey " #if HAVE_SCHEME~%")
@@ -3918,7 +3932,8 @@
(hay " define_xm_obj(sc);~%")
(hay " define_integers(sc);~%")
(hay " define_doubles(sc);~%")
-(hay " define_atoms(sc);~%")
+(when (pair? atoms)
+ (hay " define_atoms(sc);~%"))
(hay " define_strings(sc);~%")
(hay " define_symbols(sc);~%")
(hay " define_lint(sc);~%")
diff --git a/tools/testsnd b/tools/testsnd
index 48cadfe..1dc88ba 100755
--- a/tools/testsnd
+++ b/tools/testsnd
@@ -53,11 +53,11 @@ echo ' -------------------------------- that was snd-test without-gui sanitized?
echo ' '
echo ' '
-echo ' -------------------------------- without-gui DEBUGGING=1 -------------------------------- '
+echo ' -------------------------------- without-gui S7_DEBUGGING=1 -------------------------------- '
make allclean
rm -f snd
rm -f config.cache
-./configure --quiet CFLAGS="-Wall -I/usr/local/include -DDEBUGGING" --without-gui --disable-deprecated
+./configure --quiet CFLAGS="-Wall -I/usr/local/include -DS7_DEBUGGING" --without-gui --disable-deprecated
make
echo ' '
echo ' '
@@ -162,7 +162,7 @@ echo ' -------------------------------- without-gui --with-gmp debugging -------
make allclean
rm -f snd
rm -f config.cache
-./configure --quiet CFLAGS="-Wall -DDEBUGGING=1" --without-gui --with-gmp --disable-deprecated
+./configure --quiet CFLAGS="-Wall -DS7_DEBUGGING=1" --without-gui --with-gmp --disable-deprecated
make
echo ' '
echo ' '
@@ -232,7 +232,7 @@ echo ' -------------------------------- motif + gl + debug ---------------------
make allclean
rm -f snd
rm -f config.cache
-./configure --quiet --with-gl --with-motif CFLAGS="-DDEBUGGING -Wall -I/usr/X11R6/include" LDFLAGS="-L/usr/X11R6/lib"
+./configure --quiet --with-gl --with-motif CFLAGS="-DS7_DEBUGGING -Wall -I/usr/X11R6/include" LDFLAGS="-L/usr/X11R6/lib"
make
echo ' '
echo ' '
@@ -288,7 +288,7 @@ echo ' -------------------------------- with-gtk + debug -----------------------
make allclean
rm -f snd
rm -f config.cache
-./configure --quiet CFLAGS="-DDEBUGGING -Wall" --with-gtk --disable-deprecated
+./configure --quiet CFLAGS="-DS7_DEBUGGING -Wall" --with-gtk --disable-deprecated
make
echo ' '
echo ' '
diff --git a/tools/xgdata.scm b/tools/xgdata.scm
index c4c1e96..fdb0625 100644
--- a/tools/xgdata.scm
+++ b/tools/xgdata.scm
@@ -9954,3 +9954,32 @@
(CFNC-3.99 "GtkContentFormats* gtk_drag_source_get_target_list GtkWidget* widget")
(CFNC-3.99 "void gtk_drag_source_set_target_list GtkWidget* widget GtkContentFormats* @target_list")
(CFNC-3.99 "GtkWidget* gtk_scale_button_new gdouble min gdouble max gdouble step gchar** icons" 'const)
+
+(CCAST-3.99 "GTK_APPLICATION" "GtkApplication*")
+(CCHK-3.99 "GTK_IS_APPLICATION" "GtkApplication*")
+(CINT-3.99 "GTK_APPLICATION_INHIBIT_LOGOUT" "GtkApplicationInhibitFlags")
+(CINT-3.99 "GTK_APPLICATION_INHIBIT_SWITCH" "GtkApplicationInhibitFlags")
+(CINT-3.99 "GTK_APPLICATION_INHIBIT_SUSPEND" "GtkApplicationInhibitFlags")
+(CINT-3.99 "GTK_APPLICATION_INHIBIT_IDLE" "GtkApplicationInhibitFlags")
+
+(CFNC-3.99 "GtkApplication* gtk_application_new gchar* application_id GApplicationFlags flags" 'const)
+(CFNC-3.99 "void gtk_application_add_window GtkApplication* application GtkWindow* window")
+(CFNC-3.99 "void gtk_application_remove_window GtkApplication* application GtkWindow* window")
+(CFNC-3.99 "GList* gtk_application_get_windows GtkApplication* application")
+;for these see above (CFNC-3.99 "GMenuModel* gtk_application_get_app_menu GtkApplication* application")
+;(CFNC-3.99 "void gtk_application_set_app_menu GtkApplication* application GMenuModel* app_menu")
+;(CFNC-3.99 "GMenuModel* gtk_application_get_menubar GtkApplication* application")
+;(CFNC-3.99 "void gtk_application_set_menubar GtkApplication* application GMenuModel* menubar")
+;(CFNC-3.99 "GtkWindow* gtk_application_get_active_window GtkApplication* application")
+(CFNC-3.99 "guint gtk_application_inhibit GtkApplication* application GtkWindow* window GtkApplicationInhibitFlags flags gchar* reason" 'const)
+(CFNC-3.99 "void gtk_application_uninhibit GtkApplication* application guint cookie")
+(CFNC-3.99 "GtkWindow* gtk_application_get_window_by_id GtkApplication* application guint id")
+(CFNC-3.99 "gchar** gtk_application_list_action_descriptions GtkApplication* application")
+(CFNC-3.99 "gchar** gtk_application_get_accels_for_action GtkApplication* application gchar* detailed_action_name" 'const)
+(CFNC-3.99 "gchar** gtk_application_get_actions_for_accel GtkApplication* application gchar* accel" 'const)
+(CFNC-3.99 "void gtk_application_set_accels_for_action GtkApplication* application gchar* detailed_action_name gchar* accels" 'const)
+(CFNC-3.99 "gboolean gtk_application_prefers_app_menu GtkApplication* application")
+(CFNC-3.99 "GMenu* gtk_application_get_menu_by_id GtkApplication* application gchar* id" 'const)
+
+;;; TODO: g_application_run and various G_APPLICATION flags
+;;; /usr/incude/glib-2.0/gio/gapplication.h gapplicationcommandline.h gioenumtypes.h?
diff --git a/vct.h b/vct.h
index cbeaf62..204d117 100644
--- a/vct.h
+++ b/vct.h
@@ -48,7 +48,7 @@ MUS_EXPORT void mus_abs_floats(mus_float_t *dst, mus_long_t len) __attribute__ (
mus_long_t K; \
mus_float_t *dst; \
dst = Dst; \
- for (K = Len; K > 0; K--) \
+ for (K = 0; K < Len; K++) \
dst[K] = fabs(dst[K]); \
} while (0)
#endif
diff --git a/write.scm b/write.scm
index 8145a39..408f5dc 100644
--- a/write.scm
+++ b/write.scm
@@ -454,7 +454,7 @@
(display "(inlet" port)
(for-each (lambda (field)
(let ((symstr (symbol->string (car field))))
- (spaces port (+ column 2))
+ (spaces port (+ column 5))
(format port ":~A " symstr)
(pretty-print-1 (cdr field) port (+ column 2 (length symstr)))))
obj)
diff --git a/xen.c b/xen.c
index 611ba13..7341b7d 100644
--- a/xen.c
+++ b/xen.c
@@ -502,13 +502,23 @@ Xen xen_rb_eval_string_with_error(const char *str)
}
-Xen xen_rb_load_file_with_error(Xen file)
-{
- int status = 0;
- rb_load_protect(file, 0, &status);
- if (status != 0)
- return(xen_rb_obj_as_string(rb_gv_get("$!")));
- return(Xen_true);
+void xen_rb_load_file_with_error(const char *file)
+{
+ int status = 0, i;
+ Xen err, info;
+ rb_load_protect(C_string_to_Xen_string(file), 0, &status);
+ if (status == 0)
+ return;
+ fprintf(stderr, "Can't load %s", file);
+ err = rb_gv_get("$!");
+ if (err != Qnil)
+ fprintf(stderr, ": %s", Xen_object_to_C_string(err));
+ fprintf(stderr, "\n");
+ info = rb_gv_get("$@");
+ if (info == Qnil)
+ return;
+ for (i = 0; i < Xen_vector_length(info); i++)
+ fprintf(stderr, "%s\n", Xen_string_to_C_string(Xen_vector_ref(info, i)));
}
diff --git a/xen.h b/xen.h
index 48fa504..ec28596 100644
--- a/xen.h
+++ b/xen.h
@@ -315,7 +315,7 @@
#define XEN_NAME_AS_C_STRING_TO_VALUE(a) xen_rb_gv_get(a)
#define XEN_EVAL_C_STRING(Arg) xen_rb_eval_string_with_error(Arg)
#define XEN_TO_STRING(Obj) xen_rb_obj_as_string(Obj)
-#define XEN_LOAD_FILE(a) rb_load(C_TO_XEN_STRING(a), 0)
+#define XEN_LOAD_FILE(a) xen_rb_load_file_with_error(a)
#define XEN_LOAD_PATH XEN_NAME_AS_C_STRING_TO_VALUE("$LOAD_PATH")
#define XEN_ADD_TO_LOAD_PATH(Path) xen_rb_add_to_load_path(Path)
@@ -649,7 +649,7 @@ XEN xen_rb_list_set(XEN obj, int index, XEN value);
void xen_rb_raise(XEN type, XEN info);
XEN xen_rb_obj_as_string(XEN obj);
XEN xen_rb_eval_string_with_error(const char *str);
-XEN xen_rb_load_file_with_error(XEN file);
+void xen_rb_load_file_with_error(const char *file);
XEN xen_rb_ary_new_with_initial_element(long num, XEN element);
XEN xen_rb_apply(XEN func, XEN args);
XEN xen_rb_funcall_0(XEN func);
diff --git a/xg.c b/xg.c
index 1890fc1..002b364 100644
--- a/xg.c
+++ b/xg.c
@@ -205,7 +205,7 @@ static void define_xm_obj(void)
#define Xg_field_pre "F"
#endif
-static Xen xg_GtkContentFormats__symbol, xg_GtkStyleProvider__symbol, xg_GdkDisplay_gtk_invisible_get_display_symbol, xg_GtkInvisible__symbol, xg_GtkIconSize_symbol, xg_GValue_symbol, xg_GBytes__symbol, xg_GdkContentDeserializeFunc_symbol, xg_GdkContentDeserializer__symbol, xg_GdkContentSerializeFunc_symbol, xg_GdkContentSerializer__symbol, xg_GOutputStream__symbol, xg_GdkContentFormatsBuilder__symbol, xg_GdkContentFormatsBuilder_symbol, xg_GString__symbol, xg_va_list_symbol, xg_GdkTexture__symbol, xg_har___symbol, xg_GInputStream__symbol, xg_GAsyncResult__symbol, xg_GAsyncReadyCallback_symbol, xg_GCancellable__symbol, xg_GdkContentProvider__symbol, xg_GdkContentFormats__symbol, xg_GdkClipboard__symbol, xg_GdkAppLaunchContext__symbol, xg_GtkEventControllerScroll__symbol, xg_GtkEventControllerScrollFlags_symbol, xg_GtkSnapshot__symbol, xg_GdkTouchpadGesturePhase_symbol, xg_GdkNotifyType_symbol, xg_GdkCrossingMode_symbol, xg_GdkEventScroll__symbol, xg_GtkScrollbar__symbol, xg_GtkCenterBox__symbol, xg_GtkCheckButton__symbol, xg_GdkDrawContext__symbol, xg_GtkDrawingAreaDrawFunc_symbol, xg_GtkShortcutLabel__symbol, xg_GtkPadActionType_symbol, xg_GtkPadActionEntry__symbol, xg_GActionGroup__symbol, xg_GtkPadController__symbol, xg_GdkDevicePadFeature_symbol, xg_GdkDevicePad__symbol, xg_GdkDrawingContext__symbol, xg_GdkSubpixelLayout_symbol, xg_GdkMonitor__symbol, xg_GdkDeviceTool__symbol, xg_GdkAxisFlags_symbol, xg_GdkSeatGrabPrepareFunc_symbol, xg_GdkSeatCapabilities_symbol, xg_GdkGrabStatus_symbol, xg_GtkPopoverConstraint_symbol, xg_GtkShortcutsWindow__symbol, xg_GtkStackSidebar__symbol, xg_GtkSearchEntry__symbol, xg_GtkPopoverMenu__symbol, xg_GtkStyleContext__symbol, xg_GdkGLContext__symbol, xg_GtkGLArea__symbol, xg_GtkPropagationPhase_symbol, xg_GtkEventController__symbol, xg_GtkGestureZoom__symbol, xg_GtkGestureSwipe__symbol, xg_GtkGestureSingle__symbol, xg_GtkGestureRotate__symbol, xg_GtkGestureMultiPress__symbol, xg_GtkGesturePan__symbol, xg_GtkGestureDrag__symbol, xg_GdkEventSequence__symbol, xg_GtkEventSequenceState_symbol, xg_GtkGesture__symbol, xg_GtkAllocation__symbol, xg_GtkPopover__symbol, xg_GtkActionBar__symbol, xg_GtkFlowBox__symbol, xg_GtkFlowBoxChild__symbol, xg_GdkEventType_symbol, xg_GtkSearchBar__symbol, xg_GtkListBox__symbol, xg_GtkListBoxRow__symbol, xg_GtkHeaderBar__symbol, xg_GtkRevealerTransitionType_symbol, xg_GtkRevealer__symbol, xg_GtkStackTransitionType_symbol, xg_GtkStack__symbol, xg_GtkStackSwitcher__symbol, xg_GtkPlacesSidebar__symbol, xg_GtkPlacesOpenFlags_symbol, xg_GtkBaselinePosition_symbol, xg_GdkFullscreenMode_symbol, xg_GtkInputHints_symbol, xg_GtkInputPurpose_symbol, xg_GtkLevelBarMode_symbol, xg_GtkLevelBar__symbol, xg_GtkMenuButton__symbol, xg_GtkColorChooser__symbol, xg_GtkApplicationWindow__symbol, xg_GtkApplication__symbol, xg_GMenuModel__symbol, xg_guint___symbol, xg_GdkModifierIntent_symbol, xg_GtkFontChooser__symbol, xg_GdkScrollDirection_symbol, xg_GtkOverlay__symbol, xg_GtkWidgetPath__symbol, xg_GtkStateFlags_symbol, xg_GtkToolShell__symbol, xg_GtkWindowGroup__symbol, xg_GIcon__symbol, xg_GtkOrientable__symbol, xg_GtkCellArea__symbol, xg_GtkBorder__symbol, xg_GtkSwitch__symbol, xg_GtkScrollablePolicy_symbol, xg_GtkScrollable__symbol, xg_GtkGrid__symbol, xg_GdkRGBA__symbol, xg_GtkComboBoxText__symbol, xg_GtkAlign_symbol, xg_GtkSizeRequestMode_symbol, xg_cairo_region_overlap_t_symbol, xg_cairo_rectangle_int_t__symbol, xg_double__symbol, xg_cairo_rectangle_t__symbol, xg_cairo_device_t__symbol, xg_cairo_bool_t_symbol, xg_cairo_text_cluster_flags_t__symbol, xg_cairo_text_cluster_t___symbol, xg_cairo_glyph_t___symbol, xg_cairo_text_cluster_flags_t_symbol, xg_cairo_text_cluster_t__symbol, xg_cairo_region_t__symbol, xg_GtkMessageDialog__symbol, xg_GdkDevice__symbol, xg_GtkAccessible__symbol, xg_GdkModifierType__symbol, xg_GtkDestDefaults_symbol, xg_GtkToolPaletteDragTargets_symbol, xg_GtkToolItemGroup__symbol, xg_GtkToolPalette__symbol, xg_GtkPackType_symbol, xg_GtkSpinner__symbol, xg_GtkEntryBuffer__symbol, xg_GtkMessageType_symbol, xg_GtkInfoBar__symbol, xg_GtkEntryIconPosition_symbol, xg_GFile__symbol, xg_GtkScaleButton__symbol, xg_GtkCalendarDetailFunc_symbol, xg_GtkTooltip__symbol, xg_cairo_rectangle_list_t__symbol, xg_void__symbol, xg_cairo_filter_t_symbol, xg_cairo_extend_t_symbol, xg_cairo_format_t_symbol, xg_cairo_path_t__symbol, xg_cairo_destroy_func_t_symbol, xg_cairo_user_data_key_t__symbol, xg_cairo_text_extents_t__symbol, xg_cairo_font_extents_t__symbol, xg_cairo_font_face_t__symbol, xg_cairo_glyph_t__symbol, xg_cairo_scaled_font_t__symbol, xg_cairo_font_weight_t_symbol, xg_cairo_font_slant_t_symbol, xg_cairo_hint_metrics_t_symbol, xg_cairo_hint_style_t_symbol, xg_cairo_subpixel_order_t_symbol, xg_cairo_status_t_symbol, xg_bool_symbol, xg_cairo_matrix_t__symbol, xg_cairo_line_join_t_symbol, xg_cairo_line_cap_t_symbol, xg_cairo_fill_rule_t_symbol, xg_cairo_antialias_t_symbol, xg_cairo_operator_t_symbol, xg_cairo_pattern_t__symbol, xg_cairo_content_t_symbol, xg_GtkPageSet_symbol, xg_GtkPageRange__symbol, xg_GtkPrintPages_symbol, xg_GtkPrintQuality_symbol, xg_GtkPrintDuplex_symbol, xg_GtkPaperSize__symbol, xg_GtkPageOrientation_symbol, xg_GtkPrintSettingsFunc_symbol, xg_GtkPageSetupDoneFunc_symbol, xg_GtkPrintStatus_symbol, xg_GtkPrintOperationAction_symbol, xg_GtkPrintOperationResult_symbol, xg_GtkUnit_symbol, xg_GtkPrintSettings__symbol, xg_GtkPrintOperation__symbol, xg_GtkPageSetup__symbol, xg_GtkPrintContext__symbol, xg_cairo_surface_t__symbol, xg_GtkTreeViewGridLines_symbol, xg_GtkRecentData__symbol, xg_time_t_symbol, xg_GtkRecentChooserMenu__symbol, xg_GtkRecentManager__symbol, xg_GtkRecentFilter__symbol, xg_GtkRecentSortFunc_symbol, xg_GtkRecentSortType_symbol, xg_GtkRecentChooser__symbol, xg_GtkLinkButton__symbol, xg_GtkAssistantPageType_symbol, xg_GtkAssistantPageFunc_symbol, xg_GtkAssistant__symbol, xg_GDestroyNotify_symbol, xg_GtkTreeViewSearchPositionFunc_symbol, xg_GtkSensitivityType_symbol, xg_GtkMenuBar__symbol, xg_GtkPackDirection_symbol, xg_GtkIconViewDropPosition_symbol, xg_GValue__symbol, xg_GLogFunc_symbol, xg_PangoMatrix__symbol, xg_PangoRenderPart_symbol, xg_PangoRenderer__symbol, xg_GtkMenuToolButton__symbol, xg_GtkFileChooserButton__symbol, xg_PangoScriptIter__symbol, xg_PangoScript_symbol, xg_PangoAttrFilterFunc_symbol, xg_PangoEllipsizeMode_symbol, xg_GtkIconViewForeachFunc_symbol, xg_GtkAboutDialog__symbol, xg_GtkTreeViewRowSeparatorFunc_symbol, xg_GtkCellView__symbol, xg_GtkAccelMap__symbol, xg_GtkOrientation_symbol, xg_GtkToolButton__symbol, xg_GtkIconLookupFlags_symbol, xg_GtkIconInfo__symbol, xg_gchar___symbol, xg_GtkIconTheme__symbol, xg_GtkFileChooser__symbol, xg_GtkCellLayoutDataFunc_symbol, xg_GtkCellLayout__symbol, xg_GtkFileFilterFunc_symbol, xg_GtkFileFilterFlags_symbol, xg_GtkFileFilter__symbol, xg_GSourceFunc_symbol, xg_GtkToggleToolButton__symbol, xg_GtkSeparatorToolItem__symbol, xg_GtkRadioToolButton__symbol, xg_GtkEntryCompletionMatchFunc_symbol, xg_GtkFontButton__symbol, xg_GtkExpander__symbol, xg_GtkComboBox__symbol, xg_GtkTreeModelFilter__symbol, xg_GtkFileChooserAction_symbol, xg_GtkToolItem__symbol, xg_GtkCalendarDisplayOptions_symbol, xg_GdkDisplay__symbol, xg_PangoLayoutRun__symbol, xg_PangoLayoutIter__symbol, xg_PangoLayoutLine__symbol, xg_int__symbol, xg_PangoAlignment_symbol, xg_PangoWrapMode_symbol, xg_PangoItem__symbol, xg_PangoGlyphString__symbol, xg_PangoFontMap__symbol, xg_PangoGlyph_symbol, xg_PangoFontFace__symbol, xg_PangoFontFace___symbol, xg_PangoFontFamily__symbol, xg_PangoFontMask_symbol, xg_PangoFontDescription___symbol, xg_PangoCoverageLevel_symbol, xg_PangoCoverage__symbol, xg_PangoFontMetrics__symbol, xg_PangoFontset__symbol, xg_PangoFont__symbol, xg_PangoFontFamily___symbol, xg_PangoLogAttr__symbol, xg_PangoAnalysis__symbol, xg_PangoAttrList___symbol, xg_PangoAttrIterator__symbol, xg_PangoRectangle__symbol, xg_PangoUnderline_symbol, xg_PangoStretch_symbol, xg_PangoVariant_symbol, xg_PangoWeight_symbol, xg_PangoStyle_symbol, xg_guint16_symbol, xg_PangoAttribute__symbol, xg_PangoAttrType_symbol, xg_PangoColor__symbol, xg_GdkGravity_symbol, xg_GtkWindowPosition_symbol, xg_GtkWindowType_symbol, xg_GtkWindow__symbol, xg_GtkTextDirection_symbol, xg_PangoContext__symbol, xg_AtkObject__symbol, xg_GtkDirectionType_symbol, xg_GtkViewport__symbol, xg_GtkTreeViewSearchEqualFunc_symbol, xg_GtkTreeViewDropPosition_symbol, xg_GtkTreeViewMappingFunc_symbol, xg_GtkTreeViewColumnDropFunc_symbol, xg_GtkTreeViewColumnSizing_symbol, xg_GtkTreeCellDataFunc_symbol, xg_GtkTreeStore__symbol, xg_GtkTreeIterCompareFunc_symbol, xg_GtkSortType_symbol, xg_GtkTreeSortable__symbol, xg_GtkTreeSelectionForeachFunc_symbol, xg_GtkTreeModel___symbol, xg_GtkTreeSelectionFunc_symbol, xg_GtkSelectionMode_symbol, xg_GtkTreeModelSort__symbol, xg_GtkTreeModelForeachFunc_symbol, xg_GtkTreeModelFlags_symbol, xg_GtkTreeRowReference__symbol, xg_GtkTreeDragDest__symbol, xg_GtkTreeDragSource__symbol, xg_GtkToolbarStyle_symbol, xg_GtkToolbar__symbol, xg_GtkToggleButton__symbol, xg_PangoTabArray__symbol, xg_GtkWrapMode_symbol, xg_GtkTextWindowType_symbol, xg_GtkTextView__symbol, xg_GtkTextTagTableForeach_symbol, xg_GtkTextSearchFlags_symbol, xg_GtkTextCharPredicate_symbol, xg_GtkTextMark__symbol, xg_GtkTextChildAnchor__symbol, xg_GtkTextIter__symbol, xg_GtkTextTagTable__symbol, xg_GtkTextBuffer__symbol, xg_GtkStatusbar__symbol, xg_GtkSpinType_symbol, xg_GtkSpinButtonUpdatePolicy_symbol, xg_GtkSpinButton__symbol, xg_GtkSizeGroupMode_symbol, xg_GtkSizeGroup__symbol, xg_GtkSettings__symbol, xg_GtkCornerType_symbol, xg_GtkPolicyType_symbol, xg_GtkScrolledWindow__symbol, xg_GtkScale__symbol, xg_GtkRange__symbol, xg_GtkRadioMenuItem__symbol, xg_GtkRadioButton__symbol, xg_GtkProgressBar__symbol, xg_GtkPaned__symbol, xg_GtkPositionType_symbol, xg_GtkNotebook__symbol, xg_GtkMenuShell__symbol, xg_gint__symbol, xg_GtkMenuItem__symbol, xg_GtkMenu__symbol, xg_PangoLanguage__symbol, xg_GtkListStore__symbol, xg_GtkLayout__symbol, xg_GtkJustification_symbol, xg_GtkLabel__symbol, xg_guint16__symbol, xg_GtkIMContextSimple__symbol, xg_GdkEventKey__symbol, xg_PangoAttrList__symbol, xg_GtkIMContext__symbol, xg_GtkImageType_symbol, xg_GtkImage__symbol, xg_GtkShadowType_symbol, xg_GtkFrame__symbol, xg_GtkFixed__symbol, xg_PangoLayout__symbol, xg_GtkEntry__symbol, xg_GtkEditable__symbol, xg_etc_symbol, xg_GtkDialog__symbol, xg_GtkCallback_symbol, xg_GtkContainer__symbol, xg_GtkCheckMenuItem__symbol, xg_GtkCellRendererToggle__symbol, xg_GtkCellRendererText__symbol, xg_GtkCellRendererState_symbol, xg_GtkCellEditable__symbol, xg_GtkCalendar__symbol, xg_GtkReliefStyle_symbol, xg_GtkButton__symbol, xg_GtkBox__symbol, xg_GtkBin__symbol, xg_GtkBindingSet__symbol, xg_GtkButtonBox__symbol, xg_GtkButtonBoxStyle_symbol, xg_GtkAspectFrame__symbol, xg_GtkAdjustment__symbol, xg_GtkAccelMapForeach_symbol, xg_GtkAccelLabel__symbol, xg_GtkAccelGroupEntry__symbol, xg_lambda3_symbol, xg_GSList__symbol, xg_GObject__symbol, xg_GtkAccelFlags_symbol, xg_GtkAccelGroup__symbol, xg_GdkInterpType_symbol, xg_double_symbol, xg_gfloat_symbol, xg_guchar_symbol, xg_char___symbol, xg_GdkPixbufDestroyNotify_symbol, xg_GError__symbol, xg_char__symbol, xg_guchar__symbol, xg_int_symbol, xg_GdkColorspace_symbol, xg_GdkCursor__symbol, xg_GdkWindowTypeHint_symbol, xg_GdkWindowHints_symbol, xg_GdkGeometry__symbol, xg_GdkWindowEdge_symbol, xg_GdkWMFunction_symbol, xg_GdkWMDecoration_symbol, xg_GdkEventMask_symbol, xg_GList__symbol, xg_GdkWindowState_symbol, xg_GdkFilterFunc_symbol, xg_GdkWindowType_symbol, xg_PangoDirection_symbol, xg_GdkKeymapKey__symbol, xg_GdkKeymap__symbol, xg_GdkRectangle__symbol, xg_GdkEventFunc_symbol, xg_gdouble_symbol, xg_guint32_symbol, xg_GdkDragAction_symbol, xg_GdkDragContext__symbol, xg_GSignalMatchType_symbol, xg_GConnectFlags_symbol, xg_GtkDestroyNotify_symbol, xg_GSignalEmissionHook_symbol, xg_gulong_symbol, xg_GSignalInvocationHint__symbol, xg_GQuark_symbol, xg_guint__symbol, xg_GSignalQuery__symbol, xg_GType__symbol, xg_GSignalCMarshaller_symbol, xg_gpointer_symbol, xg_GSignalAccumulator_symbol, xg_GSignalFlags_symbol, xg_GType_symbol, xg_GClosureNotify_symbol, xg_GCallback_symbol, xg_GNormalizeMode_symbol, xg_glong_symbol, xg_gssize_symbol, xg_gunichar__symbol, xg_void_symbol, xg_GtkDrawingArea__symbol, xg_GdkSeat__symbol, xg_GtkRecentInfo__symbol, xg_gsize_symbol, xg_guint8__symbol, xg_GdkAtom_symbol, xg_GLogLevelFlags_symbol, xg_GdkPixbuf__symbol, xg_GtkIconView__symbol, xg_GtkEntryCompletion__symbol, xg_GtkFileFilterInfo__symbol, xg_GtkTreeSelection__symbol, xg_GtkCellRenderer__symbol, xg_GtkTreeViewColumn__symbol, xg_GtkTreeView__symbol, xg_gunichar_symbol, xg_gint_symbol, xg_GdkAtom__symbol, xg_GtkSelectionData__symbol, xg_GtkClipboard__symbol, xg_GtkTreeIter__symbol, xg_GtkTreePath__symbol, xg_GtkTreeModel__symbol, xg_gboolean_symbol, xg_GdkModifierType_symbol, xg_guint_symbol, xg_gchar__symbol, xg_GtkTextTag__symbol, xg_GdkXEvent__symbol, xg_GtkWidget__symbol, xg_lambda_data_symbol, xg_GClosure__symbol, xg_GtkAccelKey__symbol, xg_GdkEventMotion__symbol, xg_gdouble__symbol, xg_GdkEventAny__symbol, xg_GdkEvent__symbol, xg_GdkWindow__symbol, xg_cairo_t__symbol, xg_cairo_font_options_t__symbol, xg_PangoFontDescription__symbol, xg_idler_symbol, xg_GtkCellRendererPixbuf__symbol, xg_GtkSeparator__symbol, xg_GtkSeparatorMenuItem__symbol, xg_GdkEventExpose__symbol, xg_GdkEventNoExpose__symbol, xg_GdkEventVisibility__symbol, xg_GdkEventButton__symbol, xg_GdkEventCrossing__symbol, xg_GdkEventFocus__symbol, xg_GdkEventConfigure__symbol, xg_GdkEventProperty__symbol, xg_GdkEventSelection__symbol, xg_GdkEventProximity__symbol, xg_GdkEventSetting__symbol, xg_GdkEventWindowState__symbol, xg_GdkEventDND__symbol, xg_GtkFileChooserDialog__symbol, xg_GtkFileChooserWidget__symbol, xg_GtkColorButton__symbol, xg_GtkAccelMap_symbol, xg_GtkCellRendererCombo__symbol, xg_GtkCellRendererProgress__symbol, xg_GtkCellRendererAccel__symbol, xg_GtkCellRendererSpin__symbol, xg_GtkRecentChooserDialog__symbol, xg_GtkRecentChooserWidget__symbol, xg_GtkCellRendererSpinner__symbol, xg_gboolean__symbol, xg_GtkFontChooserDialog__symbol, xg_GtkFontChooserWidget__symbol, xg_GtkColorChooserDialog__symbol, xg_GtkColorChooserWidget__symbol, xg_GtkColorWidget__symbol, xg_GtkGestureLongPress__symbol;
+static Xen xg_GMenu__symbol, xg_GtkApplicationInhibitFlags_symbol, xg_GApplicationFlags_symbol, xg_GtkContentFormats__symbol, xg_GtkStyleProvider__symbol, xg_GdkAtom__symbol, xg_GdkDisplay_gtk_invisible_get_display_symbol, xg_GtkInvisible__symbol, xg_GtkIconSize_symbol, xg_GValue_symbol, xg_GBytes__symbol, xg_GdkContentDeserializeFunc_symbol, xg_GdkContentDeserializer__symbol, xg_GdkContentSerializeFunc_symbol, xg_GdkContentSerializer__symbol, xg_GOutputStream__symbol, xg_GdkContentFormatsBuilder__symbol, xg_GdkContentFormatsBuilder_symbol, xg_GString__symbol, xg_va_list_symbol, xg_GdkTexture__symbol, xg_har___symbol, xg_GInputStream__symbol, xg_GAsyncResult__symbol, xg_GAsyncReadyCallback_symbol, xg_GCancellable__symbol, xg_GdkContentProvider__symbol, xg_GdkContentFormats__symbol, xg_GdkClipboard__symbol, xg_GdkAppLaunchContext__symbol, xg_GtkEventControllerScroll__symbol, xg_GtkEventControllerScrollFlags_symbol, xg_GtkSnapshot__symbol, xg_GdkTouchpadGesturePhase_symbol, xg_GdkNotifyType_symbol, xg_GdkCrossingMode_symbol, xg_GdkEventScroll__symbol, xg_GtkScrollbar__symbol, xg_GtkCenterBox__symbol, xg_GtkCheckButton__symbol, xg_GdkDrawContext__symbol, xg_GtkDrawingAreaDrawFunc_symbol, xg_GtkShortcutLabel__symbol, xg_GtkPadActionType_symbol, xg_GtkPadActionEntry__symbol, xg_GActionGroup__symbol, xg_GtkPadController__symbol, xg_GdkDevicePadFeature_symbol, xg_GdkDevicePad__symbol, xg_GdkDrawingContext__symbol, xg_GdkSubpixelLayout_symbol, xg_GdkMonitor__symbol, xg_GdkDeviceTool__symbol, xg_GdkAxisFlags_symbol, xg_GdkSeatGrabPrepareFunc_symbol, xg_GdkSeatCapabilities_symbol, xg_GdkGrabStatus_symbol, xg_GtkPopoverConstraint_symbol, xg_GtkShortcutsWindow__symbol, xg_GtkStackSidebar__symbol, xg_GtkSearchEntry__symbol, xg_GtkPopoverMenu__symbol, xg_GtkStyleContext__symbol, xg_GdkGLContext__symbol, xg_GtkGLArea__symbol, xg_GtkPropagationPhase_symbol, xg_GtkEventController__symbol, xg_GtkGestureZoom__symbol, xg_GtkGestureSwipe__symbol, xg_GtkGestureSingle__symbol, xg_GtkGestureRotate__symbol, xg_GtkGestureMultiPress__symbol, xg_GtkGesturePan__symbol, xg_GtkGestureDrag__symbol, xg_GdkEventSequence__symbol, xg_GtkEventSequenceState_symbol, xg_GtkGesture__symbol, xg_GtkAllocation__symbol, xg_GtkPopover__symbol, xg_GtkActionBar__symbol, xg_GtkFlowBox__symbol, xg_GtkFlowBoxChild__symbol, xg_GdkEventType_symbol, xg_GtkSearchBar__symbol, xg_GtkListBox__symbol, xg_GtkListBoxRow__symbol, xg_GtkHeaderBar__symbol, xg_GtkRevealerTransitionType_symbol, xg_GtkRevealer__symbol, xg_GtkStackTransitionType_symbol, xg_GtkStack__symbol, xg_GtkStackSwitcher__symbol, xg_GtkPlacesSidebar__symbol, xg_GtkPlacesOpenFlags_symbol, xg_GtkBaselinePosition_symbol, xg_GdkFullscreenMode_symbol, xg_GtkInputHints_symbol, xg_GtkInputPurpose_symbol, xg_GtkLevelBarMode_symbol, xg_GtkLevelBar__symbol, xg_GtkMenuButton__symbol, xg_GtkColorChooser__symbol, xg_GtkApplicationWindow__symbol, xg_GtkApplication__symbol, xg_GMenuModel__symbol, xg_guint___symbol, xg_GdkModifierIntent_symbol, xg_GtkFontChooser__symbol, xg_GdkScrollDirection_symbol, xg_GtkOverlay__symbol, xg_GtkWidgetPath__symbol, xg_GtkStateFlags_symbol, xg_GtkToolShell__symbol, xg_GtkWindowGroup__symbol, xg_GIcon__symbol, xg_GtkOrientable__symbol, xg_GtkCellArea__symbol, xg_GtkBorder__symbol, xg_GtkSwitch__symbol, xg_GtkScrollablePolicy_symbol, xg_GtkScrollable__symbol, xg_GtkGrid__symbol, xg_GdkRGBA__symbol, xg_GtkComboBoxText__symbol, xg_GtkAlign_symbol, xg_GtkSizeRequestMode_symbol, xg_cairo_region_overlap_t_symbol, xg_cairo_rectangle_int_t__symbol, xg_double__symbol, xg_cairo_rectangle_t__symbol, xg_cairo_device_t__symbol, xg_cairo_bool_t_symbol, xg_cairo_text_cluster_flags_t__symbol, xg_cairo_text_cluster_t___symbol, xg_cairo_glyph_t___symbol, xg_cairo_text_cluster_flags_t_symbol, xg_cairo_text_cluster_t__symbol, xg_cairo_region_t__symbol, xg_GtkMessageDialog__symbol, xg_GdkDevice__symbol, xg_GtkAccessible__symbol, xg_GdkModifierType__symbol, xg_GtkDestDefaults_symbol, xg_GtkToolPaletteDragTargets_symbol, xg_GtkToolItemGroup__symbol, xg_GtkToolPalette__symbol, xg_GtkPackType_symbol, xg_GtkSpinner__symbol, xg_GtkEntryBuffer__symbol, xg_GtkMessageType_symbol, xg_GtkInfoBar__symbol, xg_GtkEntryIconPosition_symbol, xg_GFile__symbol, xg_GtkScaleButton__symbol, xg_GtkCalendarDetailFunc_symbol, xg_GtkTooltip__symbol, xg_cairo_rectangle_list_t__symbol, xg_void__symbol, xg_cairo_filter_t_symbol, xg_cairo_extend_t_symbol, xg_cairo_format_t_symbol, xg_cairo_path_t__symbol, xg_cairo_destroy_func_t_symbol, xg_cairo_user_data_key_t__symbol, xg_cairo_text_extents_t__symbol, xg_cairo_font_extents_t__symbol, xg_cairo_font_face_t__symbol, xg_cairo_glyph_t__symbol, xg_cairo_scaled_font_t__symbol, xg_cairo_font_weight_t_symbol, xg_cairo_font_slant_t_symbol, xg_cairo_hint_metrics_t_symbol, xg_cairo_hint_style_t_symbol, xg_cairo_subpixel_order_t_symbol, xg_cairo_status_t_symbol, xg_bool_symbol, xg_cairo_matrix_t__symbol, xg_cairo_line_join_t_symbol, xg_cairo_line_cap_t_symbol, xg_cairo_fill_rule_t_symbol, xg_cairo_antialias_t_symbol, xg_cairo_operator_t_symbol, xg_cairo_pattern_t__symbol, xg_cairo_content_t_symbol, xg_GtkPageSet_symbol, xg_GtkPageRange__symbol, xg_GtkPrintPages_symbol, xg_GtkPrintQuality_symbol, xg_GtkPrintDuplex_symbol, xg_GtkPaperSize__symbol, xg_GtkPageOrientation_symbol, xg_GtkPrintSettingsFunc_symbol, xg_GtkPageSetupDoneFunc_symbol, xg_GtkPrintStatus_symbol, xg_GtkPrintOperationAction_symbol, xg_GtkPrintOperationResult_symbol, xg_GtkUnit_symbol, xg_GtkPrintSettings__symbol, xg_GtkPrintOperation__symbol, xg_GtkPageSetup__symbol, xg_GtkPrintContext__symbol, xg_cairo_surface_t__symbol, xg_GtkTreeViewGridLines_symbol, xg_GtkRecentData__symbol, xg_time_t_symbol, xg_GtkRecentChooserMenu__symbol, xg_GtkRecentManager__symbol, xg_GtkRecentFilter__symbol, xg_GtkRecentSortFunc_symbol, xg_GtkRecentSortType_symbol, xg_GtkRecentChooser__symbol, xg_GtkLinkButton__symbol, xg_GtkAssistantPageType_symbol, xg_GtkAssistantPageFunc_symbol, xg_GtkAssistant__symbol, xg_GDestroyNotify_symbol, xg_GtkTreeViewSearchPositionFunc_symbol, xg_GtkSensitivityType_symbol, xg_GtkMenuBar__symbol, xg_GtkPackDirection_symbol, xg_GtkIconViewDropPosition_symbol, xg_GValue__symbol, xg_GLogFunc_symbol, xg_PangoMatrix__symbol, xg_PangoRenderPart_symbol, xg_PangoRenderer__symbol, xg_GtkMenuToolButton__symbol, xg_GtkFileChooserButton__symbol, xg_PangoScriptIter__symbol, xg_PangoScript_symbol, xg_PangoAttrFilterFunc_symbol, xg_PangoEllipsizeMode_symbol, xg_GtkIconViewForeachFunc_symbol, xg_GtkAboutDialog__symbol, xg_GtkTreeViewRowSeparatorFunc_symbol, xg_GtkCellView__symbol, xg_GtkAccelMap__symbol, xg_GtkOrientation_symbol, xg_GtkToolButton__symbol, xg_GtkIconLookupFlags_symbol, xg_GtkIconInfo__symbol, xg_gchar___symbol, xg_GtkIconTheme__symbol, xg_GtkFileChooser__symbol, xg_GtkCellLayoutDataFunc_symbol, xg_GtkCellLayout__symbol, xg_GtkFileFilterFunc_symbol, xg_GtkFileFilterFlags_symbol, xg_GtkFileFilter__symbol, xg_GSourceFunc_symbol, xg_GtkToggleToolButton__symbol, xg_GtkSeparatorToolItem__symbol, xg_GtkRadioToolButton__symbol, xg_GtkEntryCompletionMatchFunc_symbol, xg_GtkFontButton__symbol, xg_GtkExpander__symbol, xg_GtkComboBox__symbol, xg_GtkTreeModelFilter__symbol, xg_GtkFileChooserAction_symbol, xg_GtkToolItem__symbol, xg_GtkCalendarDisplayOptions_symbol, xg_GdkDisplay__symbol, xg_PangoLayoutRun__symbol, xg_PangoLayoutIter__symbol, xg_PangoLayoutLine__symbol, xg_int__symbol, xg_PangoAlignment_symbol, xg_PangoWrapMode_symbol, xg_PangoItem__symbol, xg_PangoGlyphString__symbol, xg_PangoFontMap__symbol, xg_PangoGlyph_symbol, xg_PangoFontFace__symbol, xg_PangoFontFace___symbol, xg_PangoFontFamily__symbol, xg_PangoFontMask_symbol, xg_PangoFontDescription___symbol, xg_PangoCoverageLevel_symbol, xg_PangoCoverage__symbol, xg_PangoFontMetrics__symbol, xg_PangoFontset__symbol, xg_PangoFont__symbol, xg_PangoFontFamily___symbol, xg_PangoLogAttr__symbol, xg_PangoAnalysis__symbol, xg_PangoAttrList___symbol, xg_PangoAttrIterator__symbol, xg_PangoRectangle__symbol, xg_PangoUnderline_symbol, xg_PangoStretch_symbol, xg_PangoVariant_symbol, xg_PangoWeight_symbol, xg_PangoStyle_symbol, xg_guint16_symbol, xg_PangoAttribute__symbol, xg_PangoAttrType_symbol, xg_PangoColor__symbol, xg_GdkGravity_symbol, xg_GtkWindowPosition_symbol, xg_GtkWindowType_symbol, xg_GtkWindow__symbol, xg_GtkTextDirection_symbol, xg_PangoContext__symbol, xg_AtkObject__symbol, xg_GtkDirectionType_symbol, xg_GtkViewport__symbol, xg_GtkTreeViewSearchEqualFunc_symbol, xg_GtkTreeViewDropPosition_symbol, xg_GtkTreeViewMappingFunc_symbol, xg_GtkTreeViewColumnDropFunc_symbol, xg_GtkTreeViewColumnSizing_symbol, xg_GtkTreeCellDataFunc_symbol, xg_GtkTreeStore__symbol, xg_GtkTreeIterCompareFunc_symbol, xg_GtkSortType_symbol, xg_GtkTreeSortable__symbol, xg_GtkTreeSelectionForeachFunc_symbol, xg_GtkTreeModel___symbol, xg_GtkTreeSelectionFunc_symbol, xg_GtkSelectionMode_symbol, xg_GtkTreeModelSort__symbol, xg_GtkTreeModelForeachFunc_symbol, xg_GtkTreeModelFlags_symbol, xg_GtkTreeRowReference__symbol, xg_GtkTreeDragDest__symbol, xg_GtkTreeDragSource__symbol, xg_GtkToolbarStyle_symbol, xg_GtkToolbar__symbol, xg_GtkToggleButton__symbol, xg_PangoTabArray__symbol, xg_GtkWrapMode_symbol, xg_GtkTextWindowType_symbol, xg_GtkTextView__symbol, xg_GtkTextTagTableForeach_symbol, xg_GtkTextSearchFlags_symbol, xg_GtkTextCharPredicate_symbol, xg_GtkTextMark__symbol, xg_GtkTextChildAnchor__symbol, xg_GtkTextIter__symbol, xg_GtkTextTagTable__symbol, xg_GtkTextBuffer__symbol, xg_GtkStatusbar__symbol, xg_GtkSpinType_symbol, xg_GtkSpinButtonUpdatePolicy_symbol, xg_GtkSpinButton__symbol, xg_GtkSizeGroupMode_symbol, xg_GtkSizeGroup__symbol, xg_GtkSettings__symbol, xg_GtkSelectionData__symbol, xg_GtkCornerType_symbol, xg_GtkPolicyType_symbol, xg_GtkScrolledWindow__symbol, xg_GtkScale__symbol, xg_GtkRange__symbol, xg_GtkRadioMenuItem__symbol, xg_GtkRadioButton__symbol, xg_GtkProgressBar__symbol, xg_GtkPaned__symbol, xg_GtkPositionType_symbol, xg_GtkNotebook__symbol, xg_GtkMenuShell__symbol, xg_gint__symbol, xg_GtkMenuItem__symbol, xg_GtkMenu__symbol, xg_PangoLanguage__symbol, xg_GtkListStore__symbol, xg_GtkLayout__symbol, xg_GtkJustification_symbol, xg_GtkLabel__symbol, xg_guint16__symbol, xg_GtkIMContextSimple__symbol, xg_GdkEventKey__symbol, xg_PangoAttrList__symbol, xg_GtkIMContext__symbol, xg_GtkImageType_symbol, xg_GtkImage__symbol, xg_GtkShadowType_symbol, xg_GtkFrame__symbol, xg_GtkFixed__symbol, xg_PangoLayout__symbol, xg_GtkEntry__symbol, xg_GtkEditable__symbol, xg_GdkAtom_symbol, xg_etc_symbol, xg_GtkDialog__symbol, xg_GtkCallback_symbol, xg_GtkContainer__symbol, xg_GtkCheckMenuItem__symbol, xg_GtkCellRendererToggle__symbol, xg_GtkCellRendererText__symbol, xg_GtkCellRendererState_symbol, xg_GtkCellEditable__symbol, xg_GtkCalendar__symbol, xg_GtkReliefStyle_symbol, xg_GtkButton__symbol, xg_GtkBox__symbol, xg_GtkBin__symbol, xg_GtkBindingSet__symbol, xg_GtkButtonBox__symbol, xg_GtkButtonBoxStyle_symbol, xg_GtkAspectFrame__symbol, xg_GtkAdjustment__symbol, xg_GtkAccelMapForeach_symbol, xg_GtkAccelLabel__symbol, xg_GtkAccelGroupEntry__symbol, xg_lambda3_symbol, xg_GSList__symbol, xg_GObject__symbol, xg_GtkAccelFlags_symbol, xg_GtkAccelGroup__symbol, xg_GdkInterpType_symbol, xg_double_symbol, xg_gfloat_symbol, xg_guchar_symbol, xg_char___symbol, xg_GdkPixbufDestroyNotify_symbol, xg_GError__symbol, xg_char__symbol, xg_guchar__symbol, xg_int_symbol, xg_GdkPixbuf__symbol, xg_GdkColorspace_symbol, xg_GdkCursor__symbol, xg_GdkWindowTypeHint_symbol, xg_GdkWindowHints_symbol, xg_GdkGeometry__symbol, xg_GdkWindowEdge_symbol, xg_GdkWMFunction_symbol, xg_GdkWMDecoration_symbol, xg_GdkEventMask_symbol, xg_GList__symbol, xg_GdkWindowState_symbol, xg_GdkFilterFunc_symbol, xg_GdkWindowType_symbol, xg_PangoDirection_symbol, xg_GdkKeymapKey__symbol, xg_GdkKeymap__symbol, xg_GdkRectangle__symbol, xg_GdkEventFunc_symbol, xg_gdouble_symbol, xg_guint32_symbol, xg_GdkDragAction_symbol, xg_GdkDragContext__symbol, xg_GSignalMatchType_symbol, xg_GConnectFlags_symbol, xg_GtkDestroyNotify_symbol, xg_GSignalEmissionHook_symbol, xg_gulong_symbol, xg_GSignalInvocationHint__symbol, xg_GQuark_symbol, xg_guint__symbol, xg_GSignalQuery__symbol, xg_GType__symbol, xg_GSignalCMarshaller_symbol, xg_gpointer_symbol, xg_GSignalAccumulator_symbol, xg_GSignalFlags_symbol, xg_GType_symbol, xg_GClosureNotify_symbol, xg_GCallback_symbol, xg_GNormalizeMode_symbol, xg_glong_symbol, xg_gssize_symbol, xg_gsize_symbol, xg_gunichar__symbol, xg_void_symbol, xg_GtkDrawingArea__symbol, xg_GdkSeat__symbol, xg_GtkRecentInfo__symbol, xg_GLogLevelFlags_symbol, xg_GtkIconView__symbol, xg_GtkEntryCompletion__symbol, xg_GtkFileFilterInfo__symbol, xg_GtkTreeSelection__symbol, xg_GtkCellRenderer__symbol, xg_gint_symbol, xg_GtkTreeViewColumn__symbol, xg_GtkTreeView__symbol, xg_gunichar_symbol, xg_GtkTreeIter__symbol, xg_GtkTreePath__symbol, xg_GtkTreeModel__symbol, xg_gboolean_symbol, xg_GdkModifierType_symbol, xg_guint_symbol, xg_gchar__symbol, xg_GtkTextTag__symbol, xg_GdkXEvent__symbol, xg_GtkWidget__symbol, xg_lambda_data_symbol, xg_GClosure__symbol, xg_GtkAccelKey__symbol, xg_GdkEventMotion__symbol, xg_gdouble__symbol, xg_GdkEventAny__symbol, xg_GdkEvent__symbol, xg_GdkWindow__symbol, xg_cairo_t__symbol, xg_cairo_font_options_t__symbol, xg_PangoFontDescription__symbol, xg_idler_symbol, xg_GtkCellRendererPixbuf__symbol, xg_GtkSeparator__symbol, xg_GtkSeparatorMenuItem__symbol, xg_GdkEventExpose__symbol, xg_GdkEventNoExpose__symbol, xg_GdkEventVisibility__symbol, xg_GdkEventButton__symbol, xg_GdkEventCrossing__symbol, xg_GdkEventFocus__symbol, xg_GdkEventConfigure__symbol, xg_GdkEventProperty__symbol, xg_GdkEventSelection__symbol, xg_GdkEventProximity__symbol, xg_GdkEventSetting__symbol, xg_GdkEventWindowState__symbol, xg_GdkEventDND__symbol, xg_GtkFileChooserDialog__symbol, xg_GtkFileChooserWidget__symbol, xg_GtkColorButton__symbol, xg_GtkAccelMap_symbol, xg_GtkCellRendererCombo__symbol, xg_GtkCellRendererProgress__symbol, xg_GtkCellRendererAccel__symbol, xg_GtkCellRendererSpin__symbol, xg_GtkRecentChooserDialog__symbol, xg_GtkRecentChooserWidget__symbol, xg_GtkCellRendererSpinner__symbol, xg_gboolean__symbol, xg_GtkFontChooserDialog__symbol, xg_GtkFontChooserWidget__symbol, xg_GtkColorChooserDialog__symbol, xg_GtkColorChooserWidget__symbol, xg_GtkColorWidget__symbol, xg_GtkGestureLongPress__symbol;
#define wrap_for_Xen(Name, Value) Xen_list_2(xg_ ## Name ## _symbol, Xen_wrap_C_pointer(Value))
#define is_wrapped(Name, Value) (Xen_is_pair(Value) && (Xen_car(Value) == xg_ ## Name ## _symbol))
@@ -250,9 +250,6 @@ static Xen xg_GtkContentFormats__symbol, xg_GtkStyleProvider__symbol, xg_GdkDisp
#define Xen_is_GtkAccelMapForeach(Arg) Xen_is_false(Arg) || (Xen_is_procedure(Arg) && (Xen_is_aritable(Arg, 5)))
#define Xen_is_GtkTreeModelForeachFunc(Arg) Xen_is_false(Arg) || (Xen_is_procedure(Arg) && (Xen_is_aritable(Arg, 4)))
#define Xen_is_GtkTreeSelectionForeachFunc(Arg) Xen_is_false(Arg) || (Xen_is_procedure(Arg) && (Xen_is_aritable(Arg, 4)))
-#define Xen_is_GtkClipboardReceivedFunc(Arg) Xen_is_false(Arg) || (Xen_is_procedure(Arg) && (Xen_is_aritable(Arg, 3)))
-#define Xen_is_GtkClipboardTextReceivedFunc(Arg) Xen_is_false(Arg) || (Xen_is_procedure(Arg) && (Xen_is_aritable(Arg, 3)))
-#define Xen_is_GtkClipboardTargetsReceivedFunc(Arg) Xen_is_false(Arg) || (Xen_is_procedure(Arg) && (Xen_is_aritable(Arg, 4)))
#define Xen_is_GtkTextCharPredicate(Arg) Xen_is_false(Arg) || (Xen_is_procedure(Arg) && (Xen_is_aritable(Arg, 2)))
#define Xen_is_GtkTreeViewColumnDropFunc(Arg) Xen_is_false(Arg) || (Xen_is_procedure(Arg) && (Xen_is_aritable(Arg, 5)))
#define Xen_is_GtkTreeViewMappingFunc(Arg) Xen_is_false(Arg) || (Xen_is_procedure(Arg) && (Xen_is_aritable(Arg, 3)))
@@ -260,15 +257,11 @@ static Xen xg_GtkContentFormats__symbol, xg_GtkStyleProvider__symbol, xg_GdkDisp
#define Xen_is_GtkTreeCellDataFunc(Arg) Xen_is_false(Arg) || (Xen_is_procedure(Arg) && (Xen_is_aritable(Arg, 5)))
#define Xen_is_GtkTreeIterCompareFunc(Arg) Xen_is_false(Arg) || (Xen_is_procedure(Arg) && (Xen_is_aritable(Arg, 4)))
#define Xen_is_GtkTreeSelectionFunc(Arg) Xen_is_false(Arg) || (Xen_is_procedure(Arg) && (Xen_is_aritable(Arg, 5)))
-#define Xen_is_GtkClipboardGetFunc(Arg) Xen_is_false(Arg) || (Xen_is_procedure(Arg) && (Xen_is_aritable(Arg, 4)))
-#define Xen_is_GtkClipboardClearFunc(Arg) Xen_is_false(Arg) || (Xen_is_procedure(Arg) && (Xen_is_aritable(Arg, 2)))
#define Xen_is_GtkFileFilterFunc(Arg) Xen_is_false(Arg) || (Xen_is_procedure(Arg) && (Xen_is_aritable(Arg, 2)))
#define Xen_is_GtkEntryCompletionMatchFunc(Arg) Xen_is_false(Arg) || (Xen_is_procedure(Arg) && (Xen_is_aritable(Arg, 4)))
#define Xen_is_GtkTreeViewRowSeparatorFunc(Arg) Xen_is_false(Arg) || (Xen_is_procedure(Arg) && (Xen_is_aritable(Arg, 3)))
#define Xen_is_GtkIconViewForeachFunc(Arg) Xen_is_false(Arg) || (Xen_is_procedure(Arg) && (Xen_is_aritable(Arg, 3)))
-#define Xen_is_GtkClipboardImageReceivedFunc(Arg) Xen_is_false(Arg) || (Xen_is_procedure(Arg) && (Xen_is_aritable(Arg, 3)))
#define Xen_is_GLogFunc(Arg) Xen_is_false(Arg) || (Xen_is_procedure(Arg) && (Xen_is_aritable(Arg, 4)))
-#define Xen_is_GtkClipboardRichTextReceivedFunc(Arg) Xen_is_false(Arg) || (Xen_is_procedure(Arg) && (Xen_is_aritable(Arg, 5)))
#define Xen_is_GtkTreeViewSearchPositionFunc(Arg) Xen_is_false(Arg) || (Xen_is_procedure(Arg) && (Xen_is_aritable(Arg, 3)))
#define Xen_is_GtkAssistantPageFunc(Arg) Xen_is_false(Arg) || (Xen_is_procedure(Arg) && (Xen_is_aritable(Arg, 2)))
#define Xen_is_GtkRecentSortFunc(Arg) Xen_is_false(Arg) || (Xen_is_procedure(Arg) && (Xen_is_aritable(Arg, 3)))
@@ -285,9 +278,6 @@ static Xen xg_GtkContentFormats__symbol, xg_GtkStyleProvider__symbol, xg_GdkDisp
#define Xen_to_C_GtkAccelMapForeach(Arg) Xen_is_false(Arg) ? NULL : gxg_accel_map_foreach
#define Xen_to_C_GtkTreeModelForeachFunc(Arg) Xen_is_false(Arg) ? NULL : gxg_model_func
#define Xen_to_C_GtkTreeSelectionForeachFunc(Arg) Xen_is_false(Arg) ? NULL : gxg_tree_selection_func
-#define Xen_to_C_GtkClipboardReceivedFunc(Arg) Xen_is_false(Arg) ? NULL : gxg_clip_received
-#define Xen_to_C_GtkClipboardTextReceivedFunc(Arg) Xen_is_false(Arg) ? NULL : gxg_clip_text_received
-#define Xen_to_C_GtkClipboardTargetsReceivedFunc(Arg) Xen_is_false(Arg) ? NULL : gxg_clip_targets_received
#define Xen_to_C_GtkTextCharPredicate(Arg) Xen_is_false(Arg) ? NULL : gxg_text_char_predicate
#define Xen_to_C_GtkTreeViewColumnDropFunc(Arg) Xen_is_false(Arg) ? NULL : gxg_tree_column
#define Xen_to_C_GtkTreeViewMappingFunc(Arg) Xen_is_false(Arg) ? NULL : gxg_tree_mapping
@@ -295,15 +285,11 @@ static Xen xg_GtkContentFormats__symbol, xg_GtkStyleProvider__symbol, xg_GdkDisp
#define Xen_to_C_GtkTreeCellDataFunc(Arg) Xen_is_false(Arg) ? NULL : gxg_cell_data
#define Xen_to_C_GtkTreeIterCompareFunc(Arg) Xen_is_false(Arg) ? NULL : gxg_iter_compare
#define Xen_to_C_GtkTreeSelectionFunc(Arg) Xen_is_false(Arg) ? NULL : gxg_tree_selection
-#define Xen_to_C_GtkClipboardGetFunc(Arg) Xen_is_false(Arg) ? NULL : gxg_clip_get
-#define Xen_to_C_GtkClipboardClearFunc(Arg) Xen_is_false(Arg) ? NULL : gxg_clip_clear
#define Xen_to_C_GtkFileFilterFunc(Arg) Xen_is_false(Arg) ? NULL : gxg_file_filter
#define Xen_to_C_GtkEntryCompletionMatchFunc(Arg) Xen_is_false(Arg) ? NULL : gxg_entry_completion_match
#define Xen_to_C_GtkTreeViewRowSeparatorFunc(Arg) Xen_is_false(Arg) ? NULL : gxg_row_separator
#define Xen_to_C_GtkIconViewForeachFunc(Arg) Xen_is_false(Arg) ? NULL : gxg_icon_view_foreach
-#define Xen_to_C_GtkClipboardImageReceivedFunc(Arg) Xen_is_false(Arg) ? NULL : gxg_clip_image_received
#define Xen_to_C_GLogFunc(Arg) Xen_is_false(Arg) ? NULL : gxg_g_message_log_func
-#define Xen_to_C_GtkClipboardRichTextReceivedFunc(Arg) Xen_is_false(Arg) ? NULL : gxg_clip_rich_text_received
#define Xen_to_C_GtkTreeViewSearchPositionFunc(Arg) Xen_is_false(Arg) ? NULL : gxg_search_position
#define Xen_to_C_GtkAssistantPageFunc(Arg) Xen_is_false(Arg) ? NULL : gxg_page_func
#define Xen_to_C_GtkRecentSortFunc(Arg) Xen_is_false(Arg) ? NULL : gxg_recent_sort
@@ -359,34 +345,28 @@ Xm_type_Ptr(GtkTextTag_, GtkTextTag*)
Xm_type_Ptr(GtkTreeModel_, GtkTreeModel*)
Xm_type_Ptr(GtkTreePath_, GtkTreePath*)
Xm_type_Ptr(GtkTreeIter_, GtkTreeIter*)
-Xm_type_Ptr(GtkClipboard_, GtkClipboard*)
-Xm_type_Ptr(GtkSelectionData_, GtkSelectionData*)
-Xm_type_Ptr(GdkAtom_, GdkAtom*)
-#define C_to_Xen_gint(Arg) C_int_to_Xen_integer(Arg)
-#define Xen_to_C_gint(Arg) (gint)(Xen_integer_to_C_int(Arg))
-#define Xen_is_gint(Arg) Xen_is_integer(Arg)
#define C_to_Xen_gunichar(Arg) C_ulong_to_Xen_ulong(Arg)
#define Xen_to_C_gunichar(Arg) (gunichar)(Xen_ulong_to_C_ulong(Arg))
#define Xen_is_gunichar(Arg) Xen_is_ulong(Arg)
Xm_type_Ptr(GtkTreeView_, GtkTreeView*)
Xm_type_Ptr(GtkTreeViewColumn_, GtkTreeViewColumn*)
+#define C_to_Xen_gint(Arg) C_int_to_Xen_integer(Arg)
+#define Xen_to_C_gint(Arg) (gint)(Xen_integer_to_C_int(Arg))
+#define Xen_is_gint(Arg) Xen_is_integer(Arg)
Xm_type_Ptr(GtkCellRenderer_, GtkCellRenderer*)
Xm_type_Ptr(GtkTreeSelection_, GtkTreeSelection*)
Xm_type_Ptr(GtkFileFilterInfo_, GtkFileFilterInfo*)
Xm_type_Ptr(GtkEntryCompletion_, GtkEntryCompletion*)
Xm_type_Ptr(GtkIconView_, GtkIconView*)
-Xm_type_Ptr(GdkPixbuf_, GdkPixbuf*)
#define C_to_Xen_GLogLevelFlags(Arg) C_int_to_Xen_integer(Arg)
#define Xen_to_C_GLogLevelFlags(Arg) (GLogLevelFlags)(Xen_integer_to_C_int(Arg))
#define Xen_is_GLogLevelFlags(Arg) Xen_is_integer(Arg)
-Xm_type(GdkAtom, GdkAtom)
-Xm_type_Ptr_const(guint8_, guint8*)
-#define C_to_Xen_gsize(Arg) C_int_to_Xen_integer(Arg)
-#define Xen_to_C_gsize(Arg) (gsize)(Xen_integer_to_C_int(Arg))
-#define Xen_is_gsize(Arg) Xen_is_integer(Arg)
Xm_type_Ptr(GtkRecentInfo_, GtkRecentInfo*)
#define Xen_to_C_gunichar_(Arg) (gunichar*)(Xen_string_to_C_string(Arg))
#define Xen_is_gunichar_(Arg) Xen_is_string(Arg)
+#define C_to_Xen_gsize(Arg) C_int_to_Xen_integer(Arg)
+#define Xen_to_C_gsize(Arg) (gsize)(Xen_integer_to_C_int(Arg))
+#define Xen_is_gsize(Arg) Xen_is_integer(Arg)
#define Xen_to_C_gssize(Arg) (gssize)(Xen_integer_to_C_int(Arg))
#define Xen_is_gssize(Arg) Xen_is_integer(Arg)
#define C_to_Xen_glong(Arg) C_int_to_Xen_integer(Arg)
@@ -454,6 +434,7 @@ Xm_type_Ptr(GdkCursor_, GdkCursor*)
#define C_to_Xen_GdkColorspace(Arg) C_int_to_Xen_integer(Arg)
#define Xen_to_C_GdkColorspace(Arg) (GdkColorspace)(Xen_integer_to_C_int(Arg))
#define Xen_is_GdkColorspace(Arg) Xen_is_integer(Arg)
+Xm_type_Ptr(GdkPixbuf_, GdkPixbuf*)
#define C_to_Xen_int(Arg) C_int_to_Xen_integer(Arg)
#define Xen_to_C_int(Arg) (int)(Xen_integer_to_C_int(Arg))
#define Xen_is_int(Arg) Xen_is_integer(Arg)
@@ -505,6 +486,7 @@ Xm_type_Ptr_1(GtkCheckMenuItem_, GtkCheckMenuItem*)
Xm_type_Ptr_1(GtkContainer_, GtkContainer*)
Xm_type_Ptr_1(GtkDialog_, GtkDialog*)
#define Xen_is_etc(Arg) (Xen_is_list(Arg))
+Xm_type(GdkAtom, GdkAtom)
Xm_type_Ptr_1(GtkEditable_, GtkEditable*)
Xm_type_Ptr(GtkEntry_, GtkEntry*)
Xm_type_Ptr(PangoLayout_, PangoLayout*)
@@ -548,6 +530,7 @@ Xm_type_Ptr_1(GtkScrolledWindow_, GtkScrolledWindow*)
#define C_to_Xen_GtkCornerType(Arg) C_int_to_Xen_integer(Arg)
#define Xen_to_C_GtkCornerType(Arg) (GtkCornerType)(Xen_integer_to_C_int(Arg))
#define Xen_is_GtkCornerType(Arg) Xen_is_integer(Arg)
+Xm_type_Ptr(GtkSelectionData_, GtkSelectionData*)
Xm_type_Ptr(GtkSettings_, GtkSettings*)
Xm_type_Ptr(GtkSizeGroup_, GtkSizeGroup*)
#define C_to_Xen_GtkSizeGroupMode(Arg) C_int_to_Xen_integer(Arg)
@@ -1010,8 +993,14 @@ Xm_type(GValue, GValue)
#define Xen_is_GtkIconSize(Arg) Xen_is_integer(Arg)
Xm_type_Ptr_1(GtkInvisible_, GtkInvisible*)
Xm_type_Ptr(GdkDisplay_gtk_invisible_get_display, GdkDisplay*gtk_invisible_get_display)
+Xm_type_Ptr(GdkAtom_, GdkAtom*)
Xm_type_Ptr(GtkStyleProvider_, GtkStyleProvider*)
Xm_type_Ptr(GtkContentFormats_, GtkContentFormats*)
+Xm_type(GApplicationFlags, GApplicationFlags)
+#define C_to_Xen_GtkApplicationInhibitFlags(Arg) C_int_to_Xen_integer(Arg)
+#define Xen_to_C_GtkApplicationInhibitFlags(Arg) (GtkApplicationInhibitFlags)(Xen_integer_to_C_int(Arg))
+#define Xen_is_GtkApplicationInhibitFlags(Arg) Xen_is_integer(Arg)
+Xm_type_Ptr(GMenu_, GMenu*)
#endif
Xm_type_Ptr(cairo_surface_t_, cairo_surface_t*)
@@ -1098,7 +1087,7 @@ Xm_type_no_p_2(cairo_region_overlap_t, cairo_region_overlap_t)
#define XLL(a, b) (Xen_llong_to_C_llong(Xen_list_ref(a, b)))
#define XLG(a, b) Xen_to_C_GType(Xen_list_ref(a, b))
#define XLT(a, b) Xen_to_C_GtkTextTag_(Xen_list_ref(a, b))
-#define XLA(a, b) ((Xen_is_integer(Xen_list_ref(a, b))) ? ((gpointer)XLL(a, b)) : ((Xen_is_string(Xen_list_ref(a, b))) ? ((gpointer)XLS(a, b)) : ((gpointer)XLG(a, b))))
+#define XLA(a, b) ((Xen_is_integer(Xen_list_ref(a, b))) ? ((gpointer)((intptr_t)XLL(a, b))) : ((Xen_is_string(Xen_list_ref(a, b))) ? ((gpointer)XLS(a, b)) : ((gpointer)XLG(a, b))))
/* -------------------------------- gc protection -------------------------------- */
@@ -1250,37 +1239,6 @@ static void gxg_tree_selection_func(GtkTreeModel* model, GtkTreePath* path, GtkT
__func__);
}
-static void gxg_clip_received(GtkClipboard* clipboard, GtkSelectionData* selection_data, gpointer func_info)
-{
- if (!Xen_is_list((Xen)func_info)) return;
- Xen_call_with_3_args(Xen_car((Xen)func_info),
- C_to_Xen_GtkClipboard_(clipboard),
- C_to_Xen_GtkSelectionData_(selection_data),
- Xen_cadr((Xen)func_info),
- __func__);
-}
-
-static void gxg_clip_text_received(GtkClipboard* clipboard, const gchar* text, gpointer func_info)
-{
- if (!Xen_is_list((Xen)func_info)) return;
- Xen_call_with_3_args(Xen_car((Xen)func_info),
- C_to_Xen_GtkClipboard_(clipboard),
- C_to_Xen_gchar_(text),
- Xen_cadr((Xen)func_info),
- __func__);
-}
-
-static void gxg_clip_targets_received(GtkClipboard* clipboard, GdkAtom* atoms, gint n_atoms, gpointer func_info)
-{
- if (!Xen_is_list((Xen)func_info)) return;
- Xen_call_with_4_args(Xen_car((Xen)func_info),
- C_to_Xen_GtkClipboard_(clipboard),
- C_to_Xen_GdkAtom_(atoms),
- C_to_Xen_gint(n_atoms),
- Xen_cadr((Xen)func_info),
- __func__);
-}
-
static gboolean gxg_text_char_predicate(gunichar ch, gpointer func_info)
{
if (!Xen_is_list((Xen)func_info)) return((gboolean)0);
@@ -1359,26 +1317,6 @@ static gboolean gxg_tree_selection(GtkTreeSelection* selection, GtkTreeModel* mo
__func__)));
}
-static void gxg_clip_get(GtkClipboard* clipboard, GtkSelectionData* selection_data, guint info, gpointer func_info)
-{
- if (!Xen_is_list((Xen)func_info)) return;
- Xen_call_with_4_args(Xen_car((Xen)func_info),
- C_to_Xen_GtkClipboard_(clipboard),
- C_to_Xen_GtkSelectionData_(selection_data),
- C_to_Xen_guint(info),
- Xen_cadr((Xen)func_info),
- __func__);
-}
-
-static void gxg_clip_clear(GtkClipboard* clipboard, gpointer func_info)
-{
- if (!Xen_is_list((Xen)func_info)) return;
- Xen_call_with_2_args(Xen_caddr((Xen)func_info),
- C_to_Xen_GtkClipboard_(clipboard),
- Xen_cadr((Xen)func_info),
- __func__);
-}
-
static gboolean gxg_file_filter(const GtkFileFilterInfo* info, gpointer func_info)
{
if (!Xen_is_list((Xen)func_info)) return((gboolean)0);
@@ -1419,16 +1357,6 @@ static void gxg_icon_view_foreach(GtkIconView* icon_view, GtkTreePath* path, gpo
__func__);
}
-static void gxg_clip_image_received(GtkClipboard* clipboard, GdkPixbuf* pixbuf, gpointer func_info)
-{
- if (!Xen_is_list((Xen)func_info)) return;
- Xen_call_with_3_args(Xen_car((Xen)func_info),
- C_to_Xen_GtkClipboard_(clipboard),
- C_to_Xen_GdkPixbuf_(pixbuf),
- Xen_cadr((Xen)func_info),
- __func__);
-}
-
static void gxg_g_message_log_func(const gchar* domain, GLogLevelFlags log_level, const gchar* message, gpointer func_info)
{
if (!Xen_is_list((Xen)func_info)) return;
@@ -1440,20 +1368,6 @@ static void gxg_g_message_log_func(const gchar* domain, GLogLevelFlags log_level
__func__);
}
-static void gxg_clip_rich_text_received(GtkClipboard* clipboard, GdkAtom format, const guint8* text, gsize length, gpointer func_info)
-{
- if (!Xen_is_list((Xen)func_info)) return;
- #if (!(defined(__cplusplus)))
- Xen_call_with_5_args(Xen_car((Xen)func_info),
- C_to_Xen_GtkClipboard_(clipboard),
- C_to_Xen_GdkAtom(format),
- C_to_Xen_guint8_(text),
- C_to_Xen_gsize(length),
- Xen_cadr((Xen)func_info),
- __func__);
- #endif
-}
-
static void gxg_search_position(GtkTreeView* tree_view, GtkWidget* search_dialog, gpointer func_info)
{
if (!Xen_is_list((Xen)func_info)) return;
@@ -32061,6 +31975,123 @@ gchar** icons)"
return(C_to_Xen_GtkWidget_(gtk_scale_button_new(Xen_to_C_gdouble(min), Xen_to_C_gdouble(max), Xen_to_C_gdouble(step), (const gchar**)Xen_to_C_gchar__(icons))));
}
+static Xen gxg_gtk_application_new(Xen application_id, Xen flags)
+{
+ #define H_gtk_application_new "GtkApplication* gtk_application_new(gchar* application_id, GApplicationFlags flags)"
+ Xen_check_type(Xen_is_gchar_(application_id), application_id, 1, "gtk_application_new", "gchar*");
+ Xen_check_type(Xen_is_GApplicationFlags(flags), flags, 2, "gtk_application_new", "GApplicationFlags");
+ return(C_to_Xen_GtkApplication_(gtk_application_new((const gchar*)Xen_to_C_gchar_(application_id), Xen_to_C_GApplicationFlags(flags))));
+}
+
+static Xen gxg_gtk_application_add_window(Xen application, Xen window)
+{
+ #define H_gtk_application_add_window "void gtk_application_add_window(GtkApplication* application, \
+GtkWindow* window)"
+ Xen_check_type(Xen_is_GtkApplication_(application), application, 1, "gtk_application_add_window", "GtkApplication*");
+ Xen_check_type(Xen_is_GtkWindow_(window), window, 2, "gtk_application_add_window", "GtkWindow*");
+ gtk_application_add_window(Xen_to_C_GtkApplication_(application), Xen_to_C_GtkWindow_(window));
+ return(Xen_false);
+}
+
+static Xen gxg_gtk_application_remove_window(Xen application, Xen window)
+{
+ #define H_gtk_application_remove_window "void gtk_application_remove_window(GtkApplication* application, \
+GtkWindow* window)"
+ Xen_check_type(Xen_is_GtkApplication_(application), application, 1, "gtk_application_remove_window", "GtkApplication*");
+ Xen_check_type(Xen_is_GtkWindow_(window), window, 2, "gtk_application_remove_window", "GtkWindow*");
+ gtk_application_remove_window(Xen_to_C_GtkApplication_(application), Xen_to_C_GtkWindow_(window));
+ return(Xen_false);
+}
+
+static Xen gxg_gtk_application_get_windows(Xen application)
+{
+ #define H_gtk_application_get_windows "GList* gtk_application_get_windows(GtkApplication* application)"
+ Xen_check_type(Xen_is_GtkApplication_(application), application, 1, "gtk_application_get_windows", "GtkApplication*");
+ return(C_to_Xen_GList_(gtk_application_get_windows(Xen_to_C_GtkApplication_(application))));
+}
+
+static Xen gxg_gtk_application_inhibit(Xen application, Xen window, Xen flags, Xen reason)
+{
+ #define H_gtk_application_inhibit "guint gtk_application_inhibit(GtkApplication* application, GtkWindow* window, \
+GtkApplicationInhibitFlags flags, gchar* reason)"
+ Xen_check_type(Xen_is_GtkApplication_(application), application, 1, "gtk_application_inhibit", "GtkApplication*");
+ Xen_check_type(Xen_is_GtkWindow_(window), window, 2, "gtk_application_inhibit", "GtkWindow*");
+ Xen_check_type(Xen_is_GtkApplicationInhibitFlags(flags), flags, 3, "gtk_application_inhibit", "GtkApplicationInhibitFlags");
+ Xen_check_type(Xen_is_gchar_(reason), reason, 4, "gtk_application_inhibit", "gchar*");
+ return(C_to_Xen_guint(gtk_application_inhibit(Xen_to_C_GtkApplication_(application), Xen_to_C_GtkWindow_(window), Xen_to_C_GtkApplicationInhibitFlags(flags),
+ (const gchar*)Xen_to_C_gchar_(reason))));
+}
+
+static Xen gxg_gtk_application_uninhibit(Xen application, Xen cookie)
+{
+ #define H_gtk_application_uninhibit "void gtk_application_uninhibit(GtkApplication* application, guint cookie)"
+ Xen_check_type(Xen_is_GtkApplication_(application), application, 1, "gtk_application_uninhibit", "GtkApplication*");
+ Xen_check_type(Xen_is_guint(cookie), cookie, 2, "gtk_application_uninhibit", "guint");
+ gtk_application_uninhibit(Xen_to_C_GtkApplication_(application), Xen_to_C_guint(cookie));
+ return(Xen_false);
+}
+
+static Xen gxg_gtk_application_get_window_by_id(Xen application, Xen id)
+{
+ #define H_gtk_application_get_window_by_id "GtkWindow* gtk_application_get_window_by_id(GtkApplication* application, \
+guint id)"
+ Xen_check_type(Xen_is_GtkApplication_(application), application, 1, "gtk_application_get_window_by_id", "GtkApplication*");
+ Xen_check_type(Xen_is_guint(id), id, 2, "gtk_application_get_window_by_id", "guint");
+ return(C_to_Xen_GtkWindow_(gtk_application_get_window_by_id(Xen_to_C_GtkApplication_(application), Xen_to_C_guint(id))));
+}
+
+static Xen gxg_gtk_application_list_action_descriptions(Xen application)
+{
+ #define H_gtk_application_list_action_descriptions "gchar** gtk_application_list_action_descriptions(GtkApplication* application)"
+ Xen_check_type(Xen_is_GtkApplication_(application), application, 1, "gtk_application_list_action_descriptions", "GtkApplication*");
+ return(C_to_Xen_gchar__(gtk_application_list_action_descriptions(Xen_to_C_GtkApplication_(application))));
+}
+
+static Xen gxg_gtk_application_get_accels_for_action(Xen application, Xen detailed_action_name)
+{
+ #define H_gtk_application_get_accels_for_action "gchar** gtk_application_get_accels_for_action(GtkApplication* application, \
+gchar* detailed_action_name)"
+ Xen_check_type(Xen_is_GtkApplication_(application), application, 1, "gtk_application_get_accels_for_action", "GtkApplication*");
+ Xen_check_type(Xen_is_gchar_(detailed_action_name), detailed_action_name, 2, "gtk_application_get_accels_for_action", "gchar*");
+ return(C_to_Xen_gchar__(gtk_application_get_accels_for_action(Xen_to_C_GtkApplication_(application), (const gchar*)Xen_to_C_gchar_(detailed_action_name))));
+}
+
+static Xen gxg_gtk_application_get_actions_for_accel(Xen application, Xen accel)
+{
+ #define H_gtk_application_get_actions_for_accel "gchar** gtk_application_get_actions_for_accel(GtkApplication* application, \
+gchar* accel)"
+ Xen_check_type(Xen_is_GtkApplication_(application), application, 1, "gtk_application_get_actions_for_accel", "GtkApplication*");
+ Xen_check_type(Xen_is_gchar_(accel), accel, 2, "gtk_application_get_actions_for_accel", "gchar*");
+ return(C_to_Xen_gchar__(gtk_application_get_actions_for_accel(Xen_to_C_GtkApplication_(application), (const gchar*)Xen_to_C_gchar_(accel))));
+}
+
+static Xen gxg_gtk_application_set_accels_for_action(Xen application, Xen detailed_action_name, Xen accels)
+{
+ #define H_gtk_application_set_accels_for_action "void gtk_application_set_accels_for_action(GtkApplication* application, \
+gchar* detailed_action_name, gchar* accels)"
+ Xen_check_type(Xen_is_GtkApplication_(application), application, 1, "gtk_application_set_accels_for_action", "GtkApplication*");
+ Xen_check_type(Xen_is_gchar_(detailed_action_name), detailed_action_name, 2, "gtk_application_set_accels_for_action", "gchar*");
+ Xen_check_type(Xen_is_gchar_(accels), accels, 3, "gtk_application_set_accels_for_action", "gchar*");
+ gtk_application_set_accels_for_action(Xen_to_C_GtkApplication_(application), (const gchar*)Xen_to_C_gchar_(detailed_action_name), (const gchar*)Xen_to_C_gchar_(accels));
+ return(Xen_false);
+}
+
+static Xen gxg_gtk_application_prefers_app_menu(Xen application)
+{
+ #define H_gtk_application_prefers_app_menu "gboolean gtk_application_prefers_app_menu(GtkApplication* application)"
+ Xen_check_type(Xen_is_GtkApplication_(application), application, 1, "gtk_application_prefers_app_menu", "GtkApplication*");
+ return(C_to_Xen_gboolean(gtk_application_prefers_app_menu(Xen_to_C_GtkApplication_(application))));
+}
+
+static Xen gxg_gtk_application_get_menu_by_id(Xen application, Xen id)
+{
+ #define H_gtk_application_get_menu_by_id "GMenu* gtk_application_get_menu_by_id(GtkApplication* application, \
+gchar* id)"
+ Xen_check_type(Xen_is_GtkApplication_(application), application, 1, "gtk_application_get_menu_by_id", "GtkApplication*");
+ Xen_check_type(Xen_is_gchar_(id), id, 2, "gtk_application_get_menu_by_id", "gchar*");
+ return(C_to_Xen_GMenu_(gtk_application_get_menu_by_id(Xen_to_C_GtkApplication_(application), (const gchar*)Xen_to_C_gchar_(id))));
+}
+
#endif
static Xen gxg_cairo_create(Xen target)
@@ -34731,6 +34762,7 @@ static Xen gxg_GDK_CLIPBOARD(Xen obj) {return((Xen_is_wrapped_object(obj)) ? Xen
static Xen gxg_GDK_CONTENT_PROVIDER(Xen obj) {return((Xen_is_wrapped_object(obj)) ? Xen_list_2(xg_GdkContentProvider__symbol, Xen_cadr(obj)) : Xen_false);}
static Xen gxg_GDK_CONTENT_SERIALIZER(Xen obj) {return((Xen_is_wrapped_object(obj)) ? Xen_list_2(xg_GdkContentSerializer__symbol, Xen_cadr(obj)) : Xen_false);}
static Xen gxg_GDK_CONTENT_DESERIALIZER(Xen obj) {return((Xen_is_wrapped_object(obj)) ? Xen_list_2(xg_GdkContentDeserializer__symbol, Xen_cadr(obj)) : Xen_false);}
+static Xen gxg_GTK_APPLICATION(Xen obj) {return((Xen_is_wrapped_object(obj)) ? Xen_list_2(xg_GtkApplication__symbol, Xen_cadr(obj)) : Xen_false);}
#endif
static Xen gxg_GDK_IS_DRAG_CONTEXT(Xen obj) {return(C_bool_to_Xen_boolean(Xen_is_wrapped_object(obj) && GDK_IS_DRAG_CONTEXT((GTypeInstance *)Xen_unwrap_C_pointer(Xen_cadr(obj)))));}
@@ -34959,6 +34991,7 @@ static Xen gxg_GDK_IS_CLIPBOARD(Xen obj) {return(C_bool_to_Xen_boolean(Xen_is_wr
static Xen gxg_GDK_IS_CONTENT_PROVIDER(Xen obj) {return(C_bool_to_Xen_boolean(Xen_is_wrapped_object(obj) && GDK_IS_CONTENT_PROVIDER((GTypeInstance *)Xen_unwrap_C_pointer(Xen_cadr(obj)))));}
static Xen gxg_GDK_IS_CONTENT_SERIALIZER(Xen obj) {return(C_bool_to_Xen_boolean(Xen_is_wrapped_object(obj) && GDK_IS_CONTENT_SERIALIZER((GTypeInstance *)Xen_unwrap_C_pointer(Xen_cadr(obj)))));}
static Xen gxg_GDK_IS_CONTENT_DESERIALIZER(Xen obj) {return(C_bool_to_Xen_boolean(Xen_is_wrapped_object(obj) && GDK_IS_CONTENT_DESERIALIZER((GTypeInstance *)Xen_unwrap_C_pointer(Xen_cadr(obj)))));}
+static Xen gxg_GTK_IS_APPLICATION(Xen obj) {return(C_bool_to_Xen_boolean(Xen_is_wrapped_object(obj) && GTK_IS_APPLICATION((GTypeInstance *)Xen_unwrap_C_pointer(Xen_cadr(obj)))));}
#endif
@@ -38790,6 +38823,19 @@ Xen_wrap_4_args(gxg_gtk_drag_source_set_w, gxg_gtk_drag_source_set)
Xen_wrap_1_arg(gxg_gtk_drag_source_get_target_list_w, gxg_gtk_drag_source_get_target_list)
Xen_wrap_2_args(gxg_gtk_drag_source_set_target_list_w, gxg_gtk_drag_source_set_target_list)
Xen_wrap_4_args(gxg_gtk_scale_button_new_w, gxg_gtk_scale_button_new)
+Xen_wrap_2_args(gxg_gtk_application_new_w, gxg_gtk_application_new)
+Xen_wrap_2_args(gxg_gtk_application_add_window_w, gxg_gtk_application_add_window)
+Xen_wrap_2_args(gxg_gtk_application_remove_window_w, gxg_gtk_application_remove_window)
+Xen_wrap_1_arg(gxg_gtk_application_get_windows_w, gxg_gtk_application_get_windows)
+Xen_wrap_4_args(gxg_gtk_application_inhibit_w, gxg_gtk_application_inhibit)
+Xen_wrap_2_args(gxg_gtk_application_uninhibit_w, gxg_gtk_application_uninhibit)
+Xen_wrap_2_args(gxg_gtk_application_get_window_by_id_w, gxg_gtk_application_get_window_by_id)
+Xen_wrap_1_arg(gxg_gtk_application_list_action_descriptions_w, gxg_gtk_application_list_action_descriptions)
+Xen_wrap_2_args(gxg_gtk_application_get_accels_for_action_w, gxg_gtk_application_get_accels_for_action)
+Xen_wrap_2_args(gxg_gtk_application_get_actions_for_accel_w, gxg_gtk_application_get_actions_for_accel)
+Xen_wrap_3_args(gxg_gtk_application_set_accels_for_action_w, gxg_gtk_application_set_accels_for_action)
+Xen_wrap_1_arg(gxg_gtk_application_prefers_app_menu_w, gxg_gtk_application_prefers_app_menu)
+Xen_wrap_2_args(gxg_gtk_application_get_menu_by_id_w, gxg_gtk_application_get_menu_by_id)
#endif
Xen_wrap_1_arg(gxg_cairo_create_w, gxg_cairo_create)
@@ -39314,6 +39360,7 @@ Xen_wrap_1_arg(gxg_GDK_CLIPBOARD_w, gxg_GDK_CLIPBOARD)
Xen_wrap_1_arg(gxg_GDK_CONTENT_PROVIDER_w, gxg_GDK_CONTENT_PROVIDER)
Xen_wrap_1_arg(gxg_GDK_CONTENT_SERIALIZER_w, gxg_GDK_CONTENT_SERIALIZER)
Xen_wrap_1_arg(gxg_GDK_CONTENT_DESERIALIZER_w, gxg_GDK_CONTENT_DESERIALIZER)
+Xen_wrap_1_arg(gxg_GTK_APPLICATION_w, gxg_GTK_APPLICATION)
#endif
Xen_wrap_1_arg(gxg_GDK_IS_DRAG_CONTEXT_w, gxg_GDK_IS_DRAG_CONTEXT)
@@ -39542,13 +39589,14 @@ Xen_wrap_1_arg(gxg_GDK_IS_CLIPBOARD_w, gxg_GDK_IS_CLIPBOARD)
Xen_wrap_1_arg(gxg_GDK_IS_CONTENT_PROVIDER_w, gxg_GDK_IS_CONTENT_PROVIDER)
Xen_wrap_1_arg(gxg_GDK_IS_CONTENT_SERIALIZER_w, gxg_GDK_IS_CONTENT_SERIALIZER)
Xen_wrap_1_arg(gxg_GDK_IS_CONTENT_DESERIALIZER_w, gxg_GDK_IS_CONTENT_DESERIALIZER)
+Xen_wrap_1_arg(gxg_GTK_IS_APPLICATION_w, gxg_GTK_IS_APPLICATION)
#endif
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_gu, pl_pg, pl_gus, pl_pgr, pl_pgu, pl_pgi, pl_gug, pl_gui, pl_guut, pl_pgbi, pl_guuut, pl_gussitu, pl_gurrsiu, pl_guugbuut, pl_b, pl_s, pl_t, pl_bsu, pl_bsigb, pl_gi, pl_bt, pl_tb, pl_igi, pl_ssi, pl_bti, pl_ssig, pl_btiib, pl_ts, pl_tsu, pl_tsi, pl_tsit, pl_tsig, pl_tsiu, pl_tsiuui, pl_tsiiuui, pl_tts, pl_tti, pl_p, pl_buuusuug, pl_bu, pl_pb, pl_bur, pl_bug, pl_bus, pl_bui, pl_bub, pl_busi, pl_buib, pl_busu, pl_buub, pl_buig, pl_buus, pl_buui, pl_buigu, pl_busib, pl_buuub, pl_buttu, pl_busgu, pl_buuig, pl_buuui, 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_tusiuiui, pl_tuurrrrg, pl_tuurrrrgr, pl_psgbiiiit, pl_tuiiiiui, pl_tuuiiiirrrrg, pl_tuuiiiirrrrgi, pl_psiiuusu, pl_pt, pl_tu, pl_tur, pl_tub, pl_tui, pl_tus, pl_tut, pl_tug, pl_turs, pl_tubu, pl_tusg, pl_tugb, pl_tugs, pl_tubi, pl_tuib, pl_tusr, pl_tusi, pl_turi, pl_tuui, pl_tuur, pl_tuig, pl_tusb, pl_tuub, pl_tuus, pl_tuug, pl_tugu, pl_tugr, pl_tugi, pl_tusu, pl_tuut, pl_tugt, pl_tuis, pl_tust, pl_tuiu, pl_tuit, pl_tuuiu, pl_tuiut, pl_tugug, pl_tussu, pl_tuuur, pl_tuusb, pl_tugui, pl_tuisi, pl_turgs, pl_tuurb, pl_tuuti, pl_tuuri, pl_tusri, pl_tuuut, pl_tuubr, pl_tuuub, pl_tuuir, pl_tuuui, pl_tuusi, pl_tuiiu, pl_tuugi, pl_tuiiut, pl_tuuiut, pl_tutisi, pl_tuuggu, pl_tugiis, pl_tuurru, pl_tuuuui, pl_tugiiu, pl_tuuugi, pl_tuuuub, pl_tuiggu, pl_turrrb, pl_tuusit, pl_tusiis, pl_tusuig, pl_tuuubr, pl_tuurbr, pl_tusuiut, pl_tusiiut, pl_tuuuggu, pl_tuuiuui, pl_tubiiiu, pl_i, pl_bi, pl_big, pl_si, pl_is, pl_isi, pl_sig, pl_isgt, pl_isigutttiiu, pl_ti, pl_it, pl_tiu, pl_tist, pl_itsub, pl_itiiub, pl_itstttg, pl_itgiiut, pl_pu, pl_pur, pl_pub, pl_pui, pl_pug, pl_pus, pl_put, pl_pugi, pl_pubi, pl_pusi, pl_puri, pl_pust, pl_pusu, pl_pugu, pl_puiu, pl_purru, pl_puuig, pl_puiig, pl_puigu, pl_pusiu, pl_pusub, pl_puiiu, pl_pussu, pl_puibu, pl_pusig, pl_puuiu, pl_puuugi, pl_pusiig, pl_puuiig, pl_puiiui, pl_puiigi, pl_puuubu, pl_pusigu, pl_pusiiu, pl_puuiiu, pl_pugiiu, pl_pusiigu, pl_pusiuiu, pl_pusiiugu, pl_puuusuug, pl_pusiuibu, pl_iu, pl_pi, pl_iur, pl_ius, pl_iui, pl_piu, pl_pit, pl_iug, pl_iugi, pl_iuis, pl_iusi, pl_iuui, pl_iuisi, pl_iuuui, pl_iuuuui, pl_iuisut, pl_g, pl_sg, pl_gs, pl_tg, pl_iit, pl_iiit, pl_du, pl_pr, pl_dus, pl_dui, pl_dusr, pl_dusi, pl_prrru, pl_bpt;
+ s7_pointer pl_bt, pl_tb, pl_bti, pl_btiib, pl_ts, pl_tsu, pl_tsi, pl_tsit, pl_tsig, pl_tsiu, pl_tsiuui, pl_tsiiuui, pl_buuusuug, pl_bu, pl_pb, pl_bur, pl_bug, pl_bus, pl_bui, pl_bub, pl_busi, pl_buib, pl_busu, pl_buub, pl_buig, pl_buus, pl_buui, pl_buigu, pl_busib, pl_buuub, pl_buttu, pl_busgu, pl_buuig, pl_buuui, pl_buiuig, pl_buusib, pl_buuuub, pl_buurbr, pl_su, pl_ps, pl_pst, 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_t, pl_p, pl_tts, pl_tti, pl_bi, pl_big, pl_sg, pl_pt, pl_tu, pl_si, pl_is, pl_gs, pl_isi, pl_tur, pl_tub, pl_tui, pl_tus, pl_tut, pl_tug, pl_sig, pl_turs, pl_tubu, pl_tusg, pl_tugb, pl_tugs, pl_tubi, pl_tuib, pl_tusr, pl_tusi, pl_turi, pl_tuui, pl_tuur, pl_tuig, pl_tusb, pl_tuub, pl_tuus, pl_tuug, pl_isgt, pl_tugu, pl_tugr, pl_tugi, pl_tusu, pl_tuut, pl_tugt, pl_tuis, pl_tust, pl_tuiu, pl_tuit, pl_tuuiu, pl_tuiut, pl_tugug, pl_tussu, pl_tuuur, pl_tuusb, pl_tugui, pl_tuisi, pl_turgs, pl_tuurb, pl_tuuti, pl_tuuri, pl_tusri, pl_tuuut, pl_tuubr, pl_tuuub, pl_tuuir, pl_tuuui, pl_tuusi, pl_tuiiu, pl_tuugi, pl_tuiiut, pl_tuuiut, pl_tutisi, pl_tuuggu, pl_tugiis, pl_tuurru, pl_tuuuui, pl_tugiiu, pl_tuuugi, pl_tuuuub, pl_tuiggu, pl_turrrb, pl_tuusit, pl_tusiis, pl_tusuig, pl_tuuubr, pl_tuurbr, pl_tusuiut, pl_tusiiut, pl_tuuuggu, pl_tuuiuui, pl_tubiiiu, pl_tusiuiui, pl_tuurrrrg, pl_tuurrrrgr, pl_isigutttiiu, pl_tuiiiiui, pl_tuuiiiirrrrg, pl_tuuiiiirrrrgi, pl_pu, pl_pur, pl_pub, pl_pui, pl_pug, pl_pus, pl_put, pl_pugi, pl_pubi, pl_pusi, pl_puri, pl_pust, pl_pusu, pl_pugu, pl_puiu, pl_purru, pl_puuig, pl_puiig, pl_puigu, pl_pusiu, pl_pusub, pl_puiiu, pl_pussu, pl_puibu, pl_pusig, pl_puuiu, pl_puuugi, pl_pusiig, pl_puuiig, pl_puiiui, pl_puiigi, pl_puuubu, pl_pusigu, pl_pusiiu, pl_puuiiu, pl_pugiiu, pl_pusiigu, pl_pusiuiu, pl_pusiiugu, pl_puuusuug, pl_pusiuibu, pl_i, pl_g, pl_ti, pl_it, pl_tg, pl_tiu, pl_tist, pl_itsub, pl_itiiub, pl_itstttg, pl_itgiiut, pl_iu, pl_gu, pl_pi, pl_pg, pl_iur, pl_gus, pl_pgr, pl_pgu, pl_pgi, pl_gug, pl_ius, pl_iui, pl_gui, pl_piu, pl_pit, pl_iug, pl_guut, pl_iugi, pl_pgbi, pl_iuis, pl_iusi, pl_iuui, pl_guuut, pl_iuugs, pl_iuisi, pl_iuuui, pl_iuuuui, pl_iuisut, pl_gussitu, pl_gurrsiu, pl_guugbuut, pl_gi, pl_igi, pl_iit, pl_iiit, pl_du, pl_pr, pl_dus, pl_dui, pl_dusr, pl_dusi, pl_prrru, pl_bsu, pl_bsigb, pl_ssi, pl_ssig, pl_b, pl_s, pl_bpt;
#endif
xm_gc_table = Xen_make_vector(1, Xen_false);
@@ -39568,32 +39616,9 @@ static void define_functions(void)
s_gtk_enum_t = s7_make_symbol(s7, "gtk_enum_t?");
s_any = s7_t(s7);
- 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_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_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_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_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_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_gi = s7_make_circular_signature(s7, 1, 2, s_gtk_enum_t, 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_igi = s7_make_circular_signature(s7, 2, 3, s_integer, s_gtk_enum_t, s_integer);
- pl_ssi = s7_make_circular_signature(s7, 2, 3, s_string, s_string, s_integer);
pl_bti = s7_make_circular_signature(s7, 2, 3, s_boolean, s_any, s_integer);
- pl_ssig = s7_make_circular_signature(s7, 3, 4, s_string, s_string, s_integer, s_gtk_enum_t);
pl_btiib = s7_make_circular_signature(s7, 4, 5, s_boolean, s_any, s_integer, s_integer, s_boolean);
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);
@@ -39603,9 +39628,6 @@ static void define_functions(void)
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_p = s7_make_circular_signature(s7, 0, 1, s_pair);
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);
@@ -39634,6 +39656,7 @@ static void define_functions(void)
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_pst = s7_make_circular_signature(s7, 2, 3, s_pair, s_string, s_any);
pl_sug = s7_make_circular_signature(s7, 2, 3, s_string, s_pair_false, s_gtk_enum_t);
pl_sui = s7_make_circular_signature(s7, 2, 3, s_string, s_pair_false, s_integer);
pl_psu = s7_make_circular_signature(s7, 2, 3, s_pair, s_string, s_pair_false);
@@ -39649,22 +39672,28 @@ static void define_functions(void)
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_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_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_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_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_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_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_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_t = s7_make_circular_signature(s7, 0, 1, s_any);
+ pl_p = s7_make_circular_signature(s7, 0, 1, s_pair);
+ 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_bi = s7_make_circular_signature(s7, 1, 2, s_boolean, s_integer);
+ pl_big = s7_make_circular_signature(s7, 2, 3, s_boolean, s_integer, s_gtk_enum_t);
+ pl_sg = s7_make_circular_signature(s7, 1, 2, s_string, s_gtk_enum_t);
pl_pt = s7_make_circular_signature(s7, 1, 2, s_pair, s_any);
pl_tu = s7_make_circular_signature(s7, 1, 2, s_any, s_pair_false);
+ 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_gs = s7_make_circular_signature(s7, 1, 2, s_gtk_enum_t, s_string);
+ pl_isi = s7_make_circular_signature(s7, 2, 3, s_integer, s_string, s_integer);
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_sig = s7_make_circular_signature(s7, 2, 3, s_string, s_integer, s_gtk_enum_t);
pl_turs = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_real, s_string);
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);
@@ -39682,6 +39711,7 @@ static void define_functions(void)
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_isgt = s7_make_circular_signature(s7, 3, 4, s_integer, s_string, s_gtk_enum_t, s_any);
pl_tugu = s7_make_circular_signature(s7, 3, 4, s_any, s_pair_false, s_gtk_enum_t, s_pair_false);
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);
@@ -39735,23 +39765,13 @@ static void define_functions(void)
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_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_i = s7_make_circular_signature(s7, 0, 1, s_integer);
- pl_bi = s7_make_circular_signature(s7, 1, 2, s_boolean, s_integer);
- 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_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_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_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_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_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_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_tiu = s7_make_circular_signature(s7, 2, 3, s_any, s_integer, s_pair_false);
- pl_tist = s7_make_circular_signature(s7, 3, 4, s_any, s_integer, s_string, 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_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_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_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_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);
@@ -39793,26 +39813,50 @@ static void define_functions(void)
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_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_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_i = s7_make_circular_signature(s7, 0, 1, s_integer);
+ pl_g = s7_make_circular_signature(s7, 0, 1, s_gtk_enum_t);
+ 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_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_tist = s7_make_circular_signature(s7, 3, 4, s_any, s_integer, s_string, 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_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_gu = s7_make_circular_signature(s7, 1, 2, s_gtk_enum_t, s_pair_false);
pl_pi = s7_make_circular_signature(s7, 1, 2, s_pair, s_integer);
+ pl_pg = s7_make_circular_signature(s7, 1, 2, s_pair, s_gtk_enum_t);
pl_iur = s7_make_circular_signature(s7, 2, 3, s_integer, s_pair_false, s_real);
+ 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_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_gui = s7_make_circular_signature(s7, 2, 3, s_gtk_enum_t, s_pair_false, s_integer);
pl_piu = s7_make_circular_signature(s7, 2, 3, s_pair, s_integer, s_pair_false);
pl_pit = s7_make_circular_signature(s7, 2, 3, s_pair, s_integer, s_any);
pl_iug = s7_make_circular_signature(s7, 2, 3, s_integer, s_pair_false, s_gtk_enum_t);
+ pl_guut = s7_make_circular_signature(s7, 3, 4, s_gtk_enum_t, s_pair_false, s_pair_false, s_any);
pl_iugi = s7_make_circular_signature(s7, 3, 4, s_integer, s_pair_false, s_gtk_enum_t, s_integer);
+ pl_pgbi = s7_make_circular_signature(s7, 3, 4, s_pair, s_gtk_enum_t, s_boolean, 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_guuut = s7_make_circular_signature(s7, 4, 5, s_gtk_enum_t, s_pair_false, s_pair_false, s_pair_false, s_any);
+ pl_iuugs = s7_make_circular_signature(s7, 4, 5, s_integer, s_pair_false, s_pair_false, s_gtk_enum_t, s_string);
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_g = s7_make_circular_signature(s7, 0, 1, s_gtk_enum_t);
- 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_tg = s7_make_circular_signature(s7, 1, 2, s_any, s_gtk_enum_t);
+ 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_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_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);
@@ -39822,6 +39866,12 @@ static void define_functions(void)
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_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_b = s7_make_circular_signature(s7, 0, 1, s_boolean);
+ pl_s = s7_make_circular_signature(s7, 0, 1, s_string);
pl_bpt = s7_make_signature(s7, 2, s_pair_false, s_any);
#endif
@@ -43199,6 +43249,19 @@ static void define_functions(void)
Xg_define_procedure(gtk_drag_source_get_target_list, gxg_gtk_drag_source_get_target_list_w, 1, 0, 0, H_gtk_drag_source_get_target_list, pl_pu);
Xg_define_procedure(gtk_drag_source_set_target_list, gxg_gtk_drag_source_set_target_list_w, 2, 0, 0, H_gtk_drag_source_set_target_list, pl_tu);
Xg_define_procedure(gtk_scale_button_new, gxg_gtk_scale_button_new_w, 4, 0, 0, H_gtk_scale_button_new, pl_prrru);
+ Xg_define_procedure(gtk_application_new, gxg_gtk_application_new_w, 2, 0, 0, H_gtk_application_new, pl_pst);
+ Xg_define_procedure(gtk_application_add_window, gxg_gtk_application_add_window_w, 2, 0, 0, H_gtk_application_add_window, pl_tu);
+ Xg_define_procedure(gtk_application_remove_window, gxg_gtk_application_remove_window_w, 2, 0, 0, H_gtk_application_remove_window, pl_tu);
+ Xg_define_procedure(gtk_application_get_windows, gxg_gtk_application_get_windows_w, 1, 0, 0, H_gtk_application_get_windows, pl_pu);
+ Xg_define_procedure(gtk_application_inhibit, gxg_gtk_application_inhibit_w, 4, 0, 0, H_gtk_application_inhibit, pl_iuugs);
+ Xg_define_procedure(gtk_application_uninhibit, gxg_gtk_application_uninhibit_w, 2, 0, 0, H_gtk_application_uninhibit, pl_tui);
+ Xg_define_procedure(gtk_application_get_window_by_id, gxg_gtk_application_get_window_by_id_w, 2, 0, 0, H_gtk_application_get_window_by_id, pl_pui);
+ Xg_define_procedure(gtk_application_list_action_descriptions, gxg_gtk_application_list_action_descriptions_w, 1, 0, 0, H_gtk_application_list_action_descriptions, pl_pu);
+ Xg_define_procedure(gtk_application_get_accels_for_action, gxg_gtk_application_get_accels_for_action_w, 2, 0, 0, H_gtk_application_get_accels_for_action, pl_pus);
+ Xg_define_procedure(gtk_application_get_actions_for_accel, gxg_gtk_application_get_actions_for_accel_w, 2, 0, 0, H_gtk_application_get_actions_for_accel, pl_pus);
+ Xg_define_procedure(gtk_application_set_accels_for_action, gxg_gtk_application_set_accels_for_action_w, 3, 0, 0, H_gtk_application_set_accels_for_action, pl_tus);
+ Xg_define_procedure(gtk_application_prefers_app_menu, gxg_gtk_application_prefers_app_menu_w, 1, 0, 0, H_gtk_application_prefers_app_menu, pl_bu);
+ Xg_define_procedure(gtk_application_get_menu_by_id, gxg_gtk_application_get_menu_by_id_w, 2, 0, 0, H_gtk_application_get_menu_by_id, pl_pus);
#endif
Xg_define_procedure(cairo_create, gxg_cairo_create_w, 1, 0, 0, H_cairo_create, pl_pu);
@@ -43713,6 +43776,7 @@ static void define_functions(void)
Xg_define_procedure(GDK_CONTENT_PROVIDER, gxg_GDK_CONTENT_PROVIDER_w, 1, 0, 0, "(GDK_CONTENT_PROVIDER obj) casts obj to GDK_CONTENT_PROVIDER", pl_bpt);
Xg_define_procedure(GDK_CONTENT_SERIALIZER, gxg_GDK_CONTENT_SERIALIZER_w, 1, 0, 0, "(GDK_CONTENT_SERIALIZER obj) casts obj to GDK_CONTENT_SERIALIZER", pl_bpt);
Xg_define_procedure(GDK_CONTENT_DESERIALIZER, gxg_GDK_CONTENT_DESERIALIZER_w, 1, 0, 0, "(GDK_CONTENT_DESERIALIZER obj) casts obj to GDK_CONTENT_DESERIALIZER", pl_bpt);
+ Xg_define_procedure(GTK_APPLICATION, gxg_GTK_APPLICATION_w, 1, 0, 0, "(GTK_APPLICATION obj) casts obj to GTK_APPLICATION", pl_bpt);
#endif
Xg_define_procedure(c-array->list, c_array_to_xen_list_w, 2, 0, 0, NULL, NULL);
@@ -43951,6 +44015,7 @@ static void define_functions(void)
Xg_define_procedure(GDK_IS_CONTENT_PROVIDER, gxg_GDK_IS_CONTENT_PROVIDER_w, 1, 0, 0, "(GDK_IS_CONTENT_PROVIDER obj): " PROC_TRUE " if obj is a GdkContentProvider*", pl_bt);
Xg_define_procedure(GDK_IS_CONTENT_SERIALIZER, gxg_GDK_IS_CONTENT_SERIALIZER_w, 1, 0, 0, "(GDK_IS_CONTENT_SERIALIZER obj): " PROC_TRUE " if obj is a GdkContentSerializer*", pl_bt);
Xg_define_procedure(GDK_IS_CONTENT_DESERIALIZER, gxg_GDK_IS_CONTENT_DESERIALIZER_w, 1, 0, 0, "(GDK_IS_CONTENT_DESERIALIZER obj): " PROC_TRUE " if obj is a GdkContentDeserializer*", pl_bt);
+ Xg_define_procedure(GTK_IS_APPLICATION, gxg_GTK_IS_APPLICATION_w, 1, 0, 0, "(GTK_IS_APPLICATION obj): " PROC_TRUE " if obj is a GtkApplication*", pl_bt);
#endif
#if GTK_CHECK_VERSION(3, 0, 0)
@@ -45108,6 +45173,10 @@ static void define_integers(void)
define_integer(GTK_STATE_FLAG_FOCUS_VISIBLE);
define_integer(GTK_IMAGE_SURFACE);
define_integer(GTK_IMAGE_TEXTURE);
+ define_integer(GTK_APPLICATION_INHIBIT_LOGOUT);
+ define_integer(GTK_APPLICATION_INHIBIT_SWITCH);
+ define_integer(GTK_APPLICATION_INHIBIT_SUSPEND);
+ define_integer(GTK_APPLICATION_INHIBIT_IDLE);
#endif
define_integer(CAIRO_STATUS_SUCCESS);
@@ -45278,20 +45347,16 @@ static void define_doubles(void)
define_double(PANGO_SCALE_XX_LARGE);
}
-/* -------------------------------- predefined Atoms -------------------------------- */
-
-static void define_atoms(void)
-{
-#define define_atom(Name) Xen_define(Xg_pre #Name Xg_post, C_to_Xen_GdkAtom(Name))
-
-}
-
/* -------------------------------- symbols -------------------------------- */
static void define_symbols(void)
{
+ xg_GMenu__symbol = C_string_to_Xen_symbol("GMenu_");
+ xg_GtkApplicationInhibitFlags_symbol = C_string_to_Xen_symbol("GtkApplicationInhibitFlags");
+ xg_GApplicationFlags_symbol = C_string_to_Xen_symbol("GApplicationFlags");
xg_GtkContentFormats__symbol = C_string_to_Xen_symbol("GtkContentFormats_");
xg_GtkStyleProvider__symbol = C_string_to_Xen_symbol("GtkStyleProvider_");
+ xg_GdkAtom__symbol = C_string_to_Xen_symbol("GdkAtom_");
xg_GdkDisplay_gtk_invisible_get_display_symbol = C_string_to_Xen_symbol("GdkDisplay_gtk_invisible_get_display");
xg_GtkInvisible__symbol = C_string_to_Xen_symbol("GtkInvisible_");
xg_GtkIconSize_symbol = C_string_to_Xen_symbol("GtkIconSize");
@@ -45634,6 +45699,7 @@ static void define_symbols(void)
xg_GtkSizeGroupMode_symbol = C_string_to_Xen_symbol("GtkSizeGroupMode");
xg_GtkSizeGroup__symbol = C_string_to_Xen_symbol("GtkSizeGroup_");
xg_GtkSettings__symbol = C_string_to_Xen_symbol("GtkSettings_");
+ xg_GtkSelectionData__symbol = C_string_to_Xen_symbol("GtkSelectionData_");
xg_GtkCornerType_symbol = C_string_to_Xen_symbol("GtkCornerType");
xg_GtkPolicyType_symbol = C_string_to_Xen_symbol("GtkPolicyType");
xg_GtkScrolledWindow__symbol = C_string_to_Xen_symbol("GtkScrolledWindow_");
@@ -45667,6 +45733,7 @@ static void define_symbols(void)
xg_PangoLayout__symbol = C_string_to_Xen_symbol("PangoLayout_");
xg_GtkEntry__symbol = C_string_to_Xen_symbol("GtkEntry_");
xg_GtkEditable__symbol = C_string_to_Xen_symbol("GtkEditable_");
+ xg_GdkAtom_symbol = C_string_to_Xen_symbol("GdkAtom");
xg_etc_symbol = C_string_to_Xen_symbol("etc");
xg_GtkDialog__symbol = C_string_to_Xen_symbol("GtkDialog_");
xg_GtkCallback_symbol = C_string_to_Xen_symbol("GtkCallback");
@@ -45704,6 +45771,7 @@ static void define_symbols(void)
xg_char__symbol = C_string_to_Xen_symbol("char_");
xg_guchar__symbol = C_string_to_Xen_symbol("guchar_");
xg_int_symbol = C_string_to_Xen_symbol("int");
+ xg_GdkPixbuf__symbol = C_string_to_Xen_symbol("GdkPixbuf_");
xg_GdkColorspace_symbol = C_string_to_Xen_symbol("GdkColorspace");
xg_GdkCursor__symbol = C_string_to_Xen_symbol("GdkCursor_");
xg_GdkWindowTypeHint_symbol = C_string_to_Xen_symbol("GdkWindowTypeHint");
@@ -45746,28 +45814,22 @@ static void define_symbols(void)
xg_GNormalizeMode_symbol = C_string_to_Xen_symbol("GNormalizeMode");
xg_glong_symbol = C_string_to_Xen_symbol("glong");
xg_gssize_symbol = C_string_to_Xen_symbol("gssize");
+ xg_gsize_symbol = C_string_to_Xen_symbol("gsize");
xg_gunichar__symbol = C_string_to_Xen_symbol("gunichar_");
xg_void_symbol = C_string_to_Xen_symbol("void");
xg_GtkDrawingArea__symbol = C_string_to_Xen_symbol("GtkDrawingArea_");
xg_GdkSeat__symbol = C_string_to_Xen_symbol("GdkSeat_");
xg_GtkRecentInfo__symbol = C_string_to_Xen_symbol("GtkRecentInfo_");
- xg_gsize_symbol = C_string_to_Xen_symbol("gsize");
- xg_guint8__symbol = C_string_to_Xen_symbol("guint8_");
- xg_GdkAtom_symbol = C_string_to_Xen_symbol("GdkAtom");
xg_GLogLevelFlags_symbol = C_string_to_Xen_symbol("GLogLevelFlags");
- xg_GdkPixbuf__symbol = C_string_to_Xen_symbol("GdkPixbuf_");
xg_GtkIconView__symbol = C_string_to_Xen_symbol("GtkIconView_");
xg_GtkEntryCompletion__symbol = C_string_to_Xen_symbol("GtkEntryCompletion_");
xg_GtkFileFilterInfo__symbol = C_string_to_Xen_symbol("GtkFileFilterInfo_");
xg_GtkTreeSelection__symbol = C_string_to_Xen_symbol("GtkTreeSelection_");
xg_GtkCellRenderer__symbol = C_string_to_Xen_symbol("GtkCellRenderer_");
+ xg_gint_symbol = C_string_to_Xen_symbol("gint");
xg_GtkTreeViewColumn__symbol = C_string_to_Xen_symbol("GtkTreeViewColumn_");
xg_GtkTreeView__symbol = C_string_to_Xen_symbol("GtkTreeView_");
xg_gunichar_symbol = C_string_to_Xen_symbol("gunichar");
- xg_gint_symbol = C_string_to_Xen_symbol("gint");
- xg_GdkAtom__symbol = C_string_to_Xen_symbol("GdkAtom_");
- xg_GtkSelectionData__symbol = C_string_to_Xen_symbol("GtkSelectionData_");
- xg_GtkClipboard__symbol = C_string_to_Xen_symbol("GtkClipboard_");
xg_GtkTreeIter__symbol = C_string_to_Xen_symbol("GtkTreeIter_");
xg_GtkTreePath__symbol = C_string_to_Xen_symbol("GtkTreePath_");
xg_GtkTreeModel__symbol = C_string_to_Xen_symbol("GtkTreeModel_");
@@ -46863,6 +46925,10 @@ static enummer_t enum_info[] = {
{"GTK_STATE_FLAG_FOCUS_VISIBLE", "GtkStateFlags", GTK_STATE_FLAG_FOCUS_VISIBLE},
{"GTK_IMAGE_SURFACE", "GtkImageType", GTK_IMAGE_SURFACE},
{"GTK_IMAGE_TEXTURE", "GtkImageType", GTK_IMAGE_TEXTURE},
+ {"GTK_APPLICATION_INHIBIT_LOGOUT", "GtkApplicationInhibitFlags", GTK_APPLICATION_INHIBIT_LOGOUT},
+ {"GTK_APPLICATION_INHIBIT_SWITCH", "GtkApplicationInhibitFlags", GTK_APPLICATION_INHIBIT_SWITCH},
+ {"GTK_APPLICATION_INHIBIT_SUSPEND", "GtkApplicationInhibitFlags", GTK_APPLICATION_INHIBIT_SUSPEND},
+ {"GTK_APPLICATION_INHIBIT_IDLE", "GtkApplicationInhibitFlags", GTK_APPLICATION_INHIBIT_IDLE},
#endif
{NULL, NULL, 0}};
@@ -46998,7 +47064,6 @@ void Init_libxg(void)
define_integers();
define_doubles();
define_functions();
- define_atoms();
define_strings();
define_structs();
#if HAVE_SCHEME
@@ -47014,7 +47079,7 @@ void Init_libxg(void)
Xen_provide_feature("gtk2");
#endif
#endif
- Xen_define("xg-version", C_string_to_Xen_string("01-Jan-18"));
+ Xen_define("xg-version", C_string_to_Xen_string("11-Feb-18"));
xg_already_inited = true;
#if HAVE_SCHEME
#if USE_SND