diff options
author | Thomas Bushnell, BSG <tb@debian.org> | 2008-02-04 20:29:13 -0500 |
---|---|---|
committer | Bryan Newbold <bnewbold@robocracy.org> | 2017-02-20 00:05:41 -0800 |
commit | 71dab84adaa579f9386dd8ee09006d3cac625723 (patch) | |
tree | 8022514642d25edffdb4bdd130020674b0efd844 | |
parent | 897451458bd8eec628c7bbfaccba0dd069830f0f (diff) | |
parent | 4684239efa63dc1b2c1cbe37ef7d3062029f5532 (diff) | |
download | slib-77dc1eb872cc62e517c7d19b7b65767bad80f2ef.tar.gz slib-77dc1eb872cc62e517c7d19b7b65767bad80f2ef.zip |
Import Debian changes 3b1-1debian/3b1-1
slib (3b1-1) unstable; urgency=low
* New upstream release.
* guile.init (library-vicinity): Repeat change from 3a4-2.
* slib.texi (Library Catalogs): Repeat change from 3a3-3.
* slib.sh: Repeat change from 3a5-3.
* slib.1: Repeat change from 3a5-4.
* Makefile: Repeat change from 3a2-1.
-rw-r--r-- | ANNOUNCE | 158 | ||||
-rw-r--r-- | ChangeLog | 226 | ||||
-rw-r--r-- | FAQ | 4 | ||||
-rw-r--r-- | Makefile | 197 | ||||
-rw-r--r-- | README | 174 | ||||
-rw-r--r-- | RScheme.init | 49 | ||||
-rw-r--r-- | SLIB.ico | bin | 0 -> 9326 bytes | |||
-rw-r--r-- | STk.init | 42 | ||||
-rw-r--r-- | Template.scm | 35 | ||||
-rw-r--r-- | bigloo.init | 40 | ||||
-rw-r--r-- | byte.scm | 101 | ||||
-rw-r--r-- | byte.txi | 44 | ||||
-rw-r--r-- | chez.init | 28 | ||||
-rw-r--r-- | clrnamdb.scm | 2764 | ||||
-rw-r--r-- | debian/changelog | 11 | ||||
-rw-r--r-- | defmacex.scm | 2 | ||||
-rw-r--r-- | determ.scm | 4 | ||||
-rw-r--r-- | determ.txi | 4 | ||||
-rw-r--r-- | dirs.scm | 2 | ||||
-rw-r--r-- | elk.init | 40 | ||||
-rw-r--r-- | fdl.texi | 21 | ||||
-rw-r--r-- | gambit.init | 48 | ||||
-rw-r--r-- | glob.scm | 2 | ||||
-rw-r--r-- | glob.txi | 2 | ||||
-rw-r--r-- | guile.init | 51 | ||||
-rw-r--r-- | jscheme.init | 34 | ||||
-rw-r--r-- | kawa.init | 20 | ||||
-rw-r--r-- | macscheme.init | 26 | ||||
-rw-r--r-- | mbe.scm | 4 | ||||
-rw-r--r-- | mitscheme.init | 14 | ||||
-rw-r--r-- | mklibcat.scm | 8 | ||||
-rw-r--r-- | mkpltcat.scm | 54 | ||||
-rw-r--r-- | mzscheme.init (renamed from DrScheme.init) | 36 | ||||
-rw-r--r-- | peanosfc.scm | 2 | ||||
-rw-r--r-- | prec.scm | 2 | ||||
-rw-r--r-- | pscheme.init | 75 | ||||
-rw-r--r-- | random.scm | 12 | ||||
-rw-r--r-- | rdms.scm | 650 | ||||
-rw-r--r-- | require.scm | 5 | ||||
-rw-r--r-- | resenecolours.txt | 2772 | ||||
-rw-r--r-- | scheme2c.init | 22 | ||||
-rw-r--r-- | scheme48.init | 91 | ||||
-rw-r--r-- | scsh.init | 26 | ||||
-rw-r--r-- | sisc.init | 39 | ||||
-rw-r--r-- | slib.1 | 4 | ||||
-rw-r--r-- | slib.doc | 8 | ||||
-rw-r--r-- | slib.info | 2812 | ||||
-rw-r--r-- | slib.nsi | 46 | ||||
-rwxr-xr-x | slib.sh | 10 | ||||
-rw-r--r-- | slib.spec | 9 | ||||
-rw-r--r-- | slib.texi | 198 | ||||
-rw-r--r-- | solid.scm | 37 | ||||
-rw-r--r-- | srfi-1.scm | 2 | ||||
-rw-r--r-- | strsrch.scm | 2 | ||||
-rw-r--r-- | t3.init | 13 | ||||
-rw-r--r-- | transact.scm | 162 | ||||
-rw-r--r-- | transact.txi | 18 | ||||
-rw-r--r-- | umbscheme.init | 24 | ||||
-rw-r--r-- | version.txi | 4 | ||||
-rw-r--r-- | vscm.init | 35 | ||||
-rw-r--r-- | wttest.scm | 2 | ||||
-rw-r--r-- | xml-parse.scm | 2 |
62 files changed, 6070 insertions, 5259 deletions
@@ -1,4 +1,4 @@ -This message announces the availability of Scheme Library release slib3a5. +This message announces the availability of Scheme Library release slib-3b1. SLIB is a portable Scheme library providing compatibiliy and utility functions for all standard Scheme implementations. @@ -20,81 +20,145 @@ Links to distributions of SLIB and related softwares are at the end of this message. -=-=- -slib3a5 news: +slib-3b1 news: - * Jerry van Dijk wrote NSIS scripts to created MS-Windows installers. + * Larceny (Scheme) is supported. - * Robert Babbit updated "guile.init" for Guile 1.8. + From Ivan Shmakov: - * Taylor R. Campbell updated "mitscheme.init" for versions after 7.7.1. + * scheme48.init (slib:os-strings): Fixed init for 1.7 (and 1.3). + (defmacro:eval, defmacro:load): Fixed. - * Ivan Shmakov rewrote scheme48(.init) delete-file using Posix unlink. + From Rob Browning: - * Stéphane Rollandin fixed problem with macros-that-work. + * guile.init (implementation-vicinity): Just (%site-dir). + (file-position, gentemp): module-replace! + (library-vicinity): Try (%search-load-path "slib/guile.init"). -* Draft SRFI-96 "SRFI Prerequisites" - (http://srfi.schemers.org/srfi-96/srfi-96.html) specifies the - interface between implementations and the SLIB library system. + From Aubrey Jaffer: -* Added support for Kawa and SISC. + * Logo and icon. -* SSAX (xml-parse) module ported from SSAX 5.1 (http://ssax.sourceforge.net/). + * Added program-arguments to System-Interface section in Manual. -* Sort package compatibly upgraded to SRFI-95. + * *.init: implementation-vicinity can be overridden by + implementation-specific environment variable: + MITSCHEME_IMPLEMENTATION_PATH + VSCM_IMPLEMENTATION_PATH + STK_IMPLEMENTATION_PATH + RSCHEME_IMPLEMENTATION_PATH + JSCHEME_IMPLEMENTATION_PATH + GAMBIT_IMPLEMENTATION_PATH + ELK_IMPLEMENTATION_PATH + CHEZ_IMPLEMENTATION_PATH + BIGLOO_IMPLEMENTATION_PATH + GUILE_IMPLEMENTATION_PATH + MZSCHEME_IMPLEMENTATION_PATH -* Added features SRFI-11 (let-values) and SRFI-28 (format). + * FAQ, slib.spec, Makefile: Always put - between slib and version. -* file-position is procedure to set and retrieve file position. + * byte.scm: Rewritten based on uniform arrays. -* Fixed Guile array? in "guile.init". + * random.scm (random): Err when passed negative number. -* jscheme.init (scheme-implementation-version): 7.2. - (gcd, lcm, round, atan, expt): Fixed some R5RS non-conformances. + * srfi-1.scm (lset<=): Fixed to use first argument. -* elk.init (delete-file): Quoted filename to system. -* scheme2c.init (delete-file, file-exists?): Quoted filename to system. -* scheme48.init (delete-file): Quoted filename to system. -* umbscheme.init (file-exists?, delete-file): Quoted filename to system. -* vscm.init (file-exists?): Quoted filename to system. + * transact.scm (word:lock!): Don't try to read file until after + call-with-open-ports returns. + (describe-file-lock): Handle case when file isn't locked. + (windows:user-email-address): Much simplified; updated to + Windows-XP from Windows-95. + (describe-file-lock): Added diagnostic to current-error-port. -* slib.sh (Kawa): Now supported. + * rdms.scm (open-table): Return #f for failure per documentation. -* require.scm: Check up to SRFI-150. + * solid.scm (light:point, light:spot): Fixed. -* Makefile (srcdir.mk): Removed. -(install*): Added $(DESTDIR) prefix. -* Makefile: Changed to use "mkdir -p" (per Marijn Schouten). + * prec.scm (prec:parse-delimited): First (recursive) clause was + missing argument. -* integer-sqrt moved from "root.scm" to "math-integer.scm". + * determ.scm (matrix:inverse, matrix->lists): Corrected + documentation. -* arraymap.scm (array-index-for-each): Added. + * clrnamdb.scm, resenecolours.txt: Updated to Resene-2007. -* schmooz.scm (schmooz): Put generated .txi files in current directory. -(pathname->local-filename): Added complement to pathname->vicinity. + * slib.texi (Spectra): Clarified action of features cie1964, + cie1931, and ciexyz. -* determ.scm (matrix:sum, matrix:difference): Added. -(matrix:product): Extended to multiplication by scalar. + * glob.scm, slib.texi: Removed glob as alias for filename. -* logical.scm (logcount): Simplified in terms of bitwise-bit-count. -(bitwise-bit-count): Added; returns negative integer for negative input. + * dirs.scm: Require 'filename instead of 'glob. -* slib.texi: Eliminated cover texts from GFDL. + * require.scm: Condition SRFI scan on srfi-0. -* collect.scm (reduce): Support both comlist (2-argument) variant -and the collect (> 2-argument) variant. -* srfi-1.scm (reduce): Support both comlist (2-argument) variant -and the SRFI-1 (3-argument) variant. + * mklibcat.scm: Feature-name is srfi-0 (was srfi). -* bytenumb.scm (ieee-float->bytes, ieee-double->bytes): Test for 0 -and 0/0 only once; changed abs to magnitude to work with 0/0. + * mbe.scm (macro:eval): defmacro:eval. + (macro:load): defmacro:load. + + * defmacex.scm (defmacro:expand*): Use macroexpand instead of + macroexpand-1 in preparation for macroexpand-1 deprecation. + + * slib.nsi: Added *.init files. + + * README (Implementation-specific Instructions): Updated. + + * scheme48.init (char-code-limit): 128; does ascii conversions. + (1+, -1+): Removed; choked Scheme48-1.7. + Added SRFIs as found in Scheme-48 release-notes. + (scheme-implementation-version): Lose text after number. + (program-arguments): Removed dummy definition. + + * scsh.init (program-arguments): Defined to command-line per + http://practical-scheme.net/wiliki/schemexref.cgi?command-line + (library-vicinity, implementation-vicinity): Find path once. + + * scheme2c.init, kawa.init, umbscheme.init + (implementation-vicinity): find path once. + + * vscm.init (slib:features): Added macro. + + * RScheme.init (slib:features): Added defmacro. + + * mzscheme.init (slib:features): Added syntax-case. + + * guile.init, sisc.init (macro:load): slib:load-source. + + * umbscheme.init, pscheme.init (defmacro:eval, defmacro:load): + Simplified. + + * kawa.init, mitscheme.init, bigloo.init, gambit.init, + jscheme.init: (re)moved some comments. + + * Template.scm, t3.init, STk.init, macscheme.init, scheme2c.init, + scsh.init, chez.init, elk.init (slib:features): Added defmacro. + + * guile.init ((ice-9 slib)): "ice-9/slib.scm" doesn't become valid + (and shorter) until version guile-1.8.3. + + * mzscheme.init: Renamed from DrScheme.init. + (slib:features): Added format. + (slib:load-compiled): Handle SRFI requires. + + * Makefile (catalogs): Copy "mkpltcat.scm" to "mkimpcat.scm" in + mzscheme's implementation-vicinity. + (mkfiles): Added "mkpltcat.scm". + + * mkpltcat.scm: "mkimpcat.scm" for mzscheme which adds all + supported SRFIs to the catalog. + + * Makefile (ciefiles): Separated from Scheme sourcefiles. + (test): Unmaintained target removed. -=-=- SLIB is available from: - http://swiss.csail.mit.edu/ftpdir/scm/slib3a5.zip - http://swiss.csail.mit.edu/ftpdir/scm/slib-3a5-1.noarch.rpm - swiss.csail.mit.edu:/pub/scm/slib3a5.zip - swiss.csail.mit.edu:/pub/scm/slib-3a5-1.noarch.rpm + http://swiss.csail.mit.edu/ftpdir/scm/slib-3b1.zip + http://swiss.csail.mit.edu/ftpdir/scm/slib-3b1-1.noarch.rpm + http://swiss.csail.mit.edu/ftpdir/scm/slib-3b1-1.exe + swiss.csail.mit.edu:/pub/scm/slib-3b1.zip + swiss.csail.mit.edu:/pub/scm/slib-3b1-1.noarch.rpm + swiss.csail.mit.edu:/pub/scm/slib-3b1-1.exe SLIB-PSD is a portable debugger for Scheme (requires emacs editor): http://swiss.csail.mit.edu/ftpdir/scm/slib-psd1-3.tar.gz @@ -1,3 +1,229 @@ +2008-02-01 Aubrey Jaffer <jaffer@aubrey.jaffer> + + * require.scm (*slib-version*): Bumped from 3a5 to 3b1. + +2008-01-31 Aubrey Jaffer <agj@alum.mit.edu> + + * FAQ, slib.spec, Makefile: Always put - between slib and version. + +2008-01-28 Aubrey Jaffer <agj@alum.mit.edu> + + * fdl.texi: (Version 1.2, November 2002) Registered in CVS. + + * slib.texi (About SLIB): SLIB is part of the GNU project. + (Installation): Fixed \ problem choking pdf generation. + +2008-01-23 Aubrey Jaffer <agj@alum.mit.edu> + + * byte.scm: Rewritten to use uniform arrays. + + * random.scm (random): Err when passed negative number. + + * scheme48.init (char-code-limit): 128; does ascii conversions. + +2008-01-23 Ivan Shmakov + + * scheme48.init (slib:os-strings): Fixed init for 1.7 (and 1.3). + (defmacro:eval, defmacro:load): Fixed. + +2008-01-21 Aubrey Jaffer <agj@alum.mit.edu> + + * Makefile (ciefiles): Separated from Scheme sourefiles. + (test): Unmaintained target removed. + +2008-01-19 Aubrey Jaffer <agj@alum.mit.edu> + + * scheme48.init (1+, -1+): Removed; choke Scheme48-1.7. + Added SRFIs as found in Scheme-48 release-notes. + (scheme-implementation-version): Lose text after number. + + * Makefile ($(S48SLIB), $(S48LIB)): Prefix with $(DESTDIR). + +2008-01-18 Aubrey Jaffer <agj@alum.mit.edu> + + * srfi-1.scm (lset<=): Fixed to use first argument. + + * Makefile (install, psdtemp/slib): mkdir -p. + +2008-01-17 Aubrey Jaffer <agj@alum.mit.edu> + + * transact.scm (word:lock!): Don't try to read file until after + call-with-open-ports returns. + (describe-file-lock): Handle case when file isn't locked. + (windows:user-email-address): Much simplified; updated to + Windows-XP from Windows-95. + +2008-01-16 Aubrey Jaffer <agj@alum.mit.edu> + + * Makefile (RSYNC): --rsync-path no longer needed. + + * transact.scm (describe-file-lock): Added diagnostic to + current-error-port. + + * slib.nsi (MUI_ICON): Set to "SLIB.ico". + + * Makefile (allfiles): Added SLIB.ico. + +2008-01-15 Aubrey Jaffer <agj@alum.mit.edu> + + * rdms.scm (open-table): Return #f for failure per documentation. + +2008-01-07 Aubrey Jaffer <agj@alum.mit.edu> + + * solid.scm (light:point, light:spot): Fixed. + +2008-01-02 Aubrey Jaffer <agj@alum.mit.edu> + + * determ.scm (matrix:inverse, matrix->lists): Corrected + documentation. + +2007-12-31 Aubrey Jaffer <agj@alum.mit.edu> + + * clrnamdb.scm, resenecolours.txt: Updated to Resene-2007. + +2007-12-23 Aubrey Jaffer <agj@alum.mit.edu> + + * slib.texi: Removed glob as alias for filename. + + * glob.scm: In documentation, removed glob as alias for filename. + + * dirs.scm: Require 'filename instead of 'glob. + + * require.scm: Condition SRFI scan on srfi-0. + + * mklibcat.scm: Feature-name is srfi-0 (was srfi). + + * scheme48.init, mzscheme.init, Template.scm, umbscheme.init, + vscm.init, STk.init, scheme2c.init, scsh.init, sisc.init, t3.init, + RScheme.init, macscheme.init, mitscheme.init, pscheme.init, + jscheme.init, kawa.init, bigloo.init, chez.init, elk.init, + gambit.init, guile.init (slib:features): + Added srfi-96. Replaced srfi with srfi-0. + + * mbe.scm (macro:eval): defmacro:eval. + (macro:load): defmacro:load. + + * defmacex.scm (defmacro:expand*): Use macroexpand instead of + macroexpand-1 in preparation for macroexpand-1 deprecation. + + * vscm.init (slib:features): Added macro. + + * RScheme.init (slib:features): Added defmacro. + + * mzscheme.init (slib:features): Added syntax-case. + + * guile.init, scheme48.init, sisc.init (macro:load): + slib:load-source. + + * umbscheme.init, pscheme.init (defmacro:eval, defmacro:load): + Simplified. + + * kawa.init, mitscheme.init, bigloo.init, gambit.init, + jscheme.init: (re)moved some comments. + + * Template.scm, t3.init, STk.init, macscheme.init, scheme2c.init, + scsh.init, chez.init, elk.init (slib:features): Added defmacro. + +2007-12-21 Aubrey Jaffer <agj@alum.mit.edu> + + * slib.nsi: Added *.init files. + + * slib.sh, slib.1: Added Larceny. + + * slib.texi (Installation): Added Larceny. + + * README (Implementation-specific Instructions): Updated. + +2007-12-20 Aubrey Jaffer <agj@alum.mit.edu> + + * prec.scm (prec:parse-delimited): First (recursive) clause was + missing argument. + +2007-12-18 Aubrey Jaffer <agj@alum.mit.edu> + + * guile.init ((ice-9 slib)): "ice-9/slib.scm" doesn't become valid + (and shorter) until version guile-1.8.3. + +2007-12-08 Aubrey Jaffer <agj@alum.mit.edu> + + * Makefile (catalogs): Copy "mkpltcat.scm" to "mkimpcat.scm" in + mzscheme's implementation-vicinity. + (mkfiles): Added "mkpltcat.scm". + + * mkpltcat.scm: "mkimpcat.scm" for mzscheme which adds all + supported SRFIs to the catalog. + + * mzscheme.init (slib:features): Added format. + (slib:load-compiled): Handle SRFI requires. + + * slib.texi (Spectra): Clarified action of features cie1964, + cie1931, and ciexyz. + +2007-11-29 Aubrey Jaffer <agj@alum.mit.edu> + + * slib.texi (Installation): Documented *_IMPLEMENTATION_PATHs. + + * slib.sh: mzscheme.init renamed from DrScheme.init. + + * mzscheme.init: Renamed from DrScheme.init. + + * Makefile (ifiles): mzscheme.init renamed from DrScheme.init. + + * Template.scm (implementation-vicinity): Environment variable + {TEMPLATE}_IMPLEMENTATION_PATH overrides. + + * mitscheme.init (implementation-vicinity): Environment variable + MITSCHEME_IMPLEMENTATION_PATH overrides. + + * vscm.init (implementation-vicinity): Environment variable + VSCM_IMPLEMENTATION_PATH overrides. + + * STk.init (implementation-vicinity): Environment variable + STK_IMPLEMENTATION_PATH overrides. + + * RScheme.init (implementation-vicinity): Environment variable + RSCHEME_IMPLEMENTATION_PATH overrides. + + * jscheme.init (implementation-vicinity): Environment variable + JSCHEME_IMPLEMENTATION_PATH overrides. + + * gambit.init (implementation-vicinity): Environment variable + GAMBIT_IMPLEMENTATION_PATH overrides. + + * elk.init (implementation-vicinity): Environment variable + ELK_IMPLEMENTATION_PATH overrides. + + * chez.init (implementation-vicinity): Environment variable + CHEZ_IMPLEMENTATION_PATH overrides. + + * bigloo.init (program-arguments): Defined per information on + http://practical-scheme.net/wiliki/schemexref.cgi?command-line and + http://practical-scheme.net/wiliki/schemexref.cgi?executable-name. + (implementation-vicinity): Environment variable + BIGLOO_IMPLEMENTATION_PATH overrides. + + * guile.init (slib:features): Abstracted defined? tests. + (implementation-vicinity): Environment variable + GUILE_IMPLEMENTATION_PATH overrides. + + * DrScheme.init, elk.init (program-arguments): Fake the program + name (first element) from scheme-implementation-type. + (implementation-vicinity): Environment variable + MZSCHEME_IMPLEMENTATION_PATH overrides. + + * scsh.init (program-arguments): Defined to command-line per + http://practical-scheme.net/wiliki/schemexref.cgi?command-line + + * scheme48.init (program-arguments): Removed dummy definition. + + * sisc.init (library-vicinity, implementation-vicinity): Find path + once. + + * scheme2c.init, kawa.init, umbscheme.init + (implementation-vicinity): find path once. + + * slib.texi (System Interface): Added program-arguments. + 2007-11-28 Aubrey Jaffer <agj@alum.mit.edu> * slib.sh (Usage): Updated implementation list. @@ -1,4 +1,4 @@ -FAQ (Frequently Asked Questions and answers) for SLIB Scheme Library (slib3a5). +FAQ (Frequently Asked Questions and answers) for SLIB Scheme Library (slib-3b1). Written by Aubrey Jaffer (http://swiss.csail.mit.edu/~jaffer). INTRODUCTION AND GENERAL INFORMATION @@ -47,7 +47,7 @@ Several times a year. [] What is the latest version? -The version as of this writing is slib3a5. The latest documentation +The version as of this writing is slib-3b1. The latest documentation is available online at: http://swiss.csail.mit.edu/~jaffer/SLIB.html @@ -11,7 +11,7 @@ intro: @echo -make slib.info -VERSION = 3a5 +VERSION = 3b1 RELEASE = 1 rpm_prefix=$(HOME)/rpmbuild/ @@ -22,8 +22,7 @@ bindir = $(exec_prefix)bin/ libdir = $(exec_prefix)lib/ libslibdir = $(libdir)slib/ # directory where `make install' will put manual page. -mandir = $(prefix)man/ -man1dir = $(mandir)man1/ +man1dir = $(prefix)man/man1/ infodir = $(prefix)info/ PREVDOCS = prevdocs/ @@ -38,8 +37,8 @@ VM = scheme48vm IMAGE48 = slib.image INSTALL_DATA = install -c -$(S48LIB)slibcat: - touch $(S48LIB)slibcat +$(DESTDIR)$(S48LIB)slibcat: + touch $(DESTDIR)$(S48LIB)slibcat catalogs: -if type scm; then scm -c "(require 'new-catalog)"; fi @@ -47,8 +46,10 @@ catalogs: "(use-modules (ice-9 slib)) (require 'new-catalog)"; fi -if type umb-scheme; then SCHEME_INIT=umbscheme.init;export SCHEME_INIT;\ echo "(require 'new-catalog)" | umb-scheme; fi - -if type mzscheme; then SCHEME_LIBRARY_PATH=`pwd`/;export SCHEME_LIBRARY_PATH;\ - mzscheme -g -f DrScheme.init -e "(require 'new-catalog)" </dev/null; fi + -if type mzscheme; then\ + SCHEME_LIBRARY_PATH=`pwd`/;export SCHEME_LIBRARY_PATH;\ + cp mkpltcat.scm `mzscheme -mf mzscheme.init -e '(begin(display(implementation-vicinity))(exit))'`mkimpcat.scm;\ + mzscheme -g -f mzscheme.init -e "(require 'new-catalog)" </dev/null; fi -if type scheme48; then make install48; fi MKNMDB = (require 'color-database) (make-slib-color-name-db) (slib:exit) @@ -61,46 +62,46 @@ clrnamdb.scm: mkclrnam.scm color.scm resenecolours.txt saturate.txt nbs-iscc.tx elif type umb-scheme; then SCHEME_INIT=`pwd`/umbscheme.init;export SCHEME_INIT;\ echo "$(MKNMDB)" | umb-scheme;\ elif type mzscheme; then SCHEME_LIBRARY_PATH=`pwd`/;export SCHEME_LIBRARY_PATH;\ - echo "$(MKNMDB)" | mzscheme -f DrScheme.init;\ + echo "$(MKNMDB)" | mzscheme -f mzscheme.init;\ fi -$(S48SLIB)strport.scm: - test -d $(S48SLIB) || mkdir $(S48SLIB) - echo ";;; strport.scm -*- scheme -*-">$(S48SLIB)strport.scm - echo ";@">>$(S48SLIB)strport.scm - echo "(define (call-with-output-string proc)">>$(S48SLIB)strport.scm - echo " (let ((port (make-string-output-port)))">>$(S48SLIB)strport.scm - echo " (proc port)">>$(S48SLIB)strport.scm - echo " (string-output-port-output port)))">>$(S48SLIB)strport.scm - echo "(define (call-with-input-string string proc)">>$(S48SLIB)strport.scm - echo " (proc (make-string-input-port string)))">>$(S48SLIB)strport.scm - -$(S48SLIB)record.scm: - test -d $(S48SLIB) || mkdir $(S48SLIB) - echo ";;; record.scm -*- scheme -*-">$(S48SLIB)record.scm - echo ";; This code is in the public domain">>$(S48SLIB)record.scm - echo ";@">>$(S48SLIB)record.scm - echo "(define make-record-type make-record-type)">>$(S48SLIB)record.scm - echo "(define record-constructor">>$(S48SLIB)record.scm - echo " (let ((constructor record-constructor))">>$(S48SLIB)record.scm - echo " (lambda (rt . fields)">>$(S48SLIB)record.scm - echo " (constructor rt (if (pair? fields)">>$(S48SLIB)record.scm - echo " (car fields)">>$(S48SLIB)record.scm - echo " (record-type-field-names rt))))))">>$(S48SLIB)record.scm - echo "(define record-predicate record-predicate)">>$(S48SLIB)record.scm - echo "(define record-accessor record-accessor)">>$(S48SLIB)record.scm - echo "(define record-modifier record-modifier)">>$(S48SLIB)record.scm +$(DESTDIR)$(S48SLIB)strport.scm: + mkdir -p $(DESTDIR)$(S48SLIB) + echo ";;; strport.scm -*- scheme -*-">$(DESTDIR)$(S48SLIB)strport.scm + echo ";@">>$(DESTDIR)$(S48SLIB)strport.scm + echo "(define (call-with-output-string proc)">>$(DESTDIR)$(S48SLIB)strport.scm + echo " (let ((port (make-string-output-port)))">>$(DESTDIR)$(S48SLIB)strport.scm + echo " (proc port)">>$(DESTDIR)$(S48SLIB)strport.scm + echo " (string-output-port-output port)))">>$(DESTDIR)$(S48SLIB)strport.scm + echo "(define (call-with-input-string string proc)">>$(DESTDIR)$(S48SLIB)strport.scm + echo " (proc (make-string-input-port string)))">>$(DESTDIR)$(S48SLIB)strport.scm + +$(DESTDIR)$(S48SLIB)record.scm: + mkdir -p $(DESTDIR)$(S48SLIB) + echo ";;; record.scm -*- scheme -*-">$(DESTDIR)$(S48SLIB)record.scm + echo ";; This code is in the public domain">>$(DESTDIR)$(S48SLIB)record.scm + echo ";@">>$(DESTDIR)$(S48SLIB)record.scm + echo "(define make-record-type make-record-type)">>$(DESTDIR)$(S48SLIB)record.scm + echo "(define record-constructor">>$(DESTDIR)$(S48SLIB)record.scm + echo " (let ((constructor record-constructor))">>$(DESTDIR)$(S48SLIB)record.scm + echo " (lambda (rt . fields)">>$(DESTDIR)$(S48SLIB)record.scm + echo " (constructor rt (if (pair? fields)">>$(DESTDIR)$(S48SLIB)record.scm + echo " (car fields)">>$(DESTDIR)$(S48SLIB)record.scm + echo " (record-type-field-names rt))))))">>$(DESTDIR)$(S48SLIB)record.scm + echo "(define record-predicate record-predicate)">>$(DESTDIR)$(S48SLIB)record.scm + echo "(define record-accessor record-accessor)">>$(DESTDIR)$(S48SLIB)record.scm + echo "(define record-modifier record-modifier)">>$(DESTDIR)$(S48SLIB)record.scm slib48: $(IMAGE48) $(IMAGE48): Makefile $(S48INIT) S48_VERSION="`echo ,exit | $(RUNNABLE) | sed -n 's/Welcome to Scheme 48 //;s/ ([^)]*)[.]//;p;q'`";export S48_VERSION;\ - S48_VICINITY="$(S48LIB)";export S48_VICINITY;\ + S48_VICINITY="$(DESTDIR)$(S48LIB)";export S48_VICINITY;\ SCHEME_LIBRARY_PATH="`pwd`/";export SCHEME_LIBRARY_PATH;\ $(RUNNABLE) < $(S48INIT) -install48: $(IMAGE48) $(S48SLIB)strport.scm $(S48SLIB)record.scm - $(INSTALL_DATA) $(IMAGE48) $(S48LIB) +install48: $(IMAGE48) $(DESTDIR)$(S48SLIB)strport.scm $(DESTDIR)$(S48SLIB)record.scm + $(INSTALL_DATA) $(IMAGE48) $(DESTDIR)$(S48LIB) (echo '#! /bin/sh';\ - echo exec $(RUNNABLE) -i '$(S48LIB)$(IMAGE48)' \"\$$\@\") \ + echo exec $(RUNNABLE) -i '$(DESTDIR)$(S48LIB)$(IMAGE48)' \"\$$\@\") \ > $(DESTDIR)$(bindir)slib48 chmod +x $(DESTDIR)$(bindir)slib48 @@ -126,7 +127,7 @@ efiles = record.scm dynamic.scm process.scm hash.scm \ rfiles = rdms.scm alistab.scm paramlst.scm \ batch.scm crc.scm dbrowse.scm getopt.scm dbinterp.scm \ dbcom.scm dbsyn.scm -gfiles = colorspc.scm cie1931.xyz cie1964.xyz resenecolours.txt saturate.txt \ +ciefiles = cie1931.xyz cie1964.xyz resenecolours.txt saturate.txt \ nbs-iscc.txt ciesid65.dat ciesia.dat txiscms =grapheps.scm glob.scm getparam.scm \ @@ -157,31 +158,29 @@ texifiles = schmooz.texi indexes.texi object.texi format.texi limit.texi \ fdl.texi docfiles = ANNOUNCE README COPYING FAQ slib.1 slib.info slib.texi version.txi\ ChangeLog $(texifiles) $(txifiles) -mkfiles = Makefile require.scm Template.scm syncase.sh mklibcat.scm \ - Bev2slib.scm slib.spec slib.sh grapheps.ps slib.nsi +mkfiles = Makefile require.scm Template.scm mklibcat.scm mkpltcat.scm \ + syncase.sh Bev2slib.scm slib.spec slib.sh grapheps.ps slib.nsi ifiles = bigloo.init chez.init elk.init macscheme.init mitscheme.init \ scheme2c.init scheme48.init gambit.init t3.init vscm.init \ scm.init scsh.init sisc.init pscheme.init STk.init kawa.init \ - RScheme.init DrScheme.init umbscheme.init guile.init jscheme.init + RScheme.init mzscheme.init umbscheme.init guile.init jscheme.init tfiles = macrotst.scm dwindtst.scm formatst.scm sfiles = $(ffiles) $(lfiles) $(revfiles) $(afiles) $(scfiles) $(efiles) \ - $(rfiles) $(gfiles) $(scafiles) $(txiscms) $(srfiles) + $(rfiles) colorspc.scm $(scafiles) $(txiscms) $(srfiles) allfiles = $(docfiles) $(mkfiles) $(ifiles) $(sfiles) $(tfiles) $(bfiles) \ - slib.doc clrnamdb.scm + slib.doc $(ciefiles) clrnamdb.scm SLIB.ico pinstall: slib.1 - test -d $(DESTDIR)$(mandir) || mkdir $(DESTDIR)$(mandir) - test -d $(DESTDIR)$(man1dir) || mkdir $(DESTDIR)$(man1dir) + mkdir -p $(DESTDIR)$(man1dir) -cp slib.1 $(DESTDIR)$(man1dir) install: pinstall clrnamdb.scm - test -d $(DESTDIR)$(libdir) || mkdir $(DESTDIR)$(libdir) - test -d $(DESTDIR)$(libslibdir) || mkdir $(DESTDIR)$(libslibdir) + mkdir -p $(DESTDIR)$(libslibdir) -cp $(ifiles) $(sfiles) $(bfiles) $(mkfiles) clrnamdb.scm $(DESTDIR)$(libslibdir) - test -d $(DESTDIR)$(bindir) || mkdir $(DESTDIR)$(bindir) + mkdir -p $(DESTDIR)$(bindir) echo '#! /bin/sh' > $(DESTDIR)$(bindir)slib echo SCHEME_LIBRARY_PATH=$(DESTDIR)$(libslibdir) >> $(DESTDIR)$(bindir)slib - echo S48_VICINITY=$(S48LIB) >> $(DESTDIR)$(bindir)slib + echo S48_VICINITY=$(DESTDIR)$(S48LIB) >> $(DESTDIR)$(bindir)slib echo VERSION=$(VERSION) >> $(DESTDIR)$(bindir)slib echo export SCHEME_LIBRARY_PATH S48_VICINITY >> $(DESTDIR)$(bindir)slib cat slib.sh >> $(DESTDIR)$(bindir)slib @@ -247,15 +246,15 @@ html: $(htmldir)slib_toc.html # -rm -f slib_stoc.html # if [ -f $(PREVDOCS)slib_toc.html ]; \ # then hitch $(PREVDOCS)slib_\*.html slib_\*.html $(htmldir); \ -# else cp slib_*.html $(htmldir);fi +#p else cp slib_*.html $(htmldir);fi -slib$(VERSION).info: version.txi slib.texi $(txifiles) $(texifiles) +slib-$(VERSION).info: version.txi slib.texi $(txifiles) $(texifiles) makeinfo slib.texi --no-warn --no-split -o slib.info - mv slib.info slib$(VERSION).info -slib.info: slib$(VERSION).info + mv slib.info slib-$(VERSION).info +slib.info: slib-$(VERSION).info if [ -f $(PREVDOCS)slib.info ];\ - then infobar $(PREVDOCS)slib.info slib$(VERSION).info slib.info;\ - else cp slib$(VERSION).info slib.info;fi + then infobar $(PREVDOCS)slib.info slib-$(VERSION).info slib.info;\ + else cp slib-$(VERSION).info slib.info;fi info: installinfo installinfo: $(DESTDIR)$(infodir)slib.info $(DESTDIR)$(infodir)slib.info: slib.info @@ -274,7 +273,7 @@ docs: $(DESTDIR)$(infodir)slib.info.gz $(htmldir)slib_toc.html slib.dvi \ makedev = make -f $(HOME)/makefile.dev CHPAT=$(HOME)/bin/chpat -RSYNC=rsync --rsync-path=bin/rsync -bav +RSYNC=rsync -bav UPLOADEE=swissnet_upload dest = $(HOME)/dist/ DOSCM = /c/Voluntocracy/dist/ @@ -297,6 +296,7 @@ $(PREVDOCS)slib.info: Makefile cd $(PREVDOCS)slib; make slib.info; make slib_toc.html cd $(PREVDOCS); mv -f slib/slib.info slib/*.html ./ rm -rf $(PREVDOCS)slib + -rm -f slib-$(VERSION).info distinfo: $(dest)slib.info.zip $(dest)slib.info.zip: infotemp/slib @@ -304,34 +304,34 @@ $(dest)slib.info.zip: infotemp/slib rm -rf infotemp release: dist pdf tar.gz # rpm - cvs tag -F slib$(VERSION) + cvs tag -F slib-$(VERSION) cp ANNOUNCE $(htmldir)SLIB_ANNOUNCE.txt cp COPYING $(htmldir)SLIB_COPYING.txt cp FAQ $(htmldir)SLIB.FAQ $(RSYNC) $(htmldir)SLIB.html $(htmldir)SLIB_ANNOUNCE.txt \ $(htmldir)SLIB_COPYING.txt $(UPLOADEE):public_html/ - $(RSYNC) $(dest)README $(dest)slib$(VERSION).zip \ - $(dest)slib$(VERSION).tar.gz \ + $(RSYNC) $(dest)README $(dest)slib-$(VERSION).zip \ + $(dest)slib-$(VERSION).tar.gz \ $(dest)slib-$(VERSION)-$(RELEASE).noarch.rpm \ $(dest)slib-$(VERSION)-$(RELEASE).src.rpm $(UPLOADEE):dist/ -# upload $(dest)README $(dest)slib$(VERSION).zip ftp.gnu.org:gnu/jacal/ +# upload $(dest)README $(dest)slib-$(VERSION).zip ftp.gnu.org:gnu/jacal/ upzip: $(HOME)/pub/slib.zip $(RSYNC) $(HOME)/pub/slib.zip $(UPLOADEE):pub/ -dist: $(dest)slib$(VERSION).zip -$(dest)slib$(VERSION).zip: temp/slib - $(makedev) DEST=$(dest) PROD=slib ver=$(VERSION) zip +dist: $(dest)slib-$(VERSION).zip +$(dest)slib-$(VERSION).zip: temp/slib + $(makedev) DEST=$(dest) PROD=slib ver=-$(VERSION) zip -tar.gz: $(dest)slib$(VERSION).tar.gz -$(dest)slib$(VERSION).tar.gz: temp/slib - $(makedev) DEST=$(dest) PROD=slib ver=$(VERSION) tar.gz +tar.gz: $(dest)slib-$(VERSION).tar.gz +$(dest)slib-$(VERSION).tar.gz: temp/slib + $(makedev) DEST=$(dest) PROD=slib ver=-$(VERSION) tar.gz rpm: pubzip -#$(dest)slib-$(VERSION)-$(RELEASE).noarch.rpm: $(dest)slib$(VERSION).zip - cp $(HOME)/pub/slib.zip $(rpm_prefix)SOURCES/slib$(VERSION).zip +#$(dest)slib-$(VERSION)-$(RELEASE).noarch.rpm: $(dest)slib-$(VERSION).zip + cp $(HOME)/pub/slib.zip $(rpm_prefix)SOURCES/slib-$(VERSION).zip rpmbuild -ba slib.spec # --clean - rm $(rpm_prefix)SOURCES/slib$(VERSION).zip + rm $(rpm_prefix)SOURCES/slib-$(VERSION).zip mv $(rpm_prefix)RPMS/noarch/slib-$(VERSION)-$(RELEASE).noarch.rpm \ $(rpm_prefix)SRPMS/slib-$(VERSION)-$(RELEASE).src.rpm $(dest) @@ -345,11 +345,11 @@ slib.com: temp/slib zip: slib.zip slib.zip: temp/slib $(makedev) DEST=../ PROD=slib zip -doszip: $(DOSCM)slib$(VERSION).zip -$(DOSCM)slib$(VERSION).zip: temp/slib slib.html - $(makedev) DEST=$(DOSCM) PROD=slib ver=$(VERSION) zip - -cd ..; zip -9ur $(DOSCM)slib$(VERSION).zip slib/slib.html - zip -d $(DOSCM)slib$(VERSION).zip slib/slib.info +doszip: $(DOSCM)slib-$(VERSION).zip +$(DOSCM)slib-$(VERSION).zip: temp/slib slib.html + $(makedev) DEST=$(DOSCM) PROD=slib ver=-$(VERSION) zip + -cd ..; zip -9ur $(DOSCM)slib-$(VERSION).zip slib/slib.html + zip -d $(DOSCM)slib-$(VERSION).zip slib/slib.info pubzip: temp/slib $(makedev) DEST=$(HOME)/pub/ PROD=slib zip @@ -359,7 +359,7 @@ pubdiffs: temp/slib distdiffs: temp/slib $(makedev) DEST=$(dest) PROD=slib ver=$(ver) distdiffs announcediffs: temp/slib - $(makedev) DEST=$(dest) PROD=slib ver=$(VERSION) announcediffs + $(makedev) DEST=$(dest) PROD=slib ver=-$(VERSION) announcediffs psdfiles=COPYING.psd README.psd cmuscheme.el comint.el instrum.scm pexpr.scm \ primitives.scm psd-slib.scm psd.el read.scm runtime.scm version.scm @@ -369,52 +369,45 @@ psdtemp/slib: -rm -rf psdtemp mkdir -p psdtemp/slib/psd cd psd; ln $(psdfiles) ../psdtemp/slib/psd - mkdir psdtemp/slib/psd/doc + mkdir -p psdtemp/slib/psd/doc cd psd/doc; ln $(psdocfiles) ../../psdtemp/slib/psd/doc psdist: $(dest)slib-psd.tar.gz $(dest)slib-psd.tar.gz: psdtemp/slib $(makedev) DEST=$(dest) PROD=slib ver=-psd tar.gz TEMP=psdtemp/ +CITERS = FAQ README ANNOUNCE \ + ../dist/README \ + ../jacal/ANNOUNCE ../jacal/jacal.texi \ + ../scm/ANNOUNCE ../scm/scm.texi \ + ../wb/ANNOUNCE ../wb/README \ + ../synch/ANNOUNCE \ + $(DOSCM)unzipall.bat $(DOSCM)buildall \ + $(htmldir)JACAL.html \ + $(htmldir)README.html \ + $(htmldir)SCM.html \ + $(htmldir)SIMSYNCH.html \ + $(htmldir)FreeSnell/ANNOUNCE $(htmldir)FreeSnell/index.html +CITES = require.scm Makefile slib.spec scheme48.init \ + $(htmldir)SLIB.html slib.nsi ../scm/scm.nsi + new: + $(CHPAT) slib-$(VERSION) slib-$(ver) $(CITERS) + $(CHPAT) $(VERSION) $(ver) $(CITES) echo `date -I` \ Aubrey Jaffer \ \<`whoami`@`hostname`\>> change echo>> change echo \ \* require.scm \(*slib-version*\): Bumped from $(VERSION) to $(ver).>>change echo>> change cat ChangeLog >> change mv -f change ChangeLog - $(CHPAT) slib$(VERSION) slib$(ver) ANNOUNCE FAQ README \ - ../scm/ANNOUNCE \ - ../jacal/ANNOUNCE ../wb/README ../wb/ANNOUNCE \ - ../synch/ANNOUNCE \ - $(htmldir)README.html ../dist/README \ - $(htmldir)JACAL.html \ - $(htmldir)SCM.html \ - $(htmldir)SIMSYNCH.html ../scm/scm.texi ../jacal/jacal.texi \ - $(DOSCM)install.bat $(DOSCM)makefile \ - $(DOSCM)mkdisk.bat - $(CHPAT) slib-$(VERSION) slib-$(ver) ANNOUNCE FAQ ../scm/ANNOUNCE \ - ../jacal/ANNOUNCE ../wb/README ../wb/ANNOUNCE \ - ../synch/ANNOUNCE \ - $(htmldir)README.html ../dist/README \ - $(htmldir)JACAL.html \ - $(htmldir)SCM.html \ - $(htmldir)SIMSYNCH.html ../scm/scm.texi ../jacal/jacal.texi \ - $(DOSCM)install.bat $(DOSCM)makefile \ - $(DOSCM)mkdisk.bat - $(CHPAT) $(VERSION) $(ver) require.scm Makefile \ - $(htmldir)SLIB.html slib.spec scheme48.init \ - slib.nsi ../scm/scm.nsi cvs commit -lm '(*slib-version*): Bumped from $(VERSION) to $(ver).' - cvs tag -lF slib$(ver) + cvs tag -F slib-$(ver) tagfiles = README version.txi slib.texi $(texifiles) \ $(mkfiles) $(sfiles) $(bfiles) $(tfiles) $(ifiles) # README and $(ifiles) cause semgentation faults in ETAGS for Emacs version 19. tags: $(tagfiles) etags $(tagfiles) -test: $(sfiles) - $(scheme) Template.scm $(sfiles) rights: $(scheme) -ladmin -e"(admin:check-all)" $(sfiles) $(tfiles) \ $(bfiles) $(ifiles) @@ -1,4 +1,4 @@ -This directory contains the distribution of Scheme Library slib3a5. +This directory contains the distribution of Scheme Library slib-3b1. Slib conforms to Revised^5 Report on the Algorithmic Language Scheme and the IEEE P1178 specification. Slib supports Unix and similar systems, VMS, and MS-DOS. @@ -18,7 +18,7 @@ The maintainer can be reached at agj @ alum.mit.edu. reflect your system. `bigloo.init' is a configuration file for Bigloo. `chez.init' is a configuration file for Chez Scheme. - `DrScheme.init' is a configuration file for DrScheme. + `mzscheme.init' is a configuration file for mzscheme. `elk.init' is a configuration file for ELK 3.0. `gambit.init' is a configuration file for Gambit Scheme. `macscheme.init' is a configuration file for MacScheme. @@ -197,20 +197,22 @@ The maintainer can be reached at agj @ alum.mit.edu. INSTALLATION INSTRUCTIONS - There are four parts to installation: +There are five parts to installation: * Unpack the SLIB distribution. - * Configure the Scheme implementation(s) to locate the SLIB - directory. + * Install documentation and `slib' script. + + * Configure the Scheme implementation(s) to locate the SLIB directory + and implementation directories. * Arrange for Scheme implementation to load its SLIB initialization file. * Build the SLIB catalog for the Scheme implementation. -Unpacking the SLIB Distribution -------------------------------- +8.1.1 Unpacking the SLIB Distribution +------------------------------------- If the SLIB distribution is a GNU/Linux RPM, it will create the SLIB directory `/usr/share/slib'. @@ -223,21 +225,50 @@ this might be `/usr/share/slib', `/usr/local/lib/slib', or `/usr/lib/slib'. If you know where SLIB should go on other platforms, please inform agj @ alum.mit.edu. -Configure Scheme Implementation to Locate SLIB ----------------------------------------------- +8.1.2 Install documentation and slib script +------------------------------------------- -If the Scheme implementation supports `getenv', then the value of the -shell environment variable SCHEME_LIBRARY_PATH will be used for -`(library-vicinity)' if it is defined. Currently, Chez, Elk, -MITScheme, scheme->c, VSCM, and SCM support `getenv'. Scheme48 -supports `getenv' but does not use it for determining -`library-vicinity'. (That is done from the Makefile.) + make infoz + make install - The `(library-vicinity)' can also be specified from the SLIB -initialization file or by implementation-specific means. +8.1.3 Configure Scheme Implementation to Locate SLIB +---------------------------------------------------- -Loading SLIB Initialization File --------------------------------- +If the Scheme implementation supports `getenv', then the value of the +shell environment variable SCHEME_LIBRARY_PATH will be used for +`(library-vicinity)' if it is defined. Currently, Bigloo, Chez, Elk, +Gambit, Guile, Jscheme, Larceny, MITScheme, MzScheme, RScheme, STk, +VSCM, and SCM support `getenv'. Scheme48 supports `getenv' but does +not use it for determining `library-vicinity'. (That is done from the +Makefile.) + + The `(library-vicinity)' can also be set from the SLIB initialization +file or by implementation-specific means. + + Support for locating an implementation's auxiliary directory is uneven +among implementations. Also, the person installing SLIB may not have +write permission to some of these directories (necessary for writing +slibcat). Therefore, those implementations supporting `getenv' (except +SCM and Scheme48) provide a means for specifying the +`implementation-vicinity' through environment variables. Define the +indicated environment variable to the pathname (with trailing slash or +backslash) of the desired directory. Do not use `slib/' as an +implementation-vicinity! + +Bigloo BIGLOO_IMPLEMENTATION_PATH +Chez CHEZ_IMPLEMENTATION_PATH +ELK ELK_IMPLEMENTATION_PATH +Gambit GAMBIT_IMPLEMENTATION_PATH +Guile GUILE_IMPLEMENTATION_PATH +Jscheme JSCHEME_IMPLEMENTATION_PATH +MIT-Scheme MITSCHEME_IMPLEMENTATION_PATH +MzScheme MZSCHEME_IMPLEMENTATION_PATH +RScheme RSCHEME_IMPLEMENTATION_PATH +STk STK_IMPLEMENTATION_PATH +Vscm VSCM_IMPLEMENTATION_PATH + +8.1.4 Loading SLIB Initialization File +-------------------------------------- Check the manifest in `README' to find a configuration file for your Scheme implementation. Initialization files for most IEEE P1178 @@ -251,8 +282,8 @@ the file for how to configure it. Once this is done, modify the startup file for your Scheme implementation to `load' this initialization file. -Build New SLIB Catalog for Implementation ------------------------------------------ +8.1.5 Build New SLIB Catalog for Implementation +----------------------------------------------- When SLIB is first used from an implementation, a file named `slibcat' is written to the `implementation-vicinity' for that implementation. @@ -272,43 +303,69 @@ SLIB-installed scheme implementation, type: (require 'new-catalog) (slib:exit) -Implementation-specific Instructions ------------------------------------- +8.1.6 Implementation-specific Instructions +------------------------------------------ Multiple implementations of Scheme can all use the same SLIB directory. Simply configure each implementation's initialization file as outlined above. - - Implementation: SCM + -- Implementation: SCM The SCM implementation does not require any initialization file as SLIB support is already built into SCM. See the documentation with SCM for installation instructions. - - Implementation: VSCM - From: Matthias Blume <blume @ cs.Princeton.EDU> - Date: Tue, 1 Mar 1994 11:42:31 -0500 + -- Implementation: Larceny + Starting with version 0.96, Larceny contains its own SLIB + initialization file, loaded by `(require 'srfi-96)'. If + SCHEME_LIBRARY_PATH is not set, then Larceny looks for an `slib' + subdirectory of a directory in the list returned by + `(current-require-path)' - Disclaimer: The code below is only a quick hack. If I find some - time to spare I might get around to make some more things work. + larceny -- -e "(require 'srfi-96)" - You have to provide `vscm.init' as an explicit command line - argument. Since this is not very nice I would recommend the - following installation procedure: + -- Implementation: ELK + elk -i -l ${SCHEME_LIBRARY_PATH}elk.init - 1. run scheme + -- Implementation: PLT Scheme + -- Implementation: DrScheme + -- Implementation: MzScheme + The `init.ss' file in the _slibinit_ collection is an SLIB + initialization file. To run SLIB in MzScheme: - 2. `(load "vscm.init")' + mzscheme -f ${SCHEME_LIBRARY_PATH}mzscheme.init - 3. `(slib:dump "dumpfile")' + -- Implementation: MIT Scheme + scheme -load ${SCHEME_LIBRARY_PATH}mitscheme.init + + -- Implementation: Gambit-C 3.0 + gsi -:s ${SCHEME_LIBRARY_PATH}gambit.init - + + -- Implementation: SISC + sisc -e "(load \"${SCHEME_LIBRARY_PATH}sisc.init\")" -- + + -- Implementation: Kawa + kawa -f ${SCHEME_LIBRARY_PATH}kawa.init -- + + -- Implementation: Guile + Guile versions 1.6 and earlier link to an archaic SLIB version. In + RedHat or Fedora installations: + + rm /usr/share/guile/slib + ln -s ${SCHEME_LIBRARY_PATH} /usr/share/guile/slib - 4. mv dumpfile place-where-vscm-standard-bootfile-resides e.g. - mv dumpfile /usr/local/vscm/lib/scheme-boot (In this case - vscm should have been compiled with flag - -DDEFAULT_BOOTFILE='"/usr/local/vscm/lib/scheme-boot"'. See - Makefile (definition of DDP) for details.) + In Debian installations: + rm /usr/share/guile/1.6/slib + ln -s ${SCHEME_LIBRARY_PATH} /usr/share/guile/1.6/slib - - Implementation: Scheme48 + `${SCHEME_LIBRARY_PATH}' is where SLIB gets installed. + + Guile with SLIB can then be started thus: + + guile -l ${SCHEME_LIBRARY_PATH}guile.init + + -- Implementation: Scheme48 To make a Scheme48 image for an installation under `<prefix>', 1. `cd' to the SLIB directory @@ -319,22 +376,33 @@ above. This will also create a shell script with the name `slib48' which will invoke the saved image. - - Implementation: PLT Scheme - - Implementation: DrScheme - - Implementation: MzScheme - The `init.ss' file in the _slibinit_ collection is an SLIB - initialization file. + -- Implementation: VSCM + From: Matthias Blume <blume @ cs.Princeton.EDU> + Date: Tue, 1 Mar 1994 11:42:31 -0500 + + Disclaimer: The code below is only a quick hack. If I find some + time to spare I might get around to make some more things work. + + You have to provide `vscm.init' as an explicit command line + argument. Since this is not very nice I would recommend the + following installation procedure: + + 1. run scheme + + 2. `(load "vscm.init")' + + 3. `(slib:dump "dumpfile")' + + 4. mv dumpfile place-where-vscm-standard-bootfile-resides. For + example: - To use SLIB in MzScheme, set the SCHEME_LIBRARY_PATH environment - variable to the installed SLIB location; then invoke MzScheme thus: + `mv dumpfile /usr/local/vscm/lib/scheme-boot' - `mzscheme -f ${SCHEME_LIBRARY_PATH}DrScheme.init' + In this case vscm should have been compiled with flag: - - Implementation: MIT Scheme - `scheme -load ${SCHEME_LIBRARY_PATH}mitscheme.init' + -DDEFAULT_BOOTFILE='"/usr/local/vscm/lib/scheme-boot"' - - Implementation: Guile - `guile -l ${SCHEME_LIBRARY_PATH}guile.init' + See Makefile (definition of DDP) for details. PORTING INSTRUCTIONS diff --git a/RScheme.init b/RScheme.init index 87aacdb..a9607f4 100644 --- a/RScheme.init +++ b/RScheme.init @@ -31,11 +31,15 @@ ;;; the directory where any auxillary files to your Scheme ;;; implementation reside. -(define (implementation-vicinity) - (case (software-type) - ((unix) "/usr/local/lib/rs/0.7.1/") - ((vms) "scheme$src:") - ((ms-dos) "C:\\scheme\\"))) +(define implementation-vicinity + (let ((impl-path + (or (getenv "RSCHEME_IMPLEMENTATION_PATH") + (case (software-type) + ((unix) "/usr/local/lib/rs/0.7.1/") + ((vms) "scheme$src:") + ((ms-dos) "C:\\scheme\\") + (else ""))))) + (lambda () impl-path))) ;;; (library-vicinity) should be defined to be the pathname of the ;;; directory where files of Scheme library functions reside. @@ -103,8 +107,7 @@ ;@ (define sub-vicinity (case (software-type) - ((vms) (lambda - (vic name) + ((vms) (lambda (vic name) (let ((l (string-length vic))) (if (or (zero? (string-length vic)) (not (char=? #\] (string-ref vic (- l 1))))) @@ -144,6 +147,7 @@ ;(SLIB:LOAD-COMPILED "filename") vicinity srfi-59 + srfi-96 ;; Scheme report features ;; R5RS-compliant implementations should provide all 9 features. @@ -187,11 +191,11 @@ ;; Other common features - srfi ;srfi-0, COND-EXPAND finds all srfi-* + srfi-0 ;srfi-0, COND-EXPAND finds all srfi-* ;;; sicp ;runs code from Structure and ;Interpretation of Computer ;Programs by Abelson and Sussman. -;;; defmacro ;has Common Lisp DEFMACRO + defmacro ;has Common Lisp DEFMACRO ;;; record ;has user defined data structures string-port ;has CALL-WITH-INPUT-STRING and ;CALL-WITH-OUTPUT-STRING @@ -283,14 +287,6 @@ ;;; Return argument ;;(define (identity x) x) -;;; If your implementation provides eval SLIB:EVAL is single argument -;;; eval using the top-level (user) environment. -(define slib:eval eval) - -;;; If your implementation provides R4RS macros: -;(define macro:eval slib:eval) -;(define macro:load load) - (define *defmacros* (list (cons 'defmacro (lambda (name parms . body) @@ -320,14 +316,14 @@ (string->symbol (string-append "slib:G" (number->string *gensym-counter*)))))) -(define base:eval slib:eval) -(define (defmacro:eval x) (base:eval (defmacro:expand* x))) +;;; SLIB:EVAL is single argument eval using the top-level (user) +;;; environment. +(define slib:eval eval) +(define (defmacro:eval x) (eval (defmacro:expand* x))) (define (defmacro:expand* x) (require 'defmacroexpand) (apply defmacro:expand* x '())) - (define (defmacro:load <pathname>) (slib:eval-load <pathname> defmacro:eval)) -;; slib:eval-load definition moved to "require.scm" (define slib:warn (lambda args @@ -372,17 +368,22 @@ ;;; (SLIB:LOAD-SOURCE "foo") should load "foo.scm" or with whatever ;;; suffix all the module files in SLIB have. See feature 'SOURCE. - (define (slib:load-source f) (load (string-append f ".scm"))) ;;; (SLIB:LOAD-COMPILED "foo") should load the file that was produced ;;; by compiling "foo.scm" if this implementation can compile files. ;;; See feature 'COMPILED. - (define slib:load-compiled load) ;;; At this point SLIB:LOAD must be able to load SLIB files. - (define slib:load slib:load-source) +;;; If your implementation provides R4RS macros: +;;(define macro:eval slib:eval) +;;(define macro:load load) + +;;; If your implementation provides syntax-case macros: +;;(define syncase:eval slib:eval) +;;(define syncase:load slib:load-source) + (slib:load (in-vicinity (library-vicinity) "require")) diff --git a/SLIB.ico b/SLIB.ico Binary files differnew file mode 100644 index 0000000..09f18fb --- /dev/null +++ b/SLIB.ico @@ -26,7 +26,11 @@ ;;; (implementation-vicinity) should be defined to be the pathname of ;;; the directory where any auxillary files to your Scheme ;;; implementation reside. -(define (implementation-vicinity) "/usr/local/lib/stk/3.99.3/") +(define implementation-vicinity + (let ((impl-path + (or (getenv "STK_IMPLEMENTATION_PATH") + "/usr/local/lib/stk/3.99.3/"))) + (lambda () impl-path))) ;;; (library-vicinity) should be defined to be the pathname of the ;;; directory where files of Scheme library functions reside. @@ -84,8 +88,7 @@ ;@ (define sub-vicinity (case (software-type) - ((vms) (lambda - (vic name) + ((vms) (lambda (vic name) (let ((l (string-length vic))) (if (or (zero? (string-length vic)) (not (char=? #\] (string-ref vic (- l 1))))) @@ -126,6 +129,7 @@ ;(SLIB:LOAD-COMPILED "filename") vicinity srfi-59 + srfi-96 ;; Scheme report features ;; R5RS-compliant implementations should provide all 9 features. @@ -169,11 +173,11 @@ ;; Other common features - srfi ;srfi-0, COND-EXPAND finds all srfi-* + srfi-0 ;srfi-0, COND-EXPAND finds all srfi-* ;;; sicp ;runs code from Structure and ;Interpretation of Computer ;Programs by Abelson and Sussman. -;;; defmacro ;has Common Lisp DEFMACRO + defmacro ;has Common Lisp DEFMACRO ;;; record ;has user defined data structures string-port ;has CALL-WITH-INPUT-STRING and ;CALL-WITH-OUTPUT-STRING @@ -256,10 +260,6 @@ ;;; eval using the top-level (user) environment. (define slib:eval eval) -;;; If your implementation provides R4RS macros: -;(define macro:eval slib:eval) -;(define macro:load load) - (define *macros* '()) (define-macro (defmacro name args . body) @@ -267,12 +267,10 @@ (define-macro (,name ,@args) ,@body) (set! *macros* (cons ,name *macros*)))) - (define (defmacro? m) (and (memv m *macros*) #t)) -(define macroexpand-1 MACRO-EXPAND-1) -(define macroexpand MACRO-EXPAND) - +(define macroexpand-1 macro-expand-1) +(define macroexpand macro-expand) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -285,7 +283,6 @@ (define (defmacro:load <pathname>) (slib:eval-load <pathname> defmacro:eval)) -;; slib:eval-load definition moved to "require.scm" (define slib:warn (lambda args @@ -324,13 +321,21 @@ ;;; (SLIB:LOAD-SOURCE "foo") should load "foo.scm" or with whatever ;;; suffix all the module files in SLIB have. See feature 'SOURCE. -(define slib:load-source LOAD) +(define slib:load-source load) ;;; (SLIB:LOAD-COMPILED "foo") should load the file that was produced ;;; by compiling "foo.scm" if this implementation can compile files. ;;; See feature 'COMPILED. (define slib:load-compiled load) +;;; If your implementation provides R4RS macros: +;;(define macro:eval slib:eval) +;;(define macro:load slib:load-source) + +;;; If your implementation provides syntax-case macros: +;;(define syncase:eval slib:eval) +;;(define syncase:load slib:load-source) + ;;; ;;; Retain original require/provide before loading "require.scm" ;;; @@ -341,11 +346,8 @@ (define slib:load slib:load-source) (slib:load (in-vicinity (library-vicinity) "require")) - -;;; -;;; Redefine require/provide so that symbols use SLIB one and strings use STk one -;;; - +;;; Redefine require/provide so that symbols use SLIB one and strings +;;; use STk one (define require (let ((slib:require require)) (lambda (item) diff --git a/Template.scm b/Template.scm index b006f7a..c61de29 100644 --- a/Template.scm +++ b/Template.scm @@ -23,11 +23,15 @@ ;;@ (implementation-vicinity) should be defined to be the pathname of ;;; the directory where any auxillary files to your Scheme ;;; implementation reside. -(define (implementation-vicinity) - (case (software-type) - ((unix) "/usr/local/src/scheme/") - ((vms) "scheme$src:") - ((ms-dos) "C:\\scheme\\"))) +(define implementation-vicinity + (let ((impl-path + (or (getenv "{TEMPLATE}_IMPLEMENTATION_PATH") + (case (software-type) + ((unix) "/usr/local/src/scheme/") + ((vms) "scheme$src:") + ((ms-dos) "C:\\scheme\\") + (else ""))))) + (lambda () impl-path))) ;;@ (library-vicinity) should be defined to be the pathname of the ;;; directory where files of Scheme library functions reside. @@ -95,8 +99,7 @@ ;@ (define sub-vicinity (case (software-type) - ((vms) (lambda - (vic name) + ((vms) (lambda (vic name) (let ((l (string-length vic))) (if (or (zero? (string-length vic)) (not (char=? #\] (string-ref vic (- l 1))))) @@ -137,6 +140,7 @@ ;(SLIB:LOAD-COMPILED "filename") vicinity srfi-59 + srfi-96 ;; Scheme report features ;; R5RS-compliant implementations should provide all 9 features. @@ -180,11 +184,12 @@ ;; Other common features - srfi ;srfi-0, COND-EXPAND finds all srfi-* + srfi-0 ;srfi-0, COND-EXPAND finds all srfi-* ;;; sicp ;runs code from Structure and ;Interpretation of Computer ;Programs by Abelson and Sussman. -;;; defmacro ;has Common Lisp DEFMACRO + defmacro ;has Common Lisp DEFMACRO +;;; syntax-case ;has syncase:eval and syncase:load ;;; record ;has user defined data structures ;;; string-port ;has CALL-WITH-INPUT-STRING and ;CALL-WITH-OUTPUT-STRING @@ -256,9 +261,6 @@ ;;@ SLIB:EVAL is single argument eval using the top-level (user) environment. (define slib:eval eval) -;; If your implementation provides R4RS macros: -;(define macro:eval slib:eval) -;(define macro:load load) (define *defmacros* (list (cons 'defmacro (lambda (name parms . body) @@ -300,7 +302,6 @@ ;@ (define (defmacro:load <pathname>) (slib:eval-load <pathname> defmacro:eval)) -;; slib:eval-load definition moved to "require.scm" ;@ (define slib:warn (lambda args @@ -386,4 +387,12 @@ ;;@ At this point SLIB:LOAD must be able to load SLIB files. (define slib:load slib:load-source) +;;; If your implementation provides R4RS macros: +;;(define macro:eval slib:eval) +;;(define macro:load slib:load-source) + +;;; If your implementation provides syntax-case macros: +;;(define syncase:eval slib:eval) +;;(define syncase:load slib:load-source) + (slib:load (in-vicinity (library-vicinity) "require")) diff --git a/bigloo.init b/bigloo.init index 13ad86d..54467bb 100644 --- a/bigloo.init +++ b/bigloo.init @@ -24,11 +24,14 @@ ;;@ (implementation-vicinity) should be defined to be the pathname of ;;; the directory where any auxillary files to your Scheme ;;; implementation reside. -(define (implementation-vicinity) - (case (software-type) - ((unix) (string-append *default-lib-dir* "/")) - ((ms-dos) "C:\\scheme\\") - (else ""))) +(define implementation-vicinity + (let ((impl-path + (or (getenv "BIGLOO_IMPLEMENTATION_PATH") + (case (software-type) + ((unix) (string-append *default-lib-dir* "/")) + ((ms-dos) "C:\\scheme\\") + (else ""))))) + (lambda () impl-path))) ;;@ (library-vicinity) should be defined to be the pathname of the ;;; directory where files of Scheme library functions reside. @@ -98,8 +101,7 @@ ;@ (define sub-vicinity (case (software-type) - ((vms) (lambda - (vic name) + ((vms) (lambda (vic name) (let ((l (string-length vic))) (if (or (zero? (string-length vic)) (not (char=? #\] (string-ref vic (- l 1))))) @@ -139,6 +141,7 @@ ;(SLIB:LOAD-COMPILED "filename") vicinity srfi-59 + srfi-96 ;; Scheme report features ;; R5RS-compliant implementations should provide all 9 features. @@ -182,7 +185,7 @@ ;; Other common features - srfi ;srfi-0, COND-EXPAND finds all srfi-* + srfi-0 ;srfi-0, COND-EXPAND finds all srfi-* ;;; sicp ;runs code from Structure and ;Interpretation of Computer ;Programs by Abelson and Sussman. @@ -199,7 +202,7 @@ ;;; ed ;(ED) is editor system ;posix (system <string>) getenv ;posix (getenv <string>) -;;; program-arguments ;returns list of strings (argv) + program-arguments ;returns list of strings (argv) ;;; current-time ;returns time in seconds since 1/1/1970 ;; Implementation Specific features @@ -210,6 +213,11 @@ ; non-symbols. )) +;;@ http://practical-scheme.net/wiliki/schemexref.cgi?command-line +;;http://practical-scheme.net/wiliki/schemexref.cgi?executable-name +(define (program-arguments) + (cons (executable-name) (command-line))) + (define pretty-print pp) ;;; OBJ->STRING returns strings with control characters. @@ -293,10 +301,6 @@ ;;@ SLIB:EVAL is single argument eval using the top-level (user) environment. (define slib:eval eval) -;;; If your implementation provides R4RS macros: -;(define macro:eval slib:eval) -;(define macro:load load) - (define-macro (defmacro name . forms) `(define-macro (,name . ,(car forms)) ,@(cdr forms))) ;@ @@ -313,8 +317,6 @@ ;;(define (defmacro:expand* x) ;; (require 'defmacroexpand) (apply defmacro:expand* x '())) -;; slib:eval-load definition moved to "require.scm" - ;@ (define slib:warn (lambda args @@ -408,4 +410,12 @@ ;@ (define defmacro:load slib:load-source) +;;; If your implementation provides R4RS macros: +;;(define macro:eval slib:eval) +;;(define macro:load slib:load-source) + +;;; If your implementation provides syntax-case macros: +;;(define syncase:eval slib:eval) +;;(define syncase:load slib:load-source) + (slib:load (in-vicinity (library-vicinity) "require")) @@ -1,5 +1,5 @@ ;;; "byte.scm" small integers, not necessarily chars. -; Copyright (C) 2001, 2002, 2003, 2006 Aubrey Jaffer +; Copyright (C) 2001, 2002, 2003, 2006, 2008 Aubrey Jaffer ; ;Permission to copy this software, to modify it, to redistribute it, ;to distribute modified versions, and to use it for any purpose is @@ -17,7 +17,7 @@ ;promotional, or sales literature without prior written consent in ;each case. -(require 'rev4-optional-procedures) ; string-copy +(require 'array) ;;@code{(require 'byte)} ;;@ftindex byte @@ -29,16 +29,17 @@ ;;character sets. These functions abstract the notion of a @dfn{byte}. ;;@cindex byte -;;@body +;;@args bytes k ;;@2 must be a valid index of @1. @0 returns byte @2 of @1 using ;;zero-origin indexing. -(define (byte-ref bytes k) (char->integer (string-ref bytes k))) +(define byte-ref array-ref) ;;@body ;;@2 must be a valid index of @1, and @var{byte} must be a small ;;nonnegative integer. @0 stores @var{byte} in element @2 of @1 and ;;returns an unspecified value. @c <!> -(define (byte-set! bytes k byte) (string-set! bytes k (integer->char byte))) +(define (byte-set! bytes k byte) + (array-set! bytes byte k)) ;;@args k byte ;;@args k @@ -46,27 +47,29 @@ ;;given, then all elements of the byte-array are initialized to @2, ;;otherwise the contents of the byte-array are unspecified. (define (make-bytes len . opt) - (if (null? opt) (make-string len) - (make-string len (integer->char (car opt))))) + (make-array (apply A:fixN8b opt) len)) ;;@args bytes ;;@0 returns length of byte-array @1. -(define bytes-length string-length) +(define (bytes-length bts) + (car (array-dimensions bts))) ;;@args byte @dots{} ;;Returns a newly allocated byte-array composed of the small ;;nonnegative arguments. -(define (bytes . args) (list->bytes args)) - -;;@args bytes -;;@0 returns a newly allocated list of the bytes that make up the -;;given byte-array. -(define (bytes->list bts) (map char->integer (string->list bts))) +(define (bytes . args) + (list->array 1 (A:fixN8b) args)) ;;@args bytes ;;@0 returns a newly allocated byte-array formed from the small ;;nonnegative integers in the list @1. -(define (list->bytes lst) (list->string (map integer->char lst))) +(define (list->bytes lst) + (list->array 1 (A:fixN8b) lst)) + +;;@args bytes +;;@0 returns a newly allocated list of the bytes that make up the +;;given byte-array. +(define bytes->list array->list) ;;@noindent ;;@code{Bytes->list} and @code{list->bytes} are inverses so far as @@ -74,8 +77,35 @@ ;;@findex equal? ;;@args bytes +;;Returns a new string formed from applying @code{integer->char} to +;;each byte in @0. Note that this may signal an error for bytes +;;having values between 128 and 255. +(define (bytes->string bts) + (define len (bytes-length bts)) + (let ((new (make-string len))) + (do ((idx (- len 1) (+ -1 idx))) + ((negative? idx) new) + (string-set! new idx (integer->char (byte-ref bts idx)))))) + +;;@args string +;;Returns a new byte-array formed from applying @code{char->integer} +;;to each character in @0. Note that this may signal an error if an +;;integer is larger than 255. +(define (string->bytes str) + (define len (string-length str)) + (let ((new (make-bytes len))) + (do ((idx (- len 1) (+ -1 idx))) + ((negative? idx) new) + (byte-set! new idx (char->integer (string-ref str idx)))))) + +;;@args bytes ;;Returns a newly allocated copy of the given @1. -(define bytes-copy string-copy) +(define (bytes-copy bts) + (define len (bytes-length bts)) + (let ((new (make-bytes len))) + (do ((idx (- len 1) (+ -1 idx))) + ((negative? idx) new) + (byte-set! new idx (byte-ref bytes idx))))) ;;@args bytes start end ;;@1 must be a bytes, and @2 and @3 @@ -86,7 +116,11 @@ ;;@0 returns a newly allocated bytes formed from the bytes of ;;@1 beginning with index @2 (inclusive) and ending with index ;;@3 (exclusive). -(define subbytes substring) +(define (subbytes bytes start end) + (define new (make-bytes (- end start))) + (do ((idx (- end start 1) (+ -1 idx))) + ((negative? idx) new) + (byte-set! new idx (byte-ref bytes (+ start idx))))) ;;@body ;;Reverses the order of byte-array @1. @@ -119,7 +153,8 @@ ;;be omitted, in which case it defaults to the value returned by ;;@code{current-output-port}. ;;@findex current-output-port -(define (write-byte byt . opt) (apply write-char (integer->char byt) opt)) +(define (write-byte byt . opt) + (apply write-char (integer->char byt) opt)) ;;@args port ;;@args @@ -151,7 +186,7 @@ ;;@code{(abs @var{n})} bytes read from @2. If @1 is positive, then ;;the first byte read is stored at index 0; otherwise the last byte ;;read is stored at index 0. Note that the length of the returned -;;string will be less than @code{(abs @var{n})} if @2 reaches +;;byte-array will be less than @code{(abs @var{n})} if @2 reaches ;;end-of-file. ;; ;;@2 may be omitted, in which case it defaults to the value returned @@ -165,8 +200,8 @@ (if (= cnt len) byts (if (positive? n) - (substring byts 0 cnt) - (substring byts (- len cnt) len))))) + (subbytes byts 0 cnt) + (subbytes byts (- len cnt) len))))) ;;@args bytes n port ;;@args bytes n @@ -188,15 +223,15 @@ ;;relative size of @var{start} and @var{end} determines the order of ;;writing. -;;@args string start end port -;;@args string start end +;;@args bts start end port +;;@args bts start end ;;Fills @1 with up to @code{(abs (- @var{start} @var{end}))} bytes ;;read from @4. The first byte read is stored at index @1. ;;@0 returns the number of bytes read. ;; ;;@4 may be omitted, in which case it defaults to the value returned ;;by @code{current-input-port}. -(define (subbytes-read! string start end . port) +(define (subbytes-read! bts start end . port) (if (>= end start) (do ((idx start (+ 1 idx))) ((>= idx end) idx) @@ -204,7 +239,7 @@ (cond ((eof-object? byt) (set! idx (+ -1 idx)) (set! end idx)) - (else (byte-set! string idx byt))))) + (else (byte-set! bts idx byt))))) (do ((idx (+ -1 start) (+ -1 idx)) (cnt 0 (+ 1 cnt))) ((< idx end) cnt) @@ -212,25 +247,21 @@ (cond ((eof-object? byt) (set! idx start) (set! cnt (+ -1 cnt))) - (else (byte-set! string idx byt))))))) + (else (byte-set! bts idx byt))))))) -;;@args string start end port -;;@args string start end +;;@args bts start end port +;;@args bts start end ;;@0 writes @code{(abs (- @var{start} @var{end}))} bytes to ;;output-port @4. The first byte written is index @2 of @1. @0 ;;returns the number of bytes written. ;; ;;@4 may be omitted, in which case it defaults to the value returned ;;by @code{current-output-port}. -(define (subbytes-write string start end . port) +(define (subbytes-write bts start end . port) (if (>= end start) (do ((idx start (+ 1 idx))) ((>= idx end) (- end start)) - (apply write-byte (byte-ref string idx) port)) + (apply write-byte (byte-ref bts idx) port)) (do ((idx (+ -1 start) (+ -1 idx))) ((< idx end) (- start end)) - (apply write-byte (byte-ref string idx) port)))) - -;;;; Legacy names. -(define substring-read! subbytes-read!) -(define substring-write subbytes-write) + (apply write-byte (byte-ref bts idx) port)))) @@ -48,17 +48,17 @@ nonnegative arguments. @end defun -@defun bytes->list bytes +@defun list->bytes bytes -@code{bytes->list} returns a newly allocated list of the bytes that make up the -given byte-array. +@code{list->bytes} returns a newly allocated byte-array formed from the small +nonnegative integers in the list @var{bytes}. @end defun -@defun list->bytes bytes +@defun bytes->list bytes -@code{list->bytes} returns a newly allocated byte-array formed from the small -nonnegative integers in the list @var{bytes}. +@code{bytes->list} returns a newly allocated list of the bytes that make up the +given byte-array. @end defun @noindent @@ -67,6 +67,22 @@ nonnegative integers in the list @var{bytes}. @findex equal? +@defun bytes->string bytes + +Returns a new string formed from applying @code{integer->char} to +each byte in @code{bytes->string}. Note that this may signal an error for bytes +having values between 128 and 255. +@end defun + + +@defun string->bytes string + +Returns a new byte-array formed from applying @code{char->integer} +to each character in @code{string->bytes}. Note that this may signal an error if an +integer is larger than 255. +@end defun + + @defun bytes-copy bytes Returns a newly allocated copy of the given @var{bytes}. @@ -153,7 +169,7 @@ multi-byte sequences produced and used by number conversion routines @code{(abs @var{n})} bytes read from @var{port}. If @var{n} is positive, then the first byte read is stored at index 0; otherwise the last byte read is stored at index 0. Note that the length of the returned -string will be less than @code{(abs @var{n})} if @var{port} reaches +byte-array will be less than @code{(abs @var{n})} if @var{port} reaches end-of-file. @var{port} may be omitted, in which case it defaults to the value returned @@ -181,12 +197,12 @@ relative size of @var{start} and @var{end} determines the order of writing. -@deffn {Procedure} subbytes-read! string start end port +@deffn {Procedure} subbytes-read! bts start end port -@deffnx {Procedure} subbytes-read! string start end -Fills @var{string} with up to @code{(abs (- @var{start} @var{end}))} bytes -read from @var{port}. The first byte read is stored at index @var{string}. +@deffnx {Procedure} subbytes-read! bts start end +Fills @var{bts} with up to @code{(abs (- @var{start} @var{end}))} bytes +read from @var{port}. The first byte read is stored at index @var{bts}. @code{subbytes-read!} returns the number of bytes read. @var{port} may be omitted, in which case it defaults to the value returned @@ -194,12 +210,12 @@ by @code{current-input-port}. @end deffn -@defun subbytes-write string start end port +@defun subbytes-write bts start end port -@defunx subbytes-write string start end +@defunx subbytes-write bts start end @code{subbytes-write} writes @code{(abs (- @var{start} @var{end}))} bytes to -output-port @var{port}. The first byte written is index @var{start} of @var{string}. @code{subbytes-write} +output-port @var{port}. The first byte written is index @var{start} of @var{bts}. @code{subbytes-write} returns the number of bytes written. @var{port} may be omitted, in which case it defaults to the value returned @@ -28,7 +28,10 @@ ;;; the directory where any auxillary files to your Scheme ;;; implementation reside. (define implementation-vicinity - (lambda () "/usr/unsup/scheme/chez/")) + (let ((impl-path + (or (getenv "CHEZ_IMPLEMENTATION_PATH") + "/usr/unsup/scheme/chez/"))) + (lambda () impl-path))) ;;; (library-vicinity) should be defined to be the pathname of the ;;; directory where files of Scheme library functions reside. @@ -95,8 +98,7 @@ ;@ (define sub-vicinity (case (software-type) - ((vms) (lambda - (vic name) + ((vms) (lambda (vic name) (let ((l (string-length vic))) (if (or (zero? (string-length vic)) (not (char=? #\] (string-ref vic (- l 1))))) @@ -137,6 +139,7 @@ ;(SLIB:LOAD-COMPILED "filename") vicinity srfi-59 + srfi-96 ;; Scheme report features ;; R5RS-compliant implementations should provide all 9 features. @@ -180,11 +183,11 @@ ;; Other common features -;;; srfi ;srfi-0, COND-EXPAND finds all srfi-* +;;; srfi-0 ;srfi-0, COND-EXPAND finds all srfi-* ;;; sicp ;runs code from Structure and ;Interpretation of Computer ;Programs by Abelson and Sussman. -;;; defmacro ;has Common Lisp DEFMACRO + defmacro ;has Common Lisp DEFMACRO record ;has user defined data structures string-port ;has CALL-WITH-INPUT-STRING and ;CALL-WITH-OUTPUT-STRING @@ -374,6 +377,15 @@ ;;; At this point SLIB:LOAD must be able to load SLIB files. (define slib:load slib:load-source) +;;; If your implementation provides R4RS macros: +(define macro:eval slib:eval) +;;; macro:load also needs the default suffix. +(define macro:load slib:load-source) + +;;; If your implementation provides syntax-case macros: +;;(define syncase:eval slib:eval) +;;(define syncase:load slib:load-source) + ;;; The following make procedures in Chez Scheme compatible with ;;; the assumptions of SLIB. @@ -431,11 +443,6 @@ (close-input-port insp) res))) -;;; If your implementation provides R4RS macros: -(define macro:eval slib:eval) -;;; macro:load also needs the default suffix. -(define macro:load slib:load-source) - (define *defmacros* (list (cons 'defmacro (lambda (name parms . body) @@ -468,7 +475,6 @@ (require 'defmacroexpand) (apply defmacro:expand* x '())) (define (defmacro:load <pathname>) (slib:eval-load <pathname> defmacro:eval)) -;; slib:eval-load definition moved to "require.scm" (define slib:warn (lambda args diff --git a/clrnamdb.scm b/clrnamdb.scm index d1ed549..f95575f 100644 --- a/clrnamdb.scm +++ b/clrnamdb.scm @@ -1,4 +1,4 @@ -;;; "/usr/local/lib/slib/clrnamdb.scm" SLIB 3a4 alist-table database -*-scheme-*- +;;; "/usr/local/lib/slib/clrnamdb.scm" SLIB 3a5 alist-table database -*-scheme-*- ( (10 @@ -276,1389 +276,1385 @@ (1 #t name #f string) ) (8 - ("zydeco" "sRGB:2/64/44" 1383) - ("zumthor" "sRGB:237/246/255" 1382) - ("zuccini" "sRGB:4/64/34" 1381) - ("zorba" "sRGB:165/155/145" 1380) - ("zombie" "sRGB:228/214/155" 1379) - ("zircon" "sRGB:244/248/255" 1378) - ("ziggurat" "sRGB:191/219/226" 1377) - ("zeus" "sRGB:41/35/25" 1376) - ("zest" "sRGB:229/132/27" 1375) - ("zanah" "sRGB:218/236/214" 1374) - ("zambezi" "sRGB:104/85/88" 1373) - ("yuma" "sRGB:206/194/145" 1372) - ("yukongold" "sRGB:123/102/8" 1371) - ("yourpink" "sRGB:255/195/192" 1370) - ("yellowsea" "sRGB:254/169/4" 1369) - ("yellowmetal" "sRGB:113/99/56" 1368) - ("xanadu" "sRGB:115/134/120" 1367) - ("woodybrown" "sRGB:72/49/49" 1366) - ("woodybay" "sRGB:41/33/48" 1365) - ("woodsmoke" "sRGB:12/13/15" 1364) - ("woodrush" "sRGB:48/42/15" 1363) - ("woodland" "sRGB:77/83/40" 1362) - ("woodburn" "sRGB:60/32/5" 1361) - ("woodbark" "sRGB:38/17/5" 1360) - ("witchhaze" "sRGB:255/252/153" 1359) - ("wistful" "sRGB:164/166/211" 1358) - ("wisteria" "sRGB:151/113/181" 1357) - ("wisppink" "sRGB:254/244/248" 1356) - ("winterhazel" "sRGB:213/209/149" 1355) - ("wineberry" "sRGB:89/29/53" 1354) - ("windsor" "sRGB:60/8/120" 1353) - ("willowgrove" "sRGB:101/116/93" 1352) - ("willowbrook" "sRGB:223/236/218" 1351) - ("william" "sRGB:58/104/108" 1350) - ("wildwillow" "sRGB:185/196/106" 1349) - ("wildsand" "sRGB:244/244/244" 1348) - ("wildrice" "sRGB:236/224/144" 1347) - ("whiterock" "sRGB:234/232/212" 1346) - ("whitepointer" "sRGB:254/248/255" 1345) - ("whitenectar" "sRGB:252/255/231" 1344) - ("whitelinen" "sRGB:248/240/232" 1343) - ("whitelilac" "sRGB:248/247/252" 1342) - ("whiteice" "sRGB:221/249/241" 1341) - ("whisper" "sRGB:247/245/250" 1340) - ("whiskeysour" "sRGB:219/153/94" 1339) - ("whiskey" "sRGB:213/154/111" 1338) - ("wheatfield" "sRGB:243/237/207" 1337) - ("wewak" "sRGB:241/155/171" 1336) - ("westernred" "sRGB:139/7/35" 1335) - ("westar" "sRGB:220/217/210" 1334) - ("westside" "sRGB:255/145/15" 1333) - ("westcoast" "sRGB:98/81/25" 1332) - ("wellread" "sRGB:180/51/50" 1331) - ("wedgewood" "sRGB:78/127/158" 1330) - ("wepeep" "sRGB:247/219/230" 1329) - ("waxflower" "sRGB:255/192/168" 1328) - ("watusi" "sRGB:255/221/207" 1327) - ("wattle" "sRGB:220/215/71" 1326) - ("waterloo" "sRGB:123/124/148" 1325) - ("watercourse" "sRGB:5/111/87" 1324) - ("waterleaf" "sRGB:161/233/222" 1323) - ("wasabi" "sRGB:120/138/37" 1322) - ("wanwhite" "sRGB:252/255/249" 1321) - ("walnut" "sRGB:119/63/26" 1320) - ("waiouru" "sRGB:54/60/13" 1319) - ("waikawagrey" "sRGB:90/110/156" 1318) - ("wafer" "sRGB:222/203/198" 1317) - ("vulcan" "sRGB:16/18/29" 1316) - ("voodoo" "sRGB:83/52/85" 1315) - ("volcano" "sRGB:101/26/20" 1314) - ("vistawhite" "sRGB:252/248/247" 1313) - ("vistablue" "sRGB:143/214/180" 1312) - ("visvis" "sRGB:255/239/161" 1311) - ("viridiangreen" "sRGB:103/137/117" 1310) - ("violet" "sRGB:36/10/64" 1309) - ("violentviolet" "sRGB:41/12/94" 1308) - ("viola" "sRGB:203/143/169" 1307) - ("vinrouge" "sRGB:152/61/97" 1306) - ("viking" "sRGB:100/204/219" 1305) - ("vidaloca" "sRGB:84/144/25" 1304) - ("victoria" "sRGB:83/68/145" 1303) - ("vesuvius" "sRGB:177/74/11" 1302) - ("verdungreen" "sRGB:73/84/0" 1301) - ("verdigris" "sRGB:93/94/55" 1300) - ("venus" "sRGB:146/133/144" 1299) - ("veniceblue" "sRGB:5/89/137" 1298) - ("venetianred" "sRGB:114/1/15" 1297) - ("varden" "sRGB:255/246/223" 1296) - ("vanillaice" "sRGB:243/217/223" 1295) - ("vanilla" "sRGB:209/190/168" 1294) - ("vancleef" "sRGB:73/23/12" 1293) - ("valhalla" "sRGB:43/25/79" 1292) - ("valentino" "sRGB:53/14/66" 1291) - ("valencia" "sRGB:216/68/55" 1290) - ("twine" "sRGB:194/149/93" 1289) - ("twilightblue" "sRGB:238/253/255" 1288) - ("twilight" "sRGB:228/207/222" 1287) - ("tutu" "sRGB:255/241/249" 1286) - ("tussock" "sRGB:197/153/75" 1285) - ("tusk" "sRGB:238/243/195" 1284) - ("tuscany" "sRGB:189/94/46" 1283) - ("turtlegreen" "sRGB:42/56/11" 1282) - ("turmeric" "sRGB:202/187/72" 1281) - ("turkishrose" "sRGB:181/114/129" 1280) - ("turbo" "sRGB:250/230/0" 1279) - ("tundora" "sRGB:74/66/68" 1278) - ("tuna" "sRGB:53/53/66" 1277) - ("tumbleweed" "sRGB:55/41/14" 1276) - ("tuliptree" "sRGB:234/179/59" 1275) - ("tuftbush" "sRGB:255/221/205" 1274) - ("tuatara" "sRGB:54/53/52" 1273) - ("truev" "sRGB:138/115/214" 1272) - ("trout" "sRGB:74/78/90" 1271) - ("tropicalblue" "sRGB:195/221/249" 1270) - ("trinidad" "sRGB:230/78/3" 1269) - ("trendypink" "sRGB:140/100/149" 1268) - ("trendygreen" "sRGB:124/136/26" 1267) - ("treehouse" "sRGB:59/40/32" 1266) - ("treepoppy" "sRGB:252/156/29" 1265) - ("travertine" "sRGB:255/253/232" 1264) - ("tranquil" "sRGB:230/255/255" 1263) - ("tradewind" "sRGB:95/179/172" 1262) - ("towergrey" "sRGB:169/189/191" 1261) - ("touchwood" "sRGB:55/48/33" 1260) - ("totempole" "sRGB:153/27/7" 1259) - ("tosca" "sRGB:141/63/63" 1258) - ("toryblue" "sRGB:20/80/170" 1257) - ("toreabay" "sRGB:15/45/158" 1256) - ("topaz" "sRGB:124/119/138" 1255) - ("tonyspink" "sRGB:231/159/140" 1254) - ("tomthumb" "sRGB:63/88/59" 1253) - ("tolopea" "sRGB:27/2/69" 1252) - ("toledo" "sRGB:58/0/32" 1251) - ("tobago" "sRGB:62/43/35" 1250) - ("tobaccobrown" "sRGB:113/93/71" 1249) - ("toast" "sRGB:154/110/97" 1248) - ("titanwhite" "sRGB:240/238/255" 1247) - ("timbergreen" "sRGB:22/50/44" 1246) - ("tide" "sRGB:191/184/176" 1245) - ("tidal" "sRGB:241/255/173" 1244) - ("tiber" "sRGB:6/53/55" 1243) - ("tiara" "sRGB:195/209/209" 1242) - ("tiamaria" "sRGB:193/68/14" 1241) - ("thunderbird" "sRGB:192/43/24" 1240) - ("thunder" "sRGB:51/41/47" 1239) - ("thistle" "sRGB:204/202/168" 1238) - ("thatchgreen" "sRGB:64/61/25" 1237) - ("thatch" "sRGB:182/157/152" 1236) - ("texasrose" "sRGB:255/181/85" 1235) - ("texas" "sRGB:248/249/156" 1234) - ("tequila" "sRGB:255/230/199" 1233) - ("temptress" "sRGB:59/0/11" 1232) - ("tealblue" "sRGB:4/66/89" 1231) - ("teakwoodfinish" "sRGB:107/42/20" 1230) - ("teak" "sRGB:177/148/97" 1229) - ("tea" "sRGB:193/186/176" 1228) - ("tepapagreen" "sRGB:30/67/60" 1227) - ("taxbreak" "sRGB:81/128/143" 1226) - ("tawnyport" "sRGB:105/37/69" 1225) - ("taupegrey" "sRGB:179/175/149" 1224) - ("tasman" "sRGB:207/220/207" 1223) - ("tarawera" "sRGB:7/58/80" 1222) - ("tara" "sRGB:225/246/232" 1221) - ("tapestry" "sRGB:176/94/129" 1220) - ("tapa" "sRGB:123/120/116" 1219) - ("tango" "sRGB:237/122/28" 1218) - ("tangerine" "sRGB:233/110/0" 1217) - ("tangaroa" "sRGB:3/22/60" 1216) - ("tana" "sRGB:217/220/193" 1215) - ("tamarind" "sRGB:52/21/21" 1214) - ("tamarillo" "sRGB:153/22/19" 1213) - ("tallow" "sRGB:168/165/137" 1212) - ("tallpoppy" "sRGB:179/45/41" 1211) - ("tahunasands" "sRGB:238/240/200" 1210) - ("tahitigold" "sRGB:233/124/7" 1209) - ("tacha" "sRGB:214/197/98" 1208) - ("tacao" "sRGB:237/179/129" 1207) - ("tabasco" "sRGB:160/39/18" 1206) - ("sycamore" "sRGB:144/141/57" 1205) - ("swisscoffee" "sRGB:221/214/213" 1204) - ("swirl" "sRGB:211/205/197" 1203) - ("sweetpink" "sRGB:253/159/162" 1202) - ("sweetcorn" "sRGB:251/234/140" 1201) - ("swansdown" "sRGB:220/240/234" 1200) - ("swamp" "sRGB:0/27/28" 1199) - ("suvagrey" "sRGB:136/131/135" 1198) - ("sushi" "sRGB:135/171/57" 1197) - ("surfiegreen" "sRGB:12/122/121" 1196) - ("surfcrest" "sRGB:207/229/210" 1195) - ("surf" "sRGB:187/215/193" 1194) - ("supernova" "sRGB:255/201/1" 1193) - ("sunshade" "sRGB:255/158/44" 1192) - ("sunset" "sRGB:220/67/51" 1191) - ("sunglo" "sRGB:225/104/101" 1190) - ("sunflower" "sRGB:228/212/34" 1189) - ("sundown" "sRGB:255/177/179" 1188) - ("sundance" "sRGB:201/179/91" 1187) - ("sun" "sRGB:251/172/19" 1186) - ("summergreen" "sRGB:150/187/171" 1185) - ("sulu" "sRGB:193/240/124" 1184) - ("sugarcane" "sRGB:249/255/246" 1183) - ("submarine" "sRGB:186/199/201" 1182) - ("studio" "sRGB:113/74/178" 1181) - ("stromboli" "sRGB:50/93/82" 1180) - ("strikemaster" "sRGB:149/99/135" 1179) - ("straw" "sRGB:212/191/141" 1178) - ("stratos" "sRGB:0/7/65" 1177) - ("stormgrey" "sRGB:113/116/134" 1176) - ("stormdust" "sRGB:100/100/99" 1175) - ("stonewall" "sRGB:146/133/115" 1174) - ("stinger" "sRGB:139/107/11" 1173) - ("stiletto" "sRGB:156/51/54" 1172) - ("steelgrey" "sRGB:38/35/53" 1171) - ("starship" "sRGB:236/242/69" 1170) - ("starkwhite" "sRGB:229/215/189" 1169) - ("stardust" "sRGB:159/159/156" 1168) - ("stack" "sRGB:138/143/138" 1167) - ("sttropaz" "sRGB:45/86/155" 1166) - ("squirrel" "sRGB:143/129/118" 1165) - ("spunpearl" "sRGB:170/171/183" 1164) - ("sprout" "sRGB:193/215/176" 1163) - ("springwood" "sRGB:248/246/241" 1162) - ("springsun" "sRGB:246/255/220" 1161) - ("springrain" "sRGB:172/203/177" 1160) - ("springgreen" "sRGB:87/131/99" 1159) - ("spray" "sRGB:121/222/236" 1158) - ("splash" "sRGB:255/239/193" 1157) - ("spindle" "sRGB:182/209/234" 1156) - ("spicypink" "sRGB:129/110/113" 1155) - ("spicymix" "sRGB:136/83/66" 1154) - ("spice" "sRGB:106/68/46" 1153) - ("spectra" "sRGB:47/90/87" 1152) - ("spanishwhite" "sRGB:244/235/211" 1151) - ("spanishgreen" "sRGB:129/152/133" 1150) - ("spaceshuttle" "sRGB:67/49/32" 1149) - ("soyabean" "sRGB:106/96/81" 1148) - ("sourdough" "sRGB:209/190/168" 1147) - ("sorrellbrown" "sRGB:206/185/143" 1146) - ("sorbus" "sRGB:253/124/7" 1145) - ("solitude" "sRGB:234/246/255" 1144) - ("solitaire" "sRGB:254/248/226" 1143) - ("solidpink" "sRGB:137/56/67" 1142) - ("softpeach" "sRGB:245/237/239" 1141) - ("softamber" "sRGB:209/198/180" 1140) - ("soapstone" "sRGB:255/251/249" 1139) - ("snuff" "sRGB:226/216/237" 1138) - ("snowymint" "sRGB:214/255/219" 1137) - ("snowflurry" "sRGB:228/255/209" 1136) - ("snowdrift" "sRGB:247/250/247" 1135) - ("smoky" "sRGB:96/91/115" 1134) - ("smokeyash" "sRGB:65/60/55" 1133) - ("smoketree" "sRGB:218/99/4" 1132) - ("smaltblue" "sRGB:81/128/143" 1131) - ("slugger" "sRGB:65/32/16" 1130) - ("skeptic" "sRGB:202/230/218" 1129) - ("sisal" "sRGB:211/203/186" 1128) - ("sirocco" "sRGB:113/128/128" 1127) - ("siren" "sRGB:122/1/58" 1126) - ("sinbad" "sRGB:159/215/211" 1125) - ("silvertree" "sRGB:102/181/143" 1124) - ("silversand" "sRGB:191/193/194" 1123) - ("silverchalice" "sRGB:172/172/172" 1122) - ("silk" "sRGB:189/177/168" 1121) - ("sidecar" "sRGB:243/231/187" 1120) - ("siam" "sRGB:100/106/84" 1119) - ("shuttlegrey" "sRGB:95/102/114" 1118) - ("shocking" "sRGB:226/146/192" 1117) - ("shiraz" "sRGB:178/9/49" 1116) - ("shipgrey" "sRGB:62/58/68" 1115) - ("shipcove" "sRGB:120/139/186" 1114) - ("shinglefawn" "sRGB:107/78/49" 1113) - ("shilo" "sRGB:232/185/179" 1112) - ("sherwoodgreen" "sRGB:2/64/44" 1111) - ("sherpablue" "sRGB:0/73/80" 1110) - ("shark" "sRGB:37/39/44" 1109) - ("shalimar" "sRGB:251/255/186" 1108) - ("shakespeare" "sRGB:78/171/209" 1107) - ("shadylady" "sRGB:170/165/169" 1106) - ("shadowgreen" "sRGB:154/194/184" 1105) - ("serenade" "sRGB:255/244/232" 1104) - ("sepia" "sRGB:43/2/2" 1103) - ("selago" "sRGB:240/238/253" 1102) - ("seaweed" "sRGB:27/47/17" 1101) - ("seashell" "sRGB:241/241/241" 1100) - ("seance" "sRGB:115/30/143" 1099) - ("seagull" "sRGB:128/204/234" 1098) - ("seapink" "sRGB:237/152/158" 1097) - ("seanymph" "sRGB:120/163/156" 1096) - ("seamist" "sRGB:197/219/202" 1095) - ("seagreen" "sRGB:9/88/89" 1094) - ("seafog" "sRGB:252/255/249" 1093) - ("seabuckthorn" "sRGB:251/161/41" 1092) - ("scrub" "sRGB:46/50/34" 1091) - ("scotchmist" "sRGB:255/251/220" 1090) - ("scorpion" "sRGB:105/95/98" 1089) - ("scooter" "sRGB:46/191/212" 1088) - ("schooner" "sRGB:139/132/126" 1087) - ("schist" "sRGB:169/180/151" 1086) - ("scarpaflow" "sRGB:88/85/98" 1085) - ("scarlett" "sRGB:149/0/21" 1084) - ("scarletgum" "sRGB:67/21/96" 1083) - ("scandal" "sRGB:207/250/244" 1082) - ("scampi" "sRGB:103/95/166" 1081) - ("sazerac" "sRGB:255/244/224" 1080) - ("sauvignon" "sRGB:255/245/243" 1079) - ("saratoga" "sRGB:85/91/16" 1078) - ("sapphire" "sRGB:47/81/158" 1077) - ("sapling" "sRGB:222/212/164" 1076) - ("santasgrey" "sRGB:159/160/177" 1075) - ("santafe" "sRGB:177/109/82" 1074) - ("sanguinebrown" "sRGB:141/61/56" 1073) - ("sangria" "sRGB:146/0/10" 1072) - ("sandybeach" "sRGB:255/234/200" 1071) - ("sandwisp" "sRGB:245/231/162" 1070) - ("sandstone" "sRGB:121/109/98" 1069) - ("sandrift" "sRGB:171/145/122" 1068) - ("sandal" "sRGB:170/141/111" 1067) - ("sanddune" "sRGB:130/111/101" 1066) - ("sanmarino" "sRGB:69/108/172" 1065) - ("sanjuan" "sRGB:48/75/106" 1064) - ("sanfelix" "sRGB:11/98/7" 1063) - ("sambuca" "sRGB:58/32/16" 1062) - ("saltpan" "sRGB:241/247/242" 1061) - ("saltbox" "sRGB:104/94/110" 1060) - ("salomie" "sRGB:254/219/141" 1059) - ("salem" "sRGB:9/127/75" 1058) - ("sail" "sRGB:184/224/249" 1057) - ("sahara" "sRGB:183/162/20" 1056) - ("sage" "sRGB:158/165/135" 1055) - ("saffron" "sRGB:249/191/88" 1054) - ("saddlebrown" "sRGB:88/52/1" 1053) - ("saddle" "sRGB:76/48/36" 1052) - ("rustynail" "sRGB:134/86/10" 1051) - ("rusticred" "sRGB:72/4/4" 1050) - ("russett" "sRGB:117/90/87" 1049) - ("rumswizzle" "sRGB:249/248/228" 1048) - ("rum" "sRGB:121/105/137" 1047) - ("royalheath" "sRGB:171/52/114" 1046) - ("rouge" "sRGB:162/59/108" 1045) - ("roti" "sRGB:198/168/75" 1044) - ("rosewood" "sRGB:101/0/11" 1043) - ("rosewhite" "sRGB:255/246/245" 1042) - ("roseofsharon" "sRGB:191/85/0" 1041) - ("rosebudcherry" "sRGB:128/11/71" 1040) - ("rosebud" "sRGB:251/178/163" 1039) - ("rose" "sRGB:231/188/180" 1038) - ("rope" "sRGB:142/77/30" 1037) - ("roofterracotta" "sRGB:166/47/32" 1036) - ("ronchi" "sRGB:236/197/78" 1035) - ("romantic" "sRGB:255/210/183" 1034) - ("romance" "sRGB:255/254/253" 1033) - ("romancoffee" "sRGB:121/93/76" 1032) - ("roman" "sRGB:222/99/96" 1031) - ("rollingstone" "sRGB:116/125/131" 1030) - ("rodeodust" "sRGB:201/178/155" 1029) - ("rockspray" "sRGB:186/69/12" 1028) - ("rocksalt" "sRGB:255/255/255" 1027) - ("rockblue" "sRGB:158/177/205" 1026) - ("rock" "sRGB:77/56/51" 1025) - ("robinseggblue" "sRGB:189/200/179" 1024) - ("robroy" "sRGB:234/198/116" 1023) - ("riverbed" "sRGB:67/76/89" 1022) - ("riptide" "sRGB:139/230/216" 1021) - ("riogrande" "sRGB:187/208/9" 1020) - ("richgold" "sRGB:168/83/7" 1019) - ("riceflower" "sRGB:238/255/226" 1018) - ("ricecake" "sRGB:255/254/240" 1017) - ("ribbon" "sRGB:102/0/69" 1016) - ("rhino" "sRGB:46/63/98" 1015) - ("revolver" "sRGB:44/22/50" 1014) - ("resolutionblue" "sRGB:0/35/135" 1013) - ("renosand" "sRGB:168/101/21" 1012) - ("remy" "sRGB:254/235/243" 1011) - ("regentstblue" "sRGB:170/214/230" 1010) - ("regentgrey" "sRGB:134/148/159" 1009) - ("regalblue" "sRGB:1/63/106" 1008) - ("reefgold" "sRGB:159/130/28" 1007) - ("reef" "sRGB:201/255/162" 1006) - ("redwood" "sRGB:93/30/15" 1005) - ("redstage" "sRGB:208/95/4" 1004) - ("redrobin" "sRGB:128/52/31" 1003) - ("redoxide" "sRGB:110/9/2" 1002) - ("reddevil" "sRGB:134/1/17" 1001) - ("reddamask" "sRGB:218/106/65" 1000) - ("redberry" "sRGB:142/0/0" 999) - ("redbeech" "sRGB:123/56/1" 998) - ("rebel" "sRGB:60/18/6" 997) - ("raven" "sRGB:114/123/137" 996) - ("rangoongreen" "sRGB:28/30/19" 995) - ("rangitoto" "sRGB:46/50/34" 994) - ("rajah" "sRGB:247/182/104" 993) - ("rainee" "sRGB:185/200/172" 992) - ("raincloud" "sRGB:123/124/148" 991) - ("rainforest" "sRGB:119/129/32" 990) - ("raffia" "sRGB:234/218/184" 989) - ("racinggreen" "sRGB:12/25/17" 988) - ("quincy" "sRGB:98/63/45" 987) - ("quillgrey" "sRGB:214/214/209" 986) - ("quicksand" "sRGB:189/151/142" 985) - ("quarterspanishwhite" "sRGB:247/242/225" 984) - ("quarterpearllusta" "sRGB:255/253/244" 983) - ("putty" "sRGB:231/205/140" 982) - ("punga" "sRGB:77/61/20" 981) - ("punch" "sRGB:220/67/51" 980) - ("pumpkin" "sRGB:177/97/11" 979) - ("pumice" "sRGB:194/202/196" 978) - ("puertorico" "sRGB:63/193/170" 977) - ("pueblo" "sRGB:125/44/20" 976) - ("prussianblue" "sRGB:0/49/83" 975) - ("provincialpink" "sRGB:254/245/241" 974) - ("promenade" "sRGB:252/255/231" 973) - ("primrose" "sRGB:237/234/153" 972) - ("prim" "sRGB:240/226/236" 971) - ("prelude" "sRGB:208/192/229" 970) - ("prairiesand" "sRGB:154/56/32" 969) - ("powderblue" "sRGB:188/201/194" 968) - ("pottersclay" "sRGB:140/87/56" 967) - ("potpourri" "sRGB:245/231/226" 966) - ("portica" "sRGB:249/230/99" 965) - ("portage" "sRGB:139/159/238" 964) - ("portafino" "sRGB:255/255/180" 963) - ("portgore" "sRGB:37/31/79" 962) - ("porsche" "sRGB:234/174/105" 961) - ("porcelain" "sRGB:239/242/243" 960) - ("pompadour" "sRGB:102/0/69" 959) - ("poloblue" "sRGB:141/168/204" 958) - ("polar" "sRGB:229/249/246" 957) - ("pohutukawa" "sRGB:143/2/28" 956) - ("plum" "sRGB:65/0/86" 955) - ("planter" "sRGB:97/93/48" 954) - ("plantation" "sRGB:39/80/75" 953) - ("pizza" "sRGB:201/148/21" 952) - ("pizazz" "sRGB:255/144/0" 951) - ("pixiegreen" "sRGB:192/216/182" 950) - ("pistachio" "sRGB:157/194/9" 949) - ("pirategold" "sRGB:186/127/3" 948) - ("pippin" "sRGB:255/225/223" 947) - ("pipi" "sRGB:254/244/204" 946) - ("piper" "sRGB:201/99/35" 945) - ("pinkswan" "sRGB:190/181/183" 944) - ("pinklady" "sRGB:255/241/216" 943) - ("pinklace" "sRGB:255/221/244" 942) - ("pinkflare" "sRGB:225/192/200" 941) - ("pinetree" "sRGB:23/31/4" 940) - ("pineglade" "sRGB:199/205/144" 939) - ("pinecone" "sRGB:109/94/84" 938) - ("pigeonpost" "sRGB:175/189/217" 937) - ("pictonblue" "sRGB:69/177/232" 936) - ("pickledbluewood" "sRGB:49/68/89" 935) - ("pickledbean" "sRGB:110/72/38" 934) - ("pickledaspen" "sRGB:63/76/58" 933) - ("picasso" "sRGB:255/243/157" 932) - ("pharlap" "sRGB:163/128/123" 931) - ("pewter" "sRGB:150/168/161" 930) - ("petiteorchid" "sRGB:219/150/144" 929) - ("pesto" "sRGB:124/118/49" 928) - ("perutan" "sRGB:127/58/2" 927) - ("persimmon" "sRGB:255/107/83" 926) - ("persianred" "sRGB:82/12/23" 925) - ("persianplum" "sRGB:112/28/28" 924) - ("periglacialblue" "sRGB:225/230/214" 923) - ("perfume" "sRGB:208/190/248" 922) - ("perano" "sRGB:169/190/242" 921) - ("peppermint" "sRGB:227/245/225" 920) - ("pelorous" "sRGB:62/171/191" 919) - ("peat" "sRGB:113/107/86" 918) - ("pearllusta" "sRGB:252/244/220" 917) - ("pearlbush" "sRGB:232/224/213" 916) - ("peanut" "sRGB:120/47/22" 915) - ("peachschnapps" "sRGB:255/220/214" 914) - ("peach" "sRGB:255/240/219" 913) - ("peasoup" "sRGB:207/229/210" 912) - ("pavlova" "sRGB:215/196/152" 911) - ("paua" "sRGB:38/3/104" 910) - ("pattensblue" "sRGB:222/245/255" 909) - ("patina" "sRGB:99/154/143" 908) - ("parsley" "sRGB:19/79/25" 907) - ("pariswhite" "sRGB:202/220/212" 906) - ("parism" "sRGB:38/5/106" 905) - ("parisdaisy" "sRGB:255/244/110" 904) - ("parchment" "sRGB:241/233/210" 903) - ("paradiso" "sRGB:49/125/130" 902) - ("paprika" "sRGB:141/2/38" 901) - ("panda" "sRGB:66/57/33" 900) - ("pancho" "sRGB:237/205/171" 899) - ("panache" "sRGB:234/246/238" 898) - ("pampas" "sRGB:244/242/238" 897) - ("palmleaf" "sRGB:25/51/14" 896) - ("palmgreen" "sRGB:9/35/15" 895) - ("paleslate" "sRGB:195/191/193" 894) - ("palesky" "sRGB:110/119/131" 893) - ("palerose" "sRGB:255/225/242" 892) - ("paleprim" "sRGB:253/254/184" 891) - ("paleoyster" "sRGB:152/141/119" 890) - ("paleleaf" "sRGB:192/211/185" 889) - ("padua" "sRGB:173/230/196" 888) - ("paco" "sRGB:65/31/16" 887) - ("pacifika" "sRGB:119/129/32" 886) - ("pablo" "sRGB:119/111/97" 885) - ("paarl" "sRGB:166/85/41" 884) - ("oysterpink" "sRGB:233/206/205" 883) - ("oysterbay" "sRGB:218/250/255" 882) - ("oxley" "sRGB:119/158/134" 881) - ("oxfordblue" "sRGB:56/69/85" 880) - ("outerspace" "sRGB:5/16/64" 879) - ("ottoman" "sRGB:233/248/237" 878) - ("oslogrey" "sRGB:135/141/145" 877) - ("orinoco" "sRGB:243/251/212" 876) - ("orientalpink" "sRGB:198/145/145" 875) - ("orient" "sRGB:1/94/133" 874) - ("oregon" "sRGB:155/71/3" 873) - ("orchidwhite" "sRGB:255/253/243" 872) - ("orangewhite" "sRGB:254/252/237" 871) - ("orangeroughy" "sRGB:196/87/25" 870) - ("oracle" "sRGB:55/116/117" 869) - ("opium" "sRGB:142/111/112" 868) - ("opal" "sRGB:169/198/194" 867) - ("onion" "sRGB:47/39/14" 866) - ("onahau" "sRGB:205/244/255" 865) - ("olivetone" "sRGB:113/110/16" 864) - ("olivehaze" "sRGB:139/132/112" 863) - ("olivegreen" "sRGB:36/46/22" 862) - ("oldcopper" "sRGB:114/74/47" 861) - ("oldbrick" "sRGB:144/30/30" 860) - ("oiledcedar" "sRGB:124/28/5" 859) - ("oil" "sRGB:40/30/21" 858) - ("offyellow" "sRGB:254/249/227" 857) - ("offgreen" "sRGB:230/248/243" 856) - ("oceangreen" "sRGB:65/170/120" 855) - ("observatory" "sRGB:2/134/111" 854) - ("oasis" "sRGB:254/239/206" 853) - ("nutmegwoodfinish" "sRGB:104/54/0" 852) - ("nutmeg" "sRGB:129/66/44" 851) - ("nugget" "sRGB:197/153/34" 850) - ("norway" "sRGB:168/189/159" 849) - ("nordic" "sRGB:1/39/49" 848) - ("nomad" "sRGB:186/177/162" 847) - ("nobel" "sRGB:183/177/177" 846) - ("nileblue" "sRGB:25/55/81" 845) - ("nightclub" "sRGB:102/0/69" 844) - ("nightshadz" "sRGB:170/55/90" 843) - ("nightrider" "sRGB:31/18/15" 842) - ("niagara" "sRGB:6/161/137" 841) - ("newyorkpink" "sRGB:215/131/127" 840) - ("neworleans" "sRGB:243/214/157" 839) - ("newamber" "sRGB:123/56/1" 838) - ("nevada" "sRGB:100/110/117" 837) - ("neutralgreen" "sRGB:172/165/134" 836) - ("nero" "sRGB:20/6/0" 835) - ("neptune" "sRGB:124/183/187" 834) - ("nepal" "sRGB:142/171/193" 833) - ("negroni" "sRGB:255/226/197" 832) - ("nebula" "sRGB:203/219/214" 831) - ("natural" "sRGB:134/86/10" 830) - ("narvik" "sRGB:237/249/241" 829) - ("napa" "sRGB:172/164/148" 828) - ("nandor" "sRGB:75/93/82" 827) - ("mystic" "sRGB:226/235/237" 826) - ("mysin" "sRGB:255/179/31" 825) - ("mypink" "sRGB:214/145/136" 824) - ("mustard" "sRGB:116/100/13" 823) - ("mulledwine" "sRGB:78/69/98" 822) - ("mulefawn" "sRGB:140/71/47" 821) - ("mulberry" "sRGB:92/5/54" 820) - ("muesli" "sRGB:170/139/91" 819) - ("muddywaters" "sRGB:183/142/92" 818) - ("mountainmist" "sRGB:149/147/150" 817) - ("mosque" "sRGB:3/106/110" 816) - ("mosaic" "sRGB:18/52/71" 815) - ("mortar" "sRGB:80/67/81" 814) - ("moroccobrown" "sRGB:68/29/0" 813) - ("morningglory" "sRGB:158/222/224" 812) - ("moonyellow" "sRGB:252/217/23" 811) - ("moonraker" "sRGB:214/206/246" 810) - ("moonmist" "sRGB:220/221/204" 809) - ("moonglow" "sRGB:252/254/218" 808) - ("moodyblue" "sRGB:127/118/211" 807) - ("monza" "sRGB:199/3/30" 806) - ("montecarlo" "sRGB:131/208/198" 805) - ("montana" "sRGB:41/30/48" 804) - ("monsoon" "sRGB:138/131/137" 803) - ("mongoose" "sRGB:181/162/127" 802) - ("mondo" "sRGB:74/60/48" 801) - ("monarch" "sRGB:139/7/35" 800) - ("monalisa" "sRGB:255/161/148" 799) - ("mojo" "sRGB:192/71/55" 798) - ("mocha" "sRGB:120/45/25" 797) - ("moccaccino" "sRGB:110/29/20" 796) - ("mobster" "sRGB:127/117/137" 795) - ("mistgrey" "sRGB:196/196/188" 794) - ("mischka" "sRGB:209/210/221" 793) - ("mirage" "sRGB:22/25/40" 792) - ("minttulip" "sRGB:196/244/235" 791) - ("mintjulep" "sRGB:241/238/193" 790) - ("minsk" "sRGB:63/48/127" 789) - ("ming" "sRGB:54/116/125" 788) - ("mineralgreen" "sRGB:63/93/83" 787) - ("mineshaft" "sRGB:50/50/50" 786) - ("mindaro" "sRGB:227/249/136" 785) - ("mimosa" "sRGB:248/253/211" 784) - ("millbrook" "sRGB:89/68/51" 783) - ("milkwhite" "sRGB:246/240/230" 782) - ("milkpunch" "sRGB:255/246/212" 781) - ("milanored" "sRGB:184/17/4" 780) - ("milan" "sRGB:250/255/164" 779) - ("mikado" "sRGB:45/37/16" 778) - ("midnightmoss" "sRGB:4/16/4" 777) - ("midnightexpress" "sRGB:0/7/65" 776) - ("midnight" "sRGB:1/22/53" 775) - ("midgrey" "sRGB:95/95/110" 774) - ("mexicanred" "sRGB:167/37/37" 773) - ("meteorite" "sRGB:60/31/118" 772) - ("meteor" "sRGB:208/125/18" 771) - ("metalliccopper" "sRGB:113/41/29" 770) - ("metallicbronze" "sRGB:73/55/27" 769) - ("merlot" "sRGB:131/25/35" 768) - ("merlin" "sRGB:65/60/55" 767) - ("merino" "sRGB:246/240/230" 766) - ("mercury" "sRGB:229/229/229" 765) - ("meranti" "sRGB:93/30/15" 764) - ("melrose" "sRGB:199/193/255" 763) - ("melanzane" "sRGB:48/5/41" 762) - ("melanie" "sRGB:228/194/213" 761) - ("mckenzie" "sRGB:175/135/81" 760) - ("maverick" "sRGB:216/194/213" 759) - ("matterhorn" "sRGB:78/59/65" 758) - ("matrix" "sRGB:176/93/84" 757) - ("matisse" "sRGB:27/101/157" 756) - ("mash" "sRGB:64/41/29" 755) - ("masala" "sRGB:64/59/56" 754) - ("marzipan" "sRGB:248/219/157" 753) - ("martinique" "sRGB:54/48/80" 752) - ("martini" "sRGB:175/160/158" 751) - ("marshland" "sRGB:11/15/8" 750) - ("maroon" "sRGB:66/3/3" 749) - ("marlin" "sRGB:42/20/14" 748) - ("mariner" "sRGB:40/106/205" 747) - ("marigold" "sRGB:185/141/40" 746) - ("mardigras" "sRGB:53/0/54" 745) - ("manz" "sRGB:238/239/120" 744) - ("mantle" "sRGB:139/156/144" 743) - ("mantis" "sRGB:116/195/101" 742) - ("manhattan" "sRGB:245/201/153" 741) - ("mandyspink" "sRGB:242/195/178" 740) - ("mandy" "sRGB:226/84/101" 739) - ("mandalay" "sRGB:173/120/27" 738) - ("mamba" "sRGB:142/129/144" 737) - ("malta" "sRGB:189/178/161" 736) - ("mallard" "sRGB:35/52/24" 735) - ("malibu" "sRGB:125/200/247" 734) - ("malachitegreen" "sRGB:136/141/101" 733) - ("mako" "sRGB:68/73/84" 732) - ("makara" "sRGB:137/125/109" 731) - ("maize" "sRGB:245/213/160" 730) - ("maire" "sRGB:19/10/6" 729) - ("maitai" "sRGB:176/102/8" 728) - ("mahogany" "sRGB:78/6/6" 727) - ("magnolia" "sRGB:248/244/255" 726) - ("madras" "sRGB:63/48/2" 725) - ("madison" "sRGB:9/37/93" 724) - ("madang" "sRGB:183/240/190" 723) - ("mabel" "sRGB:217/247/255" 722) - ("lynch" "sRGB:105/126/154" 721) - ("luxorgold" "sRGB:167/136/44" 720) - ("lusty" "sRGB:153/27/7" 719) - ("lunargreen" "sRGB:60/73/58" 718) - ("luckypoint" "sRGB:26/26/104" 717) - ("lucky" "sRGB:175/159/28" 716) - ("loulou" "sRGB:70/11/65" 715) - ("lotus" "sRGB:134/60/60" 714) - ("lonestar" "sRGB:109/1/1" 713) - ("londonhue" "sRGB:190/166/195" 712) - ("lola" "sRGB:223/207/219" 711) - ("logan" "sRGB:170/169/205" 710) - ("logcabin" "sRGB:36/42/29" 709) - ("locust" "sRGB:168/175/142" 708) - ("lochmara" "sRGB:0/126/199" 707) - ("lochinvar" "sRGB:44/140/132" 706) - ("loblolly" "sRGB:189/201/206" 705) - ("loafer" "sRGB:238/244/222" 704) - ("lividbrown" "sRGB:77/40/46" 703) - ("lisbonbrown" "sRGB:66/57/33" 702) - ("lipstick" "sRGB:171/5/99" 701) - ("linkwater" "sRGB:217/228/245" 700) - ("linen" "sRGB:230/228/212" 699) - ("limerick" "sRGB:157/194/9" 698) - ("limedspruce" "sRGB:57/72/81" 697) - ("limedoak" "sRGB:172/138/86" 696) - ("limedgum" "sRGB:66/57/33" 695) - ("limedash" "sRGB:116/125/99" 694) - ("limeade" "sRGB:111/157/2" 693) - ("lime" "sRGB:191/201/33" 692) - ("lima" "sRGB:118/189/23" 691) - ("lilywhite" "sRGB:231/248/255" 690) - ("lily" "sRGB:200/170/191" 689) - ("lilacbush" "sRGB:152/116/211" 688) - ("lightningyellow" "sRGB:252/192/30" 687) - ("licorice" "sRGB:9/34/86" 686) - ("lemongrass" "sRGB:155/158/143" 685) - ("lemonginger" "sRGB:172/158/34" 684) - ("lemon" "sRGB:244/216/28" 683) - ("leather" "sRGB:150/112/89" 682) - ("lavender" "sRGB:168/153/230" 681) - ("laurel" "sRGB:116/147/120" 680) - ("laser" "sRGB:200/181/104" 679) - ("laspalmas" "sRGB:198/230/16" 678) - ("larioja" "sRGB:179/193/16" 677) - ("lapalma" "sRGB:54/135/22" 676) - ("kumera" "sRGB:136/98/33" 675) - ("kournikova" "sRGB:255/231/114" 674) - ("koromiko" "sRGB:255/189/95" 673) - ("korma" "sRGB:143/75/14" 672) - ("kokoda" "sRGB:110/109/87" 671) - ("kobi" "sRGB:231/159/196" 670) - ("kingfisherdaisy" "sRGB:62/4/128" 669) - ("kimberly" "sRGB:115/108/159" 668) - ("killarney" "sRGB:58/106/71" 667) - ("kilamanjaro" "sRGB:36/12/2" 666) - ("kidnapper" "sRGB:225/234/212" 665) - ("keppel" "sRGB:58/176/158" 664) - ("kenyancopper" "sRGB:124/28/5" 663) - ("kelp" "sRGB:69/73/54" 662) - ("kashmirblue" "sRGB:80/112/150" 661) - ("karry" "sRGB:255/234/212" 660) - ("karaka" "sRGB:30/22/9" 659) - ("kangaroo" "sRGB:198/200/189" 658) - ("kaitokegreen" "sRGB:0/70/32" 657) - ("kabul" "sRGB:94/72/62" 656) - ("justright" "sRGB:236/205/185" 655) - ("juniper" "sRGB:109/146/146" 654) - ("junglemist" "sRGB:180/207/211" 653) - ("junglegreen" "sRGB:40/30/21" 652) - ("jumbo" "sRGB:124/123/130" 651) - ("judgegrey" "sRGB:84/67/51" 650) - ("jordyblue" "sRGB:138/185/241" 649) - ("jonquil" "sRGB:238/255/154" 648) - ("jon" "sRGB:59/31/31" 647) - ("joanna" "sRGB:245/243/229" 646) - ("jewel" "sRGB:18/107/64" 645) - ("jetstream" "sRGB:181/210/206" 644) - ("jellybean" "sRGB:41/123/154" 643) - ("jazz" "sRGB:120/1/9" 642) - ("java" "sRGB:31/194/194" 641) - ("jarrah" "sRGB:52/21/21" 640) - ("japonica" "sRGB:216/124/99" 639) - ("japanesemaple" "sRGB:120/1/9" 638) - ("japaneselaurel" "sRGB:10/105/6" 637) - ("janna" "sRGB:244/235/211" 636) - ("jambalaya" "sRGB:91/48/19" 635) - ("jaguar" "sRGB:8/1/16" 634) - ("jagger" "sRGB:53/14/87" 633) - ("jaggedice" "sRGB:194/232/229" 632) - ("jaffa" "sRGB:239/134/63" 631) - ("jade" "sRGB:66/121/119" 630) - ("jacksonspurple" "sRGB:32/32/141" 629) - ("jackobean" "sRGB:46/25/5" 628) - ("jacarta" "sRGB:58/42/106" 627) - ("jacaranda" "sRGB:46/3/41" 626) - ("islandspice" "sRGB:255/252/238" 625) - ("ironstone" "sRGB:134/72/60" 624) - ("ironsidegrey" "sRGB:103/102/98" 623) - ("ironbark" "sRGB:65/31/16" 622) - ("iron" "sRGB:212/215/217" 621) - ("iroko" "sRGB:67/49/32" 620) - ("irishcoffee" "sRGB:95/61/38" 619) - ("indochine" "sRGB:194/107/3" 618) - ("indiantan" "sRGB:77/30/1" 617) - ("illusion" "sRGB:246/164/201" 616) - ("iceberg" "sRGB:218/244/240" 615) - ("icecold" "sRGB:177/244/231" 614) - ("husk" "sRGB:183/164/88" 613) - ("hurricane" "sRGB:135/124/123" 612) - ("huntergreen" "sRGB:22/29/16" 611) - ("hummingbird" "sRGB:207/249/243" 610) - ("hottoddy" "sRGB:179/128/7" 609) - ("hotpurple" "sRGB:72/6/86" 608) - ("hotcurry" "sRGB:136/98/33" 607) - ("hotchile" "sRGB:139/7/35" 606) - ("horsesneck" "sRGB:96/73/19" 605) - ("horizon" "sRGB:90/135/160" 604) - ("hopbush" "sRGB:208/109/161" 603) - ("honeysuckle" "sRGB:237/252/132" 602) - ("honeyflower" "sRGB:79/28/112" 601) - ("holly" "sRGB:1/29/19" 600) - ("hoki" "sRGB:101/134/159" 599) - ("hokeypokey" "sRGB:200/165/40" 598) - ("hitpink" "sRGB:255/171/129" 597) - ("hitgrey" "sRGB:161/173/181" 596) - ("hippiepink" "sRGB:174/69/96" 595) - ("hippiegreen" "sRGB:83/130/75" 594) - ("hippieblue" "sRGB:88/154/175" 593) - ("hintofyellow" "sRGB:250/253/228" 592) - ("hintofred" "sRGB:249/249/249" 591) - ("hintofgrey" "sRGB:252/255/249" 590) - ("hintofgreen" "sRGB:230/255/233" 589) - ("himalaya" "sRGB:106/93/27" 588) - ("hillary" "sRGB:172/165/134" 587) - ("highland" "sRGB:111/142/99" 586) - ("highball" "sRGB:144/141/57" 585) - ("hibiscus" "sRGB:182/49/108" 584) - ("hemp" "sRGB:144/120/116" 583) - ("hemlock" "sRGB:94/93/59" 582) - ("heavymetal" "sRGB:43/50/40" 581) - ("heatheredgrey" "sRGB:182/176/149" 580) - ("heather" "sRGB:183/195/208" 579) - ("heath" "sRGB:84/16/18" 578) - ("hawkesblue" "sRGB:212/226/252" 577) - ("hawaiiantan" "sRGB:157/86/22" 576) - ("havelockblue" "sRGB:85/144/217" 575) - ("havana" "sRGB:52/21/21" 574) - ("harvestgold" "sRGB:224/185/116" 573) - ("harp" "sRGB:230/242/234" 572) - ("hampton" "sRGB:229/216/175" 571) - ("halfspanishwhite" "sRGB:254/244/219" 570) - ("halfpearllusta" "sRGB:255/252/234" 569) - ("halfdutchwhite" "sRGB:254/247/222" 568) - ("halfcolonialwhite" "sRGB:253/246/211" 567) - ("halfbaked" "sRGB:133/196/204" 566) - ("halfandhalf" "sRGB:255/254/225" 565) - ("haiti" "sRGB:27/16/53" 564) - ("hairyheath" "sRGB:107/42/20" 563) - ("hacienda" "sRGB:152/129/27" 562) - ("gurkha" "sRGB:154/149/119" 561) - ("gunsmoke" "sRGB:130/134/133" 560) - ("gunmetal" "sRGB:2/13/21" 559) - ("gunpowder" "sRGB:65/66/87" 558) - ("gumbo" "sRGB:124/161/166" 557) - ("gumleaf" "sRGB:182/211/191" 556) - ("gullgrey" "sRGB:157/172/183" 555) - ("gulfstream" "sRGB:128/179/174" 554) - ("gulfblue" "sRGB:5/22/87" 553) - ("guardsmanred" "sRGB:186/1/1" 552) - ("greysuit" "sRGB:193/190/205" 551) - ("greyolive" "sRGB:169/164/145" 550) - ("greynurse" "sRGB:231/236/230" 549) - ("greynickel" "sRGB:195/195/189" 548) - ("greygreen" "sRGB:69/73/54" 547) - ("greychateau" "sRGB:162/170/179" 546) - ("grenadier" "sRGB:213/70/0" 545) - ("greenstone" "sRGB:0/62/64" 544) - ("greenwhite" "sRGB:232/235/224" 543) - ("greenwaterloo" "sRGB:16/20/5" 542) - ("greenvogue" "sRGB:3/43/82" 541) - ("greenspring" "sRGB:184/193/177" 540) - ("greensmoke" "sRGB:164/175/110" 539) - ("greenpea" "sRGB:29/97/66" 538) - ("greenmist" "sRGB:203/211/176" 537) - ("greenleaf" "sRGB:67/106/13" 536) - ("greenkelp" "sRGB:37/49/28" 535) - ("greenhouse" "sRGB:36/80/15" 534) - ("gravel" "sRGB:74/68/75" 533) - ("grasshopper" "sRGB:124/118/49" 532) - ("graphite" "sRGB:37/22/7" 531) - ("grape" "sRGB:56/26/81" 530) - ("grannysmith" "sRGB:132/160/160" 529) - ("grannyapple" "sRGB:213/246/227" 528) - ("granitegreen" "sRGB:141/137/116" 527) - ("grandis" "sRGB:255/211/140" 526) - ("grainbrown" "sRGB:228/213/183" 525) - ("governorbay" "sRGB:47/60/179" 524) - ("gothic" "sRGB:109/146/161" 523) - ("gossip" "sRGB:210/248/176" 522) - ("gossamer" "sRGB:6/155/129" 521) - ("gorse" "sRGB:255/241/79" 520) - ("gordonsgreen" "sRGB:11/17/7" 519) - ("gondola" "sRGB:38/20/20" 518) - ("goldentainoi" "sRGB:255/204/92" 517) - ("goldensand" "sRGB:240/219/125" 516) - ("goldenglow" "sRGB:253/226/149" 515) - ("goldenfizz" "sRGB:245/251/61" 514) - ("goldendream" "sRGB:240/213/45" 513) - ("goldenbell" "sRGB:226/137/19" 512) - ("goldtips" "sRGB:222/186/19" 511) - ("golddrop" "sRGB:241/130/0" 510) - ("goblin" "sRGB:61/125/82" 509) - ("goben" "sRGB:114/109/78" 508) - ("gladegreen" "sRGB:97/132/95" 507) - ("glacier" "sRGB:128/179/196" 506) - ("givry" "sRGB:248/228/191" 505) - ("ginfizz" "sRGB:255/249/226" 504) - ("gin" "sRGB:232/242/235" 503) - ("gimblet" "sRGB:184/181/106" 502) - ("gigas" "sRGB:82/60/148" 501) - ("ghost" "sRGB:199/201/213" 500) - ("geyser" "sRGB:212/223/226" 499) - ("geraldine" "sRGB:251/137/137" 498) - ("genoa" "sRGB:21/115/107" 497) - ("geebung" "sRGB:209/143/27" 496) - ("galliano" "sRGB:220/178/12" 495) - ("gallery" "sRGB:239/239/239" 494) - ("gablegreen" "sRGB:22/53/49" 493) - ("fuscousgrey" "sRGB:84/83/77" 492) - ("fungreen" "sRGB:1/109/57" 491) - ("funblue" "sRGB:25/89/168" 490) - ("fuelyellow" "sRGB:236/169/39" 489) - ("fuego" "sRGB:190/222/13" 488) - ("fuchsia" "sRGB:122/88/193" 487) - ("fruitsalad" "sRGB:79/157/93" 486) - ("frostee" "sRGB:228/246/231" 485) - ("frostedmint" "sRGB:219/255/248" 484) - ("frost" "sRGB:237/245/221" 483) - ("froly" "sRGB:245/117/132" 482) - ("fringyflower" "sRGB:177/226/193" 481) - ("friargrey" "sRGB:128/126/121" 480) - ("frenchpass" "sRGB:189/237/253" 479) - ("frenchlilac" "sRGB:236/199/238" 478) - ("frenchgrey" "sRGB:189/189/198" 477) - ("frangipani" "sRGB:255/222/179" 476) - ("fountainblue" "sRGB:86/180/190" 475) - ("forgetmenot" "sRGB:255/241/238" 474) - ("forestgreen" "sRGB:24/45/9" 473) - ("foggygrey" "sRGB:203/202/182" 472) - ("fog" "sRGB:215/208/255" 471) - ("foam" "sRGB:216/252/250" 470) - ("flirt" "sRGB:162/0/109" 469) - ("flint" "sRGB:111/106/97" 468) - ("flax" "sRGB:123/130/101" 467) - ("flamingo" "sRGB:242/85/42" 466) - ("flamenco" "sRGB:255/125/7" 465) - ("flamered" "sRGB:199/3/30" 464) - ("flamepea" "sRGB:218/91/56" 463) - ("firefly" "sRGB:14/42/48" 462) - ("firebush" "sRGB:232/153/40" 461) - ("fire" "sRGB:170/66/3" 460) - ("fiord" "sRGB:64/81/105" 459) - ("finn" "sRGB:105/45/84" 458) - ("finlandia" "sRGB:85/109/86" 457) - ("finch" "sRGB:98/102/73" 456) - ("fijigreen" "sRGB:101/114/32" 455) - ("fieryorange" "sRGB:179/82/19" 454) - ("feta" "sRGB:240/252/234" 453) - ("festival" "sRGB:251/233/108" 452) - ("ferra" "sRGB:112/79/80" 451) - ("fernfrond" "sRGB:101/114/32" 450) - ("fern" "sRGB:10/72/13" 449) - ("feijoa" "sRGB:159/221/140" 448) - ("fedora" "sRGB:121/106/120" 447) - ("fantasy" "sRGB:250/243/240" 446) - ("falcon" "sRGB:127/98/109" 445) - ("fairpink" "sRGB:255/239/236" 444) - ("everglade" "sRGB:28/64/46" 443) - ("eveningsea" "sRGB:2/78/70" 442) - ("eunry" "sRGB:207/163/157" 441) - ("eucalyptus" "sRGB:39/138/91" 440) - ("eternity" "sRGB:33/26/14" 439) - ("espresso" "sRGB:97/39/24" 438) - ("equator" "sRGB:225/188/100" 437) - ("envy" "sRGB:139/166/144" 436) - ("englishwalnut" "sRGB:62/43/35" 435) - ("englishholly" "sRGB:2/45/21" 434) - ("energyyellow" "sRGB:248/221/92" 433) - ("endeavour" "sRGB:0/86/167" 432) - ("empress" "sRGB:129/115/119" 431) - ("emperor" "sRGB:81/70/73" 430) - ("eminence" "sRGB:108/48/130" 429) - ("embers" "sRGB:160/39/18" 428) - ("elm" "sRGB:28/124/125" 427) - ("elfgreen" "sRGB:8/131/112" 426) - ("elephant" "sRGB:18/52/71" 425) - ("elsalva" "sRGB:143/62/51" 424) - ("elpaso" "sRGB:30/23/8" 423) - ("eggwhite" "sRGB:255/239/193" 422) - ("eggsour" "sRGB:255/244/221" 421) - ("edward" "sRGB:162/174/171" 420) - ("edgewater" "sRGB:200/227/215" 419) - ("eden" "sRGB:16/88/82" 418) - ("ecstasy" "sRGB:250/120/20" 417) - ("ecruwhite" "sRGB:245/243/229" 416) - ("eclipse" "sRGB:49/28/23" 415) - ("echoblue" "sRGB:175/189/217" 414) - ("ebonyclay" "sRGB:38/40/59" 413) - ("ebony" "sRGB:12/11/29" 412) - ("ebb" "sRGB:233/227/227" 411) - ("easternblue" "sRGB:30/154/176" 410) - ("eastside" "sRGB:172/145/206" 409) - ("eastbay" "sRGB:65/76/125" 408) - ("earlydawn" "sRGB:255/249/230" 407) - ("earlsgreen" "sRGB:201/185/59" 406) - ("eagle" "sRGB:182/186/164" 405) - ("dutchwhite" "sRGB:255/248/209" 404) - ("dustygrey" "sRGB:168/152/155" 403) - ("duststorm" "sRGB:229/204/201" 402) - ("dune" "sRGB:56/53/51" 401) - ("drover" "sRGB:253/247/173" 400) - ("driftwood" "sRGB:175/135/81" 399) - ("downy" "sRGB:111/208/197" 398) - ("downriver" "sRGB:9/34/86" 397) - ("dovegrey" "sRGB:109/108/108" 396) - ("doublespanishwhite" "sRGB:230/215/185" 395) - ("doublepearllusta" "sRGB:252/244/208" 394) - ("doublecolonialwhite" "sRGB:238/227/173" 393) - ("dorado" "sRGB:107/87/85" 392) - ("donkeybrown" "sRGB:166/146/121" 391) - ("donjuan" "sRGB:93/76/81" 390) - ("domino" "sRGB:142/119/94" 389) - ("dolphin" "sRGB:100/96/119" 388) - ("dolly" "sRGB:249/255/139" 387) - ("dixie" "sRGB:226/148/24" 386) - ("disco" "sRGB:135/21/80" 385) - ("dingley" "sRGB:93/119/71" 384) - ("diesel" "sRGB:19/0/0" 383) - ("diserria" "sRGB:219/153/94" 382) - ("dew" "sRGB:234/255/254" 381) - ("desertstorm" "sRGB:248/248/247" 380) - ("desert" "sRGB:174/96/32" 379) - ("derby" "sRGB:255/238/216" 378) - ("deluge" "sRGB:117/99/168" 377) - ("delta" "sRGB:164/164/157" 376) - ("dell" "sRGB:57/100/19" 375) - ("delrio" "sRGB:176/154/149" 374) - ("deepteal" "sRGB:0/53/50" 373) - ("deepsea" "sRGB:1/130/107" 372) - ("deepoak" "sRGB:65/32/16" 371) - ("deepkoamaru" "sRGB:27/18/123" 370) - ("deepfir" "sRGB:0/41/0" 369) - ("deepcove" "sRGB:5/16/64" 368) - ("deepbronze" "sRGB:74/48/4" 367) - ("deepblush" "sRGB:228/118/152" 366) - ("deco" "sRGB:210/218/151" 365) - ("deyork" "sRGB:122/196/136" 364) - ("dawnpink" "sRGB:243/233/229" 363) - ("dawn" "sRGB:166/162/154" 362) - ("darktan" "sRGB:102/16/16" 361) - ("darkslate" "sRGB:57/72/81" 360) - ("darkrum" "sRGB:65/32/16" 359) - ("darkrimu" "sRGB:95/61/38" 358) - ("darkoak" "sRGB:97/39/24" 357) - ("darkebony" "sRGB:60/32/5" 356) - ("danube" "sRGB:96/147/209" 355) - ("dallas" "sRGB:110/75/38" 354) - ("daisybush" "sRGB:79/35/152" 353) - ("dairycream" "sRGB:249/228/188" 352) - ("daintree" "sRGB:1/39/49" 351) - ("cyprus" "sRGB:0/62/64" 350) - ("cuttysark" "sRGB:80/118/114" 349) - ("curiousblue" "sRGB:37/150/209" 348) - ("cupid" "sRGB:251/190/218" 347) - ("cumulus" "sRGB:253/255/213" 346) - ("cumin" "sRGB:146/67/33" 345) - ("cubantan" "sRGB:42/20/14" 344) - ("crusta" "sRGB:253/123/51" 343) - ("crusoe" "sRGB:0/72/22" 342) - ("cruise" "sRGB:181/236/223" 341) - ("crowshead" "sRGB:28/18/8" 340) - ("crownofthorns" "sRGB:119/31/31" 339) - ("crocodile" "sRGB:115/109/88" 338) - ("crete" "sRGB:115/120/41" 337) - ("creole" "sRGB:30/15/4" 336) - ("cremedebanane" "sRGB:255/252/153" 335) - ("creamcan" "sRGB:245/200/92" 334) - ("creambrulee" "sRGB:255/229/160" 333) - ("craterbrown" "sRGB:70/36/37" 332) - ("cranberry" "sRGB:182/49/108" 331) - ("crail" "sRGB:185/81/64" 330) - ("crabapple" "sRGB:160/39/18" 329) - ("cowboy" "sRGB:77/40/45" 328) - ("covegrey" "sRGB:5/22/87" 327) - ("countygreen" "sRGB:1/55/26" 326) - ("cottonseed" "sRGB:194/189/182" 325) - ("costadelsol" "sRGB:97/93/48" 324) - ("cosmos" "sRGB:255/216/217" 323) - ("cosmic" "sRGB:118/57/93" 322) - ("corvette" "sRGB:250/211/162" 321) - ("cornflower" "sRGB:255/176/172" 320) - ("cornharvest" "sRGB:139/107/11" 319) - ("cornfield" "sRGB:248/250/205" 318) - ("corn" "sRGB:231/191/5" 317) - ("cork" "sRGB:64/41/29" 316) - ("coriander" "sRGB:196/208/176" 315) - ("corduroy" "sRGB:96/110/104" 314) - ("coraltree" "sRGB:168/107/107" 313) - ("coralcandy" "sRGB:255/220/214" 312) - ("coral" "sRGB:199/188/162" 311) - ("copperrust" "sRGB:148/71/71" 310) - ("coppercanyon" "sRGB:126/58/21" 309) - ("contessa" "sRGB:198/114/107" 308) - ("conifer" "sRGB:172/221/77" 307) - ("congobrown" "sRGB:89/55/55" 306) - ("confetti" "sRGB:233/215/90" 305) - ("concrete" "sRGB:242/242/242" 304) - ("concord" "sRGB:124/123/122" 303) - ("conch" "sRGB:201/217/210" 302) - ("como" "sRGB:81/124/102" 301) - ("comet" "sRGB:92/93/117" 300) - ("colonialwhite" "sRGB:255/237/188" 299) - ("coldturkey" "sRGB:206/186/186" 298) - ("coldpurple" "sRGB:171/160/217" 297) - ("cola" "sRGB:63/37/0" 296) - ("cognac" "sRGB:159/56/29" 295) - ("coffeebean" "sRGB:42/20/14" 294) - ("coffee" "sRGB:112/101/85" 293) - ("codgrey" "sRGB:11/11/11" 292) - ("coconutcream" "sRGB:248/247/220" 291) - ("cocoabrown" "sRGB:48/31/30" 290) - ("cocoabean" "sRGB:72/28/28" 289) - ("cobalt" "sRGB:6/42/120" 288) - ("clover" "sRGB:56/73/16" 287) - ("cloudy" "sRGB:172/165/159" 286) - ("cloudburst" "sRGB:32/46/84" 285) - ("cloud" "sRGB:199/196/191" 284) - ("clinker" "sRGB:55/29/9" 283) - ("clementine" "sRGB:233/110/0" 282) - ("clearday" "sRGB:233/255/253" 281) - ("claycreek" "sRGB:138/131/96" 280) - ("classicrose" "sRGB:251/204/231" 279) - ("claret" "sRGB:127/23/52" 278) - ("clamshell" "sRGB:212/182/175" 277) - ("clairvoyant" "sRGB:72/6/86" 276) - ("citrus" "sRGB:161/197/10" 275) - ("citron" "sRGB:158/169/31" 274) - ("citrinewhite" "sRGB:250/247/214" 273) - ("cioccolato" "sRGB:85/40/12" 272) - ("cinnamon" "sRGB:123/63/0" 271) - ("cinderella" "sRGB:253/225/220" 270) - ("cinder" "sRGB:14/14/24" 269) - ("cigar" "sRGB:119/63/26" 268) - ("chromewhite" "sRGB:232/241/212" 267) - ("christine" "sRGB:231/115/10" 266) - ("christi" "sRGB:103/167/18" 265) - ("christalle" "sRGB:51/3/107" 264) - ("chocolate" "sRGB:55/2/2" 263) - ("chinook" "sRGB:168/227/189" 262) - ("chino" "sRGB:206/199/167" 261) - ("chinaivory" "sRGB:252/255/231" 260) - ("chileanheath" "sRGB:255/253/230" 259) - ("chileanfire" "sRGB:247/119/3" 258) - ("chiffon" "sRGB:241/255/200" 257) - ("chicago" "sRGB:93/92/88" 256) - ("chetwodeblue" "sRGB:133/129/217" 255) - ("cherub" "sRGB:248/217/233" 254) - ("cherrywood" "sRGB:101/26/20" 253) - ("cherrypie" "sRGB:42/3/89" 252) - ("cherokee" "sRGB:252/218/152" 251) - ("chenin" "sRGB:223/205/111" 250) - ("chelseagem" "sRGB:158/83/2" 249) - ("chelseacucumber" "sRGB:131/170/93" 248) - ("chathamsblue" "sRGB:23/85/121" 247) - ("chatelle" "sRGB:189/179/199" 246) - ("chateaugreen" "sRGB:64/168/96" 245) - ("charm" "sRGB:212/116/148" 244) - ("charlotte" "sRGB:186/238/249" 243) - ("chardonnay" "sRGB:255/205/140" 242) - ("chardon" "sRGB:255/243/241" 241) - ("charade" "sRGB:41/41/55" 240) - ("chantilly" "sRGB:248/195/223" 239) - ("champagne" "sRGB:250/236/204" 238) - ("chamois" "sRGB:237/220/177" 237) - ("chambray" "sRGB:53/78/140" 236) - ("chalky" "sRGB:238/215/148" 235) - ("chaletgreen" "sRGB:81/110/61" 234) - ("chablis" "sRGB:255/244/243" 233) - ("ceramic" "sRGB:252/255/249" 232) - ("cement" "sRGB:141/118/98" 231) - ("celtic" "sRGB:22/50/34" 230) - ("cello" "sRGB:30/56/91" 229) - ("celeste" "sRGB:209/210/202" 228) - ("celery" "sRGB:184/194/93" 227) - ("cedarwoodfinish" "sRGB:113/26/0" 226) - ("cedar" "sRGB:62/28/20" 225) - ("cesoir" "sRGB:151/113/181" 224) - ("cavernpink" "sRGB:227/190/190" 223) - ("catskillwhite" "sRGB:238/246/247" 222) - ("catalinablue" "sRGB:6/42/120" 221) - ("castro" "sRGB:82/0/31" 220) - ("casper" "sRGB:173/190/209" 219) - ("cashmere" "sRGB:230/190/165" 218) - ("cascade" "sRGB:139/169/165" 217) - ("casal" "sRGB:47/97/104" 216) - ("casablanca" "sRGB:248/184/83" 215) - ("carouselpink" "sRGB:249/224/237" 214) - ("carnabytan" "sRGB:92/46/1" 213) - ("carla" "sRGB:243/255/216" 212) - ("carissma" "sRGB:234/136/168" 211) - ("careyspink" "sRGB:210/158/170" 210) - ("cardinal" "sRGB:140/5/94" 209) - ("cardingreen" "sRGB:1/54/28" 208) - ("cararra" "sRGB:238/238/232" 207) - ("caramel" "sRGB:255/221/175" 206) - ("capri" "sRGB:6/42/120" 205) - ("caper" "sRGB:220/237/180" 204) - ("capepalliser" "sRGB:162/102/69" 203) - ("capehoney" "sRGB:254/229/172" 202) - ("capecod" "sRGB:60/68/67" 201) - ("canvas" "sRGB:168/165/137" 200) - ("cannonpink" "sRGB:137/67/103" 199) - ("cannonblack" "sRGB:37/23/6" 198) - ("candlelight" "sRGB:252/217/23" 197) - ("canary" "sRGB:243/251/98" 196) - ("cancan" "sRGB:213/145/164" 195) - ("camouflage" "sRGB:60/57/16" 194) - ("cameo" "sRGB:217/185/155" 193) - ("camelot" "sRGB:137/52/86" 192) - ("camarone" "sRGB:0/88/26" 191) - ("calypso" "sRGB:49/114/141" 190) - ("california" "sRGB:254/157/4" 189) - ("calico" "sRGB:224/192/149" 188) - ("caferoyale" "sRGB:111/68/12" 187) - ("cadillac" "sRGB:176/76/106" 186) - ("cactus" "sRGB:88/113/86" 185) - ("cabbagepont" "sRGB:63/76/58" 184) - ("cabaret" "sRGB:217/73/114" 183) - ("cabsav" "sRGB:77/10/24" 182) - ("butterywhite" "sRGB:255/252/234" 181) - ("buttermilk" "sRGB:255/241/181" 180) - ("butterflybush" "sRGB:98/78/154" 179) - ("butteredrum" "sRGB:161/117/13" 178) - ("buttercup" "sRGB:243/173/22" 177) - ("bush" "sRGB:13/46/28" 176) - ("burntcrimson" "sRGB:101/0/11" 175) - ("burningsand" "sRGB:217/147/118" 174) - ("burnham" "sRGB:0/46/32" 173) - ("burgundy" "sRGB:119/15/5" 172) - ("bunting" "sRGB:21/31/76" 171) - ("bunker" "sRGB:13/17/23" 170) - ("bullshot" "sRGB:134/77/30" 169) - ("bulgarianrose" "sRGB:72/6/7" 168) - ("buddhagold" "sRGB:193/160/4" 167) - ("bud" "sRGB:168/174/156" 166) - ("buccaneer" "sRGB:98/47/48" 165) - ("bubbles" "sRGB:231/254/255" 164) - ("brownpod" "sRGB:64/24/1" 163) - ("brownderby" "sRGB:73/38/21" 162) - ("brownbramble" "sRGB:89/40/4" 161) - ("broom" "sRGB:255/236/19" 160) - ("bronzetone" "sRGB:77/64/15" 159) - ("bronzeolive" "sRGB:78/66/12" 158) - ("bronze" "sRGB:63/33/9" 157) - ("bronco" "sRGB:171/161/150" 156) - ("brightsun" "sRGB:254/211/60" 155) - ("brightred" "sRGB:177/0/0" 154) - ("brightgrey" "sRGB:60/65/81" 153) - ("bridesmaid" "sRGB:254/240/236" 152) - ("bridalheath" "sRGB:255/250/244" 151) - ("breakerbay" "sRGB:93/161/159" 150) - ("brazil" "sRGB:136/98/33" 149) - ("brandyrose" "sRGB:187/137/131" 148) - ("brandypunch" "sRGB:205/132/41" 147) - ("brandy" "sRGB:222/193/150" 146) - ("bracken" "sRGB:74/42/4" 145) - ("bourbon" "sRGB:186/111/30" 144) - ("bouquet" "sRGB:174/128/158" 143) - ("boulder" "sRGB:122/122/122" 142) - ("bottlegreen" "sRGB:9/54/36" 141) - ("botticelli" "sRGB:199/221/229" 140) - ("bostonblue" "sRGB:59/145/180" 139) - ("bossanova" "sRGB:78/42/90" 138) - ("bordeaux" "sRGB:92/1/32" 137) - ("bone" "sRGB:228/209/192" 136) - ("bondiblue" "sRGB:2/71/142" 135) - ("bonjour" "sRGB:229/224/225" 134) - ("bombay" "sRGB:175/177/184" 133) - ("bokaragrey" "sRGB:28/18/8" 132) - ("blush" "sRGB:180/70/104" 131) - ("blumine" "sRGB:24/88/122" 130) - ("bluezodiac" "sRGB:19/38/77" 129) - ("bluewhale" "sRGB:4/46/76" 128) - ("bluestone" "sRGB:1/97/98" 127) - ("bluesmoke" "sRGB:116/136/129" 126) - ("blueromance" "sRGB:210/246/222" 125) - ("bluemarguerite" "sRGB:118/102/198" 124) - ("bluelagoon" "sRGB:1/121/135" 123) - ("bluehaze" "sRGB:191/190/216" 122) - ("bluegem" "sRGB:44/14/140" 121) - ("bluedianne" "sRGB:32/72/82" 120) - ("bluediamond" "sRGB:56/4/116" 119) - ("bluechill" "sRGB:12/137/144" 118) - ("bluecharcoal" "sRGB:1/13/26" 117) - ("bluechalk" "sRGB:241/233/255" 116) - ("bluebell" "sRGB:34/8/120" 115) - ("bluebayoux" "sRGB:73/102/121" 114) - ("bluebark" "sRGB:4/19/34" 113) - ("blossom" "sRGB:220/180/188" 112) - ("bleachedcedar" "sRGB:44/33/51" 111) - ("bleachwhite" "sRGB:254/243/216" 110) - ("blanc" "sRGB:245/233/211" 109) - ("blackwood" "sRGB:38/17/5" 108) - ("blackcurrant" "sRGB:50/41/58" 107) - ("blackberry" "sRGB:77/1/53" 106) - ("blackwhite" "sRGB:255/254/246" 105) - ("blacksqueeze" "sRGB:242/250/250" 104) - ("blackrussian" "sRGB:10/0/28" 103) - ("blackrose" "sRGB:103/3/45" 102) - ("blackrock" "sRGB:13/3/50" 101) - ("blackpepper" "sRGB:14/14/24" 100) - ("blackpearl" "sRGB:4/19/34" 99) - ("blackmarlin" "sRGB:62/44/28" 98) - ("blackmagic" "sRGB:37/23/6" 97) - ("blackhaze" "sRGB:246/247/247" 96) - ("blackforest" "sRGB:11/19/4" 95) - ("blackbean" "sRGB:8/25/16" 94) - ("bizarre" "sRGB:238/222/218" 93) - ("bitterlemon" "sRGB:202/224/13" 92) - ("bitter" "sRGB:134/137/116" 91) - ("bisonhide" "sRGB:193/183/164" 90) - ("bismark" "sRGB:73/113/131" 89) - ("biscay" "sRGB:27/49/98" 88) - ("birdflower" "sRGB:212/205/22" 87) - ("birch" "sRGB:55/48/33" 86) - ("bilobaflower" "sRGB:178/161/234" 85) - ("bilbao" "sRGB:50/124/20" 84) - ("bigstone" "sRGB:22/42/64" 83) - ("bianca" "sRGB:252/251/243" 82) - ("berylgreen" "sRGB:222/229/192" 81) - ("bermudagrey" "sRGB:107/139/162" 80) - ("bermuda" "sRGB:125/216/198" 79) - ("beeswax" "sRGB:254/242/199" 78) - ("beautybush" "sRGB:238/193/190" 77) - ("bean" "sRGB:61/12/2" 76) - ("bazaar" "sRGB:152/119/123" 75) - ("bayofmany" "sRGB:39/58/129" 74) - ("bayleaf" "sRGB:125/169/141" 73) - ("battleshipgrey" "sRGB:130/143/114" 72) - ("bastille" "sRGB:41/33/48" 71) - ("barossa" "sRGB:68/1/45" 70) - ("barleywhite" "sRGB:255/244/206" 69) - ("barleycorn" "sRGB:166/139/91" 68) - ("barberry" "sRGB:222/215/23" 67) - ("banjul" "sRGB:19/10/6" 66) - ("bandicoot" "sRGB:133/132/112" 65) - ("bamboo" "sRGB:218/99/4" 64) - ("balticsea" "sRGB:42/38/48" 63) - ("balihai" "sRGB:133/159/175" 62) - ("bajawhite" "sRGB:255/248/209" 61) - ("bahia" "sRGB:165/203/12" 60) - ("bahamablue" "sRGB:2/99/149" 59) - ("azure" "sRGB:49/91/161" 58) - ("aztec" "sRGB:13/28/25" 57) - ("azalea" "sRGB:247/200/218" 56) - ("axolotl" "sRGB:78/102/73" 55) - ("avocado" "sRGB:136/141/101" 54) - ("australianmint" "sRGB:245/255/190" 53) - ("aubergine" "sRGB:59/9/16" 52) - ("auchico" "sRGB:151/96/93" 51) - ("atomic" "sRGB:49/68/89" 50) - ("atoll" "sRGB:10/111/117" 49) - ("atlantis" "sRGB:151/205/45" 48) - ("athsspecial" "sRGB:236/235/206" 47) - ("athensgrey" "sRGB:238/240/243" 46) - ("astronautblue" "sRGB:1/62/98" 45) - ("astronaut" "sRGB:40/58/119" 44) - ("astral" "sRGB:50/125/160" 43) - ("astra" "sRGB:250/234/185" 42) - ("asphalt" "sRGB:19/10/6" 41) - ("ashbrown" "sRGB:46/25/5" 40) - ("ash" "sRGB:198/195/181" 39) - ("arrowtown" "sRGB:148/135/113" 38) - ("armadillo" "sRGB:67/62/55" 37) - ("arapawa" "sRGB:17/12/108" 36) - ("aquamarine" "sRGB:1/75/67" 35) - ("aquasqueeze" "sRGB:232/245/242" 34) - ("aquaspring" "sRGB:234/249/245" 33) - ("aquahaze" "sRGB:237/245/245" 32) - ("aqua" "sRGB:161/218/215" 31) - ("apricotwhite" "sRGB:255/254/236" 30) - ("apricot" "sRGB:235/147/115" 29) - ("applegreen" "sRGB:226/243/236" 28) - ("appleblossom" "sRGB:175/77/67" 27) - ("apple" "sRGB:79/168/61" 26) - ("apache" "sRGB:223/190/111" 25) - ("anzac" "sRGB:224/182/70" 24) - ("antiquebrass" "sRGB:112/74/7" 23) - ("anakiwa" "sRGB:157/229/255" 22) - ("amulet" "sRGB:123/159/128" 21) - ("amour" "sRGB:249/234/243" 20) - ("amethystsmoke" "sRGB:163/151/180" 19) - ("americano" "sRGB:135/117/110" 18) - ("amazon" "sRGB:59/122/87" 17) - ("aluminium" "sRGB:169/172/182" 16) - ("alto" "sRGB:219/219/219" 15) - ("alpine" "sRGB:175/143/44" 14) - ("almondfrost" "sRGB:144/123/113" 13) - ("allports" "sRGB:0/118/163" 12) - ("alerttan" "sRGB:155/71/3" 11) - ("albescentwhite" "sRGB:245/233/211" 10) - ("alabaster" "sRGB:255/255/255" 9) - ("akaroa" "sRGB:212/196/168" 8) - ("afghantan" "sRGB:134/86/10" 7) - ("affair" "sRGB:113/70/147" 6) - ("aeroblue" "sRGB:201/255/229" 5) - ("acorn" "sRGB:106/93/27" 4) - ("acapulco" "sRGB:124/176/161" 3) - ("acadia" "sRGB:27/20/4" 2) - ("abbey" "sRGB:76/79/86" 1) + ("zydeco" "sRGB:32/72/63" 1379) + ("zumthor" "sRGB:205/213/213" 1378) + ("zuccini" "sRGB:23/70/46" 1377) + ("zorba" "sRGB:162/149/137" 1376) + ("zombie" "sRGB:221/194/131" 1375) + ("zircon" "sRGB:222/227/227" 1374) + ("ziggurat" "sRGB:129/166/170" 1373) + ("zeus" "sRGB:59/60/56" 1372) + ("zest" "sRGB:198/114/59" 1371) + ("zanah" "sRGB:178/198/177" 1370) + ("zambezi" "sRGB:107/90/90" 1369) + ("yuma" "sRGB:199/184/130" 1368) + ("yukongold" "sRGB:130/106/33" 1367) + ("yourpink" "sRGB:255/197/187" 1366) + ("yellowsea" "sRGB:244/159/53" 1365) + ("yellowmetal" "sRGB:115/99/62" 1364) + ("xanadu" "sRGB:117/135/110" 1363) + ("woodybrown" "sRGB:85/69/69" 1362) + ("woodybay" "sRGB:51/52/58" 1361) + ("woodsmoke" "sRGB:43/50/48" 1360) + ("woodrush" "sRGB:69/64/43" 1359) + ("woodland" "sRGB:98/103/70" 1358) + ("woodburn" "sRGB:70/54/41" 1357) + ("woodbark" "sRGB:48/38/33" 1356) + ("witchhaze" "sRGB:251/240/115" 1355) + ("wistful" "sRGB:162/158/205" 1354) + ("wisteria" "sRGB:164/135/139" 1353) + ("wisppink" "sRGB:249/232/226" 1352) + ("winterhazel" "sRGB:208/195/131" 1351) + ("wineberry" "sRGB:82/44/53" 1350) + ("windsor" "sRGB:70/44/119" 1349) + ("willowgrove" "sRGB:105/117/92" 1348) + ("willowbrook" "sRGB:223/230/207" 1347) + ("william" "sRGB:83/115/111" 1346) + ("wildwillow" "sRGB:190/202/96" 1345) + ("wildsand" "sRGB:231/228/222" 1344) + ("wildrice" "sRGB:227/212/116" 1343) + ("whiterock" "sRGB:212/207/180" 1342) + ("whitepointer" "sRGB:218/214/204" 1341) + ("whitenectar" "sRGB:248/246/216" 1340) + ("whitelinen" "sRGB:238/231/220" 1339) + ("whitelilac" "sRGB:231/229/232" 1338) + ("whiteice" "sRGB:215/238/228" 1337) + ("whisper" "sRGB:239/230/230" 1336) + ("whiskeysour" "sRGB:212/145/93" 1335) + ("whiskey" "sRGB:210/144/98" 1334) + ("wheatfield" "sRGB:223/215/189" 1333) + ("wewak" "sRGB:241/145/154" 1332) + ("westernred" "sRGB:107/37/44" 1331) + ("westar" "sRGB:212/207/197" 1330) + ("westside" "sRGB:229/130/58" 1329) + ("westcoast" "sRGB:92/81/47" 1328) + ("wellread" "sRGB:142/53/55" 1327) + ("wedgewood" "sRGB:76/107/136" 1326) + ("wepeep" "sRGB:253/215/216" 1325) + ("waxflower" "sRGB:238/179/158" 1324) + ("watusi" "sRGB:242/205/187" 1323) + ("wattle" "sRGB:214/202/61" 1322) + ("waterloo" "sRGB:114/114/130" 1321) + ("watercourse" "sRGB:0/110/78" 1320) + ("waterleaf" "sRGB:182/236/222" 1319) + ("wasabi" "sRGB:132/145/55" 1318) + ("wanwhite" "sRGB:228/226/220" 1317) + ("walnut" "sRGB:121/77/46" 1316) + ("waiouru" "sRGB:76/78/49" 1315) + ("waikawagrey" "sRGB:91/110/145" 1314) + ("wafer" "sRGB:212/187/177" 1313) + ("vulcan" "sRGB:54/56/60" 1312) + ("voodoo" "sRGB:68/50/64" 1311) + ("volcano" "sRGB:78/39/40" 1310) + ("vistawhite" "sRGB:227/223/217" 1309) + ("vistablue" "sRGB:151/213/179" 1308) + ("visvis" "sRGB:249/228/150" 1307) + ("viridiangreen" "sRGB:75/95/86" 1306) + ("violet" "sRGB:47/38/60" 1305) + ("violentviolet" "sRGB:46/34/73" 1304) + ("viola" "sRGB:197/143/157" 1303) + ("vinrouge" "sRGB:149/82/100" 1302) + ("viking" "sRGB:77/177/200" 1301) + ("vidaloca" "sRGB:95/146/40" 1300) + ("victoria" "sRGB:86/73/133" 1299) + ("vesuvius" "sRGB:168/85/51" 1298) + ("verdungreen" "sRGB:72/83/26" 1297) + ("verdigris" "sRGB:98/96/62" 1296) + ("venus" "sRGB:139/125/130" 1295) + ("veniceblue" "sRGB:44/87/120" 1294) + ("venetianred" "sRGB:91/31/34" 1293) + ("varden" "sRGB:253/239/211" 1292) + ("vanillaice" "sRGB:235/210/209" 1291) + ("vanilla" "sRGB:204/182/155" 1290) + ("vancleef" "sRGB:82/57/54" 1289) + ("valhalla" "sRGB:42/43/65" 1288) + ("valentino" "sRGB:56/44/56" 1287) + ("valencia" "sRGB:212/87/78" 1286) + ("twine" "sRGB:193/145/86" 1285) + ("twilightblue" "sRGB:244/246/236" 1284) + ("twilight" "sRGB:218/192/205" 1283) + ("tutu" "sRGB:248/228/227" 1282) + ("tussock" "sRGB:191/145/75" 1281) + ("tusk" "sRGB:227/229/177" 1280) + ("tuscany" "sRGB:173/98/66" 1279) + ("turtlegreen" "sRGB:54/62/29" 1278) + ("turmeric" "sRGB:174/144/65" 1277) + ("turkishrose" "sRGB:165/110/117" 1276) + ("turbo" "sRGB:245/204/35" 1275) + ("tundora" "sRGB:88/84/82" 1274) + ("tuna" "sRGB:70/73/78" 1273) + ("tumbleweed" "sRGB:75/65/42" 1272) + ("tuliptree" "sRGB:227/172/61" 1271) + ("tuftbush" "sRGB:249/211/190" 1270) + ("tuatara" "sRGB:69/70/66" 1269) + ("truev" "sRGB:142/114/199" 1268) + ("trout" "sRGB:76/83/86" 1267) + ("tropicalblue" "sRGB:174/201/235" 1266) + ("trinidad" "sRGB:197/79/51" 1265) + ("trendypink" "sRGB:128/93/128" 1264) + ("trendygreen" "sRGB:126/132/36" 1263) + ("treehouse" "sRGB:60/52/46" 1262) + ("treepoppy" "sRGB:226/129/59" 1261) + ("travertine" "sRGB:226/221/199" 1260) + ("tranquil" "sRGB:221/237/233" 1259) + ("tradewind" "sRGB:109/175/167" 1258) + ("towergrey" "sRGB:156/172/165" 1257) + ("touchwood" "sRGB:58/55/46" 1256) + ("totempole" "sRGB:136/53/49" 1255) + ("tosca" "sRGB:116/64/66" 1254) + ("toryblue" "sRGB:55/78/136" 1253) + ("toreabay" "sRGB:53/61/117" 1252) + ("topaz" "sRGB:129/124/135" 1251) + ("tonyspink" "sRGB:231/158/136" 1250) + ("tomthumb" "sRGB:79/99/72" 1249) + ("tolopea" "sRGB:45/37/65" 1248) + ("toledo" "sRGB:62/38/49" 1247) + ("tobago" "sRGB:68/54/45" 1246) + ("tobaccobrown" "sRGB:109/88/67" 1245) + ("toast" "sRGB:159/113/95" 1244) + ("titanwhite" "sRGB:221/214/225" 1243) + ("timbergreen" "sRGB:50/67/54" 1242) + ("tide" "sRGB:190/180/171" 1241) + ("tidal" "sRGB:240/245/144" 1240) + ("tiber" "sRGB:24/67/67" 1239) + ("tiara" "sRGB:185/195/190" 1238) + ("tiamaria" "sRGB:151/66/45" 1237) + ("thunderbird" "sRGB:146/56/48" 1236) + ("thunder" "sRGB:77/77/75" 1235) + ("thistle" "sRGB:199/189/149" 1234) + ("thatchgreen" "sRGB:84/78/49" 1233) + ("thatch" "sRGB:177/148/143" 1232) + ("texasrose" "sRGB:252/176/87" 1231) + ("texas" "sRGB:236/230/126" 1230) + ("tequila" "sRGB:244/208/164" 1229) + ("temptress" "sRGB:60/33/38" 1228) + ("tealblue" "sRGB:37/72/85" 1227) + ("teak" "sRGB:171/137/83" 1226) + ("tea" "sRGB:191/181/162" 1225) + ("tepapagreen" "sRGB:43/75/64" 1224) + ("taxbreak" "sRGB:73/101/105" 1223) + ("tawnyport" "sRGB:100/58/72" 1222) + ("taupegrey" "sRGB:137/132/120" 1221) + ("tasman" "sRGB:186/192/179" 1220) + ("tarawera" "sRGB:37/60/72" 1219) + ("tara" "sRGB:222/241/221" 1218) + ("tapestry" "sRGB:179/112/132" 1217) + ("tapa" "sRGB:124/124/114" 1216) + ("tango" "sRGB:212/111/49" 1215) + ("tangerine" "sRGB:205/93/52" 1214) + ("tangaroa" "sRGB:30/47/60" 1213) + ("tana" "sRGB:184/181/161" 1212) + ("tamarind" "sRGB:62/47/46" 1211) + ("tamarillo" "sRGB:117/43/47" 1210) + ("tallow" "sRGB:163/153/119" 1209) + ("tallpoppy" "sRGB:133/53/52" 1208) + ("tahunasands" "sRGB:216/204/155" 1207) + ("tahitigold" "sRGB:220/114/42" 1206) + ("tacha" "sRGB:210/185/96" 1205) + ("tacao" "sRGB:246/174/120" 1204) + ("tabasco" "sRGB:142/58/54" 1203) + ("sycamore" "sRGB:146/140/60" 1202) + ("swisscoffee" "sRGB:219/208/202" 1201) + ("swirl" "sRGB:215/206/197" 1200) + ("sweetpink" "sRGB:238/145/141" 1199) + ("sweetcorn" "sRGB:249/225/118" 1198) + ("swansdown" "sRGB:218/230/221" 1197) + ("swamp" "sRGB:37/47/47" 1196) + ("suvagrey" "sRGB:139/134/133" 1195) + ("sushi" "sRGB:124/159/47" 1194) + ("surfiegreen" "sRGB:0/123/119" 1193) + ("surfcrest" "sRGB:195/214/189" 1192) + ("surf" "sRGB:184/212/187" 1191) + ("supernova" "sRGB:255/180/55" 1190) + ("sunshade" "sRGB:250/157/73" 1189) + ("sunset" "sRGB:192/81/74" 1188) + ("sunglo" "sRGB:199/97/85" 1187) + ("sunflower" "sRGB:218/192/26" 1186) + ("sundown" "sRGB:248/175/169" 1185) + ("sundance" "sRGB:196/170/77" 1184) + ("sun" "sRGB:239/142/56" 1183) + ("summergreen" "sRGB:143/182/156" 1182) + ("sulu" "sRGB:198/234/128" 1181) + ("sugarcane" "sRGB:238/239/223" 1180) + ("submarine" "sRGB:140/156/156" 1179) + ("studio" "sRGB:114/74/161" 1178) + ("stromboli" "sRGB:64/99/86" 1177) + ("strikemaster" "sRGB:148/106/129" 1176) + ("straw" "sRGB:218/190/130" 1175) + ("stratos" "sRGB:33/38/58" 1174) + ("stormgrey" "sRGB:116/120/128" 1173) + ("stormdust" "sRGB:101/100/95" 1172) + ("stonewall" "sRGB:128/118/97" 1171) + ("stinger" "sRGB:141/112/42" 1170) + ("stiletto" "sRGB:131/61/62" 1169) + ("steelgrey" "sRGB:67/70/75" 1168) + ("starship" "sRGB:227/221/57" 1167) + ("starkwhite" "sRGB:210/198/182" 1166) + ("stardust" "sRGB:160/161/151" 1165) + ("stack" "sRGB:133/136/133" 1164) + ("sttropaz" "sRGB:50/84/130" 1163) + ("squirrel" "sRGB:143/125/107" 1162) + ("spunpearl" "sRGB:162/161/172" 1161) + ("sprout" "sRGB:184/202/157" 1160) + ("springwood" "sRGB:233/225/217" 1159) + ("springsun" "sRGB:241/241/198" 1158) + ("springrain" "sRGB:163/189/156" 1157) + ("springgreen" "sRGB:92/138/100" 1156) + ("spray" "sRGB:126/205/221" 1155) + ("splash" "sRGB:241/215/158" 1154) + ("spindle" "sRGB:179/196/216" 1153) + ("spicypink" "sRGB:137/117/120" 1152) + ("spicymix" "sRGB:139/95/77" 1151) + ("spice" "sRGB:108/79/63" 1150) + ("spectra" "sRGB:55/93/79" 1149) + ("spanishwhite" "sRGB:222/209/183" 1148) + ("spanishgreen" "sRGB:123/137/118" 1147) + ("spaceshuttle" "sRGB:75/67/59" 1146) + ("soyabean" "sRGB:111/99/75" 1145) + ("sourdough" "sRGB:201/181/154" 1144) + ("sorrellbrown" "sRGB:157/127/97" 1143) + ("sorbus" "sRGB:221/107/56" 1142) + ("solitude" "sRGB:233/236/241" 1141) + ("solitaire" "sRGB:234/218/194" 1140) + ("solidpink" "sRGB:133/73/76" 1139) + ("softpeach" "sRGB:238/223/222" 1138) + ("softamber" "sRGB:207/190/165" 1137) + ("soapstone" "sRGB:236/229/218" 1136) + ("snuff" "sRGB:228/215/229" 1135) + ("snowymint" "sRGB:214/240/205" 1134) + ("snowflurry" "sRGB:234/247/201" 1133) + ("snowdrift" "sRGB:227/227/220" 1132) + ("smoky" "sRGB:96/93/107" 1131) + ("smokeyash" "sRGB:93/89/82" 1130) + ("smoketree" "sRGB:187/95/52" 1129) + ("smaltblue" "sRGB:73/98/103" 1128) + ("slugger" "sRGB:66/52/43" 1127) + ("skeptic" "sRGB:157/180/170" 1126) + ("sisal" "sRGB:197/186/160" 1125) + ("sirocco" "sRGB:104/118/110" 1124) + ("siren" "sRGB:105/41/59" 1123) + ("sinbad" "sRGB:166/213/208" 1122) + ("silvertree" "sRGB:103/190/144" 1121) + ("silversand" "sRGB:190/189/182" 1120) + ("silverchalice" "sRGB:172/174/169" 1119) + ("silk" "sRGB:187/173/161" 1118) + ("sidecar" "sRGB:233/217/169" 1117) + ("siam" "sRGB:104/107/80" 1116) + ("shuttlegrey" "sRGB:97/102/107" 1115) + ("shocking" "sRGB:232/153/190" 1114) + ("shiraz" "sRGB:132/40/51" 1113) + ("shipgrey" "sRGB:78/78/76" 1112) + ("shipcove" "sRGB:121/136/171" 1111) + ("shinglefawn" "sRGB:116/89/55" 1110) + ("shilo" "sRGB:230/178/166" 1109) + ("sherwoodgreen" "sRGB:27/70/54" 1108) + ("sherpablue" "sRGB:0/73/78" 1107) + ("shark" "sRGB:52/54/58" 1106) + ("shalimar" "sRGB:248/246/168" 1105) + ("shakespeare" "sRGB:96/154/184" 1104) + ("shadylady" "sRGB:159/155/157" 1103) + ("shadowgreen" "sRGB:154/192/182" 1102) + ("serenade" "sRGB:252/233/215" 1101) + ("sepia" "sRGB:58/47/45" 1100) + ("selago" "sRGB:230/223/231" 1099) + ("seaweed" "sRGB:55/65/42" 1098) + ("seashell" "sRGB:227/225/224" 1097) + ("seance" "sRGB:105/50/110" 1096) + ("seagull" "sRGB:119/183/208" 1095) + ("seapink" "sRGB:219/129/126" 1094) + ("seanymph" "sRGB:138/174/164" 1093) + ("seamist" "sRGB:194/213/196" 1092) + ("seagreen" "sRGB:31/99/97" 1091) + ("seafog" "sRGB:223/221/214" 1090) + ("seabuckthorn" "sRGB:239/149/72" 1089) + ("scrub" "sRGB:61/64/49" 1088) + ("scotchmist" "sRGB:238/231/200" 1087) + ("scorpion" "sRGB:106/100/102" 1086) + ("scooter" "sRGB:48/142/160" 1085) + ("schooner" "sRGB:141/132/120" 1084) + ("schist" "sRGB:135/135/111" 1083) + ("scarpaflow" "sRGB:107/106/108" 1082) + ("scarlett" "sRGB:126/37/48" 1081) + ("scarletgum" "sRGB:74/45/87" 1080) + ("scandal" "sRGB:173/217/209" 1079) + ("scampi" "sRGB:111/99/160" 1078) + ("sazerac" "sRGB:245/222/196" 1077) + ("sauvignon" "sRGB:244/234/228" 1076) + ("saratoga" "sRGB:85/91/44" 1075) + ("sapphire" "sRGB:63/82/129" 1074) + ("sapling" "sRGB:225/213/166" 1073) + ("santefe" "sRGB:169/106/80" 1072) + ("santasgrey" "sRGB:153/152/167" 1071) + ("sanguinebrown" "sRGB:108/55/54" 1070) + ("sangria" "sRGB:130/42/50" 1069) + ("sandybeach" "sRGB:254/219/183" 1068) + ("sandwisp" "sRGB:222/203/129" 1067) + ("sandstone" "sRGB:120/109/95" 1066) + ("sandrift" "sRGB:175/147/125" 1065) + ("sandal" "sRGB:163/135/106" 1064) + ("sanddune" "sRGB:134/118/101" 1063) + ("sanmarino" "sRGB:78/108/157" 1062) + ("sanjuan" "sRGB:68/87/97" 1061) + ("sanfelix" "sRGB:44/110/49" 1060) + ("sambuca" "sRGB:59/46/37" 1059) + ("saltpan" "sRGB:238/243/229" 1058) + ("saltbox" "sRGB:105/98/104" 1057) + ("salomie" "sRGB:255/214/123" 1056) + ("salem" "sRGB:23/123/77" 1055) + ("sail" "sRGB:165/206/236" 1054) + ("sahara" "sRGB:183/152/38" 1053) + ("sage" "sRGB:152/159/122" 1052) + ("saffron" "sRGB:220/159/69" 1051) + ("saddlebrown" "sRGB:80/56/30" 1050) + ("saddle" "sRGB:93/78/70" 1049) + ("rustynail" "sRGB:141/95/44" 1048) + ("rusticred" "sRGB:58/24/26" 1047) + ("russett" "sRGB:125/101/92" 1046) + ("rumswizzle" "sRGB:241/237/212" 1045) + ("rum" "sRGB:113/102/117" 1044) + ("royalheath" "sRGB:181/75/115" 1043) + ("rouge" "sRGB:169/64/100" 1042) + ("roti" "sRGB:182/150/66" 1041) + ("rosewood" "sRGB:143/62/63" 1040) + ("rosewhite" "sRGB:251/238/232" 1039) + ("roseofsharon" "sRGB:172/81/45" 1038) + ("rosebudcherry" "sRGB:138/45/82" 1037) + ("rosebud" "sRGB:254/171/154" 1036) + ("rose" "sRGB:211/161/148" 1035) + ("rope" "sRGB:142/89/60" 1034) + ("roofterracotta" "sRGB:161/71/67" 1033) + ("ronchi" "sRGB:234/184/82" 1032) + ("romantic" "sRGB:255/198/158" 1031) + ("romance" "sRGB:244/240/230" 1030) + ("romancoffee" "sRGB:125/103/87" 1029) + ("roman" "sRGB:216/98/91" 1028) + ("rollingstone" "sRGB:109/120/118" 1027) + ("rodeodust" "sRGB:199/163/132" 1026) + ("rockspray" "sRGB:157/68/45" 1025) + ("rocksalt" "sRGB:230/214/184" 1024) + ("rockblue" "sRGB:147/162/186" 1023) + ("rock" "sRGB:90/77/65" 1022) + ("robinseggblue" "sRGB:158/170/158" 1021) + ("robroy" "sRGB:221/173/86" 1020) + ("riverbed" "sRGB:85/96/97" 1019) + ("riptide" "sRGB:137/217/200" 1018) + ("riogrande" "sRGB:183/198/26" 1017) + ("richgold" "sRGB:161/82/38" 1016) + ("riceflower" "sRGB:239/245/209" 1015) + ("ricecake" "sRGB:239/236/222" 1014) + ("ribbon" "sRGB:113/51/60" 1013) + ("rhino" "sRGB:61/70/83" 1012) + ("revolver" "sRGB:55/54/63" 1011) + ("resolutionblue" "sRGB:50/63/117" 1010) + ("renosand" "sRGB:178/110/51" 1009) + ("remy" "sRGB:246/222/218" 1008) + ("regentstblue" "sRGB:160/205/217" 1007) + ("regentgrey" "sRGB:121/132/136" 1006) + ("regalblue" "sRGB:32/63/88" 1005) + ("reefgold" "sRGB:169/141/54" 1004) + ("reef" "sRGB:209/239/159" 1003) + ("redwood" "sRGB:91/52/46" 1002) + ("redstage" "sRGB:173/82/46" 1001) + ("redrobin" "sRGB:125/65/56" 1000) + ("redoxide" "sRGB:93/31/30" 999) + ("reddevil" "sRGB:102/42/44" 998) + ("reddamask" "sRGB:203/111/74" 997) + ("redberry" "sRGB:112/31/40" 996) + ("redbeech" "sRGB:161/98/59" 995) + ("rebel" "sRGB:69/52/48" 994) + ("raven" "sRGB:111/116/123" 993) + ("rangoongreen" "sRGB:43/46/37" 992) + ("rangitoto" "sRGB:58/65/51" 991) + ("rajah" "sRGB:252/174/96" 990) + ("rainee" "sRGB:179/193/177" 989) + ("raincloud" "sRGB:163/152/129" 988) + ("rainforest" "sRGB:102/112/40" 987) + ("raffia" "sRGB:220/198/160" 986) + ("racinggreen" "sRGB:35/47/44" 985) + ("quincy" "sRGB:106/84/69" 984) + ("quillgrey" "sRGB:203/201/192" 983) + ("quicksand" "sRGB:195/152/139" 982) + ("quarterspanishwhite" "sRGB:235/226/210" 981) + ("quarterpearllusta" "sRGB:242/237/221" 980) + ("putty" "sRGB:205/174/112" 979) + ("punga" "sRGB:83/73/49" 978) + ("punch" "sRGB:168/50/57" 977) + ("pumpkin" "sRGB:171/107/53" 976) + ("pumice" "sRGB:186/192/180" 975) + ("puertorico" "sRGB:89/186/163" 974) + ("pueblo" "sRGB:110/51/38" 973) + ("prussianblue" "sRGB:25/47/65" 972) + ("provincialpink" "sRGB:246/227/218" 971) + ("promenade" "sRGB:248/246/223" 970) + ("primrose" "sRGB:228/222/142" 969) + ("prim" "sRGB:226/205/213" 968) + ("prelude" "sRGB:202/180/212" 967) + ("prairiesand" "sRGB:136/60/50" 966) + ("powderblue" "sRGB:146/159/162" 965) + ("pottersclay" "sRGB:132/92/64" 964) + ("potpourri" "sRGB:239/220/212" 963) + ("portica" "sRGB:240/213/85" 962) + ("portage" "sRGB:139/152/216" 961) + ("portafino" "sRGB:244/240/155" 960) + ("portgore" "sRGB:59/67/108" 959) + ("porsche" "sRGB:223/157/91" 958) + ("porcelain" "sRGB:221/220/219" 957) + ("pompadour" "sRGB:106/31/68" 956) + ("poloblue" "sRGB:138/167/204" 955) + ("polar" "sRGB:229/242/231" 954) + ("pohutukawa" "sRGB:101/28/38" 953) + ("plum" "sRGB:56/26/56" 952) + ("planter" "sRGB:98/93/42" 951) + ("plantation" "sRGB:62/89/76" 950) + ("pizza" "sRGB:191/141/60" 949) + ("pizazz" "sRGB:229/127/61" 948) + ("pixiegreen" "sRGB:187/205/165" 947) + ("pistachio" "sRGB:103/105/39" 946) + ("pirategold" "sRGB:186/120/42" 945) + ("pippin" "sRGB:252/219/210" 944) + ("pipi" "sRGB:245/230/196" 943) + ("piper" "sRGB:157/84/50" 942) + ("pinkswan" "sRGB:191/179/178" 941) + ("pinklady" "sRGB:243/215/182" 940) + ("pinklace" "sRGB:246/204/215" 939) + ("pinkflare" "sRGB:216/180/182" 938) + ("pinetree" "sRGB:42/47/35" 937) + ("pineglade" "sRGB:189/192/126" 936) + ("pinecone" "sRGB:117/101/86" 935) + ("pigeonpost" "sRGB:119/132/142" 934) + ("pictonblue" "sRGB:91/160/208" 933) + ("pickledbluewood" "sRGB:79/90/95" 932) + ("pickledbean" "sRGB:115/85/62" 931) + ("pickledaspen" "sRGB:91/100/82" 930) + ("picasso" "sRGB:248/234/151" 929) + ("pharlap" "sRGB:130/102/99" 928) + ("pewter" "sRGB:145/160/146" 927) + ("petiteorchid" "sRGB:218/151/144" 926) + ("pesto" "sRGB:122/114/41" 925) + ("perutan" "sRGB:115/61/31" 924) + ("persimmon" "sRGB:239/115/94" 923) + ("persianred" "sRGB:79/33/42" 922) + ("persianplum" "sRGB:104/51/50" 921) + ("periglacialblue" "sRGB:172/182/178" 920) + ("perfume" "sRGB:194/169/219" 919) + ("perano" "sRGB:172/185/232" 918) + ("peppermint" "sRGB:215/231/208" 917) + ("pelorous" "sRGB:37/153/178" 916) + ("peat" "sRGB:118/109/82" 915) + ("pearllusta" "sRGB:234/224/200" 914) + ("pearlbush" "sRGB:222/209/198" 913) + ("peanut" "sRGB:122/68/52" 912) + ("peachschnapps" "sRGB:198/128/89" 911) + ("peach" "sRGB:251/229/194" 910) + ("peasoup" "sRGB:185/184/128" 909) + ("pavlova" "sRGB:186/171/135" 908) + ("paua" "sRGB:42/37/81" 907) + ("pattensblue" "sRGB:211/229/239" 906) + ("patina" "sRGB:99/146/131" 905) + ("parsley" "sRGB:48/93/53" 904) + ("pariswhite" "sRGB:191/205/192" 903) + ("parism" "sRGB:49/39/96" 902) + ("parisdaisy" "sRGB:251/235/80" 901) + ("parchment" "sRGB:208/200/176" 900) + ("paradiso" "sRGB:72/128/132" 899) + ("paprika" "sRGB:124/45/55" 898) + ("panda" "sRGB:84/79/58" 897) + ("pancho" "sRGB:223/185/146" 896) + ("panache" "sRGB:235/247/228" 895) + ("pampas" "sRGB:234/228/220" 894) + ("palmleaf" "sRGB:54/72/47" 893) + ("palmgreen" "sRGB:32/57/44" 892) + ("paleslate" "sRGB:195/190/187" 891) + ("palesky" "sRGB:99/109/112" 890) + ("palerose" "sRGB:239/214/218" 889) + ("paleprim" "sRGB:249/245/159" 888) + ("paleoyster" "sRGB:156/141/114" 887) + ("paleleaf" "sRGB:189/202/168" 886) + ("padua" "sRGB:126/179/148" 885) + ("paco" "sRGB:79/64/55" 884) + ("pacifika" "sRGB:102/112/40" 883) + ("pablo" "sRGB:122/113/92" 882) + ("paarl" "sRGB:134/75/54" 881) + ("oysterpink" "sRGB:212/181/176" 880) + ("oysterbay" "sRGB:209/234/234" 879) + ("oxley" "sRGB:109/154/120" 878) + ("oxfordblue" "sRGB:40/53/58" 877) + ("outerspace" "sRGB:31/38/59" 876) + ("ottoman" "sRGB:211/219/203" 875) + ("oslogrey" "sRGB:129/137/136" 874) + ("orinoco" "sRGB:210/211/179" 873) + ("orientalpink" "sRGB:194/142/136" 872) + ("orient" "sRGB:37/91/119" 871) + ("oregon" "sRGB:177/108/57" 870) + ("orchidwhite" "sRGB:241/235/217" 869) + ("orangewhite" "sRGB:234/227/205" 868) + ("orangeroughy" "sRGB:168/83/53" 867) + ("oracle" "sRGB:57/85/85" 866) + ("opium" "sRGB:152/126/126" 865) + ("opal" "sRGB:168/195/188" 864) + ("onion" "sRGB:72/65/43" 863) + ("onahau" "sRGB:194/230/236" 862) + ("olivetone" "sRGB:116/112/40" 861) + ("olivehaze" "sRGB:136/128/100" 860) + ("olivegreen" "sRGB:53/63/42" 859) + ("oldcopper" "sRGB:115/80/59" 858) + ("oldbrick" "sRGB:138/51/53" 857) + ("oiledcedar" "sRGB:102/54/45" 856) + ("oil" "sRGB:49/51/48" 855) + ("offyellow" "sRGB:250/243/220" 854) + ("offgreen" "sRGB:223/240/226" 853) + ("oceangreen" "sRGB:76/169/115" 852) + ("observatory" "sRGB:0/143/112" 851) + ("oasis" "sRGB:252/237/197" 850) + ("nutmeg" "sRGB:126/74/59" 849) + ("nugget" "sRGB:188/146/41" 848) + ("norway" "sRGB:164/184/143" 847) + ("nordic" "sRGB:29/57/60" 846) + ("nomad" "sRGB:161/153/134" 845) + ("nobel" "sRGB:169/157/157" 844) + ("nileblue" "sRGB:37/63/78" 843) + ("nightclub" "sRGB:106/31/68" 842) + ("nightshadz" "sRGB:162/61/84" 841) + ("nightrider" "sRGB:51/46/46" 840) + ("niagara" "sRGB:41/169/139" 839) + ("newyorkpink" "sRGB:221/131/116" 838) + ("neworleans" "sRGB:228/195/133" 837) + ("newamber" "sRGB:109/59/36" 836) + ("nevada" "sRGB:102/111/111" 835) + ("neutralgreen" "sRGB:170/165/131" 834) + ("nero" "sRGB:37/37/37" 833) + ("neptune" "sRGB:119/168/171" 832) + ("nepal" "sRGB:147/170/185" 831) + ("negroni" "sRGB:238/199/162" 830) + ("nebula" "sRGB:184/198/190" 829) + ("natural" "sRGB:136/89/49" 828) + ("narvik" "sRGB:233/230/220" 827) + ("napa" "sRGB:163/154/135" 826) + ("nandor" "sRGB:78/93/78" 825) + ("mystic" "sRGB:216/221/218" 824) + ("mysin" "sRGB:253/174/69" 823) + ("mypink" "sRGB:214/139/128" 822) + ("mustard" "sRGB:124/103/32" 821) + ("mulledwine" "sRGB:82/77/91" 820) + ("mulefawn" "sRGB:136/79/64" 819) + ("mulberry" "sRGB:94/42/64" 818) + ("muesli" "sRGB:158/126/83" 817) + ("muddywaters" "sRGB:169/132/79" 816) + ("mountainmist" "sRGB:160/159/156" 815) + ("mosque" "sRGB:0/95/91" 814) + ("mosaic" "sRGB:41/55/65" 813) + ("mortar" "sRGB:86/80/81" 812) + ("moroccobrown" "sRGB:68/45/33" 811) + ("morningglory" "sRGB:158/209/211" 810) + ("moonyellow" "sRGB:240/196/32" 809) + ("moonraker" "sRGB:192/178/215" 808) + ("moonmist" "sRGB:206/205/184" 807) + ("moonglow" "sRGB:245/243/206" 806) + ("moodyblue" "sRGB:131/120/199" 805) + ("monza" "sRGB:134/40/46" 804) + ("montecarlo" "sRGB:122/197/180" 803) + ("montana" "sRGB:57/59/60" 802) + ("monsoon" "sRGB:122/118/121" 801) + ("mongoose" "sRGB:165/139/111" 800) + ("mondo" "sRGB:85/77/66" 799) + ("monarch" "sRGB:107/37/44" 798) + ("monalisa" "sRGB:255/152/137" 797) + ("mojo" "sRGB:151/70/60" 796) + ("mocha" "sRGB:111/55/45" 795) + ("moccaccino" "sRGB:88/47/43" 794) + ("mobster" "sRGB:96/90/103" 793) + ("mistgrey" "sRGB:186/185/169" 792) + ("mischka" "sRGB:165/169/178" 791) + ("mirage" "sRGB:55/63/67" 790) + ("minttulip" "sRGB:198/234/221" 789) + ("mintjulep" "sRGB:224/216/167" 788) + ("minsk" "sRGB:62/50/103" 787) + ("ming" "sRGB:64/117/119" 786) + ("mineralgreen" "sRGB:80/99/85" 785) + ("mineshaft" "sRGB:55/62/65" 784) + ("mindaro" "sRGB:218/234/111" 783) + ("mimosa" "sRGB:245/245/204" 782) + ("millbrook" "sRGB:89/86/72" 781) + ("milkwhite" "sRGB:220/217/205" 780) + ("milkpunch" "sRGB:243/229/192" 779) + ("milanored" "sRGB:158/51/50" 778) + ("milan" "sRGB:246/244/147" 777) + ("mikado" "sRGB:63/54/35" 776) + ("midnightmoss" "sRGB:36/46/40" 775) + ("midnightexpress" "sRGB:33/38/58" 774) + ("midnight" "sRGB:33/48/62" 773) + ("midgrey" "sRGB:102/106/109" 772) + ("mexicanred" "sRGB:155/61/61" 771) + ("meteorite" "sRGB:74/59/106" 770) + ("meteor" "sRGB:187/116/49" 769) + ("metalliccopper" "sRGB:110/61/52" 768) + ("metallicbronze" "sRGB:85/74/60" 767) + ("merlot" "sRGB:115/52/58" 766) + ("merlin" "sRGB:79/78/72" 765) + ("merino" "sRGB:225/219/208" 764) + ("mercury" "sRGB:213/210/209" 763) + ("meranti" "sRGB:107/52/42" 762) + ("melrose" "sRGB:195/185/221" 761) + ("melanzane" "sRGB:52/41/49" 760) + ("melanie" "sRGB:224/183/194" 759) + ("mckenzie" "sRGB:140/99/56" 758) + ("maverick" "sRGB:200/177/192" 757) + ("matterhorn" "sRGB:82/75/75" 756) + ("matrix" "sRGB:142/77/69" 755) + ("matisse" "sRGB:54/92/125" 754) + ("mash" "sRGB:90/76/66" 753) + ("masala" "sRGB:87/83/75" 752) + ("marzipan" "sRGB:235/200/129" 751) + ("martinique" "sRGB:60/55/72" 750) + ("martini" "sRGB:183/168/163" 749) + ("marshland" "sRGB:43/46/38" 748) + ("maroon" "sRGB:64/35/39" 747) + ("marlin" "sRGB:54/45/38" 746) + ("mariner" "sRGB:66/99/159" 745) + ("marigold" "sRGB:184/138/61" 744) + ("mardigras" "sRGB:53/34/53" 743) + ("manz" "sRGB:228/219/85" 742) + ("mantle" "sRGB:150/167/147" 741) + ("mantis" "sRGB:127/193/92" 740) + ("manhattan" "sRGB:226/175/128" 739) + ("mandyspink" "sRGB:245/183/153" 738) + ("mandy" "sRGB:205/82/91" 737) + ("mandalay" "sRGB:181/123/46" 736) + ("mamba" "sRGB:118/109/124" 735) + ("malta" "sRGB:165/151/132" 734) + ("mallard" "sRGB:58/69/49" 733) + ("malibu" "sRGB:102/183/225" 732) + ("malachitegreen" "sRGB:151/151/111" 731) + ("mako" "sRGB:80/85/85" 730) + ("makara" "sRGB:105/95/80" 729) + ("maize" "sRGB:227/185/130" 728) + ("maire" "sRGB:42/41/34" 727) + ("maitai" "sRGB:165/101/49" 726) + ("mahogany" "sRGB:73/38/37" 725) + ("magnolia" "sRGB:238/232/235" 724) + ("madras" "sRGB:71/62/35" 723) + ("madison" "sRGB:45/60/84" 722) + ("madang" "sRGB:183/227/168" 721) + ("mabel" "sRGB:203/232/232" 720) + ("lynch" "sRGB:105/125/137" 719) + ("luxorgold" "sRGB:171/141/63" 718) + ("lusty" "sRGB:120/46/44" 717) + ("lunargreen" "sRGB:78/85/65" 716) + ("luckypoint" "sRGB:41/45/79" 715) + ("lucky" "sRGB:171/154/28" 714) + ("loulou" "sRGB:76/51/71" 713) + ("lotus" "sRGB:139/80/75" 712) + ("lonestar" "sRGB:82/36/38" 711) + ("londonhue" "sRGB:174/148/171" 710) + ("lola" "sRGB:185/172/187" 709) + ("logan" "sRGB:157/156/180" 708) + ("logcabin" "sRGB:57/62/46" 707) + ("locust" "sRGB:162/165/128" 706) + ("lochmara" "sRGB:49/110/160" 705) + ("lochinvar" "sRGB:72/144/132" 704) + ("loblolly" "sRGB:179/187/183" 703) + ("loafer" "sRGB:219/217/194" 702) + ("lividbrown" "sRGB:49/42/41" 701) + ("lisbonbrown" "sRGB:84/79/58" 700) + ("lipstick" "sRGB:150/44/84" 699) + ("linkwater" "sRGB:199/205/216" 698) + ("linen" "sRGB:186/183/162" 697) + ("limerick" "sRGB:137/172/39" 696) + ("limedspruce" "sRGB:78/96/94" 695) + ("limedoak" "sRGB:140/114/84" 694) + ("limedgum" "sRGB:107/91/61" 693) + ("limedash" "sRGB:103/109/99" 692) + ("limeade" "sRGB:95/151/39" 691) + ("lime" "sRGB:183/197/44" 690) + ("lima" "sRGB:122/172/33" 689) + ("lilywhite" "sRGB:233/238/235" 688) + ("lily" "sRGB:193/159/179" 687) + ("lilacbush" "sRGB:148/112/196" 686) + ("lightningyellow" "sRGB:247/162/51" 685) + ("licorice" "sRGB:46/55/73" 684) + ("lemongrass" "sRGB:153/154/134" 683) + ("lemonginger" "sRGB:150/132/40" 682) + ("lemon" "sRGB:217/178/32" 681) + ("leather" "sRGB:144/106/84" 680) + ("lavender" "sRGB:159/144/208" 679) + ("laurel" "sRGB:110/141/113" 678) + ("laser" "sRGB:198/169/94" 677) + ("laspalmas" "sRGB:198/218/54" 676) + ("larioja" "sRGB:186/192/14" 675) + ("lapalma" "sRGB:66/137/41" 674) + ("kumera" "sRGB:117/91/39" 673) + ("kournikova" "sRGB:249/208/84" 672) + ("koromiko" "sRGB:254/181/82" 671) + ("korma" "sRGB:128/78/44" 670) + ("kokoda" "sRGB:123/120/90" 669) + ("kobi" "sRGB:224/147/171" 668) + ("kingfisherdaisy" "sRGB:88/53/128" 667) + ("kimberly" "sRGB:105/93/135" 666) + ("killarney" "sRGB:73/118/79" 665) + ("kilamanjaro" "sRGB:58/53/50" 664) + ("kidnapper" "sRGB:191/192/171" 663) + ("keppel" "sRGB:95/182/156" 662) + ("kenyancopper" "sRGB:108/50/46" 661) + ("kelp" "sRGB:77/80/60" 660) + ("kashmirblue" "sRGB:87/109/142" 659) + ("karry" "sRGB:254/220/193" 658) + ("karaka" "sRGB:45/45/36" 657) + ("kangaroo" "sRGB:197/195/176" 656) + ("kaitokegreen" "sRGB:36/83/54" 655) + ("kabul" "sRGB:108/94/83" 654) + ("justright" "sRGB:220/191/172" 653) + ("juniper" "sRGB:116/145/142" 652) + ("junglemist" "sRGB:176/196/196" 651) + ("junglegreen" "sRGB:41/41/36" 650) + ("jumbo" "sRGB:135/135/133" 649) + ("judgegrey" "sRGB:93/83/70" 648) + ("jordyblue" "sRGB:122/170/224" 647) + ("jonquil" "sRGB:238/242/147" 646) + ("jon" "sRGB:70/61/62" 645) + ("joanna" "sRGB:214/209/192" 644) + ("jewel" "sRGB:19/104/67" 643) + ("jetstream" "sRGB:187/208/201" 642) + ("jellybean" "sRGB:68/121/142" 641) + ("jazz" "sRGB:95/44/47" 640) + ("java" "sRGB:37/151/151" 639) + ("jarrah" "sRGB:59/43/44" 638) + ("japonica" "sRGB:206/114/89" 637) + ("japanesemaple" "sRGB:103/47/48" 636) + ("japaneselaurel" "sRGB:47/117/50" 635) + ("janna" "sRGB:222/209/183" 634) + ("jambalaya" "sRGB:103/72/52" 633) + ("jaguar" "sRGB:41/41/47" 632) + ("jagger" "sRGB:63/46/76" 631) + ("jaggedice" "sRGB:202/231/226" 630) + ("jaffa" "sRGB:226/121/69" 629) + ("jade" "sRGB:64/114/109" 628) + ("jacksonspurple" "sRGB:61/63/125" 627) + ("jackobean" "sRGB:65/54/40" 626) + ("jacarta" "sRGB:61/50/93" 625) + ("jacaranda" "sRGB:54/45/56" 624) + ("islandspice" "sRGB:248/237/219" 623) + ("ironstone" "sRGB:134/80/64" 622) + ("ironsidegrey" "sRGB:112/110/102" 621) + ("ironbark" "sRGB:109/77/44" 620) + ("iron" "sRGB:203/205/205" 619) + ("iroko" "sRGB:91/82/68" 618) + ("irishcoffee" "sRGB:98/66/43" 617) + ("indochine" "sRGB:156/91/52" 616) + ("indiantan" "sRGB:79/48/31" 615) + ("illusion" "sRGB:239/149/174" 614) + ("iceberg" "sRGB:202/225/217" 613) + ("icecold" "sRGB:175/227/214" 612) + ("husk" "sRGB:178/153/75" 611) + ("hurricane" "sRGB:139/126/119" 610) + ("huntergreen" "sRGB:47/49/37" 609) + ("hummingbird" "sRGB:206/239/228" 608) + ("hottoddy" "sRGB:167/117/44" 607) + ("hotpurple" "sRGB:78/46/83" 606) + ("hotcurry" "sRGB:129/91/40" 605) + ("hotchile" "sRGB:107/37/44" 604) + ("horsesneck" "sRGB:109/86/44" 603) + ("horizon" "sRGB:100/136/148" 602) + ("hopbush" "sRGB:205/109/147" 601) + ("honeysuckle" "sRGB:232/237/105" 600) + ("honeyflower" "sRGB:92/60/109" 599) + ("holly" "sRGB:37/52/43" 598) + ("hoki" "sRGB:100/125/134" 597) + ("hokeypokey" "sRGB:187/142/52" 596) + ("hitpink" "sRGB:253/164/112" 595) + ("hitgrey" "sRGB:161/169/168" 594) + ("hippiepink" "sRGB:171/73/92" 593) + ("hippiegreen" "sRGB:96/138/90" 592) + ("hippieblue" "sRGB:73/136/154" 591) + ("hintofyellow" "sRGB:246/245/215" 590) + ("hintofred" "sRGB:245/239/235" 589) + ("hintofgrey" "sRGB:223/221/214" 588) + ("hintofgreen" "sRGB:223/241/214" 587) + ("himalaya" "sRGB:115/99/48" 586) + ("hillary" "sRGB:167/160/126" 585) + ("highland" "sRGB:122/148/97" 584) + ("highball" "sRGB:146/140/60" 583) + ("hibiscus" "sRGB:179/54/84" 582) + ("hemp" "sRGB:152/125/115" 581) + ("hemlock" "sRGB:105/104/75" 580) + ("heavymetal" "sRGB:70/71/62" 579) + ("heatheredgrey" "sRGB:148/140/126" 578) + ("heather" "sRGB:174/187/193" 577) + ("heath" "sRGB:79/42/44" 576) + ("hawkesblue" "sRGB:210/218/237" 575) + ("hawaiiantan" "sRGB:153/82/43" 574) + ("havelockblue" "sRGB:87/132/193" 573) + ("havana" "sRGB:59/43/44" 572) + ("harvestgold" "sRGB:234/183/106" 571) + ("harp" "sRGB:203/206/192" 570) + ("hampton" "sRGB:232/212/162" 569) + ("halfspanishwhite" "sRGB:230/219/199" 568) + ("halfpearllusta" "sRGB:241/234/215" 567) + ("halfdutchwhite" "sRGB:251/240/214" 566) + ("halfcolonialwhite" "sRGB:242/229/191" 565) + ("halfbaked" "sRGB:85/143/147" 564) + ("halfandhalf" "sRGB:237/231/200" 563) + ("haiti" "sRGB:44/42/53" 562) + ("hairyheath" "sRGB:99/53/40" 561) + ("hacienda" "sRGB:158/128/34" 560) + ("gurkha" "sRGB:152/145/113" 559) + ("gunsmoke" "sRGB:122/124/118" 558) + ("gunmetal" "sRGB:44/53/57" 557) + ("gunpowder" "sRGB:72/71/83" 556) + ("gumbo" "sRGB:113/143/138" 555) + ("gumleaf" "sRGB:172/201/178" 554) + ("gullgrey" "sRGB:164/173/176" 553) + ("gulfstream" "sRGB:116/178/168" 552) + ("gulfblue" "sRGB:52/63/92" 551) + ("guardsmanred" "sRGB:149/46/49" 550) + ("greysuit" "sRGB:147/145/160" 549) + ("greyolive" "sRGB:161/154/127" 548) + ("greynurse" "sRGB:209/211/204" 547) + ("greynickel" "sRGB:189/186/174" 546) + ("greygreen" "sRGB:82/86/54" 545) + ("greychateau" "sRGB:159/163/167" 544) + ("grenadier" "sRGB:193/77/54" 543) + ("greenstone" "sRGB:36/108/70" 542) + ("greenwhite" "sRGB:222/221/203" 541) + ("greenwaterloo" "sRGB:44/45/36" 540) + ("greenvogue" "sRGB:35/65/78" 539) + ("greenspring" "sRGB:169/175/153" 538) + ("greensmoke" "sRGB:156/166/100" 537) + ("greenpea" "sRGB:38/98/66" 536) + ("greenmist" "sRGB:191/194/152" 535) + ("greenleaf" "sRGB:82/107/45" 534) + ("greenkelp" "sRGB:57/61/42" 533) + ("greenhouse" "sRGB:62/99/52" 532) + ("gravel" "sRGB:74/75/70" 531) + ("grasshopper" "sRGB:122/114/41" 530) + ("graphite" "sRGB:56/52/40" 529) + ("grape" "sRGB:65/61/75" 528) + ("grannysmith" "sRGB:123/148/140" 527) + ("grannyapple" "sRGB:197/231/205" 526) + ("granitegreen" "sRGB:139/130/101" 525) + ("grandis" "sRGB:255/205/115" 524) + ("grainbrown" "sRGB:202/184/162" 523) + ("governorbay" "sRGB:81/85/155" 522) + ("gothic" "sRGB:105/136/144" 521) + ("gossip" "sRGB:159/211/133" 520) + ("gossamer" "sRGB:57/159/134" 519) + ("gorse" "sRGB:253/227/54" 518) + ("gordonsgreen" "sRGB:41/51/43" 517) + ("gondola" "sRGB:55/51/50" 516) + ("goldentainoi" "sRGB:255/193/82" 515) + ("goldensand" "sRGB:234/206/106" 514) + ("goldenglow" "sRGB:249/215/126" 513) + ("goldenfizz" "sRGB:235/222/49" 512) + ("goldendream" "sRGB:241/204/43" 511) + ("goldenbell" "sRGB:202/129/54" 510) + ("goldtips" "sRGB:226/178/39" 509) + ("golddrop" "sRGB:213/108/48" 508) + ("goblin" "sRGB:52/83/61" 507) + ("goben" "sRGB:120/110/76" 506) + ("gladegreen" "sRGB:95/129/81" 505) + ("glacier" "sRGB:120/177/191" 504) + ("givry" "sRGB:235/212/174" 503) + ("ginfizz" "sRGB:248/234/202" 502) + ("gin" "sRGB:217/223/205" 501) + ("gimblet" "sRGB:185/173/97" 500) + ("gigas" "sRGB:86/71/134" 499) + ("ghost" "sRGB:192/191/199" 498) + ("geyser" "sRGB:203/208/207" 497) + ("geraldine" "sRGB:231/123/117" 496) + ("genoa" "sRGB:49/121/109" 495) + ("geebung" "sRGB:197/131/46" 494) + ("galliano" "sRGB:216/167/35" 493) + ("gallery" "sRGB:220/215/209" 492) + ("gablegreen" "sRGB:44/70/65" 491) + ("fuscousgrey" "sRGB:60/59/60" 490) + ("fungreen" "sRGB:21/99/61" 489) + ("funblue" "sRGB:51/80/131" 488) + ("fuelyellow" "sRGB:209/144/51" 487) + ("fuego" "sRGB:194/214/46" 486) + ("fuchsia" "sRGB:123/92/183" 485) + ("fruitsalad" "sRGB:75/163/81" 484) + ("frostee" "sRGB:219/229/210" 483) + ("frostedmint" "sRGB:226/242/228" 482) + ("frost" "sRGB:225/228/197" 481) + ("froly" "sRGB:229/109/117" 480) + ("fringyflower" "sRGB:180/225/187" 479) + ("friargrey" "sRGB:134/131/122" 478) + ("frenchpass" "sRGB:164/210/224" 477) + ("frenchlilac" "sRGB:222/183/217" 476) + ("frenchgrey" "sRGB:191/189/193" 475) + ("frangipani" "sRGB:255/215/160" 474) + ("fountainblue" "sRGB:101/173/178" 473) + ("forgetmenot" "sRGB:253/239/219" 472) + ("forestgreen" "sRGB:51/66/49" 471) + ("foggygrey" "sRGB:167/166/157" 470) + ("fog" "sRGB:213/199/232" 469) + ("foam" "sRGB:208/234/232" 468) + ("flirt" "sRGB:122/46/77" 467) + ("flint" "sRGB:113/110/97" 466) + ("flax" "sRGB:130/133/98" 465) + ("flamingo" "sRGB:225/99/79" 464) + ("flamenco" "sRGB:234/134/69" 463) + ("flamered" "sRGB:134/40/46" 462) + ("flamepea" "sRGB:190/92/72" 461) + ("firefly" "sRGB:49/70/67" 460) + ("firebush" "sRGB:224/152/66" 459) + ("fire" "sRGB:143/63/42" 458) + ("fiord" "sRGB:75/90/98" 457) + ("finn" "sRGB:105/69/84" 456) + ("finlandia" "sRGB:97/117/91" 455) + ("finch" "sRGB:117/120/90" 454) + ("fijigreen" "sRGB:99/111/34" 453) + ("fieryorange" "sRGB:177/89/47" 452) + ("feta" "sRGB:219/224/208" 451) + ("festival" "sRGB:234/204/74" 450) + ("ferra" "sRGB:135/106/104" 449) + ("fernfrond" "sRGB:87/94/46" 448) + ("fern" "sRGB:54/92/52" 447) + ("feijoa" "sRGB:165/215/133" 446) + ("fedora" "sRGB:98/86/101" 445) + ("fantasy" "sRGB:242/230/221" 444) + ("falcon" "sRGB:110/90/91" 443) + ("fairpink" "sRGB:243/229/220" 442) + ("everglade" "sRGB:38/67/52" 441) + ("eveningsea" "sRGB:38/96/79" 440) + ("eunry" "sRGB:205/165/156" 439) + ("eucalyptus" "sRGB:50/151/96" 438) + ("eternity" "sRGB:45/47/40" 437) + ("espresso" "sRGB:78/49/45" 436) + ("equator" "sRGB:218/177/96" 435) + ("envy" "sRGB:139/165/143" 434) + ("englishwalnut" "sRGB:71/59/47" 433) + ("englishholly" "sRGB:39/66/52" 432) + ("energyyellow" "sRGB:245/215/82" 431) + ("endeavour" "sRGB:41/89/139" 430) + ("empress" "sRGB:124/113/115" 429) + ("emperor" "sRGB:80/73/74" 428) + ("eminence" "sRGB:110/57/116" 427) + ("embers" "sRGB:140/63/48" 426) + ("elm" "sRGB:41/123/118" 425) + ("elfgreen" "sRGB:27/138/107" 424) + ("elephant" "sRGB:36/54/64" 423) + ("elsalva" "sRGB:143/78/69" 422) + ("elpaso" "sRGB:57/57/44" 421) + ("eggwhite" "sRGB:224/200/141" 420) + ("eggsour" "sRGB:249/228/197" 419) + ("edward" "sRGB:151/164/154" 418) + ("edgewater" "sRGB:193/216/197" 417) + ("eden" "sRGB:38/98/85" 416) + ("ecstasy" "sRGB:201/97/56" 415) + ("ecruwhite" "sRGB:214/209/192" 414) + ("eclipse" "sRGB:63/57/57" 413) + ("echoblue" "sRGB:164/175/205" 412) + ("ebonyclay" "sRGB:50/52/56" 411) + ("ebony" "sRGB:49/51/55" 410) + ("ebb" "sRGB:230/216/212" 409) + ("easternblue" "sRGB:0/135/159" 408) + ("eastside" "sRGB:170/140/188" 407) + ("eastbay" "sRGB:71/82/110" 406) + ("earlydawn" "sRGB:251/242/219" 405) + ("earlsgreen" "sRGB:184/167/34" 404) + ("eagle" "sRGB:176/172/148" 403) + ("dutchwhite" "sRGB:240/223/187" 402) + ("dustygrey" "sRGB:172/155/155" 401) + ("duststorm" "sRGB:229/202/192" 400) + ("dune" "sRGB:81/79/74" 399) + ("drover" "sRGB:251/235/155" 398) + ("driftwood" "sRGB:143/111/72" 397) + ("downy" "sRGB:111/210/190" 396) + ("downriver" "sRGB:42/52/74" 395) + ("dovegrey" "sRGB:119/118/114" 394) + ("doublespanishwhite" "sRGB:210/195/163" 393) + ("doublepearllusta" "sRGB:233/220/190" 392) + ("doublecolonialwhite" "sRGB:228/207/153" 391) + ("dorado" "sRGB:110/95/86" 390) + ("donkeybrown" "sRGB:129/110/92" 389) + ("donjuan" "sRGB:90/79/81" 388) + ("domino" "sRGB:108/91/76" 387) + ("dolphin" "sRGB:106/104/115" 386) + ("dolly" "sRGB:245/241/113" 385) + ("dixie" "sRGB:205/132/49" 384) + ("disco" "sRGB:137/45/79" 383) + ("dingley" "sRGB:96/124/71" 382) + ("diesel" "sRGB:50/44/43" 381) + ("diserria" "sRGB:212/145/93" 380) + ("dew" "sRGB:231/242/233" 379) + ("desertstorm" "sRGB:237/231/224" 378) + ("desert" "sRGB:161/95/59" 377) + ("derby" "sRGB:249/228/198" 376) + ("deluge" "sRGB:130/114/164" 375) + ("delta" "sRGB:153/155/149" 374) + ("dell" "sRGB:72/101/49" 373) + ("delrio" "sRGB:181/153/142" 372) + ("deepteal" "sRGB:25/68/60" 371) + ("deepsea" "sRGB:22/126/101" 370) + ("deepoak" "sRGB:61/50/44" 369) + ("deepkoamaru" "sRGB:52/52/103" 368) + ("deepfir" "sRGB:25/57/37" 367) + ("deepcove" "sRGB:58/78/88" 366) + ("deepbronze" "sRGB:81/65/45" 365) + ("deepblush" "sRGB:227/111/138" 364) + ("deco" "sRGB:204/207/130" 363) + ("deyork" "sRGB:133/202/135" 362) + ("dawnpink" "sRGB:230/214/205" 361) + ("dawn" "sRGB:159/157/145" 360) + ("darktan" "sRGB:97/45/45" 359) + ("darkslate" "sRGB:70/83/82" 358) + ("darkrum" "sRGB:69/54/43" 357) + ("darkrimu" "sRGB:112/65/40" 356) + ("darkoak" "sRGB:85/52/43" 355) + ("darkebony" "sRGB:55/49/43" 354) + ("danube" "sRGB:91/137/192" 353) + ("dallas" "sRGB:102/74/45" 352) + ("daisybush" "sRGB:91/62/144" 351) + ("dairycream" "sRGB:237/210/164" 350) + ("daintree" "sRGB:39/63/65" 349) + ("cyprus" "sRGB:15/70/69" 348) + ("cuttysark" "sRGB:92/129/115" 347) + ("curiousblue" "sRGB:61/133/184" 346) + ("cupid" "sRGB:245/178/197" 345) + ("cumulus" "sRGB:245/244/193" 344) + ("cumin" "sRGB:120/68/48" 343) + ("cubantan" "sRGB:54/45/38" 342) + ("crusta" "sRGB:243/134/83" 341) + ("crusoe" "sRGB:22/91/49" 340) + ("cruise" "sRGB:180/226/213" 339) + ("crowshead" "sRGB:50/49/46" 338) + ("crownofthorns" "sRGB:118/60/51" 337) + ("crocodile" "sRGB:112/105/80" 336) + ("crete" "sRGB:119/113/43" 335) + ("creole" "sRGB:57/50/39" 334) + ("cremedebanane" "sRGB:224/193/97" 333) + ("creamcan" "sRGB:238/192/81" 332) + ("creambrulee" "sRGB:255/227/155" 331) + ("craterbrown" "sRGB:77/62/60" 330) + ("cranberry" "sRGB:180/56/100" 329) + ("crail" "sRGB:166/86/72" 328) + ("crabapple" "sRGB:135/56/47" 327) + ("cowboy" "sRGB:68/55/54" 326) + ("covegrey" "sRGB:52/63/92" 325) + ("countygreen" "sRGB:27/75/53" 324) + ("cottonseed" "sRGB:191/186/175" 323) + ("costadelsol" "sRGB:98/93/42" 322) + ("cosmos" "sRGB:252/213/207" 321) + ("cosmic" "sRGB:121/77/96" 320) + ("corvette" "sRGB:233/186/129" 319) + ("cornflower" "sRGB:255/171/160" 318) + ("cornharvest" "sRGB:141/112/42" 317) + ("cornfield" "sRGB:248/243/196" 316) + ("corn" "sRGB:223/170/40" 315) + ("cork" "sRGB:90/76/66" 314) + ("coriander" "sRGB:187/181/141" 313) + ("corduroy" "sRGB:64/77/73" 312) + ("coraltree" "sRGB:171/110/103" 311) + ("coralcandy" "sRGB:245/208/201" 310) + ("coral" "sRGB:192/176/147" 309) + ("copperrust" "sRGB:149/82/76" 308) + ("coppercanyon" "sRGB:119/66/44" 307) + ("contessa" "sRGB:193/111/104" 306) + ("conifer" "sRGB:177/221/82" 305) + ("congobrown" "sRGB:101/77/73" 304) + ("confetti" "sRGB:221/203/70" 303) + ("concrete" "sRGB:210/209/205" 302) + ("concord" "sRGB:130/127/121" 301) + ("conch" "sRGB:160/177/174" 300) + ("como" "sRGB:76/120/92" 299) + ("comet" "sRGB:99/99/115" 298) + ("colonialwhite" "sRGB:233/215/171" 297) + ("coldturkey" "sRGB:202/181/178" 296) + ("coldpurple" "sRGB:157/138/191" 295) + ("cola" "sRGB:60/47/35" 294) + ("cognac" "sRGB:154/70/61" 293) + ("coffeebean" "sRGB:54/45/38" 292) + ("coffee" "sRGB:114/103/81" 291) + ("codgrey" "sRGB:45/48/50" 290) + ("coconutcream" "sRGB:225/218/187" 289) + ("cocoabrown" "sRGB:53/40/30" 288) + ("cocoabean" "sRGB:79/56/53" 287) + ("cobalt" "sRGB:39/60/90" 286) + ("clover" "sRGB:71/86/47" 285) + ("cloudy" "sRGB:176/169/159" 284) + ("cloudburst" "sRGB:53/62/79" 283) + ("cloud" "sRGB:194/188/177" 282) + ("clinker" "sRGB:70/54/35" 281) + ("clementine" "sRGB:193/79/59" 280) + ("clearday" "sRGB:223/239/234" 279) + ("claycreek" "sRGB:137/126/89" 278) + ("classicrose" "sRGB:244/200/219" 277) + ("claret" "sRGB:110/34/51" 276) + ("clamshell" "sRGB:210/179/169" 275) + ("clairvoyant" "sRGB:104/59/125" 274) + ("citrus" "sRGB:159/183/10" 273) + ("citron" "sRGB:142/154/33" 272) + ("cioccolato" "sRGB:93/59/46" 271) + ("cinnamon" "sRGB:123/72/43" 270) + ("cinderella" "sRGB:251/215/204" 269) + ("cinder" "sRGB:36/42/46" 268) + ("cigar" "sRGB:125/78/56" 267) + ("chromewhite" "sRGB:202/199/183" 266) + ("christine" "sRGB:191/101/46" 265) + ("christi" "sRGB:113/169/29" 264) + ("christalle" "sRGB:56/33/97" 263) + ("chocolate" "sRGB:61/35/39" 262) + ("chinook" "sRGB:157/211/168" 261) + ("chino" "sRGB:184/173/138" 260) + ("chinaivory" "sRGB:251/243/211" 259) + ("chileanheath" "sRGB:249/247/222" 258) + ("chileanfire" "sRGB:208/94/52" 257) + ("chiffon" "sRGB:240/245/187" 256) + ("chicago" "sRGB:91/93/86" 255) + ("chetwodeblue" "sRGB:102/111/180" 254) + ("cherub" "sRGB:245/215/220" 253) + ("cherrywood" "sRGB:78/49/46" 252) + ("cherrypie" "sRGB:55/45/82" 251) + ("cherokee" "sRGB:245/205/130" 250) + ("chenin" "sRGB:222/195/113" 249) + ("chelseagem" "sRGB:149/83/47" 248) + ("chelseacucumber" "sRGB:136/169/91" 247) + ("chathamsblue" "sRGB:44/89/113" 246) + ("chatelle" "sRGB:179/171/182" 245) + ("chateaugreen" "sRGB:65/159/89" 244) + ("charm" "sRGB:208/116/139" 243) + ("charlotte" "sRGB:164/220/230" 242) + ("chardonnay" "sRGB:255/200/120" 241) + ("chardon" "sRGB:248/234/223" 240) + ("charade" "sRGB:57/64/67" 239) + ("chantilly" "sRGB:237/184/199" 238) + ("champagne" "sRGB:238/217/182" 237) + ("chamois" "sRGB:232/205/154" 236) + ("chambray" "sRGB:71/88/119" 235) + ("chalky" "sRGB:223/194/129" 234) + ("chaletgreen" "sRGB:90/110/65" 233) + ("chablis" "sRGB:253/233/224" 232) + ("ceramic" "sRGB:223/221/214" 231) + ("cement" "sRGB:133/113/88" 230) + ("celtic" "sRGB:43/63/54" 229) + ("cello" "sRGB:58/78/95" 228) + ("celeste" "sRGB:210/210/192" 227) + ("celery" "sRGB:180/192/76" 226) + ("cedar" "sRGB:70/52/48" 225) + ("cesoir" "sRGB:146/113/167" 224) + ("cavernpink" "sRGB:224/184/177" 223) + ("catskillwhite" "sRGB:224/228/220" 222) + ("catalinablue" "sRGB:39/60/90" 221) + ("castro" "sRGB:68/35/47" 220) + ("casper" "sRGB:170/181/184" 219) + ("cashmere" "sRGB:209/179/153" 218) + ("cascade" "sRGB:140/168/160" 217) + ("casal" "sRGB:63/84/90" 216) + ("casablanca" "sRGB:240/178/83" 215) + ("carouselpink" "sRGB:248/219/224" 214) + ("carnabytan" "sRGB:91/58/36" 213) + ("carla" "sRGB:245/249/203" 212) + ("carissma" "sRGB:230/128/149" 211) + ("careyspink" "sRGB:201/154/160" 210) + ("cardinal" "sRGB:138/36/78" 209) + ("cardingreen" "sRGB:27/52/39" 208) + ("cararra" "sRGB:235/229/213" 207) + ("caramel" "sRGB:255/213/154" 206) + ("capri" "sRGB:48/67/106" 205) + ("caper" "sRGB:175/193/130" 204) + ("capepalliser" "sRGB:117/72/47" 203) + ("capehoney" "sRGB:254/224/165" 202) + ("capecod" "sRGB:78/85/82" 201) + ("canvas" "sRGB:163/153/119" 200) + ("cannonpink" "sRGB:142/81/100" 199) + ("cannonblack" "sRGB:51/44/34" 198) + ("candlelight" "sRGB:224/157/55" 197) + ("canary" "sRGB:226/230/77" 196) + ("cancan" "sRGB:208/138/155" 195) + ("camouflage" "sRGB:79/77/50" 194) + ("cameo" "sRGB:204/164/131" 193) + ("camelot" "sRGB:128/58/75" 192) + ("camarone" "sRGB:32/105/55" 191) + ("calypso" "sRGB:61/113/136" 190) + ("california" "sRGB:233/140/58" 189) + ("calico" "sRGB:213/177/133" 188) + ("caferoyale" "sRGB:106/73/40" 187) + ("cadillac" "sRGB:152/73/97" 186) + ("cactus" "sRGB:91/111/85" 185) + ("cabbagepont" "sRGB:76/85/68" 184) + ("cabaret" "sRGB:205/82/108" 183) + ("cabsav" "sRGB:74/46/50" 182) + ("butterywhite" "sRGB:241/235/218" 181) + ("buttermilk" "sRGB:246/224/164" 180) + ("butterflybush" "sRGB:104/87/140" 179) + ("butteredrum" "sRGB:157/112/46" 178) + ("buttercup" "sRGB:218/148/41" 177) + ("bush" "sRGB:37/70/54" 176) + ("burntcrimson" "sRGB:88/33/36" 175) + ("burningsand" "sRGB:208/131/99" 174) + ("burnham" "sRGB:35/69/55" 173) + ("burgundy" "sRGB:101/37/37" 172) + ("bunting" "sRGB:43/52/73" 171) + ("bunker" "sRGB:41/44/47" 170) + ("bullshot" "sRGB:117/68/43" 169) + ("bulgarianrose" "sRGB:72/36/39" 168) + ("buddhagold" "sRGB:188/155/27" 167) + ("bud" "sRGB:165/168/143" 166) + ("buccaneer" "sRGB:110/81/80" 165) + ("bubbles" "sRGB:230/242/234" 164) + ("brownpod" "sRGB:60/36/27" 163) + ("brownderby" "sRGB:89/69/55" 162) + ("brownbramble" "sRGB:83/51/30" 161) + ("broom" "sRGB:238/204/36" 160) + ("bronzetone" "sRGB:67/76/40" 159) + ("bronzeolive" "sRGB:88/76/37" 158) + ("bronze" "sRGB:73/59/47" 157) + ("bronco" "sRGB:167/151/129" 156) + ("brightsun" "sRGB:236/189/44" 155) + ("brightred" "sRGB:146/42/49" 154) + ("brightgrey" "sRGB:87/89/93" 153) + ("bridesmaid" "sRGB:250/230/223" 152) + ("bridalheath" "sRGB:248/235/221" 151) + ("breakerbay" "sRGB:81/123/120" 150) + ("brazil" "sRGB:129/91/40" 149) + ("brandyrose" "sRGB:182/133/122" 148) + ("brandypunch" "sRGB:192/124/64" 147) + ("brandy" "sRGB:220/182/138" 146) + ("bracken" "sRGB:91/61/39" 145) + ("bourbon" "sRGB:175/108/62" 144) + ("bouquet" "sRGB:167/129/153" 143) + ("boulder" "sRGB:124/129/124" 142) + ("bottlegreen" "sRGB:37/70/54" 141) + ("botticelli" "sRGB:146/172/180" 140) + ("bostonblue" "sRGB:67/142/172" 139) + ("bossanova" "sRGB:76/61/78" 138) + ("bordeaux" "sRGB:76/28/36" 137) + ("bone" "sRGB:219/194/171" 136) + ("bondiblue" "sRGB:38/65/107" 135) + ("bonjour" "sRGB:223/215/210" 134) + ("bombay" "sRGB:174/174/173" 133) + ("bokaragrey" "sRGB:42/39/37" 132) + ("blush" "sRGB:181/80/103" 131) + ("blumine" "sRGB:48/92/113" 130) + ("bluezodiac" "sRGB:60/67/84" 129) + ("bluewhale" "sRGB:30/52/66" 128) + ("bluestone" "sRGB:22/100/97" 127) + ("bluesmoke" "sRGB:120/133/122" 126) + ("blueromance" "sRGB:216/240/210" 125) + ("bluemarguerite" "sRGB:106/91/177" 124) + ("bluelagoon" "sRGB:0/98/111" 123) + ("bluehaze" "sRGB:189/186/206" 122) + ("bluegem" "sRGB:75/60/142" 121) + ("bluedianne" "sRGB:53/81/79" 120) + ("bluediamond" "sRGB:75/45/114" 119) + ("bluechill" "sRGB:64/143/144" 118) + ("bluecharcoal" "sRGB:38/43/47" 117) + ("bluechalk" "sRGB:227/214/233" 116) + ("bluebell" "sRGB:57/45/115" 115) + ("bluebayoux" "sRGB:98/119/126" 114) + ("bluebark" "sRGB:30/39/44" 113) + ("blossom" "sRGB:223/177/182" 112) + ("bleachedcedar" "sRGB:69/70/71" 111) + ("bleachwhite" "sRGB:235/225/206" 110) + ("blanc" "sRGB:217/208/193" 109) + ("blackwood" "sRGB:63/55/46" 108) + ("blackcurrant" "sRGB:46/24/59" 107) + ("blackberry" "sRGB:67/24/47" 106) + ("blackwhite" "sRGB:229/228/219" 105) + ("blacksqueeze" "sRGB:229/230/223" 104) + ("blackrussian" "sRGB:36/37/43" 103) + ("blackrose" "sRGB:83/41/52" 102) + ("blackrock" "sRGB:44/45/60" 101) + ("blackpepper" "sRGB:60/55/49" 100) + ("blackpearl" "sRGB:30/39/44" 99) + ("blackmarlin" "sRGB:56/55/64" 98) + ("blackmagic" "sRGB:51/44/34" 97) + ("blackhaze" "sRGB:224/222/215" 96) + ("blackforest" "sRGB:44/50/39" 95) + ("blackbean" "sRGB:35/46/38" 94) + ("bizarre" "sRGB:231/210/200" 93) + ("bitterlemon" "sRGB:210/219/50" 92) + ("bitter" "sRGB:136/137/108" 91) + ("bisonhide" "sRGB:181/172/148" 90) + ("bismark" "sRGB:72/108/122" 89) + ("biscay" "sRGB:47/60/83" 88) + ("birdflower" "sRGB:208/193/23" 87) + ("birch" "sRGB:63/55/38" 86) + ("bilobaflower" "sRGB:174/153/210" 85) + ("bilbao" "sRGB:62/128/39" 84) + ("bigstone" "sRGB:51/64/70" 83) + ("bianca" "sRGB:244/239/224" 82) + ("berylgreen" "sRGB:188/191/168" 81) + ("bermudagrey" "sRGB:111/140/159" 80) + ("bermuda" "sRGB:134/210/193" 79) + ("beeswax" "sRGB:233/215/171" 78) + ("beautybush" "sRGB:235/185/179" 77) + ("bean" "sRGB:74/53/49" 76) + ("bazaar" "sRGB:143/119/119" 75) + ("bayofmany" "sRGB:53/62/100" 74) + ("bayleaf" "sRGB:123/177/141" 73) + ("battleshipgrey" "sRGB:81/87/79" 72) + ("bastille" "sRGB:44/44/50" 71) + ("barossa" "sRGB:69/46/57" 70) + ("barleywhite" "sRGB:247/229/183" 69) + ("barleycorn" "sRGB:182/147/92" 68) + ("barberry" "sRGB:210/198/31" 67) + ("banjul" "sRGB:52/50/45" 66) + ("bandicoot" "sRGB:135/132/102" 65) + ("bamboo" "sRGB:186/111/63" 64) + ("balticsea" "sRGB:60/61/62" 63) + ("balihai" "sRGB:132/156/169" 62) + ("bajawhite" "sRGB:240/223/187" 61) + ("bahia" "sRGB:169/192/28" 60) + ("bahamablue" "sRGB:37/89/127" 59) + ("azure" "sRGB:78/105/154" 58) + ("aztec" "sRGB:41/52/50" 57) + ("azalea" "sRGB:249/192/196" 56) + ("axolotl" "sRGB:99/119/90" 55) + ("avocado" "sRGB:149/152/107" 54) + ("australianmint" "sRGB:239/248/170" 53) + ("aubergine" "sRGB:55/37/40" 52) + ("auchico" "sRGB:158/103/89" 51) + ("atomic" "sRGB:61/75/82" 50) + ("atoll" "sRGB:43/121/122" 49) + ("atlantis" "sRGB:156/208/59" 48) + ("athsspecial" "sRGB:213/203/178" 47) + ("athensgrey" "sRGB:220/221/221" 46) + ("astronautblue" "sRGB:33/69/89" 45) + ("astronaut" "sRGB:68/81/114" 44) + ("astral" "sRGB:55/111/137" 43) + ("astra" "sRGB:237/213/166" 42) + ("asphalt" "sRGB:42/41/34" 41) + ("ashbrown" "sRGB:73/63/47" 40) + ("ash" "sRGB:190/186/167" 39) + ("arrowtown" "sRGB:130/122/103" 38) + ("armadillo" "sRGB:72/74/70" 37) + ("arapawa" "sRGB:39/74/93" 36) + ("aquamarine" "sRGB:32/89/72" 35) + ("aquasqueeze" "sRGB:219/228/220" 34) + ("aquaspring" "sRGB:232/243/232" 33) + ("aquahaze" "sRGB:217/221/213" 32) + ("aqua" "sRGB:146/211/202" 31) + ("apricotwhite" "sRGB:247/240/219" 30) + ("apricot" "sRGB:228/143/103" 29) + ("applegreen" "sRGB:222/234/220" 28) + ("appleblossom" "sRGB:169/82/73" 27) + ("apple" "sRGB:102/179/72" 26) + ("apache" "sRGB:211/169/92" 25) + ("anzac" "sRGB:198/142/63" 24) + ("antiquebrass" "sRGB:108/70/31" 23) + ("anakiwa" "sRGB:140/206/234" 22) + ("amulet" "sRGB:125/157/114" 21) + ("amour" "sRGB:245/230/234" 20) + ("amethystsmoke" "sRGB:149/135/156" 19) + ("americano" "sRGB:138/125/114" 18) + ("amazon" "sRGB:56/123/84" 17) + ("aluminium" "sRGB:132/135/137" 16) + ("alto" "sRGB:205/198/197" 15) + ("alpine" "sRGB:173/138/59" 14) + ("almondfrost" "sRGB:154/134/120" 13) + ("allports" "sRGB:31/106/125" 12) + ("alerttan" "sRGB:149/78/44" 11) + ("albescentwhite" "sRGB:225/218/203" 10) + ("alabaster" "sRGB:242/240/230" 9) + ("akaroa" "sRGB:190/178/154" 8) + ("afghantan" "sRGB:144/94/38" 7) + ("affair" "sRGB:116/80/133" 6) + ("aeroblue" "sRGB:192/232/213" 5) + ("acorn" "sRGB:115/99/48" 4) + ("acapulco" "sRGB:117/170/148" 3) + ("acadia" "sRGB:53/49/44" 2) + ("abbey" "sRGB:73/81/84" 1) ) (7 (3 #f order #f ordinal) diff --git a/debian/changelog b/debian/changelog index 51ac19e..d21b8a9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,14 @@ +slib (3b1-1) unstable; urgency=low + + * New upstream release. + * guile.init (library-vicinity): Repeat change from 3a4-2. + * slib.texi (Library Catalogs): Repeat change from 3a3-3. + * slib.sh: Repeat change from 3a5-3. + * slib.1: Repeat change from 3a5-4. + * Makefile: Repeat change from 3a2-1. + + -- Thomas Bushnell, BSG <tb@debian.org> Mon, 04 Feb 2008 20:29:13 -0500 + slib (3a5-4) unstable; urgency=low * slib.1 (.TH): Put in section number. diff --git a/defmacex.scm b/defmacex.scm index 71d7b6c..2b2cf88 100644 --- a/defmacex.scm +++ b/defmacex.scm @@ -41,7 +41,7 @@ ;@ (define (defmacro:expand* e) (if (pair? e) - (let* ((c (macroexpand-1 e))) + (let* ((c (macroexpand e))) (if (not (eq? e c)) (defmacro:expand* c) (case (car e) @@ -64,7 +64,7 @@ (else (slib:error 'not 'matrix matrix)))) ;;@body -;;Returns the (ones-based) array form of @1. +;;Returns the array form of @1. (define (matrix->array matrix) (cond ((array? matrix) (if (not (eqv? 2 (array-rank matrix))) @@ -157,7 +157,7 @@ ;;@body ;;@1 must be a square matrix. -;;If @1 is singlar, then @0 returns #f; otherwise @0 returns the +;;If @1 is singular, then @0 returns #f; otherwise @0 returns the ;;@code{matrix:product} inverse of @1. (define (matrix:inverse matrix) (let* ((mat (matrix->lists matrix)) @@ -14,7 +14,7 @@ Returns the list-of-lists form of @var{matrix}. @defun matrix->array matrix -Returns the (ones-based) array form of @var{matrix}. +Returns the array form of @var{matrix}. @end defun @@ -65,7 +65,7 @@ Returns matrix @var{m1} times scalar @var{z}. @defun matrix:inverse matrix @var{matrix} must be a square matrix. -If @var{matrix} is singlar, then @code{matrix:inverse} returns #f; otherwise @code{matrix:inverse} returns the +If @var{matrix} is singular, then @code{matrix:inverse} returns #f; otherwise @code{matrix:inverse} returns the @code{matrix:product} inverse of @var{matrix}. @end defun @@ -20,7 +20,7 @@ (require 'filename) (require 'line-i/o) (require 'system) -(require 'glob) +(require 'filename) ;;@code{(require 'directory)} ;;@ftindex directory @@ -35,11 +35,15 @@ ;;; (implementation-vicinity) should be defined to be the pathname of ;;; the directory where any auxillary files to your Scheme ;;; implementation reside. -(define (implementation-vicinity) - (case (software-type) - ((unix) "/usr/share/elk/") - ((vms) "scheme$src:") - ((ms-dos) "C:\\scheme\\"))) +(define implementation-vicinity + (let ((impl-path + (or (getenv "ELK_IMPLEMENTATION_PATH") + (case (software-type) + ((unix) "/usr/share/elk/") + ((vms) "scheme$src:") + ((ms-dos) "C:\\scheme\\") + (else ""))))) + (lambda () impl-path))) ;;; (library-vicinity) should be defined to be the pathname of the ;;; directory where files of Scheme library functions reside. @@ -107,8 +111,7 @@ ;@ (define sub-vicinity (case (software-type) - ((vms) (lambda - (vic name) + ((vms) (lambda (vic name) (let ((l (string-length vic))) (if (or (zero? (string-length vic)) (not (char=? #\] (string-ref vic (- l 1))))) @@ -148,6 +151,7 @@ ;(SLIB:LOAD-COMPILED "filename") vicinity srfi-59 + srfi-96 ;; Scheme report features ;; R5RS-compliant implementations should provide all 9 features. @@ -191,11 +195,11 @@ ;; Other common features -;;; srfi ;srfi-0, COND-EXPAND finds all srfi-* +;;; srfi-0 ;srfi-0, COND-EXPAND finds all srfi-* sicp ;runs code from Structure and ;Interpretation of Computer ;Programs by Abelson and Sussman. -;;; defmacro ;has Common Lisp DEFMACRO + defmacro ;has Common Lisp DEFMACRO ;;; record ;has user defined data structures string-port ;has CALL-WITH-INPUT-STRING and ;CALL-WITH-OUTPUT-STRING @@ -217,9 +221,9 @@ ;------------ -(define program-arguments - (lambda () - (cons "undefined-program-name" (command-line-args)))) +(define (program-arguments) + (cons (symbol->string (scheme-implementation-type)) + (command-line-args))) ; EXACT? appears to always return #f which isn't very useful. ; Approximating it with INTEGER? at least means that some @@ -352,10 +356,6 @@ (define defmacro:eval slib:eval) (define defmacro:load load) -;;; If your implementation provides R4RS macros: -;(define macro:eval slib:eval) -;(define macro:load load) -;; slib:eval-load definition moved to "require.scm" (define slib:warn (lambda args @@ -432,4 +432,12 @@ ;;; At this point SLIB:LOAD must be able to load SLIB files. (define slib:load slib:load-source) ;WARNING: redefining LOAD +;;; If your implementation provides R4RS macros: +;;(define macro:eval slib:eval) +;;(define macro:load slib:load-source) + +;;; If your implementation provides syntax-case macros: +;;(define syncase:eval slib:eval) +;;(define syncase:load slib:load-source) + (slib:load (in-vicinity (library-vicinity) "require")) @@ -1,13 +1,12 @@ - -@node Copying This Manual, How to use this License for your documents, About this manual, About this manual -@subsection Copying This Manual - -@cindex FDL, GNU Free Documentation License +@c The GNU Free Documentation License. @center Version 1.2, November 2002 +@c This file is intended to be included within another document, +@c hence no sectioning command or @node. + @display Copyright @copyright{} 2000,2001,2002 Free Software Foundation, Inc. -59 Temple Place, Suite 330, Boston, MA 02111-1307, USA +51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -407,11 +406,8 @@ number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. @end enumerate -@c @page -@c @appendixsubsec ADDENDUM: How to use this License for your documents - -@node How to use this License for your documents, , Copying This Manual, About this manual -@subsection How to use this License for your documents +@page +@heading ADDENDUM: How to use this License for your documents To use this License in a document you have written, include a copy of the License in the document and put the following copyright and @@ -430,7 +426,7 @@ license notices just after the title page: @end smallexample If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, -replace the ``with...Texts.'' line with this: +replace the ``with@dots{}Texts.'' line with this: @smallexample @group @@ -452,4 +448,3 @@ to permit their use in free software. @c Local Variables: @c ispell-local-pdict: "ispell-dict" @c End: - diff --git a/gambit.init b/gambit.init index e431160..dce1a07 100644 --- a/gambit.init +++ b/gambit.init @@ -34,19 +34,22 @@ ;;; the directory where any auxillary files to your Scheme ;;; implementation reside. (define implementation-vicinity - (case (software-type) - ((unix) (lambda () "/usr/local/share/gambc/")) - ((vms) (lambda () "scheme$src:")) - ((ms-dos) (lambda () "C:\\scheme\\")) - ((windows) (lambda () "c:/scheme/")) - ((macos) - (let ((arg0 (list-ref (argv) 0))) - (let loop ((i (- (string-length arg0) 1))) - (cond ((negative? i) "") - ((char=? #\: (string-ref arg0 i)) - (set! arg0 (substring arg0 0 (+ i 1))) - (lambda () arg0)) - (else (loop (- i 1))))))))) + (let ((impl-path + (or (getenv "GAMBIT_IMPLEMENTATION_PATH") + (case (software-type) + ((unix) "/usr/local/share/gambc/") + ((vms) "scheme$src:") + ((ms-dos) "C:\\scheme\\") + ((windows) "c:/scheme/") + ((macos) + (let ((arg0 (list-ref (argv) 0))) + (let loop ((i (- (string-length arg0) 1))) + (cond ((negative? i) "") + ((char=? #\: (string-ref arg0 i)) + (substring arg0 0 (+ i 1))) + (else (loop (- i 1))))))) + (else ""))))) + (lambda () impl-path))) ;;; (library-vicinity) should be defined to be the pathname of the ;;; directory where files of Scheme library functions reside. @@ -123,8 +126,7 @@ ;@ (define sub-vicinity (case (software-type) - ((vms) (lambda - (vic name) + ((vms) (lambda (vic name) (let ((l (string-length vic))) (if (or (zero? (string-length vic)) (not (char=? #\] (string-ref vic (- l 1))))) @@ -165,6 +167,7 @@ ;(SLIB:LOAD-COMPILED "filename") vicinity srfi-59 + srfi-96 ;; Scheme report features ;; R5RS-compliant implementations should provide all 9 features. @@ -208,7 +211,7 @@ ;; Other common features - srfi ;srfi-0, COND-EXPAND finds all srfi-* + srfi-0 ;srfi-0, COND-EXPAND finds all srfi-* sicp ;runs code from Structure and ;Interpretation of Computer ;Programs by Abelson and Sussman. @@ -347,10 +350,6 @@ ;;; SLIB:EVAL is single argument eval using the top-level (user) environment. (define slib:eval eval) -;;; If your implementation provides R4RS macros: -;(define macro:eval slib:eval) -;(define macro:load load) - (define *defmacros* (list (cons 'defmacro (lambda (name parms . body) @@ -385,7 +384,6 @@ (define (defmacro:load <pathname>) (slib:eval-load <pathname> defmacro:eval)) -;; slib:eval-load definition moved to "require.scm" (define print-call-stack identity) ;noop @@ -441,6 +439,14 @@ ;;; At this point SLIB:LOAD must be able to load SLIB files. (define slib:load slib:load-source) +;;; If your implementation provides R4RS macros: +;;(define macro:eval slib:eval) +;;(define macro:load slib:load-source) + +;;; If your implementation provides syntax-case macros: +;;(define syncase:eval slib:eval) +;;(define syncase:load slib:load-source) + (slib:eval '(define-macro (defmacro name parms . body) (set! *defmacros* (cons `(cons ',name (lambda ,parms ,@body)) *defmacros*)) @@ -17,7 +17,7 @@ ;promotional, or sales literature without prior written consent in ;each case. -;;@code{(require 'filename)} or @code{(require 'glob)} +;;@code{(require 'filename)} ;;@ftindex filename ;;@ftindex glob @@ -1,4 +1,4 @@ -@code{(require 'filename)} or @code{(require 'glob)} +@code{(require 'filename)} @ftindex filename @ftindex glob @@ -3,7 +3,7 @@ ;;; ;;; This code is in the public domain. -(if (not (and (string<=? "1.6" (version)) (string<? (version) "1.7"))) +(if (not (and (string<=? "1.6" (version)) (string<? (version) "1.8.3"))) (define-module (ice-9 slib))) ; :no-backtrace (define slib-module (current-module)) @@ -43,13 +43,17 @@ ;;; (implementation-vicinity) should be defined to be the pathname of ;;; the directory where any auxillary files to your Scheme ;;; implementation reside. -(define implementation-vicinity - (let* ((path (or (%search-load-path "ice-9/q.scm") - (error "Could not find ice-9/q.scm in " %load-path))) - (vic (substring path 0 (- (string-length path) 11)))) - (lambda () vic))) +;; (define implementation-vicinity +;; (let* ((path (or (%search-load-path "ice-9/q.scm") +;; (error "Could not find ice-9/q.scm in " %load-path))) +;; (vic (substring path 0 (- (string-length path) 11)))) +;; (lambda () vic))) +;; ;;; Rob Browning says %site-dir exists since Guile-1.6 -;;(define implementation-vicinity %site-dir) +(define implementation-vicinity + (cond ((and (defined? 'getenv) (getenv "GUILE_IMPLEMENTATION_PATH")) + => (lambda (path) (lambda () path))) + (else %site-dir))) ;;; (library-vicinity) should be defined to be the pathname of the ;;; directory where files of Scheme library functions reside. @@ -64,6 +68,9 @@ (and path (substring path 0 (- (string-length path) 10)))) ;; Use this path if your scheme does not support GETENV ;; or if SCHEME_LIBRARY_PATH is not set. +;; Changed from /usr/lib/slib to /usr/share/slib by tb@debian.org for +;; Debian packaging. +;; "/usr/lib/slib/" "/usr/share/slib/" (in-vicinity (implementation-vicinity) "slib/")))) (lambda () library-path))) @@ -115,8 +122,7 @@ ;@ (define sub-vicinity (case (software-type) - ((vms) (lambda - (vic name) + ((vms) (lambda (vic name) (let ((l (string-length vic))) (if (or (zero? (string-length vic)) (not (char=? #\] (string-ref vic (- l 1))))) @@ -152,6 +158,13 @@ ;;; initially supported by this implementation. (define slib:features (append + (apply append + (map (lambda (sym) (if (defined? sym) (list sym) '())) + '(getenv + program-arguments + current-time + char-ready?))) + '( source ;can load scheme source files ;(SLIB:LOAD-SOURCE "filename") @@ -159,6 +172,7 @@ ;(SLIB:LOAD-COMPILED "filename") vicinity srfi-59 + srfi-96 ;; Scheme report features ;; R5RS-compliant implementations should provide all 9 features. @@ -203,7 +217,7 @@ ;; Other common features -;;; srfi ;srfi-0, COND-EXPAND finds all srfi-* +;;; srfi-0 ;srfi-0, COND-EXPAND finds all srfi-* ;;; sicp ;runs code from Structure and ;Interpretation of Computer ;Programs by Abelson and Sussman. @@ -231,19 +245,7 @@ array array-for-each - ) - - (if (defined? 'getenv) - '(getenv) - '()) - - (if (defined? 'current-time) - '(current-time) - '()) - - (if (defined? 'char-ready?) - '(char-ready?) - '()))) + ))) ;;@ (FILE-POSITION <port> . <k>) (define (file-position port . args) @@ -379,7 +381,6 @@ (let ((ie (interaction-environment))) (lambda (expression) (eval expression ie))))) -;; slib:eval-load definition moved to "require.scm" ;;; Define SLIB:EXIT to be the implementation procedure to exit or ;;; return if exiting not supported. @@ -455,7 +456,7 @@ ;;; If your implementation provides R4RS macros: (define macro:eval slib:eval) -(define macro:load slib:load) +(define macro:load slib:load-source) (define slib:warn warn) (define slib:error error) diff --git a/jscheme.init b/jscheme.init index 9e568b7..9a0f0e6 100644 --- a/jscheme.init +++ b/jscheme.init @@ -39,19 +39,20 @@ ;;; the version the scheme implementation loading this file. (define (scheme-implementation-version) "7.2") +(define (getenv path) + (define prop (System.getProperty path)) + (and (not (eq? prop #null)) prop)) + ;;@ (implementation-vicinity) should be defined to be the pathname of ;;; the directory where any auxillary files to your Scheme ;;; implementation reside. (define implementation-vicinity - (let ((implvic (case (software-type) - ((ms-dos) "C:\\TEMP\\") - (else "/tmp/")))) + (let ((implvic (or (getenv "JSCHEME_IMPLEMENTATION_PATH") + (case (software-type) + ((ms-dos) "C:\\TEMP\\") + (else "/tmp/"))))) (lambda () implvic))) -(define (getenv path) - (define prop (System.getProperty path)) - (and (not (eq? prop #null)) prop)) - (define (slib.zip-on-classpath?) (let loop ((urls (vector->list (.getURLs (Import.getClassLoader))))) (if (null? urls) #f @@ -126,8 +127,7 @@ ;@ (define sub-vicinity (case (software-type) - ((vms) (lambda - (vic name) + ((vms) (lambda (vic name) (let ((l (string-length vic))) (if (or (zero? (string-length vic)) (not (char=? #\] (string-ref vic (- l 1))))) @@ -167,6 +167,7 @@ ;(SLIB:LOAD-COMPILED "filename") vicinity srfi-59 + srfi-96 ;; Scheme report features ;; R5RS-compliant implementations should provide all 9 features. @@ -211,7 +212,7 @@ ;; Other common features -;;; srfi ;srfi-0, COND-EXPAND finds all srfi-* +;;; srfi-0 ;srfi-0, COND-EXPAND finds all srfi-* ;;; sicp ;runs code from Structure and ;Interpretation of Computer ;Programs by Abelson and Sussman. @@ -337,10 +338,6 @@ ((zero? z2) (+ 1 (* z1 z2))) (else (expt z1 z2)))))) -;; If your implementation provides R4RS macros: -;(define macro:eval slib:eval) -;(define macro:load load) - (define (constant? exp) (if (pair? exp) (eq? (car exp) 'quote) (not (symbol? exp)))) @@ -428,7 +425,6 @@ ;@ (define (defmacro:load <pathname>) (slib:eval-load <pathname> defmacro:eval)) -;; slib:eval-load definition moved to "require.scm" ;@ (define slib:warn @@ -511,6 +507,14 @@ ;;@ At this point SLIB:LOAD must be able to load SLIB files. (define slib:load slib:load-source) +;;; If your implementation provides R4RS macros: +;;(define macro:eval slib:eval) +;;(define macro:load slib:load-source) + +;;; If your implementation provides syntax-case macros: +;;(define syncase:eval slib:eval) +;;(define syncase:load slib:load-source) + (slib:load (in-vicinity (library-vicinity) "require")) (define (current-time) (/ (System.currentTimeMillis) 1000)) @@ -24,11 +24,14 @@ ;;@ (implementation-vicinity) should be defined to be the pathname of ;;; the directory where any auxillary files to your Scheme ;;; implementation reside. -(define (implementation-vicinity) - (case (software-type) - ((unix) "/usr/local/src/kawa/") - ;;((vms) "scheme$src:") - ((ms-dos) "C:\\kawa\\"))) +(define implementation-vicinity + (let ((impl-path + (case (software-type) + ((unix) "/usr/local/src/kawa/") + ;;((vms) "scheme$src:") + ((ms-dos) "C:\\kawa\\") + (else "")))) + (lambda () impl-path))) ;;@ (library-vicinity) should be defined to be the pathname of the ;;; directory where files of Scheme library functions reside. @@ -98,8 +101,7 @@ ;@ (define sub-vicinity (case (software-type) - ((vms) (lambda - (vic name) + ((vms) (lambda (vic name) (let ((l (string-length vic))) (if (or (zero? (string-length vic)) (not (char=? #\] (string-ref vic (- l 1))))) @@ -140,6 +142,7 @@ ;(SLIB:LOAD-COMPILED "filename") vicinity srfi-59 + srfi-96 ;; Scheme report features ;; R5RS-compliant implementations should provide all 9 features. @@ -181,7 +184,7 @@ ;; Other common features - srfi ;srfi-0, COND-EXPAND finds all srfi-* + srfi-0 ;srfi-0, COND-EXPAND finds all srfi-* ;;; sicp ;runs code from Structure and ;Interpretation of Computer ;Programs by Abelson and Sussman. @@ -302,7 +305,6 @@ ;@ (define (defmacro:load <pathname>) (slib:eval-load <pathname> defmacro:eval)) -;; slib:eval-load definition moved to "require.scm" ;@ (define slib:warn (lambda args diff --git a/macscheme.init b/macscheme.init index c922bfc..7846135 100644 --- a/macscheme.init +++ b/macscheme.init @@ -72,8 +72,7 @@ ;@ (define sub-vicinity (case (software-type) - ((vms) (lambda - (vic name) + ((vms) (lambda (vic name) (let ((l (string-length vic))) (if (or (zero? (string-length vic)) (not (char=? #\] (string-ref vic (- l 1))))) @@ -113,6 +112,7 @@ ;(SLIB:LOAD-COMPILED "filename") vicinity srfi-59 + srfi-96 ;; Scheme report features ;; R5RS-compliant implementations should provide all 9 features. @@ -156,11 +156,11 @@ ;; Other common features -;;; srfi ;srfi-0, COND-EXPAND finds all srfi-* +;;; srfi-0 ;srfi-0, COND-EXPAND finds all srfi-* ;;; sicp ;runs code from Structure and ;Interpretation of Computer ;Programs by Abelson and Sussman. -;;; defmacro ;has Common Lisp DEFMACRO + defmacro ;has Common Lisp DEFMACRO ;;; record ;has user defined data structures string-port ;has CALL-WITH-INPUT-STRING and ;CALL-WITH-OUTPUT-STRING @@ -268,13 +268,6 @@ ;;; Return argument (define (identity x) x) -;;; SLIB:EVAL is single argument eval using the top-level (user) environment. -(define slib:eval eval) - -;;; If your implementation provides R4RS macros: -;(define macro:eval slib:eval) -;(define macro:load load) - (define *defmacros* (list (cons 'defmacro (lambda (name parms . body) @@ -304,6 +297,8 @@ (string->symbol (string-append "slib:G" (number->string *gensym-counter*)))))) +;;; SLIB:EVAL is single argument eval using the top-level (user) environment. +(define slib:eval eval) (define base:eval slib:eval) (define (defmacro:eval x) (base:eval (defmacro:expand* x))) (define (defmacro:expand* x) @@ -311,7 +306,6 @@ (define (defmacro:load <pathname>) (slib:eval-load <pathname> defmacro:eval)) -;; slib:eval-load definition moved to "require.scm" (define slib:warn (lambda args @@ -362,6 +356,14 @@ ;;; See feature 'COMPILED. (define slib:load-compiled load) +;;; If your implementation provides R4RS macros: +;;(define macro:eval slib:eval) +;;(define macro:load slib:load-source) + +;;; If your implementation provides syntax-case macros: +;;(define syncase:eval slib:eval) +;;(define syncase:load slib:load-source) + ;;; At this point SLIB:LOAD must be able to load SLIB files. (define slib:load slib:load-source) @@ -401,8 +401,8 @@ (lambda (x) (and (pair? x) (pair? (cdr x)) (eq? (cadr x) '...)))) ;@ -(define macro:eval slib:eval) -(define macro:load slib:load) +(define macro:eval defmacro:eval) +(define macro:load defmacro:load) (define macro:expand defmacro:expand*) ;@ define-syntax diff --git a/mitscheme.init b/mitscheme.init index 97d1efc..fdf1c95 100644 --- a/mitscheme.init +++ b/mitscheme.init @@ -46,8 +46,11 @@ ;;; (implementation-vicinity) should be defined to be the pathname of ;;; the directory where any auxillary files to your Scheme ;;; implementation reside. -(define (implementation-vicinity) - (->namestring (system-library-directory-pathname #f))) +(define implementation-vicinity + (let ((impl-path + (or (getenv "MITSCHEME_IMPLEMENTATION_PATH") + (->namestring (system-library-directory-pathname #f))))) + (lambda () impl-path))) ;;; (library-vicinity) should be defined to be the pathname of the ;;; directory where files of Scheme library functions reside. @@ -104,8 +107,7 @@ ;@ (define sub-vicinity (case (software-type) - ((vms) (lambda - (vic name) + ((vms) (lambda (vic name) (let ((l (string-length vic))) (if (or (zero? (string-length vic)) (not (char=? #\] (string-ref vic (- l 1))))) @@ -146,6 +148,7 @@ ;(SLIB:LOAD-COMPILED "filename") vicinity srfi-59 + srfi-96 ;; Scheme report features @@ -191,7 +194,7 @@ ;; Other common features -;;; srfi ;srfi-0, COND-EXPAND finds all srfi-* +;;; srfi-0 ;srfi-0, COND-EXPAND finds all srfi-* ;;; sicp ;runs code from Structure and ;Interpretation of Computer ;Programs by Abelson and Sussman. @@ -408,7 +411,6 @@ (begin (environment-define (the-environment) 'macro:eval slib:eval) (environment-define (the-environment) 'macro:load load))) -;; slib:eval-load definition moved to "require.scm" ;; Older implementations need this definition. (if (lexical-unreferenceable? (the-environment) 'record-modifier) diff --git a/mklibcat.scm b/mklibcat.scm index fe3368f..ae7e98e 100644 --- a/mklibcat.scm +++ b/mklibcat.scm @@ -210,8 +210,8 @@ (manifest source "manifest") (top-refs source "top-refs") (vet source "vet") - (srfi-0 srfi) - (srfi defmacro "srfi") + (srfi srfi-0) + (srfi-0 defmacro "srfi") (srfi-1 source "srfi-1") (and-let* srfi-2) (srfi-2 defmacro "srfi-2") @@ -242,9 +242,7 @@ (let ((load-if-exists (lambda (path) - (cond ((not (file-exists? path)) - (set! path (string-append path (scheme-file-suffix))))) - (cond ((file-exists? path) + (cond ((file-exists? (string-append path (scheme-file-suffix))) (slib:load-source path)))))) ;;(load-if-exists (in-vicinity (implementation-vicinity) "mksitcat")) (load-if-exists (in-vicinity (implementation-vicinity) "mkimpcat"))) diff --git a/mkpltcat.scm b/mkpltcat.scm new file mode 100644 index 0000000..80d4414 --- /dev/null +++ b/mkpltcat.scm @@ -0,0 +1,54 @@ +;;;; "mkimpcat.scm" Build mzscheme-specific catalog for SLIB. +;;; This code is in the public domain. +;;; Author: Aubrey Jaffer. + +(let ((catname "implcat")) + (define ivcatname (in-vicinity (implementation-vicinity) catname)) + (if (file-exists? ivcatname) (delete-file ivcatname)) + (call-with-output-file ivcatname + (lambda (op) + (define (display* . args) + (for-each (lambda (arg) (display arg op)) args) + (newline op)) + (define (add-alias from to) + (display " " op) + (write (cons from to) op) + (newline op)) + (define (add-srfi feature) + (let ((str (symbol->string feature))) + (define len (string-length str)) + (cond ((not (and (> len 5) + (string-ci= "srfi-" (substring str 0 5)))) + (error 'add-srfi 'bad 'srfi 'name feature))))) + + (display* ";\"" catname "\" Implementation-specific SLIB catalog for " + (scheme-implementation-type) (scheme-implementation-version) + ". -*-scheme-*-") + (display* ";") + (display* "; DO NOT EDIT THIS FILE") + (display* "; it is automagically generated by \"" + (current-load-relative-directory) + "mkimpcat.scm" + "\"") + (display*) + + ;;; Output association lists to file "implcat" + (display* "(") + (do ((kdx 0 (+ 1 kdx))) + ((>= kdx 150)) + (let ((kstr (number->string kdx))) + (cond ((file-exists? + (build-path (collection-path "srfi") + (string-append kstr ".ss"))) + (display " " op) + (write `(,(string->symbol (string-append "srfi-" kstr)) + compiled + (lib ,(string-append kstr ".ss") "srfi")) + op) + (newline op))))) + + (if (string>? (version) "370") + (add-alias 'array 'srfi-63)) + (add-alias 'logical 'srfi-60) + (display* ")") + ))) diff --git a/DrScheme.init b/mzscheme.init index d921cec..db6b3b9 100644 --- a/DrScheme.init +++ b/mzscheme.init @@ -1,4 +1,4 @@ -;;;"DrScheme.init" Initialization for SLIB for DrScheme -*-scheme-*- +;;;"mzscheme.init" Initialization for SLIB for mzscheme -*-scheme-*- ;;; This code is in the public domain. ;;@ (software-type) should be set to the generic operating system type. @@ -28,7 +28,8 @@ ;;; implementation reside. (define implementation-vicinity (let ([path - (or (getenv "PLTHOME") + (or (getenv "MZSCHEME_IMPLEMENTATION_PATH") + (getenv "PLTHOME") (with-handlers ([void (lambda (x) #f)]) (let ([p (collection-path "mzlib")]) (let*-values ([(base name dir?) (split-path p)] @@ -54,7 +55,7 @@ (ormap (lambda (dir) (and (directory-exists? dir) dir)) '("/usr/local/lib/slib/" - "/usr/share/slib" + "/usr/share/slib/" ;; this is for RH/Fedora that uses umb-scheme for slib ;;"/usr/share/umb-scheme/slib" )) @@ -128,6 +129,7 @@ rev4-report ;conforms to ;;; rev3-report ;conforms to ;;; ieee-p1178 ;conforms to +;;; srfi-0 ;srfi-0, COND-EXPAND finds all srfi-* ;;; sicp ;runs code from Structure and ;Interpretation of Computer ;Programs by Abelson and Sussman. @@ -151,6 +153,7 @@ ;;; transcript ;TRANSCRIPT-ON and TRANSCRIPT-OFF char-ready? macro ;has R4RS high level macros + syntax-case ;has syntax-case macros defmacro ;has Common Lisp DEFMACRO eval ;SLIB:EVAL is single argument eval ;;; record ;has user defined data structures @@ -164,7 +167,7 @@ ;;; queue ;queues pretty-print ;;; object->string -;;; format + format ;plt/collects/srfi/28.ss says in core ;;; trace ;has macros: TRACE and UNTRACE ;;; compiler ;has (COMPILER) ;;; ed ;(ED) is editor @@ -177,13 +180,14 @@ ;;; terminfo ;sysV terminal description fluid-let srfi-59 + srfi-96 vicinity current-time ;returns time in seconds since 1/1/1970 )) ;@ -(define program-arguments - (lambda () - (vector->list (current-command-line-arguments)))) +(define (program-arguments) + (cons (symbol->string (scheme-implementation-type)) + (vector->list (current-command-line-arguments)))) (require (lib "pretty.ss")) (unless (memq (system-type) '(unix beos)) @@ -256,9 +260,6 @@ ;;@ SLIB:EVAL is single argument eval using the top-level (user) environment. (define slib:eval eval) -;;; If your implementation provides R4RS macros: -;(define macro:eval slib:eval) -;(define macro:load load) (define *defmacros* (list (cons 'defmacro (lambda (name parms . body) @@ -299,7 +300,6 @@ ;@ (define (defmacro:load <pathname>) (slib:eval-load <pathname> defmacro:eval)) -;; slib:eval-load definition moved to "require.scm" ;@ (define slib:warn (lambda args @@ -389,11 +389,23 @@ ;;; by compiling "foo.scm" if this implementation can compile files. ;;; See feature 'COMPILED. (define (slib:load-compiled f) - (load (string-append (ensure-path-string f) ".zo"))) + (cond ((string? f) + (load (string-append (ensure-path-string f) ".zo"))) + ((and (pair? f) (eq? 'lib (car f))) + (eval `(require ,f))) + (slib:error 'slib:load-compiled 'bad 'argument f))) ;;@ At this point SLIB:LOAD must be able to load SLIB files. (define slib:load slib:load-source) +;;; If your implementation provides R4RS macros: +(define macro:eval slib:eval) +(define macro:load slib:load-source) + +;;; If your implementation provides syntax-case macros: +(define syncase:eval slib:eval) +(define syncase:load slib:load-source) + (require (rename mzscheme mz:require require)) (slib:load (in-vicinity (library-vicinity) "require")) diff --git a/peanosfc.scm b/peanosfc.scm index 388be9f..82b136e 100644 --- a/peanosfc.scm +++ b/peanosfc.scm @@ -1,4 +1,4 @@ -; "peanospc.scm": Peano space filling mapping +; "peanosfc.scm": Peano space filling mapping ; Copyright (C) 2005, 2006 Aubrey Jaffer ; ;Permission to copy this software, to modify it, to redistribute it, @@ -373,7 +373,7 @@ (cond ((equal? (force prec:token) sep) (prec:warn 'expression-missing) (prec:advance) - (cons '? (prec:parse-delimited sep delim))) + (cons '? (prec:parse-delimited sep bp delim))) ((prec:delim? (force prec:token)) (if (not (equal? (force prec:token) delim)) (prec:warn 'mismatched-delimiter (force prec:token) diff --git a/pscheme.init b/pscheme.init index 11c0125..49c98a3 100644 --- a/pscheme.init +++ b/pscheme.init @@ -13,9 +13,9 @@ (define (scheme-implementation-version) (let ((v (version))) (string-append - (number->string (car v)) "." - (number->string (cadr v)) "." - (number->string (caddr v))))) + (number->string (car v)) "." + (number->string (cadr v)) "." + (number->string (caddr v))))) (define (scheme-implementation-home-page) "http://www.mazama.net/scheme/pscheme.htm") (define (implementation-vicinity) "\\Program Files\\Pocket Scheme\\") @@ -58,8 +58,7 @@ ;@ (define sub-vicinity (case (software-type) - ((vms) (lambda - (vic name) + ((vms) (lambda (vic name) (let ((l (string-length vic))) (if (or (zero? (string-length vic)) (not (char=? #\] (string-ref vic (- l 1))))) @@ -99,6 +98,7 @@ rev4-optional-procedures vicinity srfi-59 + srfi-96 multiarg/and- multiarg-apply with-file @@ -106,16 +106,16 @@ defmacro rationalize delay -; pscheme needs the R5RS arity-2 eval in order to define the following -; eval +;;; pscheme needs the R5RS arity-2 eval in order to define the following +;;; eval dynamic-wind full-continuation - srfi -; pscheme needs print-call-stack in order to define the following -; trace + srfi-0 +;;; pscheme needs print-call-stack in order to define the following +;;; trace system string-port - )) + )) ;;@ (FILE-POSITION <port> . <k>) (define (file-position . args) #f) @@ -165,10 +165,10 @@ ;@ (define (browse-url url) (with-handlers - ;; the pscheme SYSTEM procedure raises an exn when it can't find the image to run. - ;; SYSTEM uses ShellExecuteEx where available, so we give it the document name to open - (((lambda (x) #t) (lambda (x) #f))) - (system url))) + ;; the pscheme SYSTEM procedure raises an exn when it can't find the image to run. + ;; SYSTEM uses ShellExecuteEx where available, so we give it the document name to open + (((lambda (x) #t) (lambda (x) #f))) + (system url))) ;;@ CHAR-CODE-LIMIT is one greater than the largest integer which can @@ -197,13 +197,9 @@ ;;@ SLIB:EVAL is single argument eval using the top-level (user) environment. (define slib:eval eval) -;;; If your implementation provides R4RS macros: -;(define macro:eval slib:eval) -;(define macro:load load) - ;;@ Define defmacro in terms of our define-macro (define-macro (defmacro name args . body) - `(define-macro (,name ,@args) ,@body)) + `(define-macro (,name ,@args) ,@body)) ; following defns removed in 0.6.3 while I rethink macro support ;(define defmacro? macro?) @@ -213,14 +209,6 @@ ;@ (define gentemp gensym) -(define base:eval slib:eval) -;@ -(define defmacro:eval slib:eval) - -;; slib:eval-load definition moved to "require.scm" -;@ -(define (defmacro:load <pathname>) - (slib:eval-load <pathname> defmacro:eval)) ;@ (define slib:warn (lambda args @@ -233,16 +221,16 @@ ;;@ As announced by feature string-port (define (call-with-output-string t) - (let* ((p (open-output-string)) - (r (t p)) - (s (get-output-string p))) - (close-output-port p) - s)) + (let* ((p (open-output-string)) + (r (t p)) + (s (get-output-string p))) + (close-output-port p) + s)) (define (call-with-input-string s t) - (let* ((p (open-input-string s)) - (r (t p))) - (close-input-port p) - r)) + (let* ((p (open-input-string s)) + (r (t p))) + (close-input-port p) + r)) ;;@ define these as appropriate for your system. (define slib:tab (integer->char 9)) @@ -273,9 +261,9 @@ ;;@ (SLIB:LOAD-SOURCE "foo") should load "foo.scm" or with whatever ;;; suffix all the module files in SLIB have. See feature 'SOURCE. (define (slib:load-source f) - (if (not (file-exists? f)) - (set! f (string-append f (scheme-file-suffix)))) - (load f)) + (if (not (file-exists? f)) + (set! f (string-append f (scheme-file-suffix)))) + (load f)) ;;@ (SLIB:LOAD-COMPILED "foo") should load the file that was produced ;;; by compiling "foo.scm" if this implementation can compile files. @@ -285,9 +273,14 @@ ;;@ At this point SLIB:LOAD must be able to load SLIB files. (define slib:load slib:load-source) +;@ +(define defmacro:eval slib:eval) +;@ +(define defmacro:load slib:load-source) + ;;; Pscheme and SLIB both define REQUIRE, so dispatch on argument type. (define pscheme:require require) (slib:load (in-vicinity (library-vicinity) "require")) (define slib:require require) (define (require x) - (if (string? x) (pscheme:require x) (slib:require x))) + (if (string? x) (pscheme:require x) (slib:require x))) @@ -64,13 +64,15 @@ (do ((bln bitlen (+ -8 bln)) (rbs 0 (+ (arithmetic-shift rbs 8) (random:chunk state)))) ((<= bln 7) - (if (positive? bln) - (set! rbs (logxor (arithmetic-shift rbs bln) - (random:chunk state)))) - (if (< rbs modu) rbs (rnd))))) + (cond ((positive? bln) + (set! rbs (logxor (arithmetic-shift rbs bln) + (random:chunk state))) + (if (>= rbs modu) (rnd) rbs)) + ((>= rbs modu 1) (rnd)) + ((positive? modu) rbs) + (else (slib:error 'random 'not 'positive? modu)))))) (rnd)) - ;;@defvar *random-state* ;;Holds a data structure that encodes the internal state of the ;;random-number generator that @code{random} uses by default. The nature @@ -242,335 +242,339 @@ (define (open-table table-name writable) (define cat:row (cat:get-row base:catalog table-name)) - (cond ((not cat:row) - (slib:error "can't open-table:" table-name)) - ((and writable (not mutable)) - (slib:error "can't open-table for writing:" table-name))) - (let ((column-limit (row-ref cat:row catalog:column-limit-pos)) - (desc-table - (base:open-table - lldb - (row-ref (cat:get-row - base:catalog - (row-ref cat:row catalog:coltab-name-pos)) - catalog:bastab-id-pos) - 1 (itypes columns:init-cols))) - (base-table #f) - (base:get #f) - (primary-limit 1) - (column-name-alist '()) - (column-foreign-list '()) - (column-foreign-check-list '()) - (column-domain-list '()) - (column-type-list '()) - (export-alist '()) - (cirs '()) - (dirs '()) - (list->key #f) - (key->list #f)) - - (or desc-table - (slib:error "descriptor table doesn't exist for:" table-name)) - (do ((ci column-limit (+ -1 ci))) - ((zero? ci)) - (let* ((des:row (des:get-row desc-table ci)) - (column-name (row-ref des:row columns:name-pos)) - (column-domain (row-ref des:row columns:domain-name-pos))) - (set! cirs - (cons (row-eval des:row columns:integrity-rule-pos) cirs)) - (set! column-name-alist - (cons (cons column-name ci) column-name-alist)) - (cond - (column-domain - (let ((dom:row (dom:get-row base:domains column-domain))) - (set! dirs - (cons (row-eval dom:row domains:integrity-rule-pos) - dirs)) - (set! column-type-list - (cons (row-ref dom:row domains:type-id-pos) - column-type-list)) - (set! column-domain-list - (cons column-domain column-domain-list)) - (set! column-foreign-list - (cons (let ((foreign-name - (row-ref dom:row domains:foreign-pos))) - (and (not (eq? foreign-name table-name)) - foreign-name)) - column-foreign-list)) - (set! column-foreign-check-list - (cons - (let ((foreign-name (car column-foreign-list))) - (and foreign-name - (let* ((tab (open-table foreign-name #f)) - (p? (and tab (tab 'get 1)))) - (cond - ((not tab) - (slib:error "foreign key table missing for:" - foreign-name)) - ((not (= (tab 'primary-limit) 1)) - (slib:error "foreign key table wrong type:" - foreign-name)) - (else p?))))) - column-foreign-check-list)))) - (else - (slib:error "missing domain for column:" ci column-name))) - (cond - ((row-ref des:row columns:primary?-pos) - (set! primary-limit (max primary-limit ci)) - (cond - ((base:supported-key-type? (car column-type-list))) - (else (slib:error "key type not supported by base tables:" - (car column-type-list))))) - ((base:supported-type? (car column-type-list))) - (else (slib:error "type not supported by base tables:" - (car column-type-list)))))) - (set! base-table - (base:open-table lldb (row-ref cat:row catalog:bastab-id-pos) - primary-limit column-type-list)) - (set! base:get ((basic 'make-getter) primary-limit column-type-list)) - (set! list->key - ((basic 'make-list-keyifier) primary-limit column-type-list)) - (set! key->list - ((basic 'make-key->list) primary-limit column-type-list)) - (letrec ((export-method - (lambda (name proc) - (set! export-alist - (cons (cons name proc) export-alist)))) - (ckey:retrieve ;ckey gets whole row (assumes exists) - (if (= primary-limit column-limit) key->list - (lambda (ckey) (append (key->list ckey) - (base:get base-table ckey))))) - (accumulate-over-table - (lambda (operation) - (lambda mkeys (base:map-primary-key - base-table operation - primary-limit column-type-list - (norm-mkeys mkeys))))) - (norm-mkeys - (lambda (mkeys) - (define mlim (length mkeys)) - (cond ((> mlim primary-limit) - (slib:error "too many keys:" mkeys)) - ((= mlim primary-limit) mkeys) - (else - (append mkeys - (do ((k (- primary-limit mlim) (+ -1 k)) - (result '() (cons #f result))) - ((<= k 0) result)))))))) - (export-method - 'row:retrieve - (if (= primary-limit column-limit) - (lambda keys - (let ((ckey (list->key keys))) - (and (present? base-table ckey) keys))) - (lambda keys - (let ((vals (base:get base-table (list->key keys)))) - (and vals (append keys vals)))))) - (export-method 'row:retrieve* - (accumulate-over-table - (if (= primary-limit column-limit) key->list - ckey:retrieve))) - (export-method - 'for-each-row - (let ((r (if (= primary-limit column-limit) key->list - ckey:retrieve))) - (lambda (proc . mkeys) - (base:for-each-primary-key - base-table (lambda (ckey) (proc (r ckey))) - primary-limit column-type-list - (norm-mkeys mkeys))))) - (and base:ordered-for-each-key - (export-method - 'for-each-row-in-order - (let ((r (if (= primary-limit column-limit) key->list - ckey:retrieve))) - (lambda (proc . mkeys) - (base:ordered-for-each-key - base-table (lambda (ckey) (proc (r ckey))) - primary-limit column-type-list - (norm-mkeys mkeys)))))) - (cond - ((and mutable writable) - (letrec - ((combine-primary-keys - (cond - ((and (= primary-limit column-limit) - (> primary-limit 0)) - list->key) - ((eq? list->key car) list->key) - (else - (case primary-limit - ((1) (let ((keyify-1 ((base 'make-keyifier-1) - (car column-type-list)))) - (lambda (row) (keyify-1 (car row))))) - ((2) (lambda (row) - (list->key (list (car row) (cadr row))))) - ((3) (lambda (row) - (list->key (list (car row) (cadr row) - (caddr row))))) - (else (lambda (row) - (do ((rw row (cdr rw)) - (nrw '() (cons (car rw) nrw)) - (pl (+ -1 primary-limit) (+ -1 pl))) - ((negative? pl) - (list->key (reverse nrw)))))))))) - (uir (row-eval cat:row catalog:integrity-rule-pos)) - (check-rules - (lambda (row) - (if (= column-limit (length row)) #t - (slib:error "bad row length:" row)) - (for-each - (lambda (cir dir value column-name column-domain - foreign) - (cond - ((and dir (not (dir value))) - (slib:error "violated domain integrity rule:" - table-name column-name - column-domain value)) - ((and cir (not (cir value))) - (slib:error "violated column integrity rule:" - table-name column-name value)) - ((and foreign (not (foreign value))) - (slib:error "foreign key missing:" - table-name column-name value)))) - cirs dirs row column-name-alist column-domain-list - column-foreign-check-list) - (cond ((and uir (not (uir row))) - (slib:error "violated user integrity rule:" - row))))) - (putter - ((basic 'make-putter) primary-limit column-type-list)) - (row:insert - (lambda (row) - (check-rules row) - (let ((ckey (combine-primary-keys row))) - (if (present? base-table ckey) - (slib:error 'row:insert "row present:" row)) - (putter base-table ckey - (list-tail row primary-limit))))) - (row:update - (lambda (row) - (check-rules row) - (putter base-table (combine-primary-keys row) - (list-tail row primary-limit))))) - - (export-method 'row:insert row:insert) - (export-method 'row:insert* - (lambda (rows) (for-each row:insert rows))) - (export-method 'row:update row:update) - (export-method 'row:update* - (lambda (rows) (for-each row:update rows)))) - - (letrec ((base:delete (basic 'delete)) - (base:delete* (basic 'delete*)) - (ckey:remove (lambda (ckey) - (let ((r (ckey:retrieve ckey))) - (and r (base:delete base-table ckey)) - r)))) - (export-method 'row:remove - (lambda keys - (let ((ckey (list->key keys))) - (and (present? base-table ckey) - (ckey:remove ckey))))) - (export-method 'row:delete - (lambda keys - (base:delete base-table (list->key keys)))) - (export-method 'row:remove* - (accumulate-over-table ckey:remove)) - (export-method 'row:delete* - (lambda mkeys - (base:delete* base-table - primary-limit column-type-list - (norm-mkeys mkeys)))) - (export-method 'close-table - (lambda () (set! base-table #f) - (set! desc-table #f) - (set! export-alist #f)))))) - - (export-method 'column-names (map car column-name-alist)) - (export-method 'column-foreigns column-foreign-list) - (export-method 'column-domains column-domain-list) - (export-method 'column-types column-type-list) - (export-method 'primary-limit primary-limit) - - (let ((translate-column - (lambda (column) - (let ((colp (assq column column-name-alist))) - (cond (colp (cdr colp)) - ((and (integer? column) - (<= 1 column column-limit)) - column) - (else (slib:error "column not in table:" - column table-name))))))) - (lambda args + (cond + ((not cat:row) + (slib:warn "can't open-table:" table-name) + #f) + ((and writable (not mutable)) + (slib:warn "can't open-table for writing:" table-name) + #f) + (else + (let ((column-limit (row-ref cat:row catalog:column-limit-pos)) + (desc-table + (base:open-table + lldb + (row-ref (cat:get-row + base:catalog + (row-ref cat:row catalog:coltab-name-pos)) + catalog:bastab-id-pos) + 1 (itypes columns:init-cols))) + (base-table #f) + (base:get #f) + (primary-limit 1) + (column-name-alist '()) + (column-foreign-list '()) + (column-foreign-check-list '()) + (column-domain-list '()) + (column-type-list '()) + (export-alist '()) + (cirs '()) + (dirs '()) + (list->key #f) + (key->list #f)) + + (or desc-table + (slib:error "descriptor table doesn't exist for:" table-name)) + (do ((ci column-limit (+ -1 ci))) + ((zero? ci)) + (let* ((des:row (des:get-row desc-table ci)) + (column-name (row-ref des:row columns:name-pos)) + (column-domain (row-ref des:row columns:domain-name-pos))) + (set! cirs + (cons (row-eval des:row columns:integrity-rule-pos) cirs)) + (set! column-name-alist + (cons (cons column-name ci) column-name-alist)) (cond - ((null? args) #f) - ((and base:make-nexter (eq? 'isam-next (car args))) - (base:make-nexter - base-table primary-limit column-type-list - (if (null? (cdr args)) - primary-limit - (translate-column (cadr args))))) - ((and base:make-prever (eq? 'isam-prev (car args))) - (base:make-prever - base-table primary-limit column-type-list - (if (null? (cdr args)) - primary-limit - (translate-column (cadr args))))) - ((null? (cdr args)) - (let ((pp (assq (car args) export-alist))) - (and pp (cdr pp)))) - ((not (null? (cddr args))) - (slib:error "too many arguments to methods:" args)) + (column-domain + (let ((dom:row (dom:get-row base:domains column-domain))) + (set! dirs + (cons (row-eval dom:row domains:integrity-rule-pos) + dirs)) + (set! column-type-list + (cons (row-ref dom:row domains:type-id-pos) + column-type-list)) + (set! column-domain-list + (cons column-domain column-domain-list)) + (set! column-foreign-list + (cons (let ((foreign-name + (row-ref dom:row domains:foreign-pos))) + (and (not (eq? foreign-name table-name)) + foreign-name)) + column-foreign-list)) + (set! column-foreign-check-list + (cons + (let ((foreign-name (car column-foreign-list))) + (and foreign-name + (let* ((tab (open-table foreign-name #f)) + (p? (and tab (tab 'get 1)))) + (cond + ((not tab) + (slib:error "foreign key table missing for:" + foreign-name)) + ((not (= (tab 'primary-limit) 1)) + (slib:error "foreign key table wrong type:" + foreign-name)) + (else p?))))) + column-foreign-check-list)))) (else - (let ((ci (translate-column (cadr args)))) - (cond - ((<= ci primary-limit) ;primary-key? - (case (car args) - ((get) (lambda gkeys - (and (present? base-table (list->key gkeys)) - (list-ref gkeys (+ -1 ci))))) - ((get*) (let ((key-extractor - ((base 'make-key-extractor) - primary-limit column-type-list ci))) - (lambda mkeys - (base:map-primary-key - base-table - key-extractor - primary-limit column-type-list - (norm-mkeys mkeys))))) - (else #f))) - (else - (let ((index (- ci (+ primary-limit 1))) - (get-1 (base 'make-getter-1))) - (cond - (get-1 - (set! get-1 - (get-1 primary-limit column-type-list ci)) - (case (car args) - ((get) (lambda keys - (get-1 base-table (list->key keys)))) - ((get*) (lambda mkeys - (base:map-primary-key - base-table - (lambda (ckey) (get-1 base-table ckey)) + (slib:error "missing domain for column:" ci column-name))) + (cond + ((row-ref des:row columns:primary?-pos) + (set! primary-limit (max primary-limit ci)) + (cond + ((base:supported-key-type? (car column-type-list))) + (else (slib:error "key type not supported by base tables:" + (car column-type-list))))) + ((base:supported-type? (car column-type-list))) + (else (slib:error "type not supported by base tables:" + (car column-type-list)))))) + (set! base-table + (base:open-table lldb (row-ref cat:row catalog:bastab-id-pos) + primary-limit column-type-list)) + (set! base:get ((basic 'make-getter) primary-limit column-type-list)) + (set! list->key + ((basic 'make-list-keyifier) primary-limit column-type-list)) + (set! key->list + ((basic 'make-key->list) primary-limit column-type-list)) + (letrec ((export-method + (lambda (name proc) + (set! export-alist + (cons (cons name proc) export-alist)))) + (ckey:retrieve ;ckey gets whole row (assumes exists) + (if (= primary-limit column-limit) key->list + (lambda (ckey) (append (key->list ckey) + (base:get base-table ckey))))) + (accumulate-over-table + (lambda (operation) + (lambda mkeys (base:map-primary-key + base-table operation primary-limit column-type-list - (norm-mkeys mkeys)))))) - (else - (case (car args) - ((get) (lambda keys - (let ((row (base:get base-table - (list->key keys)))) - (and row (list-ref row index))))) - ((get*) (lambda mkeys + (norm-mkeys mkeys))))) + (norm-mkeys + (lambda (mkeys) + (define mlim (length mkeys)) + (cond ((> mlim primary-limit) + (slib:error "too many keys:" mkeys)) + ((= mlim primary-limit) mkeys) + (else + (append mkeys + (do ((k (- primary-limit mlim) (+ -1 k)) + (result '() (cons #f result))) + ((<= k 0) result)))))))) + (export-method + 'row:retrieve + (if (= primary-limit column-limit) + (lambda keys + (let ((ckey (list->key keys))) + (and (present? base-table ckey) keys))) + (lambda keys + (let ((vals (base:get base-table (list->key keys)))) + (and vals (append keys vals)))))) + (export-method 'row:retrieve* + (accumulate-over-table + (if (= primary-limit column-limit) key->list + ckey:retrieve))) + (export-method + 'for-each-row + (let ((r (if (= primary-limit column-limit) key->list + ckey:retrieve))) + (lambda (proc . mkeys) + (base:for-each-primary-key + base-table (lambda (ckey) (proc (r ckey))) + primary-limit column-type-list + (norm-mkeys mkeys))))) + (and base:ordered-for-each-key + (export-method + 'for-each-row-in-order + (let ((r (if (= primary-limit column-limit) key->list + ckey:retrieve))) + (lambda (proc . mkeys) + (base:ordered-for-each-key + base-table (lambda (ckey) (proc (r ckey))) + primary-limit column-type-list + (norm-mkeys mkeys)))))) + (cond + ((and mutable writable) + (letrec + ((combine-primary-keys + (cond + ((and (= primary-limit column-limit) + (> primary-limit 0)) + list->key) + ((eq? list->key car) list->key) + (else + (case primary-limit + ((1) (let ((keyify-1 ((base 'make-keyifier-1) + (car column-type-list)))) + (lambda (row) (keyify-1 (car row))))) + ((2) (lambda (row) + (list->key (list (car row) (cadr row))))) + ((3) (lambda (row) + (list->key (list (car row) (cadr row) + (caddr row))))) + (else (lambda (row) + (do ((rw row (cdr rw)) + (nrw '() (cons (car rw) nrw)) + (pl (+ -1 primary-limit) (+ -1 pl))) + ((negative? pl) + (list->key (reverse nrw)))))))))) + (uir (row-eval cat:row catalog:integrity-rule-pos)) + (check-rules + (lambda (row) + (if (= column-limit (length row)) #t + (slib:error "bad row length:" row)) + (for-each + (lambda (cir dir value column-name column-domain + foreign) + (cond + ((and dir (not (dir value))) + (slib:error "violated domain integrity rule:" + table-name column-name + column-domain value)) + ((and cir (not (cir value))) + (slib:error "violated column integrity rule:" + table-name column-name value)) + ((and foreign (not (foreign value))) + (slib:error "foreign key missing:" + table-name column-name value)))) + cirs dirs row column-name-alist column-domain-list + column-foreign-check-list) + (cond ((and uir (not (uir row))) + (slib:error "violated user integrity rule:" + row))))) + (putter + ((basic 'make-putter) primary-limit column-type-list)) + (row:insert + (lambda (row) + (check-rules row) + (let ((ckey (combine-primary-keys row))) + (if (present? base-table ckey) + (slib:error 'row:insert "row present:" row)) + (putter base-table ckey + (list-tail row primary-limit))))) + (row:update + (lambda (row) + (check-rules row) + (putter base-table (combine-primary-keys row) + (list-tail row primary-limit))))) + + (export-method 'row:insert row:insert) + (export-method 'row:insert* + (lambda (rows) (for-each row:insert rows))) + (export-method 'row:update row:update) + (export-method 'row:update* + (lambda (rows) (for-each row:update rows)))) + + (letrec ((base:delete (basic 'delete)) + (base:delete* (basic 'delete*)) + (ckey:remove (lambda (ckey) + (let ((r (ckey:retrieve ckey))) + (and r (base:delete base-table ckey)) + r)))) + (export-method 'row:remove + (lambda keys + (let ((ckey (list->key keys))) + (and (present? base-table ckey) + (ckey:remove ckey))))) + (export-method 'row:delete + (lambda keys + (base:delete base-table (list->key keys)))) + (export-method 'row:remove* + (accumulate-over-table ckey:remove)) + (export-method 'row:delete* + (lambda mkeys + (base:delete* base-table + primary-limit column-type-list + (norm-mkeys mkeys)))) + (export-method 'close-table + (lambda () (set! base-table #f) + (set! desc-table #f) + (set! export-alist #f)))))) + + (export-method 'column-names (map car column-name-alist)) + (export-method 'column-foreigns column-foreign-list) + (export-method 'column-domains column-domain-list) + (export-method 'column-types column-type-list) + (export-method 'primary-limit primary-limit) + + (let ((translate-column + (lambda (column) + (let ((colp (assq column column-name-alist))) + (cond (colp (cdr colp)) + ((and (integer? column) + (<= 1 column column-limit)) + column) + (else (slib:error "column not in table:" + column table-name))))))) + (lambda args + (cond + ((null? args) #f) + ((and base:make-nexter (eq? 'isam-next (car args))) + (base:make-nexter + base-table primary-limit column-type-list + (if (null? (cdr args)) + primary-limit + (translate-column (cadr args))))) + ((and base:make-prever (eq? 'isam-prev (car args))) + (base:make-prever + base-table primary-limit column-type-list + (if (null? (cdr args)) + primary-limit + (translate-column (cadr args))))) + ((null? (cdr args)) + (let ((pp (assq (car args) export-alist))) + (and pp (cdr pp)))) + ((not (null? (cddr args))) + (slib:error "too many arguments to methods:" args)) + (else + (let ((ci (translate-column (cadr args)))) + (cond + ((<= ci primary-limit) ;primary-key? + (case (car args) + ((get) (lambda gkeys + (and (present? base-table (list->key gkeys)) + (list-ref gkeys (+ -1 ci))))) + ((get*) (let ((key-extractor + ((base 'make-key-extractor) + primary-limit column-type-list ci))) + (lambda mkeys (base:map-primary-key base-table - (lambda (ckey) - (list-ref (base:get base-table ckey) - index)) + key-extractor primary-limit column-type-list - (norm-mkeys mkeys)))) - (else #f))))))))))))))) + (norm-mkeys mkeys))))) + (else #f))) + (else + (let ((index (- ci (+ primary-limit 1))) + (get-1 (base 'make-getter-1))) + (cond + (get-1 + (set! get-1 + (get-1 primary-limit column-type-list ci)) + (case (car args) + ((get) (lambda keys + (get-1 base-table (list->key keys)))) + ((get*) (lambda mkeys + (base:map-primary-key + base-table + (lambda (ckey) (get-1 base-table ckey)) + primary-limit column-type-list + (norm-mkeys mkeys)))))) + (else + (case (car args) + ((get) (lambda keys + (let ((row (base:get base-table + (list->key keys)))) + (and row (list-ref row index))))) + ((get*) (lambda mkeys + (base:map-primary-key + base-table + (lambda (ckey) + (list-ref (base:get base-table ckey) + index)) + primary-limit column-type-list + (norm-mkeys mkeys)))) + (else #f))))))))))))))))) (define create-table (and diff --git a/require.scm b/require.scm index 613038e..a659019 100644 --- a/require.scm +++ b/require.scm @@ -17,7 +17,7 @@ ;promotional, or sales literature without prior written consent in ;each case. ;@ -(define *slib-version* "3a5") +(define *slib-version* "3b1") ;;;; MODULES ;@ @@ -190,8 +190,9 @@ (if (and n (exact? n)) (slib:provide 'bignum))) (cond - ((slib:provided? 'srfi) + ((slib:provided? 'srfi-0) (slib:provide 'srfi-59) + (slib:provide 'srfi-96) (do ((idx 0 (+ 1 idx)) (srfis (symbol->string 'srfi-))) ((> idx 150)) diff --git a/resenecolours.txt b/resenecolours.txt index 702e987..df2f391 100644 --- a/resenecolours.txt +++ b/resenecolours.txt @@ -2,7 +2,7 @@ "For further information refer to http://www.resene.co.nz" "Copyright Resene Paints Ltd 2001" -"Permission to copy this dictionary, to modify it, to redistribute it," +"Permission to copy this software, to modify it, to redistribute it," "to distribute modified versions, and to use it for any purpose is" "granted, subject to the following restrictions and understandings." @@ -14,1397 +14,1393 @@ "distribution." "3. Resene Paints Ltd makes no warranty or representation that this" -"dictionary is error-free, and is under no obligation to provide any" -"services, by way of maintenance, update, or otherwise." +"dictionary is error-free, and is under no obligation to provide" +"any services, by way of maintenance, update, or otherwise." -"4. There shall be no use of the name of Resene or Resene Paints Ltd" -"in any advertising, promotional, or sales literature without prior" +"4. There shall be no use of the name of Resene or Resene Paints Ltd in" +"any advertising, promotional, or sales literature without prior" "written consent in each case." "5. These RGB colour formulations may not be used to the detriment of" "Resene Paints Ltd." "Colour Name" "R" "G" "B" -"Abbey" 76 79 86 -"Acadia" 27 20 4 -"Acapulco" 124 176 161 -"Acorn" 106 93 27 -"Aero Blue" 201 255 229 -"Affair" 113 70 147 -"Afghan Tan" 134 86 10 -"Akaroa" 212 196 168 -"Alabaster" 255 255 255 -"Albescent White" 245 233 211 -"Alert Tan" 155 71 3 -"Allports" 0 118 163 -"Almond Frost" 144 123 113 -"Alpine" 175 143 44 -"Alto" 219 219 219 -"Aluminium" 169 172 182 -"Amazon" 59 122 87 -"Americano" 135 117 110 -"Amethyst Smoke" 163 151 180 -"Amour" 249 234 243 -"Amulet" 123 159 128 -"Anakiwa" 157 229 255 -"Antique Brass" 112 74 7 -"Anzac" 224 182 70 -"Apache" 223 190 111 -"Apple" 79 168 61 -"Apple Blossom" 175 77 67 -"Apple Green" 226 243 236 -"Apricot" 235 147 115 -"Apricot White" 255 254 236 -"Aqua" 161 218 215 -"Aqua Haze" 237 245 245 -"Aqua Spring" 234 249 245 -"Aqua Squeeze" 232 245 242 -"Aquamarine" 1 75 67 -"Arapawa" 17 12 108 -"Armadillo" 67 62 55 -"Arrowtown" 148 135 113 -"Ash" 198 195 181 -"Ash Brown" 46 25 5 -"Asphalt" 19 10 6 -"Astra" 250 234 185 -"Astral" 50 125 160 -"Astronaut" 40 58 119 -"Astronaut Blue" 1 62 98 -"Athens Grey" 238 240 243 -"Aths Special" 236 235 206 -"Atlantis" 151 205 45 -"Atoll" 10 111 117 -"Atomic" 49 68 89 -"Au Chico" 151 96 93 -"Aubergine" 59 9 16 -"Australian Mint" 245 255 190 -"Avocado" 136 141 101 -"Axolotl" 78 102 73 -"Azalea" 247 200 218 -"Aztec" 13 28 25 -"Azure" 49 91 161 -"Bahama Blue" 2 99 149 -"Bahia" 165 203 12 -"Baja White" 255 248 209 -"Bali Hai" 133 159 175 -"Baltic Sea" 42 38 48 -"Bamboo" 218 99 4 -"Bandicoot" 133 132 112 -"Banjul" 19 10 6 -"Barberry" 222 215 23 -"Barley Corn" 166 139 91 -"Barley White" 255 244 206 -"Barossa" 68 1 45 -"Bastille" 41 33 48 -"Battleship Grey" 130 143 114 -"Bay Leaf" 125 169 141 -"Bay of Many" 39 58 129 -"Bazaar" 152 119 123 -"Bean " 61 12 2 -"Beauty Bush" 238 193 190 -"Beeswax" 254 242 199 -"Bermuda" 125 216 198 -"Bermuda Grey" 107 139 162 -"Beryl Green" 222 229 192 -"Bianca" 252 251 243 -"Big Stone" 22 42 64 -"Bilbao" 50 124 20 -"Biloba Flower" 178 161 234 -"Birch" 55 48 33 -"Bird Flower" 212 205 22 -"Biscay" 27 49 98 -"Bismark" 73 113 131 -"Bison Hide" 193 183 164 -"Bitter" 134 137 116 -"Bitter Lemon" 202 224 13 -"Bizarre" 238 222 218 -"Black Bean" 8 25 16 -"Black Forest" 11 19 4 -"Black Haze" 246 247 247 -"Black Magic" 37 23 6 -"Black Marlin" 62 44 28 -"Black Pearl" 4 19 34 -"Black Pepper" 14 14 24 -"Black Rock" 13 3 50 -"Black Rose" 103 3 45 -"Black Russian" 10 0 28 -"Black Squeeze" 242 250 250 -"Black White" 255 254 246 -"Blackberry" 77 1 53 -"Blackcurrant" 50 41 58 -"Blackwood" 38 17 5 -"Blanc" 245 233 211 -"Bleach White" 254 243 216 -"Bleached Cedar" 44 33 51 -"Blossom" 220 180 188 -"Blue Bark" 4 19 34 -"Blue Bayoux" 73 102 121 -"Blue Bell" 34 8 120 -"Blue Chalk" 241 233 255 -"Blue Charcoal" 1 13 26 -"Blue Chill" 12 137 144 -"Blue Diamond" 56 4 116 -"Blue Dianne" 32 72 82 -"Blue Gem" 44 14 140 -"Blue Haze" 191 190 216 -"Blue Lagoon" 1 121 135 -"Blue Marguerite" 118 102 198 -"Blue Romance" 210 246 222 -"Blue Smoke" 116 136 129 -"Blue Stone" 1 97 98 -"Blue Whale" 4 46 76 -"Blue Zodiac" 19 38 77 -"Blumine" 24 88 122 -"Blush" 180 70 104 -"Bokara Grey" 28 18 8 -"Bombay" 175 177 184 -"Bon Jour" 229 224 225 -"Bondi Blue" 2 71 142 -"Bone" 228 209 192 -"Bordeaux" 92 1 32 -"Bossanova" 78 42 90 -"Boston Blue" 59 145 180 -"Botticelli" 199 221 229 -"Bottle Green" 9 54 36 -"Boulder" 122 122 122 -"Bouquet" 174 128 158 -"Bourbon" 186 111 30 -"Bracken" 74 42 4 -"Brandy" 222 193 150 -"Brandy Punch" 205 132 41 -"Brandy Rose" 187 137 131 -"Brazil" 136 98 33 -"Breaker Bay" 93 161 159 -"Bridal Heath" 255 250 244 -"Bridesmaid" 254 240 236 -"Bright Grey" 60 65 81 -"Bright Red" 177 0 0 -"Bright Sun" 254 211 60 -"Bronco" 171 161 150 -"Bronze" 63 33 9 -"Bronze Olive" 78 66 12 -"Bronzetone" 77 64 15 -"Broom" 255 236 19 -"Brown Bramble" 89 40 4 -"Brown Derby" 73 38 21 -"Brown Pod" 64 24 1 -"Bubbles" 231 254 255 -"Buccaneer" 98 47 48 -"Bud" 168 174 156 -"Buddha Gold" 193 160 4 -"Bulgarian Rose" 72 6 7 -"Bull Shot" 134 77 30 -"Bunker" 13 17 23 -"Bunting" 21 31 76 -"Burgundy" 119 15 5 -"Burnham" 0 46 32 -"Burning Sand" 217 147 118 -"Burnt Crimson" 101 0 11 -"Bush" 13 46 28 -"Buttercup" 243 173 22 -"Buttered Rum" 161 117 13 -"Butterfly Bush" 98 78 154 -"Buttermilk" 255 241 181 -"Buttery White" 255 252 234 -"Cab Sav" 77 10 24 -"Cabaret" 217 73 114 -"Cabbage Pont" 63 76 58 -"Cactus" 88 113 86 -"Cadillac" 176 76 106 -"Cafe Royale" 111 68 12 -"Calico" 224 192 149 -"California" 254 157 4 -"Calypso" 49 114 141 -"Camarone" 0 88 26 -"Camelot" 137 52 86 -"Cameo" 217 185 155 -"Camouflage" 60 57 16 -"Can Can" 213 145 164 -"Canary" 243 251 98 -"Candlelight" 252 217 23 -"Cannon Black" 37 23 6 -"Cannon Pink" 137 67 103 -"Canvas" 168 165 137 -"Cape Cod" 60 68 67 -"Cape Honey" 254 229 172 -"Cape Palliser" 162 102 69 -"Caper" 220 237 180 -"Capri" 6 42 120 -"Caramel" 255 221 175 -"Cararra" 238 238 232 -"Cardin Green" 1 54 28 -"Cardinal" 140 5 94 -"Careys Pink" 210 158 170 -"Carissma" 234 136 168 -"Carla" 243 255 216 -"Carnaby Tan" 92 46 1 -"Carousel Pink" 249 224 237 -"Casablanca" 248 184 83 -"Casal" 47 97 104 -"Cascade" 139 169 165 -"Cashmere" 230 190 165 -"Casper" 173 190 209 -"Castro" 82 0 31 -"Catalina Blue" 6 42 120 -"Catskill White" 238 246 247 -"Cavern Pink" 227 190 190 -"Ce Soir" 151 113 181 -"Cedar" 62 28 20 -"Cedar Wood Finish" 113 26 0 -"Celery" 184 194 93 -"Celeste" 209 210 202 -"Cello" 30 56 91 -"Celtic" 22 50 34 -"Cement" 141 118 98 -"Ceramic" 252 255 249 -"Chablis" 255 244 243 -"Chalet Green" 81 110 61 -"Chalky" 238 215 148 -"Chambray" 53 78 140 -"Chamois" 237 220 177 -"Champagne" 250 236 204 -"Chantilly" 248 195 223 -"Charade" 41 41 55 -"Chardon" 255 243 241 -"Chardonnay" 255 205 140 -"Charlotte" 186 238 249 -"Charm" 212 116 148 -"Chateau Green" 64 168 96 -"Chatelle" 189 179 199 -"Chathams Blue" 23 85 121 -"Chelsea Cucumber" 131 170 93 -"Chelsea Gem" 158 83 2 -"Chenin" 223 205 111 -"Cherokee" 252 218 152 -"Cherry Pie" 42 3 89 -"Cherrywood" 101 26 20 -"Cherub" 248 217 233 -"Chetwode Blue" 133 129 217 -"Chicago" 93 92 88 -"Chiffon" 241 255 200 -"Chilean Fire" 247 119 3 -"Chilean Heath" 255 253 230 -"China Ivory" 252 255 231 -"Chino" 206 199 167 -"Chinook" 168 227 189 -"Chocolate" 55 2 2 -"Christalle" 51 3 107 -"Christi" 103 167 18 -"Christine" 231 115 10 -"Chrome White" 232 241 212 -"Cigar" 119 63 26 -"Cinder" 14 14 24 -"Cinderella" 253 225 220 -"Cinnamon" 123 63 0 -"Cioccolato" 85 40 12 -"Citrine White" 250 247 214 -"Citron" 158 169 31 -"Citrus" 161 197 10 -"Clairvoyant" 72 6 86 -"Clam Shell" 212 182 175 -"Claret" 127 23 52 -"Classic Rose" 251 204 231 -"Clay Creek" 138 131 96 -"Clear Day" 233 255 253 -"Clementine" 233 110 0 -"Clinker" 55 29 9 -"Cloud" 199 196 191 -"Cloud Burst" 32 46 84 -"Cloudy" 172 165 159 -"Clover" 56 73 16 -"Cobalt" 6 42 120 -"Cocoa Bean" 72 28 28 -"Cocoa Brown" 48 31 30 -"Coconut Cream" 248 247 220 -"Cod Grey" 11 11 11 -"Coffee" 112 101 85 -"Coffee Bean" 42 20 14 -"Cognac" 159 56 29 -"Cola" 63 37 0 -"Cold Purple" 171 160 217 -"Cold Turkey" 206 186 186 -"Colonial White" 255 237 188 -"Comet" 92 93 117 -"Como" 81 124 102 -"Conch" 201 217 210 -"Concord" 124 123 122 -"Concrete" 242 242 242 -"Confetti" 233 215 90 -"Congo Brown" 89 55 55 -"Conifer" 172 221 77 -"Contessa" 198 114 107 -"Copper Canyon" 126 58 21 -"Copper Rust" 148 71 71 -"Coral" 199 188 162 -"Coral Candy" 255 220 214 -"Coral Tree" 168 107 107 -"Corduroy" 96 110 104 -"Coriander" 196 208 176 -"Cork" 64 41 29 -"Corn" 231 191 5 -"Corn Field" 248 250 205 -"Corn Harvest" 139 107 11 -"Cornflower" 255 176 172 -"Corvette" 250 211 162 -"Cosmic" 118 57 93 -"Cosmos" 255 216 217 -"Costa Del Sol" 97 93 48 -"Cotton Seed" 194 189 182 -"County Green" 1 55 26 -"Cove Grey" 5 22 87 -"Cowboy" 77 40 45 -"Crab Apple" 160 39 18 -"Crail" 185 81 64 -"Cranberry" 182 49 108 -"Crater Brown" 70 36 37 -"Cream Brulee" 255 229 160 -"Cream Can" 245 200 92 -"Creme De Banane" 255 252 153 -"Creole" 30 15 4 -"Crete" 115 120 41 -"Crocodile" 115 109 88 -"Crown of Thorns" 119 31 31 -"Crowshead" 28 18 8 -"Cruise" 181 236 223 -"Crusoe" 0 72 22 -"Crusta" 253 123 51 -"Cuban Tan" 42 20 14 -"Cumin" 146 67 33 -"Cumulus" 253 255 213 -"Cupid" 251 190 218 -"Curious Blue" 37 150 209 -"Cutty Sark" 80 118 114 -"Cyprus" 0 62 64 -"Daintree" 1 39 49 -"Dairy Cream" 249 228 188 -"Daisy Bush" 79 35 152 -"Dallas" 110 75 38 -"Danube" 96 147 209 -"Dark Ebony" 60 32 5 -"Dark Oak" 97 39 24 -"Dark Rimu" 95 61 38 -"Dark Rum" 65 32 16 -"Dark Slate" 57 72 81 -"Dark Tan" 102 16 16 -"Dawn" 166 162 154 -"Dawn Pink" 243 233 229 -"De York" 122 196 136 -"Deco" 210 218 151 -"Deep Blush" 228 118 152 -"Deep Bronze" 74 48 4 -"Deep Cove" 5 16 64 -"Deep Fir" 0 41 0 -"Deep Koamaru" 27 18 123 -"Deep Oak" 65 32 16 -"Deep Sea" 1 130 107 -"Deep Teal" 0 53 50 -"Del Rio" 176 154 149 -"Dell" 57 100 19 -"Delta" 164 164 157 -"Deluge" 117 99 168 -"Derby" 255 238 216 -"Desert" 174 96 32 -"Desert Storm" 248 248 247 -"Dew" 234 255 254 -"Di Serria" 219 153 94 -"Diesel" 19 0 0 -"Dingley" 93 119 71 -"Disco" 135 21 80 -"Dixie" 226 148 24 -"Dolly" 249 255 139 -"Dolphin" 100 96 119 -"Domino" 142 119 94 -"Don Juan" 93 76 81 -"Donkey Brown" 166 146 121 -"Dorado" 107 87 85 -"Double Colonial White" 238 227 173 -"Double Pearl Lusta" 252 244 208 -"Double Spanish White" 230 215 185 -"Dove Grey" 109 108 108 -"Downriver" 9 34 86 -"Downy" 111 208 197 -"Driftwood" 175 135 81 -"Drover" 253 247 173 -"Dune" 56 53 51 -"Dust Storm" 229 204 201 -"Dusty Grey" 168 152 155 -"Dutch White" 255 248 209 -"Eagle" 182 186 164 -"Earls Green" 201 185 59 -"Early Dawn" 255 249 230 -"East Bay" 65 76 125 -"East Side" 172 145 206 -"Eastern Blue" 30 154 176 -"Ebb" 233 227 227 -"Ebony" 12 11 29 -"Ebony Clay" 38 40 59 -"Echo Blue" 175 189 217 -"Eclipse" 49 28 23 -"Ecru White" 245 243 229 -"Ecstasy" 250 120 20 -"Eden" 16 88 82 -"Edgewater" 200 227 215 -"Edward" 162 174 171 -"Egg Sour" 255 244 221 -"Egg White" 255 239 193 -"El Paso" 30 23 8 -"El Salva" 143 62 51 -"Elephant" 18 52 71 -"Elf Green" 8 131 112 -"Elm" 28 124 125 -"Embers" 160 39 18 -"Eminence" 108 48 130 -"Emperor" 81 70 73 -"Empress" 129 115 119 -"Endeavour" 0 86 167 -"Energy Yellow" 248 221 92 -"English Holly" 2 45 21 -"English Walnut" 62 43 35 -"Envy" 139 166 144 -"Equator" 225 188 100 -"Espresso" 97 39 24 -"Eternity" 33 26 14 -"Eucalyptus" 39 138 91 -"Eunry" 207 163 157 -"Evening Sea" 2 78 70 -"Everglade" 28 64 46 -"Fair Pink" 255 239 236 -"Falcon" 127 98 109 -"Fantasy" 250 243 240 -"Fedora" 121 106 120 -"Feijoa" 159 221 140 -"Fern" 10 72 13 -"Fern Frond" 101 114 32 -"Ferra" 112 79 80 -"Festival" 251 233 108 -"Feta" 240 252 234 -"Fiery Orange" 179 82 19 -"Fiji Green" 101 114 32 -"Finch" 98 102 73 -"Finlandia" 85 109 86 -"Finn" 105 45 84 -"Fiord" 64 81 105 -"Fire" 170 66 3 -"Fire Bush" 232 153 40 -"Firefly" 14 42 48 -"Flame Pea" 218 91 56 -"Flame Red" 199 3 30 -"Flamenco" 255 125 7 -"Flamingo" 242 85 42 -"Flax" 123 130 101 -"Flint" 111 106 97 -"Flirt" 162 0 109 -"Foam" 216 252 250 -"Fog" 215 208 255 -"Foggy Grey" 203 202 182 -"Forest Green" 24 45 9 -"Forget Me Not" 255 241 238 -"Fountain Blue" 86 180 190 -"Frangipani" 255 222 179 -"French Grey" 189 189 198 -"French Lilac" 236 199 238 -"French Pass" 189 237 253 -"Friar Grey" 128 126 121 -"Fringy Flower" 177 226 193 -"Froly" 245 117 132 -"Frost" 237 245 221 -"Frosted Mint" 219 255 248 -"Frostee" 228 246 231 -"Fruit Salad" 79 157 93 -"Fuchsia" 122 88 193 -"Fuego" 190 222 13 -"Fuel Yellow" 236 169 39 -"Fun Blue" 25 89 168 -"Fun Green" 1 109 57 -"Fuscous Grey" 84 83 77 -"Gable Green" 22 53 49 -"Gallery" 239 239 239 -"Galliano" 220 178 12 -"Geebung" 209 143 27 -"Genoa" 21 115 107 -"Geraldine" 251 137 137 -"Geyser" 212 223 226 -"Ghost" 199 201 213 -"Gigas" 82 60 148 -"Gimblet" 184 181 106 -"Gin" 232 242 235 -"Gin Fizz" 255 249 226 -"Givry" 248 228 191 -"Glacier" 128 179 196 -"Glade Green" 97 132 95 -"Go Ben" 114 109 78 -"Goblin" 61 125 82 -"Gold Drop" 241 130 0 -"Gold Tips" 222 186 19 -"Golden Bell" 226 137 19 -"Golden Dream" 240 213 45 -"Golden Fizz" 245 251 61 -"Golden Glow" 253 226 149 -"Golden Sand" 240 219 125 -"Golden Tainoi" 255 204 92 -"Gondola" 38 20 20 -"Gordons Green" 11 17 7 -"Gorse" 255 241 79 -"Gossamer" 6 155 129 -"Gossip" 210 248 176 -"Gothic" 109 146 161 -"Governor Bay" 47 60 179 -"Grain Brown" 228 213 183 -"Grandis" 255 211 140 -"Granite Green" 141 137 116 -"Granny Apple" 213 246 227 -"Granny Smith" 132 160 160 -"Grape" 56 26 81 -"Graphite" 37 22 7 -"Grass Hopper" 124 118 49 -"Gravel" 74 68 75 -"Green House" 36 80 15 -"Green Kelp" 37 49 28 -"Green Leaf" 67 106 13 -"Green Mist" 203 211 176 -"Green Pea" 29 97 66 -"Green Smoke" 164 175 110 -"Green Spring" 184 193 177 -"Green Vogue" 3 43 82 -"Green Waterloo" 16 20 5 -"Green White" 232 235 224 -"Greenstone" 0 62 64 -"Grenadier" 213 70 0 -"Grey Chateau" 162 170 179 -"Grey Green" 69 73 54 -"Grey Nickel" 195 195 189 -"Grey Nurse" 231 236 230 -"Grey Olive" 169 164 145 -"Grey Suit" 193 190 205 -"Guardsman Red" 186 1 1 -"Gulf Blue" 5 22 87 -"Gulf Stream" 128 179 174 -"Gull Grey" 157 172 183 -"Gum Leaf" 182 211 191 -"Gumbo" 124 161 166 -"Gun Powder" 65 66 87 -"Gunmetal" 2 13 21 -"Gunsmoke" 130 134 133 -"Gurkha" 154 149 119 -"Hacienda" 152 129 27 -"Hairy Heath" 107 42 20 -"Haiti" 27 16 53 -"Half and Half" 255 254 225 -"Half Baked" 133 196 204 -"Half Colonial White" 253 246 211 -"Half Dutch White" 254 247 222 -"Half Pearl Lusta" 255 252 234 -"Half Spanish White" 254 244 219 -"Hampton" 229 216 175 -"Harp" 230 242 234 -"Harvest Gold" 224 185 116 -"Havana" 52 21 21 -"Havelock Blue" 85 144 217 -"Hawaiian Tan" 157 86 22 -"Hawkes Blue" 212 226 252 -"Heath" 84 16 18 -"Heather" 183 195 208 -"Heathered Grey" 182 176 149 -"Heavy Metal" 43 50 40 -"Hemlock" 94 93 59 -"Hemp" 144 120 116 -"Hibiscus" 182 49 108 -"Highball" 144 141 57 -"Highland" 111 142 99 -"Hillary" 172 165 134 -"Himalaya" 106 93 27 -"Hint of Green" 230 255 233 -"Hint of Grey" 252 255 249 -"Hint of Red" 249 249 249 -"Hint of Yellow" 250 253 228 -"Hippie Blue" 88 154 175 -"Hippie Green" 83 130 75 -"Hippie Pink" 174 69 96 -"Hit Grey" 161 173 181 -"Hit Pink" 255 171 129 -"Hokey Pokey" 200 165 40 -"Hoki" 101 134 159 -"Holly" 1 29 19 -"Honey Flower" 79 28 112 -"Honeysuckle" 237 252 132 -"Hopbush" 208 109 161 -"Horizon" 90 135 160 -"Horses Neck" 96 73 19 -"Hot Chile" 139 7 35 -"Hot Curry" 136 98 33 -"Hot Purple" 72 6 86 -"Hot Toddy" 179 128 7 -"Humming Bird" 207 249 243 -"Hunter Green" 22 29 16 -"Hurricane" 135 124 123 -"Husk" 183 164 88 -"Ice Cold" 177 244 231 -"Iceberg" 218 244 240 -"Illusion" 246 164 201 -"Indian Tan" 77 30 1 -"Indochine" 194 107 3 -"Irish Coffee" 95 61 38 -"Iroko" 67 49 32 -"Iron" 212 215 217 -"Ironbark" 65 31 16 -"Ironside Grey" 103 102 98 -"Ironstone" 134 72 60 -"Island Spice" 255 252 238 -"Jacaranda" 46 3 41 -"Jacarta" 58 42 106 -"Jacko Bean" 46 25 5 -"Jacksons Purple" 32 32 141 -"Jade" 66 121 119 -"Jaffa" 239 134 63 -"Jagged Ice" 194 232 229 -"Jagger" 53 14 87 -"Jaguar" 8 1 16 -"Jambalaya" 91 48 19 -"Janna" 244 235 211 -"Japanese Laurel" 10 105 6 -"Japanese Maple" 120 1 9 -"Japonica" 216 124 99 -"Jarrah" 52 21 21 -"Java" 31 194 194 -"Jazz" 120 1 9 -"Jelly Bean" 41 123 154 -"Jet Stream" 181 210 206 -"Jewel" 18 107 64 -"Joanna" 245 243 229 -"Jon" 59 31 31 -"Jonquil" 238 255 154 -"Jordy Blue" 138 185 241 -"Judge Grey" 84 67 51 -"Jumbo" 124 123 130 -"Jungle Green" 40 30 21 -"Jungle Mist" 180 207 211 -"Juniper" 109 146 146 -"Just Right" 236 205 185 -"Kabul" 94 72 62 -"Kaitoke Green" 0 70 32 -"Kangaroo" 198 200 189 -"Karaka" 30 22 9 -"Karry" 255 234 212 -"Kashmir Blue" 80 112 150 -"Kelp" 69 73 54 -"Kenyan Copper" 124 28 5 -"Keppel" 58 176 158 -"Kidnapper" 225 234 212 -"Kilamanjaro" 36 12 2 -"Killarney" 58 106 71 -"Kimberly" 115 108 159 -"Kingfisher Daisy" 62 4 128 -"Kobi" 231 159 196 -"Kokoda" 110 109 87 -"Korma" 143 75 14 -"Koromiko" 255 189 95 -"Kournikova" 255 231 114 -"Kumera" 136 98 33 -"La Palma" 54 135 22 -"La Rioja" 179 193 16 -"Las Palmas" 198 230 16 -"Laser" 200 181 104 -"Laurel" 116 147 120 -"Lavender" 168 153 230 -"Leather" 150 112 89 -"Lemon" 244 216 28 -"Lemon Ginger" 172 158 34 -"Lemon Grass" 155 158 143 -"Licorice" 9 34 86 -"Lightning Yellow" 252 192 30 -"Lilac Bush" 152 116 211 -"Lily" 200 170 191 -"Lily White" 231 248 255 -"Lima" 118 189 23 -"Lime" 191 201 33 -"Limeade" 111 157 2 -"Limed Ash" 116 125 99 -"Limed Gum" 66 57 33 -"Limed Oak" 172 138 86 -"Limed Spruce" 57 72 81 -"Limerick" 157 194 9 -"Linen" 230 228 212 -"Link Water" 217 228 245 -"Lipstick" 171 5 99 -"Lisbon Brown" 66 57 33 -"Livid Brown" 77 40 46 -"Loafer" 238 244 222 -"Loblolly" 189 201 206 -"Lochinvar" 44 140 132 -"Lochmara" 0 126 199 -"Locust" 168 175 142 -"Log Cabin" 36 42 29 -"Logan" 170 169 205 -"Lola" 223 207 219 -"London Hue" 190 166 195 -"Lonestar" 109 1 1 -"Lotus" 134 60 60 -"Loulou" 70 11 65 -"Lucky" 175 159 28 -"Lucky Point" 26 26 104 -"Lunar Green" 60 73 58 -"Lusty" 153 27 7 -"Luxor Gold" 167 136 44 -"Lynch" 105 126 154 -"Mabel" 217 247 255 -"Madang" 183 240 190 -"Madison" 9 37 93 -"Madras" 63 48 2 -"Magnolia" 248 244 255 -"Mahogany" 78 6 6 -"Mai Tai" 176 102 8 -"Maire" 19 10 6 -"Maize" 245 213 160 -"Makara" 137 125 109 -"Mako" 68 73 84 -"Malachite Green" 136 141 101 -"Malibu" 125 200 247 -"Mallard" 35 52 24 -"Malta" 189 178 161 -"Mamba" 142 129 144 -"Mandalay" 173 120 27 -"Mandy" 226 84 101 -"Mandys Pink" 242 195 178 -"Manhattan" 245 201 153 -"Mantis" 116 195 101 -"Mantle" 139 156 144 -"Manz" 238 239 120 -"Mardi Gras" 53 0 54 -"Marigold" 185 141 40 -"Mariner" 40 106 205 -"Marlin" 42 20 14 -"Maroon" 66 3 3 -"Marshland" 11 15 8 -"Martini" 175 160 158 -"Martinique" 54 48 80 -"Marzipan" 248 219 157 -"Masala" 64 59 56 -"Mash" 64 41 29 -"Matisse" 27 101 157 -"Matrix" 176 93 84 -"Matterhorn" 78 59 65 -"Maverick" 216 194 213 -"McKenzie" 175 135 81 -"Melanie" 228 194 213 -"Melanzane" 48 5 41 -"Melrose" 199 193 255 -"Meranti" 93 30 15 -"Mercury" 229 229 229 -"Merino" 246 240 230 -"Merlin" 65 60 55 -"Merlot" 131 25 35 -"Metallic Bronze" 73 55 27 -"Metallic Copper" 113 41 29 -"Meteor" 208 125 18 -"Meteorite" 60 31 118 -"Mexican Red" 167 37 37 -"Mid Grey" 95 95 110 -"Midnight" 1 22 53 -"Midnight Express" 0 7 65 -"Midnight Moss" 4 16 4 -"Mikado" 45 37 16 -"Milan" 250 255 164 -"Milano Red" 184 17 4 -"Milk Punch" 255 246 212 -"Milk White" 246 240 230 -"Millbrook" 89 68 51 -"Mimosa" 248 253 211 -"Mindaro" 227 249 136 -"Mine Shaft" 50 50 50 -"Mineral Green" 63 93 83 -"Ming" 54 116 125 -"Minsk" 63 48 127 -"Mint Julep" 241 238 193 -"Mint Tulip" 196 244 235 -"Mirage" 22 25 40 -"Mischka" 209 210 221 -"Mist Grey" 196 196 188 -"Mobster" 127 117 137 -"Moccaccino" 110 29 20 -"Mocha" 120 45 25 -"Mojo" 192 71 55 -"Mona Lisa" 255 161 148 -"Monarch" 139 7 35 -"Mondo" 74 60 48 -"Mongoose" 181 162 127 -"Monsoon" 138 131 137 -"Montana" 41 30 48 -"Monte Carlo" 131 208 198 -"Monza" 199 3 30 -"Moody Blue" 127 118 211 -"Moon Glow" 252 254 218 -"Moon Mist" 220 221 204 -"Moon Raker" 214 206 246 -"Moon Yellow" 252 217 23 -"Morning Glory" 158 222 224 -"Morocco Brown" 68 29 0 -"Mortar" 80 67 81 -"Mosaic" 18 52 71 -"Mosque" 3 106 110 -"Mountain Mist" 149 147 150 -"Muddy Waters" 183 142 92 -"Muesli" 170 139 91 -"Mulberry" 92 5 54 -"Mule Fawn" 140 71 47 -"Mulled Wine" 78 69 98 -"Mustard" 116 100 13 -"My Pink" 214 145 136 -"My Sin" 255 179 31 -"Mystic" 226 235 237 -"Nandor" 75 93 82 -"Napa" 172 164 148 -"Narvik" 237 249 241 -"Natural" 134 86 10 -"Nebula" 203 219 214 -"Negroni" 255 226 197 -"Nepal" 142 171 193 -"Neptune" 124 183 187 -"Nero" 20 6 0 -"Neutral Green" 172 165 134 -"Nevada" 100 110 117 -"New Amber" 123 56 1 -"New Orleans" 243 214 157 -"New York Pink" 215 131 127 -"Niagara" 6 161 137 -"Night Rider" 31 18 15 -"Night Shadz" 170 55 90 -"Nightclub" 102 0 69 -"Nile Blue" 25 55 81 -"Nobel" 183 177 177 -"Nomad" 186 177 162 -"Nordic" 1 39 49 -"Norway" 168 189 159 -"Nugget" 197 153 34 -"Nutmeg" 129 66 44 -"Nutmeg Wood Finish" 104 54 0 -"Oasis" 254 239 206 -"Observatory" 2 134 111 -"Ocean Green" 65 170 120 -"Off Green" 230 248 243 -"Off Yellow" 254 249 227 -"Oil" 40 30 21 -"Oiled Cedar" 124 28 5 -"Old Brick" 144 30 30 -"Old Copper" 114 74 47 -"Olive Green" 36 46 22 -"Olive Haze" 139 132 112 -"Olivetone" 113 110 16 -"Onahau" 205 244 255 -"Onion" 47 39 14 -"Opal" 169 198 194 -"Opium" 142 111 112 -"Oracle" 55 116 117 -"Orange Roughy" 196 87 25 -"Orange White" 254 252 237 -"Orchid White" 255 253 243 -"Oregon" 155 71 3 -"Orient" 1 94 133 -"Oriental Pink" 198 145 145 -"Orinoco" 243 251 212 -"Oslo Grey" 135 141 145 -"Ottoman" 233 248 237 -"Outer Space" 5 16 64 -"Oxford Blue" 56 69 85 -"Oxley" 119 158 134 -"Oyster Bay" 218 250 255 -"Oyster Pink" 233 206 205 -"Paarl" 166 85 41 -"Pablo" 119 111 97 -"Pacifika" 119 129 32 -"Paco" 65 31 16 -"Padua" 173 230 196 -"Pale Leaf" 192 211 185 -"Pale Oyster" 152 141 119 -"Pale Prim" 253 254 184 -"Pale Rose" 255 225 242 -"Pale Sky" 110 119 131 -"Pale Slate" 195 191 193 -"Palm Green" 9 35 15 -"Palm Leaf" 25 51 14 -"Pampas" 244 242 238 -"Panache" 234 246 238 -"Pancho" 237 205 171 -"Panda" 66 57 33 -"Paprika" 141 2 38 -"Paradiso" 49 125 130 -"Parchment" 241 233 210 -"Paris Daisy" 255 244 110 -"Paris M" 38 5 106 -"Paris White" 202 220 212 -"Parsley" 19 79 25 -"Patina" 99 154 143 -"Pattens Blue" 222 245 255 -"Paua" 38 3 104 -"Pavlova" 215 196 152 -"Pea Soup" 207 229 210 -"Peach" 255 240 219 -"Peach Schnapps" 255 220 214 -"Peanut" 120 47 22 -"Pearl Bush" 232 224 213 -"Pearl Lusta" 252 244 220 -"Peat" 113 107 86 -"Pelorous" 62 171 191 -"Peppermint" 227 245 225 -"Perano" 169 190 242 -"Perfume" 208 190 248 -"Periglacial Blue" 225 230 214 -"Persian Plum" 112 28 28 -"Persian Red" 82 12 23 -"Persimmon" 255 107 83 -"Peru Tan" 127 58 2 -"Pesto" 124 118 49 -"Petite Orchid" 219 150 144 -"Pewter" 150 168 161 -"Pharlap" 163 128 123 -"Picasso" 255 243 157 -"Pickled Aspen" 63 76 58 -"Pickled Bean" 110 72 38 -"Pickled Bluewood" 49 68 89 -"Picton Blue" 69 177 232 -"Pigeon Post" 175 189 217 -"Pine Cone" 109 94 84 -"Pine Glade" 199 205 144 -"Pine Tree" 23 31 4 -"Pink Flare" 225 192 200 -"Pink Lace" 255 221 244 -"Pink Lady" 255 241 216 -"Pink Swan" 190 181 183 -"Piper" 201 99 35 -"Pipi" 254 244 204 -"Pippin" 255 225 223 -"Pirate Gold" 186 127 3 -"Pistachio" 157 194 9 -"Pixie Green" 192 216 182 -"Pizazz" 255 144 0 -"Pizza" 201 148 21 -"Plantation" 39 80 75 -"Planter" 97 93 48 -"Plum" 65 0 86 -"Pohutukawa" 143 2 28 -"Polar" 229 249 246 -"Polo Blue" 141 168 204 -"Pompadour" 102 0 69 -"Porcelain" 239 242 243 -"Porsche" 234 174 105 -"Port Gore" 37 31 79 -"Portafino" 255 255 180 -"Portage" 139 159 238 -"Portica" 249 230 99 -"Pot Pourri" 245 231 226 -"Potters Clay" 140 87 56 -"Powder Blue" 188 201 194 -"Prairie Sand" 154 56 32 -"Prelude" 208 192 229 -"Prim" 240 226 236 -"Primrose" 237 234 153 -"Promenade" 252 255 231 -"Provincial Pink" 254 245 241 -"Prussian Blue" 0 49 83 -"Pueblo" 125 44 20 -"Puerto Rico" 63 193 170 -"Pumice" 194 202 196 -"Pumpkin" 177 97 11 -"Punch" 220 67 51 -"Punga" 77 61 20 -"Putty" 231 205 140 -"Quarter Pearl Lusta" 255 253 244 -"Quarter Spanish White" 247 242 225 -"Quicksand" 189 151 142 -"Quill Grey" 214 214 209 -"Quincy" 98 63 45 -"Racing Green" 12 25 17 -"Raffia" 234 218 184 -"Rain Forest" 119 129 32 -"Raincloud" 123 124 148 -"Rainee" 185 200 172 -"Rajah" 247 182 104 -"Rangitoto" 46 50 34 -"Rangoon Green" 28 30 19 -"Raven" 114 123 137 -"Rebel" 60 18 6 -"Red Beech" 123 56 1 -"Red Berry" 142 0 0 -"Red Damask" 218 106 65 -"Red Devil" 134 1 17 -"Red Oxide" 110 9 2 -"Red Robin" 128 52 31 -"Red Stage" 208 95 4 -"Redwood" 93 30 15 -"Reef" 201 255 162 -"Reef Gold" 159 130 28 -"Regal Blue" 1 63 106 -"Regent Grey" 134 148 159 -"Regent St Blue" 170 214 230 -"Remy" 254 235 243 -"Reno Sand" 168 101 21 -"Resolution Blue" 0 35 135 -"Revolver" 44 22 50 -"Rhino" 46 63 98 -"Ribbon" 102 0 69 -"Rice Cake" 255 254 240 -"Rice Flower" 238 255 226 -"Rich Gold" 168 83 7 -"Rio Grande" 187 208 9 -"Riptide" 139 230 216 -"River Bed" 67 76 89 -"Rob Roy" 234 198 116 -"Robins Egg Blue" 189 200 179 -"Rock" 77 56 51 -"Rock Blue" 158 177 205 -"Rock Salt" 255 255 255 -"Rock Spray" 186 69 12 -"Rodeo Dust" 201 178 155 -"Rolling Stone" 116 125 131 -"Roman" 222 99 96 -"Roman Coffee" 121 93 76 -"Romance" 255 254 253 -"Romantic" 255 210 183 -"Ronchi" 236 197 78 -"Roof Terracotta" 166 47 32 -"Rope" 142 77 30 -"Rose" 231 188 180 -"Rose Bud" 251 178 163 -"Rose Bud Cherry" 128 11 71 -"Rose of Sharon" 191 85 0 -"Rose White" 255 246 245 -"Rosewood" 101 0 11 -"Roti" 198 168 75 -"Rouge" 162 59 108 -"Royal Heath" 171 52 114 -"Rum" 121 105 137 -"Rum Swizzle" 249 248 228 -"Russett" 117 90 87 -"Rustic Red" 72 4 4 -"Rusty Nail" 134 86 10 -"Saddle" 76 48 36 -"Saddle Brown" 88 52 1 -"Saffron" 249 191 88 -"Sage" 158 165 135 -"Sahara" 183 162 20 -"Sail" 184 224 249 -"Salem" 9 127 75 -"Salomie" 254 219 141 -"Salt Box" 104 94 110 -"Saltpan" 241 247 242 -"Sambuca" 58 32 16 -"San Felix" 11 98 7 -"San Juan" 48 75 106 -"San Marino" 69 108 172 -"Sand Dune" 130 111 101 -"Sandal" 170 141 111 -"Sandrift" 171 145 122 -"Sandstone" 121 109 98 -"Sandwisp" 245 231 162 -"Sandy Beach" 255 234 200 -"Sangria" 146 0 10 -"Sanguine Brown" 141 61 56 -"Santa Fe" 177 109 82 -"Santas Grey" 159 160 177 -"Sapling" 222 212 164 -"Sapphire" 47 81 158 -"Saratoga" 85 91 16 -"Sauvignon" 255 245 243 -"Sazerac" 255 244 224 -"Scampi" 103 95 166 -"Scandal" 207 250 244 -"Scarlet Gum" 67 21 96 -"Scarlett" 149 0 21 -"Scarpa Flow" 88 85 98 -"Schist" 169 180 151 -"Schooner" 139 132 126 -"Scooter" 46 191 212 -"Scorpion" 105 95 98 -"Scotch Mist" 255 251 220 -"Scrub" 46 50 34 -"Sea Buckthorn" 251 161 41 -"Sea Fog" 252 255 249 -"Sea Green" 9 88 89 -"Sea Mist" 197 219 202 -"Sea Nymph" 120 163 156 -"Sea Pink" 237 152 158 -"Seagull" 128 204 234 -"Seance" 115 30 143 -"Seashell" 241 241 241 -"Seaweed" 27 47 17 -"Selago" 240 238 253 -"Sepia" 43 2 2 -"Serenade" 255 244 232 -"Shadow Green" 154 194 184 -"Shady Lady" 170 165 169 -"Shakespeare" 78 171 209 -"Shalimar" 251 255 186 -"Shark" 37 39 44 -"Sherpa Blue" 0 73 80 -"Sherwood Green" 2 64 44 -"Shilo" 232 185 179 -"Shingle Fawn" 107 78 49 -"Ship Cove" 120 139 186 -"Ship Grey" 62 58 68 -"Shiraz" 178 9 49 -"Shocking" 226 146 192 -"Shuttle Grey" 95 102 114 -"Siam" 100 106 84 -"Sidecar" 243 231 187 -"Silk" 189 177 168 -"Silver Chalice" 172 172 172 -"Silver Sand" 191 193 194 -"Silver Tree" 102 181 143 -"Sinbad" 159 215 211 -"Siren" 122 1 58 -"Sirocco" 113 128 128 -"Sisal" 211 203 186 -"Skeptic" 202 230 218 -"Slugger" 65 32 16 -"Smalt Blue" 81 128 143 -"Smoke Tree" 218 99 4 -"Smokey Ash" 65 60 55 -"Smoky" 96 91 115 -"Snow Drift" 247 250 247 -"Snow Flurry" 228 255 209 -"Snowy Mint" 214 255 219 -"Snuff" 226 216 237 -"Soapstone" 255 251 249 -"Soft Amber" 209 198 180 -"Soft Peach" 245 237 239 -"Solid Pink" 137 56 67 -"Solitaire" 254 248 226 -"Solitude" 234 246 255 -"Sorbus" 253 124 7 -"Sorrell Brown" 206 185 143 -"Sour Dough" 209 190 168 -"Soya Bean" 106 96 81 -"Space Shuttle" 67 49 32 -"Spanish Green" 129 152 133 -"Spanish White" 244 235 211 -"Spectra" 47 90 87 -"Spice" 106 68 46 -"Spicy Mix" 136 83 66 -"Spicy Pink" 129 110 113 -"Spindle" 182 209 234 -"Splash" 255 239 193 -"Spray" 121 222 236 -"Spring Green" 87 131 99 -"Spring Rain" 172 203 177 -"Spring Sun" 246 255 220 -"Spring Wood" 248 246 241 -"Sprout" 193 215 176 -"Spun Pearl" 170 171 183 -"Squirrel" 143 129 118 -"St Tropaz" 45 86 155 -"Stack" 138 143 138 -"Star Dust" 159 159 156 -"Stark White" 229 215 189 -"Starship" 236 242 69 -"Steel Grey" 38 35 53 -"Stiletto" 156 51 54 -"Stinger" 139 107 11 -"Stonewall" 146 133 115 -"Storm Dust" 100 100 99 -"Storm Grey" 113 116 134 -"Stratos" 0 7 65 -"Straw" 212 191 141 -"Strikemaster" 149 99 135 -"Stromboli" 50 93 82 -"Studio" 113 74 178 -"Submarine" 186 199 201 -"Sugar Cane" 249 255 246 -"Sulu" 193 240 124 -"Summer Green" 150 187 171 -"Sun" 251 172 19 -"Sundance" 201 179 91 -"Sundown" 255 177 179 -"Sunflower" 228 212 34 -"Sunglo" 225 104 101 -"Sunset" 220 67 51 -"Sunshade" 255 158 44 -"Supernova" 255 201 1 -"Surf" 187 215 193 -"Surf Crest" 207 229 210 -"Surfie Green" 12 122 121 -"Sushi" 135 171 57 -"Suva Grey" 136 131 135 -"Swamp" 0 27 28 -"Swans Down" 220 240 234 -"Sweet Corn" 251 234 140 -"Sweet Pink" 253 159 162 -"Swirl" 211 205 197 -"Swiss Coffee" 221 214 213 -"Sycamore" 144 141 57 -"Tabasco" 160 39 18 -"Tacao" 237 179 129 -"Tacha" 214 197 98 -"Tahiti Gold" 233 124 7 -"Tahuna Sands" 238 240 200 -"Tall Poppy" 179 45 41 -"Tallow" 168 165 137 -"Tamarillo" 153 22 19 -"Tamarind" 52 21 21 -"Tana" 217 220 193 -"Tangaroa" 3 22 60 -"Tangerine" 233 110 0 -"Tango" 237 122 28 -"Tapa" 123 120 116 -"Tapestry" 176 94 129 -"Tara" 225 246 232 -"Tarawera" 7 58 80 -"Tasman" 207 220 207 -"Taupe Grey" 179 175 149 -"Tawny Port" 105 37 69 -"Tax Break" 81 128 143 -"Te Papa Green" 30 67 60 -"Tea" 193 186 176 -"Teak" 177 148 97 -"Teak Wood Finish" 107 42 20 -"Teal Blue" 4 66 89 -"Temptress" 59 0 11 -"Tequila" 255 230 199 -"Texas" 248 249 156 -"Texas Rose" 255 181 85 -"Thatch" 182 157 152 -"Thatch Green" 64 61 25 -"Thistle" 204 202 168 -"Thunder" 51 41 47 -"Thunderbird" 192 43 24 -"Tia Maria" 193 68 14 -"Tiara" 195 209 209 -"Tiber" 6 53 55 -"Tidal" 241 255 173 -"Tide" 191 184 176 -"Timber Green" 22 50 44 -"Titan White" 240 238 255 -"Toast" 154 110 97 -"Tobacco Brown" 113 93 71 -"Tobago" 62 43 35 -"Toledo" 58 0 32 -"Tolopea" 27 2 69 -"Tom Thumb" 63 88 59 -"Tonys Pink" 231 159 140 -"Topaz" 124 119 138 -"Torea Bay" 15 45 158 -"Tory Blue" 20 80 170 -"Tosca" 141 63 63 -"Totem Pole" 153 27 7 -"Touch Wood" 55 48 33 -"Tower Grey" 169 189 191 -"Tradewind" 95 179 172 -"Tranquil" 230 255 255 -"Travertine" 255 253 232 -"Tree Poppy" 252 156 29 -"Treehouse" 59 40 32 -"Trendy Green" 124 136 26 -"Trendy Pink" 140 100 149 -"Trinidad" 230 78 3 -"Tropical Blue" 195 221 249 -"Trout" 74 78 90 -"True V" 138 115 214 -"Tuatara" 54 53 52 -"Tuft Bush" 255 221 205 -"Tulip Tree" 234 179 59 -"Tumbleweed" 55 41 14 -"Tuna" 53 53 66 -"Tundora" 74 66 68 -"Turbo" 250 230 0 -"Turkish Rose" 181 114 129 -"Turmeric" 202 187 72 -"Turtle Green" 42 56 11 -"Tuscany" 189 94 46 -"Tusk" 238 243 195 -"Tussock" 197 153 75 -"Tutu" 255 241 249 -"Twilight" 228 207 222 -"Twilight Blue" 238 253 255 -"Twine" 194 149 93 -"Valencia" 216 68 55 -"Valentino" 53 14 66 -"Valhalla" 43 25 79 -"Van Cleef" 73 23 12 -"Vanilla" 209 190 168 -"Vanilla Ice" 243 217 223 -"Varden" 255 246 223 -"Venetian Red" 114 1 15 -"Venice Blue" 5 89 137 -"Venus" 146 133 144 -"Verdigris" 93 94 55 -"Verdun Green" 73 84 0 -"Vesuvius" 177 74 11 -"Victoria" 83 68 145 -"Vida Loca" 84 144 25 -"Viking" 100 204 219 -"Vin Rouge" 152 61 97 -"Viola" 203 143 169 -"Violent Violet" 41 12 94 -"Violet" 36 10 64 -"Viridian Green" 103 137 117 -"Vis Vis" 255 239 161 -"Vista Blue" 143 214 180 -"Vista White" 252 248 247 -"Volcano" 101 26 20 -"Voodoo" 83 52 85 -"Vulcan" 16 18 29 -"Wafer" 222 203 198 -"Waikawa Grey" 90 110 156 -"Waiouru" 54 60 13 -"Walnut" 119 63 26 -"Wan White" 252 255 249 -"Wasabi" 120 138 37 -"Water Leaf" 161 233 222 -"Watercourse" 5 111 87 -"Waterloo " 123 124 148 -"Wattle" 220 215 71 -"Watusi" 255 221 207 -"Wax Flower" 255 192 168 -"We Peep" 247 219 230 -"Wedgewood" 78 127 158 -"Well Read" 180 51 50 -"West Coast" 98 81 25 -"West Side" 255 145 15 -"Westar" 220 217 210 -"Western Red" 139 7 35 -"Wewak" 241 155 171 -"Wheatfield" 243 237 207 -"Whiskey" 213 154 111 -"Whiskey Sour" 219 153 94 -"Whisper" 247 245 250 -"White Ice" 221 249 241 -"White Lilac" 248 247 252 -"White Linen" 248 240 232 -"White Nectar" 252 255 231 -"White Pointer" 254 248 255 -"White Rock" 234 232 212 -"Wild Rice" 236 224 144 -"Wild Sand" 244 244 244 -"Wild Willow" 185 196 106 -"William" 58 104 108 -"Willow Brook" 223 236 218 -"Willow Grove" 101 116 93 -"Windsor" 60 8 120 -"Wine Berry" 89 29 53 -"Winter Hazel" 213 209 149 -"Wisp Pink" 254 244 248 -"Wisteria" 151 113 181 -"Wistful" 164 166 211 -"Witch Haze" 255 252 153 -"Wood Bark" 38 17 5 -"Woodburn" 60 32 5 -"Woodland" 77 83 40 -"Woodrush" 48 42 15 -"Woodsmoke" 12 13 15 -"Woody Bay" 41 33 48 -"Woody Brown" 72 49 49 -"Xanadu" 115 134 120 -"Yellow Metal" 113 99 56 -"Yellow Sea" 254 169 4 -"Your Pink" 255 195 192 -"Yukon Gold" 123 102 8 -"Yuma" 206 194 145 -"Zambezi" 104 85 88 -"Zanah" 218 236 214 -"Zest" 229 132 27 -"Zeus" 41 35 25 -"Ziggurat" 191 219 226 -"Zircon" 244 248 255 -"Zombie" 228 214 155 -"Zorba" 165 155 145 -"Zuccini" 4 64 34 -"Zumthor" 237 246 255 -"Zydeco" 2 64 44 +"Abbey" 73 81 84 +"Acadia" 53 49 44 +"Acapulco" 117 170 148 +"Acorn" 115 99 48 +"Aero Blue" 192 232 213 +"Affair" 116 80 133 +"Afghan Tan" 144 94 38 +"Akaroa" 190 178 154 +"Alabaster" 242 240 230 +"Albescent White" 225 218 203 +"Alert Tan" 149 78 44 +"Allports" 31 106 125 +"Almond Frost" 154 134 120 +"Alpine" 173 138 59 +"Alto" 205 198 197 +"Aluminium" 132 135 137 +"Amazon" 56 123 84 +"Americano" 138 125 114 +"Amethyst Smoke" 149 135 156 +"Amour" 245 230 234 +"Amulet" 125 157 114 +"Anakiwa" 140 206 234 +"Antique Brass" 108 70 31 +"Anzac" 198 142 63 +"Apache" 211 169 92 +"Apple" 102 179 72 +"Apple Blossom" 169 82 73 +"Apple Green" 222 234 220 +"Apricot" 228 143 103 +"Apricot White" 247 240 219 +"Aqua" 146 211 202 +"Aqua Haze" 217 221 213 +"Aqua Spring" 232 243 232 +"Aqua Squeeze" 219 228 220 +"Aquamarine" 32 89 72 +"Arapawa" 39 74 93 +"Armadillo" 72 74 70 +"Arrowtown" 130 122 103 +"Ash" 190 186 167 +"Ash Brown" 73 63 47 +"Asphalt" 42 41 34 +"Astra" 237 213 166 +"Astral" 55 111 137 +"Astronaut" 68 81 114 +"Astronaut Blue" 33 69 89 +"Athens Grey" 220 221 221 +"Aths Special" 213 203 178 +"Atlantis" 156 208 59 +"Atoll" 43 121 122 +"Atomic" 61 75 82 +"Au Chico" 158 103 89 +"Aubergine" 55 37 40 +"Australian Mint" 239 248 170 +"Avocado" 149 152 107 +"Axolotl" 99 119 90 +"Azalea" 249 192 196 +"Aztec" 41 52 50 +"Azure" 78 105 154 +"Bahama Blue" 37 89 127 +"Bahia" 169 192 28 +"Baja White" 240 223 187 +"Bali Hai" 132 156 169 +"Baltic Sea" 60 61 62 +"Bamboo" 186 111 63 +"Bandicoot" 135 132 102 +"Banjul" 52 50 45 +"Barberry" 210 198 31 +"Barley Corn" 182 147 92 +"Barley White" 247 229 183 +"Barossa" 69 46 57 +"Bastille" 44 44 50 +"Battleship Grey" 81 87 79 +"Bay Leaf" 123 177 141 +"Bay Of Many" 53 62 100 +"Bazaar" 143 119 119 +"Bean" 74 53 49 +"Beauty Bush" 235 185 179 +"Beeswax" 233 215 171 +"Bermuda" 134 210 193 +"Bermuda Grey" 111 140 159 +"Beryl Green" 188 191 168 +"Bianca" 244 239 224 +"Big Stone" 51 64 70 +"Bilbao" 62 128 39 +"Biloba Flower" 174 153 210 +"Birch" 63 55 38 +"Bird Flower" 208 193 23 +"Biscay" 47 60 83 +"Bismark" 72 108 122 +"Bison Hide" 181 172 148 +"Bitter" 136 137 108 +"Bitter Lemon" 210 219 50 +"Bizarre" 231 210 200 +"Black Bean" 35 46 38 +"Black Forest" 44 50 39 +"Black Haze" 224 222 215 +"Black Magic" 51 44 34 +"Black Marlin" 56 55 64 +"Black Pearl" 30 39 44 +"Black Pepper" 60 55 49 +"Black Rock" 44 45 60 +"Black Rose" 83 41 52 +"Black Russian" 36 37 43 +"Black Squeeze" 229 230 223 +"Black White" 229 228 219 +"Blackberry" 67 24 47 +"Blackcurrant" 46 24 59 +"Blackwood" 63 55 46 +"Blanc" 217 208 193 +"Bleach White" 235 225 206 +"Bleached Cedar" 69 70 71 +"Blossom" 223 177 182 +"Blue Bark" 30 39 44 +"Blue Bayoux" 98 119 126 +"Blue Bell" 57 45 115 +"Blue Chalk" 227 214 233 +"Blue Charcoal" 38 43 47 +"Blue Chill" 64 143 144 +"Blue Diamond" 75 45 114 +"Blue Dianne" 53 81 79 +"Blue Gem" 75 60 142 +"Blue Haze" 189 186 206 +"Blue Lagoon" 0 98 111 +"Blue Marguerite" 106 91 177 +"Blue Romance" 216 240 210 +"Blue Smoke" 120 133 122 +"Blue Stone" 22 100 97 +"Blue Whale" 30 52 66 +"Blue Zodiac" 60 67 84 +"Blumine" 48 92 113 +"Blush" 181 80 103 +"Bokara Grey" 42 39 37 +"Bombay" 174 174 173 +"Bon Jour" 223 215 210 +"Bondi Blue" 38 65 107 +"Bone" 219 194 171 +"Bordeaux" 76 28 36 +"Bossanova" 76 61 78 +"Boston Blue" 67 142 172 +"Botticelli" 146 172 180 +"Bottle Green" 37 70 54 +"Boulder" 124 129 124 +"Bouquet" 167 129 153 +"Bourbon" 175 108 62 +"Bracken" 91 61 39 +"Brandy" 220 182 138 +"Brandy Punch" 192 124 64 +"Brandy Rose" 182 133 122 +"Brazil" 129 91 40 +"Breaker Bay" 81 123 120 +"Bridal Heath" 248 235 221 +"Bridesmaid" 250 230 223 +"Bright Grey" 87 89 93 +"Bright Red" 146 42 49 +"Bright Sun" 236 189 44 +"Bronco" 167 151 129 +"Bronze" 73 59 47 +"Bronze Olive" 88 76 37 +"Bronzetone" 67 76 40 +"Broom" 238 204 36 +"Brown Bramble" 83 51 30 +"Brown Derby" 89 69 55 +"Brown Pod" 60 36 27 +"Bubbles" 230 242 234 +"Buccaneer" 110 81 80 +"Bud" 165 168 143 +"Buddha Gold" 188 155 27 +"Bulgarian Rose" 72 36 39 +"Bull Shot" 117 68 43 +"Bunker" 41 44 47 +"Bunting" 43 52 73 +"Burgundy" 101 37 37 +"Burnham" 35 69 55 +"Burning Sand" 208 131 99 +"Burnt Crimson" 88 33 36 +"Bush" 37 70 54 +"Buttercup" 218 148 41 +"Buttered Rum" 157 112 46 +"Butterfly Bush" 104 87 140 +"Buttermilk" 246 224 164 +"Buttery White" 241 235 218 +"Cab Sav" 74 46 50 +"Cabaret" 205 82 108 +"Cabbage Pont" 76 85 68 +"Cactus" 91 111 85 +"Cadillac" 152 73 97 +"Cafe Royale" 106 73 40 +"Calico" 213 177 133 +"California" 233 140 58 +"Calypso" 61 113 136 +"Camarone" 32 105 55 +"Camelot" 128 58 75 +"Cameo" 204 164 131 +"Camouflage" 79 77 50 +"Can Can" 208 138 155 +"Canary" 226 230 77 +"Candlelight" 224 157 55 +"Cannon Black" 51 44 34 +"Cannon Pink" 142 81 100 +"Canvas" 163 153 119 +"Cape Cod" 78 85 82 +"Cape Honey" 254 224 165 +"Cape Palliser" 117 72 47 +"Caper" 175 193 130 +"Capri" 48 67 106 +"Caramel" 255 213 154 +"Cararra" 235 229 213 +"Cardin Green" 27 52 39 +"Cardinal" 138 36 78 +"Careys Pink" 201 154 160 +"Carissma" 230 128 149 +"Carla" 245 249 203 +"Carnaby Tan" 91 58 36 +"Carousel Pink" 248 219 224 +"Casablanca" 240 178 83 +"Casal" 63 84 90 +"Cascade" 140 168 160 +"Cashmere" 209 179 153 +"Casper" 170 181 184 +"Castro" 68 35 47 +"Catalina Blue" 39 60 90 +"Catskill White" 224 228 220 +"Cavern Pink" 224 184 177 +"Ce Soir" 146 113 167 +"Cedar" 70 52 48 +"Celery" 180 192 76 +"Celeste" 210 210 192 +"Cello" 58 78 95 +"Celtic" 43 63 54 +"Cement" 133 113 88 +"Ceramic" 223 221 214 +"Chablis" 253 233 224 +"Chalet Green" 90 110 65 +"Chalky" 223 194 129 +"Chambray" 71 88 119 +"Chamois" 232 205 154 +"Champagne" 238 217 182 +"Chantilly" 237 184 199 +"Charade" 57 64 67 +"Chardon" 248 234 223 +"Chardonnay" 255 200 120 +"Charlotte" 164 220 230 +"Charm" 208 116 139 +"Chateau Green" 65 159 89 +"Chatelle" 179 171 182 +"Chathams Blue" 44 89 113 +"Chelsea Cucumber" 136 169 91 +"Chelsea Gem" 149 83 47 +"Chenin" 222 195 113 +"Cherokee" 245 205 130 +"Cherry Pie" 55 45 82 +"Cherrywood" 78 49 46 +"Cherub" 245 215 220 +"Chetwode Blue" 102 111 180 +"Chicago" 91 93 86 +"Chiffon" 240 245 187 +"Chilean Fire" 208 94 52 +"Chilean Heath" 249 247 222 +"China Ivory" 251 243 211 +"Chino" 184 173 138 +"Chinook" 157 211 168 +"Chocolate" 61 35 39 +"Christalle" 56 33 97 +"Christi" 113 169 29 +"Christine" 191 101 46 +"Chrome White" 202 199 183 +"Cigar" 125 78 56 +"Cinder" 36 42 46 +"Cinderella" 251 215 204 +"Cinnamon" 123 72 43 +"Cioccolato" 93 59 46 +"Citron" 142 154 33 +"Citrus" 159 183 10 +"Clairvoyant" 104 59 125 +"Clam Shell" 210 179 169 +"Claret" 110 34 51 +"Classic Rose" 244 200 219 +"Clay Creek" 137 126 89 +"Clear Day" 223 239 234 +"Clementine" 193 79 59 +"Clinker" 70 54 35 +"Cloud" 194 188 177 +"Cloud Burst" 53 62 79 +"Cloudy" 176 169 159 +"Clover" 71 86 47 +"Cobalt" 39 60 90 +"Cocoa Bean" 79 56 53 +"Cocoa Brown" 53 40 30 +"Coconut Cream" 225 218 187 +"Cod Grey" 45 48 50 +"Coffee" 114 103 81 +"Coffee Bean" 54 45 38 +"Cognac" 154 70 61 +"Cola" 60 47 35 +"Cold Purple" 157 138 191 +"Cold Turkey" 202 181 178 +"Colonial White" 233 215 171 +"Comet" 99 99 115 +"Como" 76 120 92 +"Conch" 160 177 174 +"Concord" 130 127 121 +"Concrete" 210 209 205 +"Confetti" 221 203 70 +"Congo Brown" 101 77 73 +"Conifer" 177 221 82 +"Contessa" 193 111 104 +"Copper Canyon" 119 66 44 +"Copper Rust" 149 82 76 +"Coral" 192 176 147 +"Coral Candy" 245 208 201 +"Coral Tree" 171 110 103 +"Corduroy" 64 77 73 +"Coriander" 187 181 141 +"Cork" 90 76 66 +"Corn" 223 170 40 +"Corn Field" 248 243 196 +"Corn Harvest" 141 112 42 +"Cornflower" 255 171 160 +"Corvette" 233 186 129 +"Cosmic" 121 77 96 +"Cosmos" 252 213 207 +"Costa Del Sol" 98 93 42 +"Cotton Seed" 191 186 175 +"County Green" 27 75 53 +"Cove Grey" 52 63 92 +"Cowboy" 68 55 54 +"Crab Apple" 135 56 47 +"Crail" 166 86 72 +"Cranberry" 180 56 100 +"Crater Brown" 77 62 60 +"Cream Brulee" 255 227 155 +"Cream Can" 238 192 81 +"Creme De Banane" 224 193 97 +"Creole" 57 50 39 +"Crete" 119 113 43 +"Crocodile" 112 105 80 +"Crown Of Thorns" 118 60 51 +"Crowshead" 50 49 46 +"Cruise" 180 226 213 +"Crusoe" 22 91 49 +"Crusta" 243 134 83 +"Cuban Tan" 54 45 38 +"Cumin" 120 68 48 +"Cumulus" 245 244 193 +"Cupid" 245 178 197 +"Curious Blue" 61 133 184 +"Cutty Sark" 92 129 115 +"Cyprus" 15 70 69 +"Daintree" 39 63 65 +"Dairy Cream" 237 210 164 +"Daisy Bush" 91 62 144 +"Dallas" 102 74 45 +"Danube" 91 137 192 +"Dark Ebony" 55 49 43 +"Dark Oak" 85 52 43 +"Dark Rimu" 112 65 40 +"Dark Rum" 69 54 43 +"Dark Slate" 70 83 82 +"Dark Tan" 97 45 45 +"Dawn" 159 157 145 +"Dawn Pink" 230 214 205 +"De York" 133 202 135 +"Deco" 204 207 130 +"Deep Blush" 227 111 138 +"Deep Bronze" 81 65 45 +"Deep Cove" 58 78 88 +"Deep Fir" 25 57 37 +"Deep Koamaru" 52 52 103 +"Deep Oak" 61 50 44 +"Deep Sea" 22 126 101 +"Deep Teal" 25 68 60 +"Del Rio" 181 153 142 +"Dell" 72 101 49 +"Delta" 153 155 149 +"Deluge" 130 114 164 +"Derby" 249 228 198 +"Desert" 161 95 59 +"Desert Storm" 237 231 224 +"Dew" 231 242 233 +"Di Serria" 212 145 93 +"Diesel" 50 44 43 +"Dingley" 96 124 71 +"Disco" 137 45 79 +"Dixie" 205 132 49 +"Dolly" 245 241 113 +"Dolphin" 106 104 115 +"Domino" 108 91 76 +"Don Juan" 90 79 81 +"Donkey Brown" 129 110 92 +"Dorado" 110 95 86 +"Double Colonial White" 228 207 153 +"Double Pearl Lusta" 233 220 190 +"Double Spanish White" 210 195 163 +"Dove Grey" 119 118 114 +"Downriver" 42 52 74 +"Downy" 111 210 190 +"Driftwood" 143 111 72 +"Drover" 251 235 155 +"Dune" 81 79 74 +"Dust Storm" 229 202 192 +"Dusty Grey" 172 155 155 +"Dutch White" 240 223 187 +"Eagle" 176 172 148 +"Earls Green" 184 167 34 +"Early Dawn" 251 242 219 +"East Bay" 71 82 110 +"East Side" 170 140 188 +"Eastern Blue" 0 135 159 +"Ebb" 230 216 212 +"Ebony" 49 51 55 +"Ebony Clay" 50 52 56 +"Echo Blue" 164 175 205 +"Eclipse" 63 57 57 +"Ecru White" 214 209 192 +"Ecstasy" 201 97 56 +"Eden" 38 98 85 +"Edgewater" 193 216 197 +"Edward" 151 164 154 +"Egg Sour" 249 228 197 +"Egg White" 224 200 141 +"El Paso" 57 57 44 +"El Salva" 143 78 69 +"Elephant" 36 54 64 +"Elf Green" 27 138 107 +"Elm" 41 123 118 +"Embers" 140 63 48 +"Eminence" 110 57 116 +"Emperor" 80 73 74 +"Empress" 124 113 115 +"Endeavour" 41 89 139 +"Energy Yellow" 245 215 82 +"English Holly" 39 66 52 +"English Walnut" 71 59 47 +"Envy" 139 165 143 +"Equator" 218 177 96 +"Espresso" 78 49 45 +"Eternity" 45 47 40 +"Eucalyptus" 50 151 96 +"Eunry" 205 165 156 +"Evening Sea" 38 96 79 +"Everglade" 38 67 52 +"Fair Pink" 243 229 220 +"Falcon" 110 90 91 +"Fantasy" 242 230 221 +"Fedora" 98 86 101 +"Feijoa" 165 215 133 +"Fern" 54 92 52 +"Fern Frond" 87 94 46 +"Ferra" 135 106 104 +"Festival" 234 204 74 +"Feta" 219 224 208 +"Fiery Orange" 177 89 47 +"Fiji Green" 99 111 34 +"Finch" 117 120 90 +"Finlandia" 97 117 91 +"Finn" 105 69 84 +"Fiord" 75 90 98 +"Fire" 143 63 42 +"Fire Bush" 224 152 66 +"Firefly" 49 70 67 +"Flame Pea" 190 92 72 +"Flame Red" 134 40 46 +"Flamenco" 234 134 69 +"Flamingo" 225 99 79 +"Flax" 130 133 98 +"Flint" 113 110 97 +"Flirt" 122 46 77 +"Foam" 208 234 232 +"Fog" 213 199 232 +"Foggy Grey" 167 166 157 +"Forest Green" 51 66 49 +"Forget Me Not" 253 239 219 +"Fountain Blue" 101 173 178 +"Frangipani" 255 215 160 +"French Grey" 191 189 193 +"French Lilac" 222 183 217 +"French Pass" 164 210 224 +"Friar Grey" 134 131 122 +"Fringy Flower" 180 225 187 +"Froly" 229 109 117 +"Frost" 225 228 197 +"Frosted Mint" 226 242 228 +"Frostee" 219 229 210 +"Fruit Salad" 75 163 81 +"Fuchsia" 123 92 183 +"Fuego" 194 214 46 +"Fuel Yellow" 209 144 51 +"Fun Blue" 51 80 131 +"Fun Green" 21 99 61 +"Fuscous Grey" 60 59 60 +"Gable Green" 44 70 65 +"Gallery" 220 215 209 +"Galliano" 216 167 35 +"Geebung" 197 131 46 +"Genoa" 49 121 109 +"Geraldine" 231 123 117 +"Geyser" 203 208 207 +"Ghost" 192 191 199 +"Gigas" 86 71 134 +"Gimblet" 185 173 97 +"Gin" 217 223 205 +"Gin Fizz" 248 234 202 +"Givry" 235 212 174 +"Glacier" 120 177 191 +"Glade Green" 95 129 81 +"Go Ben" 120 110 76 +"Goblin" 52 83 61 +"Gold Drop" 213 108 48 +"Gold Tips" 226 178 39 +"Golden Bell" 202 129 54 +"Golden Dream" 241 204 43 +"Golden Fizz" 235 222 49 +"Golden Glow" 249 215 126 +"Golden Sand" 234 206 106 +"Golden Tainoi" 255 193 82 +"Gondola" 55 51 50 +"Gordons Green" 41 51 43 +"Gorse" 253 227 54 +"Gossamer" 57 159 134 +"Gossip" 159 211 133 +"Gothic" 105 136 144 +"Governor Bay" 81 85 155 +"Grain Brown" 202 184 162 +"Grandis" 255 205 115 +"Granite Green" 139 130 101 +"Granny Apple" 197 231 205 +"Granny Smith" 123 148 140 +"Grape" 65 61 75 +"Graphite" 56 52 40 +"Grass Hopper" 122 114 41 +"Gravel" 74 75 70 +"Green House" 62 99 52 +"Green Kelp" 57 61 42 +"Green Leaf" 82 107 45 +"Green Mist" 191 194 152 +"Green Pea" 38 98 66 +"Green Smoke" 156 166 100 +"Green Spring" 169 175 153 +"Green Vogue" 35 65 78 +"Green Waterloo" 44 45 36 +"Green White" 222 221 203 +"Greenstone" 36 108 70 +"Grenadier" 193 77 54 +"Grey Chateau" 159 163 167 +"Grey Green" 82 86 54 +"Grey Nickel" 189 186 174 +"Grey Nurse" 209 211 204 +"Grey Olive" 161 154 127 +"Grey Suit" 147 145 160 +"Guardsman Red" 149 46 49 +"Gulf Blue" 52 63 92 +"Gulf Stream" 116 178 168 +"Gull Grey" 164 173 176 +"Gum Leaf" 172 201 178 +"Gumbo" 113 143 138 +"Gun Powder" 72 71 83 +"Gunmetal" 44 53 57 +"Gunsmoke" 122 124 118 +"Gurkha" 152 145 113 +"Hacienda" 158 128 34 +"Hairy Heath" 99 53 40 +"Haiti" 44 42 53 +"Half And Half" 237 231 200 +"Half Baked" 85 143 147 +"Half Colonial White" 242 229 191 +"Half Dutch White" 251 240 214 +"Half Pearl Lusta" 241 234 215 +"Half Spanish White" 230 219 199 +"Hampton" 232 212 162 +"Harp" 203 206 192 +"Harvest Gold" 234 183 106 +"Havana" 59 43 44 +"Havelock Blue" 87 132 193 +"Hawaiian Tan" 153 82 43 +"Hawkes Blue" 210 218 237 +"Heath" 79 42 44 +"Heather" 174 187 193 +"Heathered Grey" 148 140 126 +"Heavy Metal" 70 71 62 +"Hemlock" 105 104 75 +"Hemp" 152 125 115 +"Hibiscus" 179 54 84 +"Highball" 146 140 60 +"Highland" 122 148 97 +"Hillary" 167 160 126 +"Himalaya" 115 99 48 +"Hint Of Green" 223 241 214 +"Hint Of Grey" 223 221 214 +"Hint Of Red" 245 239 235 +"Hint Of Yellow" 246 245 215 +"Hippie Blue" 73 136 154 +"Hippie Green" 96 138 90 +"Hippie Pink" 171 73 92 +"Hit Grey" 161 169 168 +"Hit Pink" 253 164 112 +"Hokey Pokey" 187 142 52 +"Hoki" 100 125 134 +"Holly" 37 52 43 +"Honey Flower" 92 60 109 +"Honeysuckle" 232 237 105 +"Hopbush" 205 109 147 +"Horizon" 100 136 148 +"Horses Neck" 109 86 44 +"Hot Chile" 107 37 44 +"Hot Curry" 129 91 40 +"Hot Purple" 78 46 83 +"Hot Toddy" 167 117 44 +"Humming Bird" 206 239 228 +"Hunter Green" 47 49 37 +"Hurricane" 139 126 119 +"Husk" 178 153 75 +"Ice Cold" 175 227 214 +"Iceberg" 202 225 217 +"Illusion" 239 149 174 +"Indian Tan" 79 48 31 +"Indochine" 156 91 52 +"Irish Coffee" 98 66 43 +"Iroko" 91 82 68 +"Iron" 203 205 205 +"Ironbark" 109 77 44 +"Ironside Grey" 112 110 102 +"Ironstone" 134 80 64 +"Island Spice" 248 237 219 +"Jacaranda" 54 45 56 +"Jacarta" 61 50 93 +"Jacko Bean" 65 54 40 +"Jacksons Purple" 61 63 125 +"Jade" 64 114 109 +"Jaffa" 226 121 69 +"Jagged Ice" 202 231 226 +"Jagger" 63 46 76 +"Jaguar" 41 41 47 +"Jambalaya" 103 72 52 +"Janna" 222 209 183 +"Japanese Laurel" 47 117 50 +"Japanese Maple" 103 47 48 +"Japonica" 206 114 89 +"Jarrah" 59 43 44 +"Java" 37 151 151 +"Jazz" 95 44 47 +"Jelly Bean" 68 121 142 +"Jet Stream" 187 208 201 +"Jewel" 19 104 67 +"Joanna" 214 209 192 +"Jon" 70 61 62 +"Jonquil" 238 242 147 +"Jordy Blue" 122 170 224 +"Judge Grey" 93 83 70 +"Jumbo" 135 135 133 +"Jungle Green" 41 41 36 +"Jungle Mist" 176 196 196 +"Juniper" 116 145 142 +"Just Right" 220 191 172 +"Kabul" 108 94 83 +"Kaitoke Green" 36 83 54 +"Kangaroo" 197 195 176 +"Karaka" 45 45 36 +"Karry" 254 220 193 +"Kashmir Blue" 87 109 142 +"Kelp" 77 80 60 +"Kenyan Copper" 108 50 46 +"Keppel" 95 182 156 +"Kidnapper" 191 192 171 +"Kilamanjaro" 58 53 50 +"Killarney" 73 118 79 +"Kimberly" 105 93 135 +"Kingfisher Daisy" 88 53 128 +"Kobi" 224 147 171 +"Kokoda" 123 120 90 +"Korma" 128 78 44 +"Koromiko" 254 181 82 +"Kournikova" 249 208 84 +"Kumera" 117 91 39 +"La Palma" 66 137 41 +"La Rioja" 186 192 14 +"Las Palmas" 198 218 54 +"Laser" 198 169 94 +"Laurel" 110 141 113 +"Lavender" 159 144 208 +"Leather" 144 106 84 +"Lemon" 217 178 32 +"Lemon Ginger" 150 132 40 +"Lemon Grass" 153 154 134 +"Licorice" 46 55 73 +"Lightning Yellow" 247 162 51 +"Lilac Bush" 148 112 196 +"Lily" 193 159 179 +"Lily White" 233 238 235 +"Lima" 122 172 33 +"Lime" 183 197 44 +"Limeade" 95 151 39 +"Limed Ash" 103 109 99 +"Limed Gum" 107 91 61 +"Limed Oak" 140 114 84 +"Limed Spruce" 78 96 94 +"Limerick" 137 172 39 +"Linen" 186 183 162 +"Link Water" 199 205 216 +"Lipstick" 150 44 84 +"Lisbon Brown" 84 79 58 +"Livid Brown" 49 42 41 +"Loafer" 219 217 194 +"Loblolly" 179 187 183 +"Lochinvar" 72 144 132 +"Lochmara" 49 110 160 +"Locust" 162 165 128 +"Log Cabin" 57 62 46 +"Logan" 157 156 180 +"Lola" 185 172 187 +"London Hue" 174 148 171 +"Lonestar" 82 36 38 +"Lotus" 139 80 75 +"Loulou" 76 51 71 +"Lucky" 171 154 28 +"Lucky Point" 41 45 79 +"Lunar Green" 78 85 65 +"Lusty" 120 46 44 +"Luxor Gold" 171 141 63 +"Lynch" 105 125 137 +"Mabel" 203 232 232 +"Madang" 183 227 168 +"Madison" 45 60 84 +"Madras" 71 62 35 +"Magnolia" 238 232 235 +"Mahogany" 73 38 37 +"Mai Tai" 165 101 49 +"Maire" 42 41 34 +"Maize" 227 185 130 +"Makara" 105 95 80 +"Mako" 80 85 85 +"Malachite Green" 151 151 111 +"Malibu" 102 183 225 +"Mallard" 58 69 49 +"Malta" 165 151 132 +"Mamba" 118 109 124 +"Mandalay" 181 123 46 +"Mandy" 205 82 91 +"Mandys Pink" 245 183 153 +"Manhattan" 226 175 128 +"Mantis" 127 193 92 +"Mantle" 150 167 147 +"Manz" 228 219 85 +"Mardi Gras" 53 34 53 +"Marigold" 184 138 61 +"Mariner" 66 99 159 +"Marlin" 54 45 38 +"Maroon" 64 35 39 +"Marshland" 43 46 38 +"Martini" 183 168 163 +"Martinique" 60 55 72 +"Marzipan" 235 200 129 +"Masala" 87 83 75 +"Mash" 90 76 66 +"Matisse" 54 92 125 +"Matrix" 142 77 69 +"Matterhorn" 82 75 75 +"Maverick" 200 177 192 +"McKenzie" 140 99 56 +"Melanie" 224 183 194 +"Melanzane" 52 41 49 +"Melrose" 195 185 221 +"Meranti" 107 52 42 +"Mercury" 213 210 209 +"Merino" 225 219 208 +"Merlin" 79 78 72 +"Merlot" 115 52 58 +"Metallic Bronze" 85 74 60 +"Metallic Copper" 110 61 52 +"Meteor" 187 116 49 +"Meteorite" 74 59 106 +"Mexican Red" 155 61 61 +"Mid Grey" 102 106 109 +"Midnight" 33 48 62 +"Midnight Express" 33 38 58 +"Midnight Moss" 36 46 40 +"Mikado" 63 54 35 +"Milan" 246 244 147 +"Milano Red" 158 51 50 +"Milk Punch" 243 229 192 +"Milk White" 220 217 205 +"Millbrook" 89 86 72 +"Mimosa" 245 245 204 +"Mindaro" 218 234 111 +"Mine Shaft" 55 62 65 +"Mineral Green" 80 99 85 +"Ming" 64 117 119 +"Minsk" 62 50 103 +"Mint Julep" 224 216 167 +"Mint Tulip" 198 234 221 +"Mirage" 55 63 67 +"Mischka" 165 169 178 +"Mist Grey" 186 185 169 +"Mobster" 96 90 103 +"Moccaccino" 88 47 43 +"Mocha" 111 55 45 +"Mojo" 151 70 60 +"Mona Lisa" 255 152 137 +"Monarch" 107 37 44 +"Mondo" 85 77 66 +"Mongoose" 165 139 111 +"Monsoon" 122 118 121 +"Montana" 57 59 60 +"Monte Carlo" 122 197 180 +"Monza" 134 40 46 +"Moody Blue" 131 120 199 +"Moon Glow" 245 243 206 +"Moon Mist" 206 205 184 +"Moon Raker" 192 178 215 +"Moon Yellow" 240 196 32 +"Morning Glory" 158 209 211 +"Morocco Brown" 68 45 33 +"Mortar" 86 80 81 +"Mosaic" 41 55 65 +"Mosque" 0 95 91 +"Mountain Mist" 160 159 156 +"Muddy Waters" 169 132 79 +"Muesli" 158 126 83 +"Mulberry" 94 42 64 +"Mule Fawn" 136 79 64 +"Mulled Wine" 82 77 91 +"Mustard" 124 103 32 +"My Pink" 214 139 128 +"My Sin" 253 174 69 +"Mystic" 216 221 218 +"Nandor" 78 93 78 +"Napa" 163 154 135 +"Narvik" 233 230 220 +"Natural" 136 89 49 +"Nebula" 184 198 190 +"Negroni" 238 199 162 +"Nepal" 147 170 185 +"Neptune" 119 168 171 +"Nero" 37 37 37 +"Neutral Green" 170 165 131 +"Nevada" 102 111 111 +"New Amber" 109 59 36 +"New Orleans" 228 195 133 +"New York Pink" 221 131 116 +"Niagara" 41 169 139 +"Night Rider" 51 46 46 +"Night Shadz" 162 61 84 +"Nightclub" 106 31 68 +"Nile Blue" 37 63 78 +"Nobel" 169 157 157 +"Nomad" 161 153 134 +"Nordic" 29 57 60 +"Norway" 164 184 143 +"Nugget" 188 146 41 +"Nutmeg" 126 74 59 +"Oasis" 252 237 197 +"Observatory" 0 143 112 +"Ocean Green" 76 169 115 +"Off Green" 223 240 226 +"Off Yellow" 250 243 220 +"Oil" 49 51 48 +"Oiled Cedar" 102 54 45 +"Old Brick" 138 51 53 +"Old Copper" 115 80 59 +"Olive Green" 53 63 42 +"Olive Haze" 136 128 100 +"Olivetone" 116 112 40 +"Onahau" 194 230 236 +"Onion" 72 65 43 +"Opal" 168 195 188 +"Opium" 152 126 126 +"Oracle" 57 85 85 +"Orange Roughy" 168 83 53 +"Orange White" 234 227 205 +"Orchid White" 241 235 217 +"Oregon" 177 108 57 +"Orient" 37 91 119 +"Oriental Pink" 194 142 136 +"Orinoco" 210 211 179 +"Oslo Grey" 129 137 136 +"Ottoman" 211 219 203 +"Outer Space" 31 38 59 +"Oxford Blue" 40 53 58 +"Oxley" 109 154 120 +"Oyster Bay" 209 234 234 +"Oyster Pink" 212 181 176 +"Paarl" 134 75 54 +"Pablo" 122 113 92 +"Pacifika" 102 112 40 +"Paco" 79 64 55 +"Padua" 126 179 148 +"Pale Leaf" 189 202 168 +"Pale Oyster" 156 141 114 +"Pale Prim" 249 245 159 +"Pale Rose" 239 214 218 +"Pale Sky" 99 109 112 +"Pale Slate" 195 190 187 +"Palm Green" 32 57 44 +"Palm Leaf" 54 72 47 +"Pampas" 234 228 220 +"Panache" 235 247 228 +"Pancho" 223 185 146 +"Panda" 84 79 58 +"Paprika" 124 45 55 +"Paradiso" 72 128 132 +"Parchment" 208 200 176 +"Paris Daisy" 251 235 80 +"Paris M" 49 39 96 +"Paris White" 191 205 192 +"Parsley" 48 93 53 +"Patina" 99 146 131 +"Pattens Blue" 211 229 239 +"Paua" 42 37 81 +"Pavlova" 186 171 135 +"Pea Soup" 185 184 128 +"Peach" 251 229 194 +"Peach Schnapps" 198 128 89 +"Peanut" 122 68 52 +"Pearl Bush" 222 209 198 +"Pearl Lusta" 234 224 200 +"Peat" 118 109 82 +"Pelorous" 37 153 178 +"Peppermint" 215 231 208 +"Perano" 172 185 232 +"Perfume" 194 169 219 +"Periglacial Blue" 172 182 178 +"Persian Plum" 104 51 50 +"Persian Red" 79 33 42 +"Persimmon" 239 115 94 +"Peru Tan" 115 61 31 +"Pesto" 122 114 41 +"Petite Orchid" 218 151 144 +"Pewter" 145 160 146 +"Pharlap" 130 102 99 +"Picasso" 248 234 151 +"Pickled Aspen" 91 100 82 +"Pickled Bean" 115 85 62 +"Pickled Bluewood" 79 90 95 +"Picton Blue" 91 160 208 +"Pigeon Post" 119 132 142 +"Pine Cone" 117 101 86 +"Pine Glade" 189 192 126 +"Pine Tree" 42 47 35 +"Pink Flare" 216 180 182 +"Pink Lace" 246 204 215 +"Pink Lady" 243 215 182 +"Pink Swan" 191 179 178 +"Piper" 157 84 50 +"Pipi" 245 230 196 +"Pippin" 252 219 210 +"Pirate Gold" 186 120 42 +"Pistachio" 103 105 39 +"Pixie Green" 187 205 165 +"Pizazz" 229 127 61 +"Pizza" 191 141 60 +"Plantation" 62 89 76 +"Planter" 98 93 42 +"Plum" 56 26 56 +"Pohutukawa" 101 28 38 +"Polar" 229 242 231 +"Polo Blue" 138 167 204 +"Pompadour" 106 31 68 +"Porcelain" 221 220 219 +"Porsche" 223 157 91 +"Port Gore" 59 67 108 +"Portafino" 244 240 155 +"Portage" 139 152 216 +"Portica" 240 213 85 +"Pot Pourri" 239 220 212 +"Potters Clay" 132 92 64 +"Powder Blue" 146 159 162 +"Prairie Sand" 136 60 50 +"Prelude" 202 180 212 +"Prim" 226 205 213 +"Primrose" 228 222 142 +"Promenade" 248 246 223 +"Provincial Pink" 246 227 218 +"Prussian Blue" 25 47 65 +"Pueblo" 110 51 38 +"Puerto Rico" 89 186 163 +"Pumice" 186 192 180 +"Pumpkin" 171 107 53 +"Punch" 168 50 57 +"Punga" 83 73 49 +"Putty" 205 174 112 +"Quarter Pearl Lusta" 242 237 221 +"Quarter Spanish White" 235 226 210 +"Quicksand" 195 152 139 +"Quill Grey" 203 201 192 +"Quincy" 106 84 69 +"Racing Green" 35 47 44 +"Raffia" 220 198 160 +"Rain Forest" 102 112 40 +"Raincloud" 163 152 129 +"Rainee" 179 193 177 +"Rajah" 252 174 96 +"Rangitoto" 58 65 51 +"Rangoon Green" 43 46 37 +"Raven" 111 116 123 +"Rebel" 69 52 48 +"Red Beech" 161 98 59 +"Red Berry" 112 31 40 +"Red Damask" 203 111 74 +"Red Devil" 102 42 44 +"Red Oxide" 93 31 30 +"Red Robin" 125 65 56 +"Red Stage" 173 82 46 +"Redwood" 91 52 46 +"Reef" 209 239 159 +"Reef Gold" 169 141 54 +"Regal Blue" 32 63 88 +"Regent Grey" 121 132 136 +"Regent St Blue" 160 205 217 +"Remy" 246 222 218 +"Reno Sand" 178 110 51 +"Resolution Blue" 50 63 117 +"Revolver" 55 54 63 +"Rhino" 61 70 83 +"Ribbon" 113 51 60 +"Rice Cake" 239 236 222 +"Rice Flower" 239 245 209 +"Rich Gold" 161 82 38 +"Rio Grande" 183 198 26 +"Riptide" 137 217 200 +"River Bed" 85 96 97 +"Rob Roy" 221 173 86 +"Robins Egg Blue" 158 170 158 +"Rock" 90 77 65 +"Rock Blue" 147 162 186 +"Rock Salt" 230 214 184 +"Rock Spray" 157 68 45 +"Rodeo Dust" 199 163 132 +"Rolling Stone" 109 120 118 +"Roman" 216 98 91 +"Roman Coffee" 125 103 87 +"Romance" 244 240 230 +"Romantic" 255 198 158 +"Ronchi" 234 184 82 +"Roof Terracotta" 161 71 67 +"Rope" 142 89 60 +"Rose" 211 161 148 +"Rose Bud" 254 171 154 +"Rose Bud Cherry" 138 45 82 +"Rose Of Sharon" 172 81 45 +"Rose White" 251 238 232 +"Rosewood" 143 62 63 +"Roti" 182 150 66 +"Rouge" 169 64 100 +"Royal Heath" 181 75 115 +"Rum" 113 102 117 +"Rum Swizzle" 241 237 212 +"Russett" 125 101 92 +"Rustic Red" 58 24 26 +"Rusty Nail" 141 95 44 +"Saddle" 93 78 70 +"Saddle Brown" 80 56 30 +"Saffron" 220 159 69 +"Sage" 152 159 122 +"Sahara" 183 152 38 +"Sail" 165 206 236 +"Salem" 23 123 77 +"Salomie" 255 214 123 +"Salt Box" 105 98 104 +"Saltpan" 238 243 229 +"Sambuca" 59 46 37 +"San Felix" 44 110 49 +"San Juan" 68 87 97 +"San Marino" 78 108 157 +"Sand Dune" 134 118 101 +"Sandal" 163 135 106 +"Sandrift" 175 147 125 +"Sandstone" 120 109 95 +"Sandwisp" 222 203 129 +"Sandy Beach" 254 219 183 +"Sangria" 130 42 50 +"Sanguine Brown" 108 55 54 +"Santas Grey" 153 152 167 +"Sante Fe" 169 106 80 +"Sapling" 225 213 166 +"Sapphire" 63 82 129 +"Saratoga" 85 91 44 +"Sauvignon" 244 234 228 +"Sazerac" 245 222 196 +"Scampi" 111 99 160 +"Scandal" 173 217 209 +"Scarlet Gum" 74 45 87 +"Scarlett" 126 37 48 +"Scarpa Flow" 107 106 108 +"Schist" 135 135 111 +"Schooner" 141 132 120 +"Scooter" 48 142 160 +"Scorpion" 106 100 102 +"Scotch Mist" 238 231 200 +"Scrub" 61 64 49 +"Sea Buckthorn" 239 149 72 +"Sea Fog" 223 221 214 +"Sea Green" 31 99 97 +"Sea Mist" 194 213 196 +"Sea Nymph" 138 174 164 +"Sea Pink" 219 129 126 +"Seagull" 119 183 208 +"Seance" 105 50 110 +"Seashell" 227 225 224 +"Seaweed" 55 65 42 +"Selago" 230 223 231 +"Sepia" 58 47 45 +"Serenade" 252 233 215 +"Shadow Green" 154 192 182 +"Shady Lady" 159 155 157 +"Shakespeare" 96 154 184 +"Shalimar" 248 246 168 +"Shark" 52 54 58 +"Sherpa Blue" 0 73 78 +"Sherwood Green" 27 70 54 +"Shilo" 230 178 166 +"Shingle Fawn" 116 89 55 +"Ship Cove" 121 136 171 +"Ship Grey" 78 78 76 +"Shiraz" 132 40 51 +"Shocking" 232 153 190 +"Shuttle Grey" 97 102 107 +"Siam" 104 107 80 +"Sidecar" 233 217 169 +"Silk" 187 173 161 +"Silver Chalice" 172 174 169 +"Silver Sand" 190 189 182 +"Silver Tree" 103 190 144 +"Sinbad" 166 213 208 +"Siren" 105 41 59 +"Sirocco" 104 118 110 +"Sisal" 197 186 160 +"Skeptic" 157 180 170 +"Slugger" 66 52 43 +"Smalt Blue" 73 98 103 +"Smoke Tree" 187 95 52 +"Smokey Ash" 93 89 82 +"Smoky" 96 93 107 +"Snow Drift" 227 227 220 +"Snow Flurry" 234 247 201 +"Snowy Mint" 214 240 205 +"Snuff" 228 215 229 +"Soapstone" 236 229 218 +"Soft Amber" 207 190 165 +"Soft Peach" 238 223 222 +"Solid Pink" 133 73 76 +"Solitaire" 234 218 194 +"Solitude" 233 236 241 +"Sorbus" 221 107 56 +"Sorrell Brown" 157 127 97 +"Sour Dough" 201 181 154 +"Soya Bean" 111 99 75 +"Space Shuttle" 75 67 59 +"Spanish Green" 123 137 118 +"Spanish White" 222 209 183 +"Spectra" 55 93 79 +"Spice" 108 79 63 +"Spicy Mix" 139 95 77 +"Spicy Pink" 137 117 120 +"Spindle" 179 196 216 +"Splash" 241 215 158 +"Spray" 126 205 221 +"Spring Green" 92 138 100 +"Spring Rain" 163 189 156 +"Spring Sun" 241 241 198 +"Spring Wood" 233 225 217 +"Sprout" 184 202 157 +"Spun Pearl" 162 161 172 +"Squirrel" 143 125 107 +"St Tropaz" 50 84 130 +"Stack" 133 136 133 +"Star Dust" 160 161 151 +"Stark White" 210 198 182 +"Starship" 227 221 57 +"Steel Grey" 67 70 75 +"Stiletto" 131 61 62 +"Stinger" 141 112 42 +"Stonewall" 128 118 97 +"Storm Dust" 101 100 95 +"Storm Grey" 116 120 128 +"Stratos" 33 38 58 +"Straw" 218 190 130 +"Strikemaster" 148 106 129 +"Stromboli" 64 99 86 +"Studio" 114 74 161 +"Submarine" 140 156 156 +"Sugar Cane" 238 239 223 +"Sulu" 198 234 128 +"Summer Green" 143 182 156 +"Sun" 239 142 56 +"Sundance" 196 170 77 +"Sundown" 248 175 169 +"Sunflower" 218 192 26 +"Sunglo" 199 97 85 +"Sunset" 192 81 74 +"Sunshade" 250 157 73 +"Supernova" 255 180 55 +"Surf" 184 212 187 +"Surf Crest" 195 214 189 +"Surfie Green" 0 123 119 +"Sushi" 124 159 47 +"Suva Grey" 139 134 133 +"Swamp" 37 47 47 +"Swans Down" 218 230 221 +"Sweet Corn" 249 225 118 +"Sweet Pink" 238 145 141 +"Swirl" 215 206 197 +"Swiss Coffee" 219 208 202 +"Sycamore" 146 140 60 +"Tabasco" 142 58 54 +"Tacao" 246 174 120 +"Tacha" 210 185 96 +"Tahiti Gold" 220 114 42 +"Tahuna Sands" 216 204 155 +"Tall Poppy" 133 53 52 +"Tallow" 163 153 119 +"Tamarillo" 117 43 47 +"Tamarind" 62 47 46 +"Tana" 184 181 161 +"Tangaroa" 30 47 60 +"Tangerine" 205 93 52 +"Tango" 212 111 49 +"Tapa" 124 124 114 +"Tapestry" 179 112 132 +"Tara" 222 241 221 +"Tarawera" 37 60 72 +"Tasman" 186 192 179 +"Taupe Grey" 137 132 120 +"Tawny Port" 100 58 72 +"Tax Break" 73 101 105 +"Te Papa Green" 43 75 64 +"Tea" 191 181 162 +"Teak" 171 137 83 +"Teal Blue" 37 72 85 +"Temptress" 60 33 38 +"Tequila" 244 208 164 +"Texas" 236 230 126 +"Texas Rose" 252 176 87 +"Thatch" 177 148 143 +"Thatch Green" 84 78 49 +"Thistle" 199 189 149 +"Thunder" 77 77 75 +"Thunderbird" 146 56 48 +"Tia Maria" 151 66 45 +"Tiara" 185 195 190 +"Tiber" 24 67 67 +"Tidal" 240 245 144 +"Tide" 190 180 171 +"Timber Green" 50 67 54 +"Titan White" 221 214 225 +"Toast" 159 113 95 +"Tobacco Brown" 109 88 67 +"Tobago" 68 54 45 +"Toledo" 62 38 49 +"Tolopea" 45 37 65 +"Tom Thumb" 79 99 72 +"Tonys Pink" 231 158 136 +"Topaz" 129 124 135 +"Torea Bay" 53 61 117 +"Tory Blue" 55 78 136 +"Tosca" 116 64 66 +"Totem Pole" 136 53 49 +"Touch Wood" 58 55 46 +"Tower Grey" 156 172 165 +"Tradewind" 109 175 167 +"Tranquil" 221 237 233 +"Travertine" 226 221 199 +"Tree Poppy" 226 129 59 +"Treehouse" 60 52 46 +"Trendy Green" 126 132 36 +"Trendy Pink" 128 93 128 +"Trinidad" 197 79 51 +"Tropical Blue" 174 201 235 +"Trout" 76 83 86 +"True V" 142 114 199 +"Tuatara" 69 70 66 +"Tuft Bush" 249 211 190 +"Tulip Tree" 227 172 61 +"Tumbleweed" 75 65 42 +"Tuna" 70 73 78 +"Tundora" 88 84 82 +"Turbo" 245 204 35 +"Turkish Rose" 165 110 117 +"Turmeric" 174 144 65 +"Turtle Green" 54 62 29 +"Tuscany" 173 98 66 +"Tusk" 227 229 177 +"Tussock" 191 145 75 +"Tutu" 248 228 227 +"Twilight" 218 192 205 +"Twilight Blue" 244 246 236 +"Twine" 193 145 86 +"Valencia" 212 87 78 +"Valentino" 56 44 56 +"Valhalla" 42 43 65 +"Van Cleef" 82 57 54 +"Vanilla" 204 182 155 +"Vanilla Ice" 235 210 209 +"Varden" 253 239 211 +"Venetian Red" 91 31 34 +"Venice Blue" 44 87 120 +"Venus" 139 125 130 +"Verdigris" 98 96 62 +"Verdun Green" 72 83 26 +"Vesuvius" 168 85 51 +"Victoria" 86 73 133 +"Vida Loca" 95 146 40 +"Viking" 77 177 200 +"Vin Rouge" 149 82 100 +"Viola" 197 143 157 +"Violent Violet" 46 34 73 +"Violet" 47 38 60 +"Viridian Green" 75 95 86 +"Vis Vis" 249 228 150 +"Vista Blue" 151 213 179 +"Vista White" 227 223 217 +"Volcano" 78 39 40 +"Voodoo" 68 50 64 +"Vulcan" 54 56 60 +"Wafer" 212 187 177 +"Waikawa Grey" 91 110 145 +"Waiouru" 76 78 49 +"Walnut" 121 77 46 +"Wan White" 228 226 220 +"Wasabi" 132 145 55 +"Water Leaf" 182 236 222 +"Watercourse" 0 110 78 +"Waterloo" 114 114 130 +"Wattle" 214 202 61 +"Watusi" 242 205 187 +"Wax Flower" 238 179 158 +"We Peep" 253 215 216 +"Wedgewood" 76 107 136 +"Well Read" 142 53 55 +"West Coast" 92 81 47 +"West Side" 229 130 58 +"Westar" 212 207 197 +"Western Red" 107 37 44 +"Wewak" 241 145 154 +"Wheatfield" 223 215 189 +"Whiskey" 210 144 98 +"Whiskey Sour" 212 145 93 +"Whisper" 239 230 230 +"White Ice" 215 238 228 +"White Lilac" 231 229 232 +"White Linen" 238 231 220 +"White Nectar" 248 246 216 +"White Pointer" 218 214 204 +"White Rock" 212 207 180 +"Wild Rice" 227 212 116 +"Wild Sand" 231 228 222 +"Wild Willow" 190 202 96 +"William" 83 115 111 +"Willow Brook" 223 230 207 +"Willow Grove" 105 117 92 +"Windsor" 70 44 119 +"Wine Berry" 82 44 53 +"Winter Hazel" 208 195 131 +"Wisp Pink" 249 232 226 +"Wisteria" 164 135 139 +"Wistful" 162 158 205 +"Witch Haze" 251 240 115 +"Wood Bark" 48 38 33 +"Woodburn" 70 54 41 +"Woodland" 98 103 70 +"Woodrush" 69 64 43 +"Woodsmoke" 43 50 48 +"Woody Bay" 51 52 58 +"Woody Brown" 85 69 69 +"Xanadu" 117 135 110 +"Yellow Metal" 115 99 62 +"Yellow Sea" 244 159 53 +"Your Pink" 255 197 187 +"Yukon Gold" 130 106 33 +"Yuma" 199 184 130 +"Zambezi" 107 90 90 +"Zanah" 178 198 177 +"Zest" 198 114 59 +"Zeus" 59 60 56 +"Ziggurat" 129 166 170 +"Zircon" 222 227 227 +"Zombie" 221 194 131 +"Zorba" 162 149 137 +"Zuccini" 23 70 46 +"Zumthor" 205 213 213 +"Zydeco" 32 72 63 diff --git a/scheme2c.init b/scheme2c.init index 80b91d1..4f98f81 100644 --- a/scheme2c.init +++ b/scheme2c.init @@ -29,11 +29,14 @@ ;;; the version the scheme implementation loading this file. (define (scheme-implementation-version) "?01nov91") -(define (implementation-vicinity) - (case (software-type) - ((unix) "/usr/local/lib/scheme/") - ((vms) "scheme$src:") - ((ms-dos) "C:\\scheme\\"))) +(define implementation-vicinity + (let ((impl-path + (case (software-type) + ((unix) "/usr/local/src/scheme/") + ((vms) "scheme$src:") + ((ms-dos) "C:\\scheme\\") + (else "")))) + (lambda () impl-path))) ;;; (library-vicinity) should be defined to be the pathname of the ;;; directory where files of Scheme library functions reside. @@ -95,8 +98,7 @@ ;@ (define sub-vicinity (case (software-type) - ((vms) (lambda - (vic name) + ((vms) (lambda (vic name) (let ((l (string-length vic))) (if (or (zero? (string-length vic)) (not (char=? #\] (string-ref vic (- l 1))))) @@ -136,6 +138,7 @@ ;(SLIB:LOAD-COMPILED "filename") vicinity srfi-59 + srfi-96 ;; Scheme report features ;; R5RS-compliant implementations should provide all 9 features. @@ -182,11 +185,11 @@ ;; Other common features -;;; srfi ;srfi-0, COND-EXPAND finds all srfi-* +;;; srfi-0 ;srfi-0, COND-EXPAND finds all srfi-* ;;; sicp ;runs code from Structure and ;Interpretation of Computer ;Programs by Abelson and Sussman. -;;; defmacro ;has Common Lisp DEFMACRO + defmacro ;has Common Lisp DEFMACRO ;;; record ;has user defined data structures string-port ;has CALL-WITH-INPUT-STRING and ;CALL-WITH-OUTPUT-STRING @@ -343,7 +346,6 @@ ;;; If your implementation provides R4RS macros: ;(define macro:eval slib:eval) ;(define macro:load load) -;; slib:eval-load definition moved to "require.scm" (define slib:warn (lambda args diff --git a/scheme48.init b/scheme48.init index 202c7bb..4c67a10 100644 --- a/scheme48.init +++ b/scheme48.init @@ -7,9 +7,36 @@ ,load-package floatnums ,config ,load =scheme48/misc/packages.scm + +(define-structure slib:os-strings + (export os-string->string) + (open scheme + (subset environments + (*structure-ref environment-ref)) + (subset handle (with-handler)) + (subset package-commands-internal + (config-package))) + (begin + (define (identity x) + x) + (define (xstructure-ref structure-name export-name default) + (call-with-current-continuation + (lambda (k) + (with-handler + (lambda (condition decline) + (k default)) + (lambda () + (*structure-ref (environment-ref (config-package) + structure-name) + export-name)))))) + (define os-string->string + (xstructure-ref 'os-strings 'os-string->string + identity)))) + (define-structure slib-primitives (export s48-char->integer s48-use! + s48-os-string->string s48-getenv s48-current-time s48-time-seconds (s48-access-mode :syntax) s48-accessible? @@ -29,6 +56,9 @@ (subset package-commands-internal (config-package)) (subset package-mutation (package-open!)) ;; primitives + (modify slib:os-strings + (prefix s48-) + (expose os-string->string)) (modify posix (rename (current-time s48-current-time) (time-seconds s48-time-seconds) @@ -54,7 +84,8 @@ ,user ,open slib-primitives -(define getenv s48-getenv) +(define (getenv name) + (s48-os-string->string (s48-getenv name))) (define system s48-system) ;;; (software-type) should be set to the generic operating system type. @@ -74,7 +105,13 @@ ;;; the version of the scheme implementation loading this file. (define scheme-implementation-version (let ((version (getenv "S48_VERSION"))) - (lambda () version))) + (define vl (string-length version)) + (do ((idx 0 (+ 1 idx))) + ((or (>= idx vl) + (not (or (char-numeric? (string-ref version idx)) + (memv (string-ref version idx) '(#\. #\-))))) + (let ((nv (substring version 0 idx))) + (lambda () nv)))))) ;;; (implementation-vicinity) should be defined to be the pathname of ;;; the directory where any auxiliary files to your Scheme @@ -139,8 +176,7 @@ ;@ (define sub-vicinity (case (software-type) - ((vms) (lambda - (vic name) + ((vms) (lambda (vic name) (let ((l (string-length vic))) (if (or (zero? (string-length vic)) (not (char=? #\] (string-ref vic (- l 1))))) @@ -181,6 +217,7 @@ ; here used for native modules vicinity srfi-59 + srfi-96 ;; Scheme report features ;; R5RS-compliant implementations should provide all 9 features. @@ -224,7 +261,7 @@ ;; Other common features -;;; srfi ;srfi-0, COND-EXPAND finds all srfi-* +;;; srfi-0 ;srfi-0, COND-EXPAND finds all srfi-* ;;; sicp ;runs code from Structure and ;Interpretation of Computer ;Programs by Abelson and Sussman. @@ -336,7 +373,7 @@ ;;; CHAR-CODE-LIMIT is one greater than the largest integer which can ;;; be returned by CHAR->INTEGER. -(define char-code-limit 256) +(define char-code-limit 128) (define integer->char s48-ascii->char) (define char->integer (let ((code0 (s48-char->integer (integer->char 0)))) @@ -355,13 +392,6 @@ (lambda (form) (eval form (interaction-environment))))) -;;; If your implementation provides R4RS macros: -(define macro:eval slib:eval) -(define (macro:load <pathname>) - (if (not (file-exists? <pathname>)) - (set! <pathname> (string-append <pathname> (scheme-file-suffix)))) - (load <pathname>)) - (define *defmacros* (list (cons 'defmacro (lambda (name parms . body) @@ -393,12 +423,6 @@ (string->symbol (string-append "slib:G" (number->string *gensym-counter*)))))) -(define base:eval slib:eval) -(define (defmacro:eval x) (base:eval (defmacro:expand* x))) - -(define defmacro:load macro:load) -;; slib:eval-load definition moved to "require.scm" - (define (slib:warn . args) ;;(if (provided? 'trace) (print-call-stack cep)) (apply s48-warn args)) @@ -420,9 +444,9 @@ ;;; Define these if your implementation's syntax can support them and if ;;; they are not already defined. -(define (1+ n) (+ n 1)) -(define (-1+ n) (+ n -1)) -;(define 1- -1+) +;;(define (1+ n) (+ n 1)) +;;(define (-1+ n) (+ n -1)) +;;(define 1- -1+) ;;; Define SLIB:EXIT to be the implementation procedure to exit or ;;; return if exiting not supported. @@ -448,6 +472,18 @@ ;;; At this point SLIB:LOAD must be able to load SLIB files. (define slib:load slib:load-source) +;;; If your implementation provides R4RS macros: +(define macro:eval slib:eval) +(define macro:load slib:load-source) + +(define base:eval slib:eval) +(define (defmacro:eval x) (slib:eval (defmacro:expand* x))) +(define defmacro:load macro:load) + +;;; If your implementation provides syntax-case macros: +;;(define syncase:eval slib:eval) +;;(define syncase:load slib:load-source) + ;;; Scheme48 complains that these are not defined (even though they ;;; won't be called until they are). (define synclo:load #f) @@ -475,8 +511,6 @@ ;;; Needed to support defmacro (require 'defmacroexpand) -(define *args* '()) -(define (program-arguments) (cons "scheme48" *args*)) ;@ (define (current-time) @@ -515,7 +549,7 @@ ,collect ,batch off -,dump slib.image "(slib 3a5)" +,dump slib.image "(slib 3b1)" ;;; Put Scheme48-specific code into catalog (call-with-output-file (in-vicinity (implementation-vicinity) "implcat") @@ -529,7 +563,12 @@ (define srfi (string->symbol (string-append "srfi-" (number->string idx)))) (display* " " (list srfi 'compiled srfi))) - '(1 2 5 6 7 8 9 11 13 14 16 17 23 25 26 27 28 31 34 35 36 37 42 45)) + (append + '(1 2 5 6 7 8 9 11 13 14 16 17 23 25 26 27 28 31 34 35 36 37 42 45) + (if (string>=? (scheme-implementation-version) "1.4") + '(4 39 40 43 43 60 61 63 66 67 71 78) + '()) + (if (string>=? (scheme-implementation-version) "1.5") '(19) '()))) (for-each (lambda (f) (define module @@ -81,8 +81,7 @@ ;@ (define sub-vicinity (case (software-type) - ((vms) (lambda - (vic name) + ((vms) (lambda (vic name) (let ((l (string-length vic))) (if (or (zero? (string-length vic)) (not (char=? #\] (string-ref vic (- l 1))))) @@ -123,6 +122,7 @@ ;(SLIB:LOAD-COMPILED "filename") vicinity srfi-59 + srfi-96 ;; Scheme report features ;; R5RS-compliant implementations should provide all 9 features. @@ -166,11 +166,11 @@ ;; Other common features -;;; srfi ;srfi-0, COND-EXPAND finds all srfi-* +;;; srfi-0 ;srfi-0, COND-EXPAND finds all srfi-* ;;; sicp ;runs code from Structure and ;Interpretation of Computer ;Programs by Abelson and Sussman. -;;; defmacro ;has Common Lisp DEFMACRO + defmacro ;has Common Lisp DEFMACRO ;;; record ;has user defined data structures ;;; string-port ;has CALL-WITH-INPUT-STRING and ;CALL-WITH-OUTPUT-STRING @@ -183,13 +183,16 @@ ;;; ed ;(ED) is editor ;;; system ;posix (system <string>) getenv ;posix (getenv <string>) -;;; program-arguments ;returns list of strings (argv) + program-arguments ;returns list of strings (argv) ;;; current-time ;returns time in seconds since 1/1/1970 ;; Implementation Specific features )) +;;@ http://practical-scheme.net/wiliki/schemexref.cgi?command-line +(define program-arguments command-line) + ;;@ (FILE-POSITION <port> . <k>) (define (file-position port . args) (if (null? args) @@ -272,10 +275,6 @@ (define (slib:eval form) (eval form (interaction-environment))) -;;; If your implementation provides R4RS macros: -(define macro:eval slib:eval) -(define macro:load load) - (define *defmacros* (list (cons 'defmacro (lambda (name parms . body) @@ -313,7 +312,6 @@ (define (defmacro:load pathname) (slib:eval-load pathname defmacro:eval)) -;; slib:eval-load definition moved to "require.scm" (define slib:warn (lambda args @@ -369,6 +367,14 @@ ;;; At this point SLIB:LOAD must be able to load SLIB files. (define slib:load slib:load-source) +;;; If your implementation provides R4RS macros: +(define macro:eval slib:eval) +(define macro:load slib:load-source) + +;;; If your implementation provides syntax-case macros: +;;(define syncase:eval slib:eval) +;;(define syncase:load slib:load-source) + ;;; Scheme48 complains that these are not defined (even though they ;;; won't be called until they are). (define synclo:load #f) @@ -17,18 +17,22 @@ (define (program-vicinity) (current-directory)) -(define (library-vicinity) - (string-append - (or (getenv "sisc.slib") - (getenv "sisc.lib") - (error "You must define the sisc.slib or sisc.lib property")) - "/")) - -(define (implementation-vicinity) - (string-append - (or (getenv "sisc.home") - (error "You must define the sisc.home property")) - "/")) +(define library-vicinity + (let ((lib-path + (string-append + (or (getenv "sisc.slib") + (getenv "sisc.lib") + (error "You must define the sisc.slib or sisc.lib property")) + "/"))) + (lambda () lib-path))) + +(define implementation-vicinity + (let ((impl-path + (string-append + (or (getenv "sisc.home") + (error "You must define the sisc.home property")) + "/"))) + (lambda () impl-path))) (define (user-vicinity) "") @@ -102,6 +106,7 @@ ;(SLIB:LOAD-COMPILED "filename") vicinity srfi-59 + srfi-96 ;;; Scheme report features ;; R5RS-compliant implementations should provide all 9 features. @@ -141,7 +146,7 @@ ;;; Other common features - srfi ;srfi-0, COND-EXPAND finds all srfi-* + srfi-0 ;srfi-0, COND-EXPAND finds all srfi-* ;;; sicp ;runs code from Structure and ;Interpretation of Computer ;Programs by Abelson and Sussman. @@ -335,9 +340,13 @@ ;;@ At this point SLIB:LOAD must be able to load SLIB files. (define slib:load slib:load-source) -;; If your implementation provides R4RS macros: +;;; If your implementation provides R4RS macros: (define macro:eval slib:eval) -(define macro:load load) +(define macro:load slib:load-source) + +;;; If your implementation provides syntax-case macros: +;;(define syncase:eval slib:eval) +;;(define syncase:load slib:load-source) ;@ (define gentemp gensym) @@ -1,11 +1,11 @@ .\" dummy line -.TH SLIB 1 "Jan 22 2005" +.TH 1 SLIB "Dec 20 2007" .UC 4 .SH NAME SLIB \- Scheme Library .SH SYNOPSIS .B slib -[ scheme | scm | gsi | mzscheme | guile | scheme48 | scmlit | elk | sisc | kawa ] +[ scheme | scm | gsi | mzscheme | guile | scheme48 | larceny | scmlit | elk | sisc | kawa ] .br .sp 0.3 .SH DESCRIPTION @@ -1,4 +1,4 @@ -SLIB(Jan 22 2005) SLIB(Jan 22 2005) +SLIB(Dec 20 2007) SLIB(Dec 20 2007) @@ -6,8 +6,8 @@ NAME SLIB - Scheme Library SYNOPSIS - slib [ scheme | scm | gsi | mzscheme | guile | scheme48 | scmlit | elk - | sisc | kawa ] + slib [ scheme | scm | gsi | mzscheme | guile | scheme48 | larceny | + scmlit | elk | sisc | kawa ] DESCRIPTION "SLIB" is a portable library for the programming language "Scheme". It @@ -45,4 +45,4 @@ SEE ALSO -4th Berkeley Distribution SLIB(Jan 22 2005) +4th Berkeley Distribution SLIB(Dec 20 2007) @@ -1,17 +1,17 @@ This is slib.info, produced by makeinfo version 4.8 from slib.texi. -This manual is for SLIB (version 3a5, November 2007), the portable | +This manual is for SLIB (version 3b1, February 2008), the portable | Scheme library. Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. | +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. | Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software - Foundation; with no Invariant Sections, no Front-Cover Texts, and | - no Back-Cover Texts. A copy of the license is included in the | - section entitled "GNU Free Documentation License." | + Foundation; with no Invariant Sections, no Front-Cover Texts, and + no Back-Cover Texts. A copy of the license is included in the + section entitled "GNU Free Documentation License." INFO-DIR-SECTION The Algorithmic Language Scheme START-INFO-DIR-ENTRY @@ -24,18 +24,18 @@ File: slib.info, Node: Top, Next: The Library System, Prev: (dir), Up: (dir) SLIB **** -This manual is for SLIB (version 3a5, November 2007), the portable | +This manual is for SLIB (version 3b1, February 2008), the portable | Scheme library. Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. | +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. | Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software - Foundation; with no Invariant Sections, no Front-Cover Texts, and | - no Back-Cover Texts. A copy of the license is included in the | - section entitled "GNU Free Documentation License." | + Foundation; with no Invariant Sections, no Front-Cover Texts, and + no Back-Cover Texts. A copy of the license is included in the + section entitled "GNU Free Documentation License." * Menu: @@ -139,8 +139,8 @@ The generalization of `provided?' for arbitrary features and catalog is (1) scheme-implementation-type is the name symbol of the running Scheme implementation (RScheme, |STk|, Bigloo, chez, Elk, gambit, -guile, JScheme, kawa, MacScheme, MITScheme, Pocket-Scheme, Scheme48, | -Scheme->C, Scheme48, Scsh, SISC, T, umb-scheme, or Vscm). Dependence on | +guile, JScheme, kawa, MacScheme, MITScheme, Pocket-Scheme, Scheme48, +Scheme->C, Scheme48, Scsh, SISC, T, umb-scheme, or Vscm). Dependence on scheme-implementation-type is almost always the wrong way to do things. @@ -862,7 +862,7 @@ implementations. implementation and the name of the operating system. An unspecified value is returned. - (slib:report-version) => slib "3a5" on scm "5b1" on unix | + (slib:report-version) => slib "3b1" on scm "5b1" on unix | -- Function: slib:report Displays the information of `(slib:report-version)' followed by @@ -877,7 +877,7 @@ implementations. (slib:report) => - slib "3a5" on scm "5b1" on unix | + slib "3b1" on scm "5b1" on unix | (implementation-vicinity) is "/usr/local/lib/scm/" (library-vicinity) is "/usr/local/lib/slib/" (scheme-file-suffix) is ".scm" @@ -980,19 +980,19 @@ These procedures are provided by all implementations. omitted, in which case it defaults to the value returned by `(current-output-port)'. - -- Function: file-position port | - -- Function: file-position port #f | - PORT must be open to a file. `file-position' returns the current | - position of the character in PORT which will next be read or | - written. If the implementation does not support file-position, | - then `#f' is returned. | - | - -- Function: file-position port k | - PORT must be open to a file. `file-position' sets the current | - position in PORT which will next be read or written. If | - successful, `#f' is returned; otherwise `file-position' returns | - `#f'. | - | + -- Function: file-position port + -- Function: file-position port #f + PORT must be open to a file. `file-position' returns the current + position of the character in PORT which will next be read or + written. If the implementation does not support file-position, + then `#f' is returned. + + -- Function: file-position port k + PORT must be open to a file. `file-position' sets the current + position in PORT which will next be read or written. If + successful, `#f' is returned; otherwise `file-position' returns + `#f'. + -- Function: output-port-width -- Function: output-port-width port Returns the width of PORT, which defaults to @@ -1061,21 +1061,21 @@ These procedures are provided by all implementations. If N is omitted or `#t', a success status is returned to the system (if possible). If N is `#f' a failure is returned to the system (if possible). If N is an integer, then N is returned to - the system (if possible). If the Scheme session cannot exit, then | - an unspecified value is returned from `slib:exit'. | + the system (if possible). If the Scheme session cannot exit, then + an unspecified value is returned from `slib:exit'. -- Function: browse-url url Web browsers have become so ubiquitous that programming languagues should support a uniform interface to them. - If a browser is running, `browse-url' causes the browser to | - display the page specified by string URL and returns `#t'. | + If a browser is running, `browse-url' causes the browser to + display the page specified by string URL and returns `#t'. If the browser is not running, `browse-url' starts a browser displaying the argument URL. If the browser starts as a - background job, `browse-url' returns `#t' immediately; if the | - browser starts as a foreground job, then `browse-url' returns `#t' | - when the browser exits; otherwise (if no browser) it returns `#f'. | + background job, `browse-url' returns `#t' immediately; if the + browser starts as a foreground job, then `browse-url' returns `#t' + when the browser exits; otherwise (if no browser) it returns `#f'. File: slib.info, Node: Miscellany, Prev: System, Up: Universal SLIB Procedures @@ -1095,7 +1095,7 @@ These procedures are provided by all implementations. => (foo bar) (map identity LST) == (copy-list LST) - | + 2.5.1 Mutual Exclusion ---------------------- @@ -2135,12 +2135,12 @@ File: slib.info, Node: Binding to multiple values, Next: Guarded LET* special -- Special Form: receive formals expression body ... `http://srfi.schemers.org/srfi-8/srfi-8.html' - `(require 'let-values)' or `(require 'srfi-11)' | - | - -- Special Form: let-values ((formals expression) ...) body ... | - -- Special Form: let-values* ((formals expression) ...) body ... | - `http://srfi.schemers.org/srfi-11/srfi-11.html' | - | + `(require 'let-values)' or `(require 'srfi-11)' + + -- Special Form: let-values ((formals expression) ...) body ... + -- Special Form: let-values* ((formals expression) ...) body ... + `http://srfi.schemers.org/srfi-11/srfi-11.html' + File: slib.info, Node: Guarded LET* special form, Next: Guarded COND Clause, Prev: Binding to multiple values, Up: Scheme Syntax Extension Packages @@ -2966,7 +2966,7 @@ File: slib.info, Node: Format, Next: Standard Formatted I/O, Prev: Precedence 4.2 Format (version 3.1) ======================== -`(require 'format)' or `(require 'srfi-28)' | +`(require 'format)' or `(require 'srfi-28)' * Menu: @@ -3850,7 +3850,7 @@ File: slib.info, Node: Programs and Arguments, Next: HTML, Prev: Standard For * Command Line:: A command line reader for Scheme shells * Parameter lists:: 'parameters * Getopt Parameter lists:: 'getopt-parameters -* Filenames:: 'glob or 'filename +* Filenames:: 'filename * Batch:: 'batch @@ -3952,9 +3952,9 @@ replaced them with a global variable: Example: #! /usr/local/bin/scm - ;;;This code is SCM specific. - (define argv (program-arguments)) + (require 'program-arguments) | (require 'getopt) + (define argv (program-arguments)) | (define opts ":a:b:cd") (let loop ((opt (getopt (length argv) argv opts))) @@ -4272,7 +4272,7 @@ File: slib.info, Node: Filenames, Next: Batch, Prev: Getopt Parameter lists, 4.4.6 Filenames --------------- -`(require 'filename)' or `(require 'glob)' +`(require 'filename)' | -- Function: filename:match?? pattern -- Function: filename:match-ci?? pattern @@ -4385,9 +4385,9 @@ currently uses 2 of these: * *unknown* -The `batch' module uses 2 enhanced relational tables (*note Using | -Databases::) to store information linking the names of | -`operating-system's to `batch-dialect'es. | +The `batch' module uses 2 enhanced relational tables (*note Using +Databases::) to store information linking the names of +`operating-system's to `batch-dialect'es. -- Function: batch:initialize! database Defines `operating-system' and `batch-dialect' tables and adds the @@ -4501,7 +4501,7 @@ Here is an example of the use of most of batch's procedures: (require 'databases) (require 'parameters) (require 'batch) - (require 'glob) + (require 'filename) | (define batch (create-database #f 'alist-table)) (batch:initialize! batch) @@ -5075,7 +5075,7 @@ File: slib.info, Node: Parsing HTML, Next: URI, Prev: HTTP and CGI, Up: Text File: slib.info, Node: URI, Next: Parsing XML, Prev: Parsing HTML, Up: Textual Conversion Packages - | + 4.10 URI ======== @@ -5205,819 +5205,819 @@ purpose. File: slib.info, Node: Parsing XML, Next: Printing Scheme, Prev: URI, Up: Textual Conversion Packages - | -4.11 Parsing XML | -================ | - | -`(require 'xml-parse)' or `(require 'ssax)' | - | -The XML standard document referred to in this module is | -`http://www.w3.org/TR/1998/REC-xml-19980210.html'. | - | -The present frameworks fully supports the XML Namespaces Recommendation | -`http://www.w3.org/TR/REC-xml-names'. | - | -4.11.1 String Glue | ------------------- | - | - -- Function: ssax:reverse-collect-str list-of-frags | - Given the list of fragments (some of which are text strings), | - reverse the list and concatenate adjacent text strings. If | - LIST-OF-FRAGS has zero or one element, the result of the procedure | - is `equal?' to its argument. | - | - -- Function: ssax:reverse-collect-str-drop-ws list-of-frags | - Given the list of fragments (some of which are text strings), | - reverse the list and concatenate adjacent text strings while | - dropping "unsignificant" whitespace, that is, whitespace in front, | - behind and between elements. The whitespace that is included in | - character data is not affected. | - | - Use this procedure to "intelligently" drop "insignificant" | - whitespace in the parsed SXML. If the strict compliance with the | - XML Recommendation regarding the whitespace is desired, use the | - `ssax:reverse-collect-str' procedure instead. | - | -4.11.2 Character and Token Functions | ------------------------------------- | - | -The following functions either skip, or build and return tokens, | -according to inclusion or delimiting semantics. The list of characters | -to expect, include, or to break at may vary from one invocation of a | -function to another. This allows the functions to easily parse even | -context-sensitive languages. | - | - Exceptions are mentioned specifically. The list of expected | -characters (characters to skip until, or break-characters) may include | -an EOF "character", which is coded as symbol *eof* | - | - The input stream to parse is specified as a PORT, which is the last | -argument. | - | - -- Function: ssax:assert-current-char char-list string port | - Reads a character from the PORT and looks it up in the CHAR-LIST | - of expected characters. If the read character was found among | - expected, it is returned. Otherwise, the procedure writes a | - message using STRING as a comment and quits. | - | - -- Function: ssax:skip-while char-list port | - Reads characters from the PORT and disregards them, as long as they | - are mentioned in the CHAR-LIST. The first character (which may be | - EOF) peeked from the stream that is _not_ a member of the | - CHAR-LIST is returned. | - | - -- Function: ssax:init-buffer | - Returns an initial buffer for `ssax:next-token*' procedures. | - `ssax:init-buffer' may allocate a new buffer at each invocation. | - | - -- Function: ssax:next-token prefix-char-list break-char-list | - comment-string port | - Skips any number of the prefix characters (members of the | - PREFIX-CHAR-LIST), if any, and reads the sequence of characters up | - to (but not including) a break character, one of the | - BREAK-CHAR-LIST. | - | - The string of characters thus read is returned. The break | - character is left on the input stream. BREAK-CHAR-LIST may | - include the symbol `*eof*'; otherwise, EOF is fatal, generating an | - error message including a specified COMMENT-STRING. | - | -`ssax:next-token-of' is similar to `ssax:next-token' except that it | -implements an inclusion rather than delimiting semantics. | - | - -- Function: ssax:next-token-of inc-charset port | - Reads characters from the PORT that belong to the list of | - characters INC-CHARSET. The reading stops at the first character | - which is not a member of the set. This character is left on the | - stream. All the read characters are returned in a string. | - | - -- Function: ssax:next-token-of pred port | - Reads characters from the PORT for which PRED (a procedure of one | - argument) returns non-#f. The reading stops at the first | - character for which PRED returns #f. That character is left on | - the stream. All the results of evaluating of PRED up to #f are | - returned in a string. | - | - PRED is a procedure that takes one argument (a character or the | - EOF object) and returns a character or #f. The returned character | - does not have to be the same as the input argument to the PRED. | - For example, | - | - (ssax:next-token-of (lambda (c) | - (cond ((eof-object? c) #f) | + +4.11 Parsing XML +================ + +`(require 'xml-parse)' or `(require 'ssax)' + +The XML standard document referred to in this module is +`http://www.w3.org/TR/1998/REC-xml-19980210.html'. + +The present frameworks fully supports the XML Namespaces Recommendation +`http://www.w3.org/TR/REC-xml-names'. + +4.11.1 String Glue +------------------ + + -- Function: ssax:reverse-collect-str list-of-frags + Given the list of fragments (some of which are text strings), + reverse the list and concatenate adjacent text strings. If + LIST-OF-FRAGS has zero or one element, the result of the procedure + is `equal?' to its argument. + + -- Function: ssax:reverse-collect-str-drop-ws list-of-frags + Given the list of fragments (some of which are text strings), + reverse the list and concatenate adjacent text strings while + dropping "unsignificant" whitespace, that is, whitespace in front, + behind and between elements. The whitespace that is included in + character data is not affected. + + Use this procedure to "intelligently" drop "insignificant" + whitespace in the parsed SXML. If the strict compliance with the + XML Recommendation regarding the whitespace is desired, use the + `ssax:reverse-collect-str' procedure instead. + +4.11.2 Character and Token Functions +------------------------------------ + +The following functions either skip, or build and return tokens, +according to inclusion or delimiting semantics. The list of characters +to expect, include, or to break at may vary from one invocation of a +function to another. This allows the functions to easily parse even +context-sensitive languages. + + Exceptions are mentioned specifically. The list of expected +characters (characters to skip until, or break-characters) may include +an EOF "character", which is coded as symbol *eof* + + The input stream to parse is specified as a PORT, which is the last +argument. + + -- Function: ssax:assert-current-char char-list string port + Reads a character from the PORT and looks it up in the CHAR-LIST + of expected characters. If the read character was found among + expected, it is returned. Otherwise, the procedure writes a + message using STRING as a comment and quits. + + -- Function: ssax:skip-while char-list port + Reads characters from the PORT and disregards them, as long as they + are mentioned in the CHAR-LIST. The first character (which may be + EOF) peeked from the stream that is _not_ a member of the + CHAR-LIST is returned. + + -- Function: ssax:init-buffer + Returns an initial buffer for `ssax:next-token*' procedures. + `ssax:init-buffer' may allocate a new buffer at each invocation. + + -- Function: ssax:next-token prefix-char-list break-char-list + comment-string port + Skips any number of the prefix characters (members of the + PREFIX-CHAR-LIST), if any, and reads the sequence of characters up + to (but not including) a break character, one of the + BREAK-CHAR-LIST. + + The string of characters thus read is returned. The break + character is left on the input stream. BREAK-CHAR-LIST may + include the symbol `*eof*'; otherwise, EOF is fatal, generating an + error message including a specified COMMENT-STRING. + +`ssax:next-token-of' is similar to `ssax:next-token' except that it +implements an inclusion rather than delimiting semantics. + + -- Function: ssax:next-token-of inc-charset port + Reads characters from the PORT that belong to the list of + characters INC-CHARSET. The reading stops at the first character + which is not a member of the set. This character is left on the + stream. All the read characters are returned in a string. + + -- Function: ssax:next-token-of pred port + Reads characters from the PORT for which PRED (a procedure of one + argument) returns non-#f. The reading stops at the first + character for which PRED returns #f. That character is left on + the stream. All the results of evaluating of PRED up to #f are + returned in a string. + + PRED is a procedure that takes one argument (a character or the + EOF object) and returns a character or #f. The returned character + does not have to be the same as the input argument to the PRED. + For example, + + (ssax:next-token-of (lambda (c) + (cond ((eof-object? c) #f) ((char-alphabetic? c) (char-downcase c)) - (else #f))) | - (current-input-port)) | - | - will try to read an alphabetic token from the current input port, | - and return it in lower case. | - | - -- Function: ssax:read-string len port | - Reads LEN characters from the PORT, and returns them in a string. | - If EOF is encountered before LEN characters are read, a shorter | - string will be returned. | - | -4.11.3 Data Types | ------------------ | - | -`TAG-KIND' | - A symbol `START', `END', `PI', `DECL', `COMMENT', `CDSECT', or | - `ENTITY-REF' that identifies a markup token | - | -`UNRES-NAME' | - a name (called GI in the XML Recommendation) as given in an XML | - document for a markup token: start-tag, PI target, attribute name. | - If a GI is an NCName, UNRES-NAME is this NCName converted into a | - Scheme symbol. If a GI is a QName, `UNRES-NAME' is a pair of | - symbols: `(PREFIX . LOCALPART)'. | - | -`RES-NAME' | - An expanded name, a resolved version of an `UNRES-NAME'. For an | - element or an attribute name with a non-empty namespace URI, | - `RES-NAME' is a pair of symbols, `(URI-SYMB . LOCALPART)'. | - Otherwise, it's a single symbol. | - | -`ELEM-CONTENT-MODEL' | - A symbol: | - `ANY' | - anything goes, expect an END tag. | - | - `EMPTY-TAG' | - no content, and no END-tag is coming | - | - `EMPTY' | - no content, expect the END-tag as the next token | - | - `PCDATA' | - expect character data only, and no children elements | - | - `MIXED' | - | - `ELEM-CONTENT' | - | -`URI-SYMB' | - A symbol representing a namespace URI - or other symbol chosen by | - the user to represent URI. In the former case, `URI-SYMB' is | - created by %-quoting of bad URI characters and converting the | - resulting string into a symbol. | - | -`NAMESPACES' | - A list representing namespaces in effect. An element of the list | - has one of the following forms: | - | - `(PREFIX URI-SYMB . URI-SYMB) or' | - | - `(PREFIX USER-PREFIX . URI-SYMB)' | - USER-PREFIX is a symbol chosen by the user to represent the | - URI. | - | - `(#f USER-PREFIX . URI-SYMB)' | - Specification of the user-chosen prefix and a URI-SYMBOL. | - | - `(*DEFAULT* USER-PREFIX . URI-SYMB)' | - Declaration of the default namespace | - | - `(*DEFAULT* #f . #f)' | - Un-declaration of the default namespace. This notation | - represents overriding of the previous declaration | - | - | - A NAMESPACES list may contain several elements for the same PREFIX. | - The one closest to the beginning of the list takes effect. | - | -`ATTLIST' | - An ordered collection of (NAME . VALUE) pairs, where NAME is a | - RES-NAME or an UNRES-NAME. The collection is an ADT. | - | -`STR-HANDLER' | - A procedure of three arguments: STRING1 STRING2 SEED returning a | - new SEED. The procedure is supposed to handle a chunk of | - character data STRING1 followed by a chunk of character data | - STRING2. STRING2 is a short string, often `"\n"' and even `""'. | - | -`ENTITIES' | - An assoc list of pairs: | - (NAMED-ENTITY-NAME . NAMED-ENTITY-BODY) | - | - where NAMED-ENTITY-NAME is a symbol under which the entity was | - declared, NAMED-ENTITY-BODY is either a string, or (for an | - external entity) a thunk that will return an input port (from which | - the entity can be read). NAMED-ENTITY-BODY may also be #f. This | - is an indication that a NAMED-ENTITY-NAME is currently being | - expanded. A reference to this NAMED-ENTITY-NAME will be an error: | - violation of the WFC nonrecursion. | - | -`XML-TOKEN' | - This record represents a markup, which is, according to the XML | - Recommendation, "takes the form of start-tags, end-tags, | - empty-element tags, entity references, character references, | - comments, CDATA section delimiters, document type declarations, and | - processing instructions." | - | - kind | - a TAG-KIND | - | - head | - an UNRES-NAME. For XML-TOKENs of kinds 'COMMENT and 'CDSECT, | - the head is #f. | - | - For example, | - <P> => kind=START, head=P | - </P> => kind=END, head=P | - <BR/> => kind=EMPTY-EL, head=BR | - <!DOCTYPE OMF ...> => kind=DECL, head=DOCTYPE | - <?xml version="1.0"?> => kind=PI, head=xml | - &my-ent; => kind=ENTITY-REF, head=my-ent | - | - Character references are not represented by xml-tokens as these | - references are transparently resolved into the corresponding | - characters. | - | -`XML-DECL' | - The record represents a datatype of an XML document: the list of | - declared elements and their attributes, declared notations, list of | - replacement strings or loading procedures for parsed general | - entities, etc. Normally an XML-DECL record is created from a DTD | - or an XML Schema, although it can be created and filled in in many | - other ways (e.g., loaded from a file). | - | - ELEMS | - an (assoc) list of decl-elem or #f. The latter instructs the | - parser to do no validation of elements and attributes. | - | - DECL-ELEM | - declaration of one element: | - | - `(ELEM-NAME ELEM-CONTENT DECL-ATTRS)' | - | - ELEM-NAME is an UNRES-NAME for the element. | - | - ELEM-CONTENT is an ELEM-CONTENT-MODEL. | - | - DECL-ATTRS is an `ATTLIST', of `(ATTR-NAME . VALUE)' | - associations. | - | - This element can declare a user procedure to handle parsing | - of an element (e.g., to do a custom validation, or to build a | - hash of IDs as they're encountered). | - | - DECL-ATTR | - an element of an `ATTLIST', declaration of one attribute: | - | - `(ATTR-NAME CONTENT-TYPE USE-TYPE DEFAULT-VALUE)' | - | - ATTR-NAME is an UNRES-NAME for the declared attribute. | - | - CONTENT-TYPE is a symbol: `CDATA', `NMTOKEN', `NMTOKENS', ... | - or a list of strings for the enumerated type. | - | - USE-TYPE is a symbol: `REQUIRED', `IMPLIED', or `FIXED'. | - | - DEFAULT-VALUE is a string for the default value, or #f if not | - given. | - | - | - | -4.11.4 Low-Level Parsers and Scanners | -------------------------------------- | - | -These procedures deal with primitive lexical units (Names, whitespaces, | -tags) and with pieces of more generic productions. Most of these | -parsers must be called in appropriate context. For example, | -`ssax:complete-start-tag' must be called only when the start-tag has | -been detected and its GI has been read. | - | - -- Function: ssax:skip-s port | - Skip the S (whitespace) production as defined by | - [3] S ::= (#x20 | #x09 | #x0D | #x0A) | - | - `ssax:skip-s' returns the first not-whitespace character it | - encounters while scanning the PORT. This character is left on the | - input stream. | - | - -- Function: ssax:read-ncname port | - Read a NCName starting from the current position in the PORT and | - return it as a symbol. | - | - [4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | - | CombiningChar | Extender | - [5] Name ::= (Letter | '_' | ':') (NameChar)* | - | - This code supports the XML Namespace Recommendation REC-xml-names, | - which modifies the above productions as follows: | - | - [4] NCNameChar ::= Letter | Digit | '.' | '-' | '_' | - | CombiningChar | Extender | - [5] NCName ::= (Letter | '_') (NCNameChar)* | - | - As the Rec-xml-names says, | - | - "An XML document conforms to this specification if all other | - tokens [other than element types and attribute names] in the | - document which are required, for XML conformance, to match | - the XML production for Name, match this specification's | - production for NCName." | - | - Element types and attribute names must match the production QName, | - defined below. | - | - -- Function: ssax:read-qname port | - Read a (namespace-) Qualified Name, QName, from the current | - position in PORT; and return an UNRES-NAME. | - | - From REC-xml-names: | - [6] QName ::= (Prefix ':')? LocalPart | - [7] Prefix ::= NCName | - [8] LocalPart ::= NCName | - | - -- Function: ssax:read-markup-token port | - This procedure starts parsing of a markup token. The current | - position in the stream must be `<'. This procedure scans enough | - of the input stream to figure out what kind of a markup token it | - is seeing. The procedure returns an XML-TOKEN structure | - describing the token. Note, generally reading of the current | - markup is not finished! In particular, no attributes of the | - start-tag token are scanned. | - | - Here's a detailed break out of the return values and the position | - in the PORT when that particular value is returned: | - | - PI-token | - only PI-target is read. To finish the Processing-Instruction | - and disregard it, call `ssax:skip-pi'. `ssax:read-attributes' | - may be useful as well (for PIs whose content is | - attribute-value pairs). | - | - END-token | - The end tag is read completely; the current position is right | - after the terminating `>' character. | - | - COMMENT | - is read and skipped completely. The current position is | - right after `-->' that terminates the comment. | - | - CDSECT | - The current position is right after `<!CDATA['. Use | - `ssax:read-cdata-body' to read the rest. | - | - DECL | - We have read the keyword (the one that follows `<!') | - identifying this declaration markup. The current position is | - after the keyword (usually a whitespace character) | - | - START-token | - We have read the keyword (GI) of this start tag. No | - attributes are scanned yet. We don't know if this tag has an | - empty content either. Use `ssax:complete-start-tag' to | - finish parsing of the token. | - | - | - -- Function: ssax:skip-pi port | - The current position is inside a PI. Skip till the rest of the PI | - | - -- Function: ssax:read-pi-body-as-string port | - The current position is right after reading the PITarget. We read | - the body of PI and return is as a string. The port will point to | - the character right after `?>' combination that terminates PI. | - | - [16] PI ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>' | - | - -- Function: ssax:skip-internal-dtd port | - The current pos in the port is inside an internal DTD subset (e.g., | - after reading `#\[' that begins an internal DTD subset) Skip until | - the `]>' combination that terminates this DTD. | - | - -- Function: ssax:read-cdata-body port str-handler seed | - This procedure must be called after we have read a string | - `<![CDATA[' that begins a CDATA section. The current position | - must be the first position of the CDATA body. This function reads | - _lines_ of the CDATA body and passes them to a STR-HANDLER, a | - character data consumer. | - | - STR-HANDLER is a procedure taking arguments: STRING1, STRING2, and | - SEED. The first STRING1 argument to STR-HANDLER never contains a | - newline; the second STRING2 argument often will. On the first | - invocation of STR-HANDLER, SEED is the one passed to | - `ssax:read-cdata-body' as the third argument. The result of this | - first invocation will be passed as the SEED argument to the second | - invocation of the line consumer, and so on. The result of the | - last invocation of the STR-HANDLER is returned by the | - `ssax:read-cdata-body'. Note a similarity to the fundamental | - "fold" iterator. | - | - Within a CDATA section all characters are taken at their face | - value, with three exceptions: | - * CR, LF, and CRLF are treated as line delimiters, and passed | - as a single `#\newline' to STR-HANDLER | - | - * `]]>' combination is the end of the CDATA section. `>' is | - treated as an embedded `>' character. | - | - * `<' and `&' are not specially recognized (and are not | - expanded)! | - | - | - -- Function: ssax:read-char-ref port | - [66] CharRef ::= '&#' [0-9]+ ';' | - | '&#x' [0-9a-fA-F]+ ';' | - | - This procedure must be called after we we have read `&#' that | - introduces a char reference. The procedure reads this reference | - and returns the corresponding char. The current position in PORT | - will be after the `;' that terminates the char reference. | - | - Faults detected: | - WFC: XML-Spec.html#wf-Legalchar | - | - According to Section `4.1 Character and Entity References' of the | - XML Recommendation: | - | - "[Definition: A character reference refers to a specific | - character in the ISO/IEC 10646 character set, for example one | - not directly accessible from available input devices.]" | - | - | - -- Function: ssax:handle-parsed-entity port name entities | - content-handler str-handler seed | - Expands and handles a parsed-entity reference. | - | - NAME is a symbol, the name of the parsed entity to expand. | - CONTENT-HANDLER is a procedure of arguments PORT, ENTITIES, and | - SEED that returns a seed. STR-HANDLER is called if the entity in | - question is a pre-declared entity. | - | - `ssax:handle-parsed-entity' returns the result returned by | - CONTENT-HANDLER or STR-HANDLER. | - | - Faults detected: | - WFC: XML-Spec.html#wf-entdeclared | - WFC: XML-Spec.html#norecursion | - | - -- Function: attlist-add attlist name-value | - Add a NAME-VALUE pair to the existing ATTLIST, preserving its | - sorted ascending order; and return the new list. Return #f if a | - pair with the same name already exists in ATTLIST | - | - -- Function: attlist-remove-top attlist | - Given an non-null ATTLIST, return a pair of values: the top and | - the rest. | - | - -- Function: ssax:read-attributes port entities | - This procedure reads and parses a production "Attribute". | - | - [41] Attribute ::= Name Eq AttValue | - [10] AttValue ::= '"' ([^<&"] | Reference)* '"' | - | "'" ([^<&'] | Reference)* "'" | - [25] Eq ::= S? '=' S? | - | - The procedure returns an ATTLIST, of Name (as UNRES-NAME), Value | - (as string) pairs. The current character on the PORT is a | - non-whitespace character that is not an NCName-starting character. | - | - Note the following rules to keep in mind when reading an | - "AttValue": | - | - Before the value of an attribute is passed to the application | - or checked for validity, the XML processor must normalize it | - as follows: | - | - * A character reference is processed by appending the | - referenced character to the attribute value. | - | - * An entity reference is processed by recursively | - processing the replacement text of the entity. The | - named entities `amp', `lt', `gt', `quot', and `apos' are | - pre-declared. | - | - * A whitespace character (#x20, #x0D, #x0A, #x09) is | - processed by appending #x20 to the normalized value, | - except that only a single #x20 is appended for a | - "#x0D#x0A" sequence that is part of an external parsed | - entity or the literal entity value of an internal parsed | - entity. | - | - * Other characters are processed by appending them to the | - normalized value. | - | - | - | - Faults detected: | - WFC: XML-Spec.html#CleanAttrVals | - WFC: XML-Spec.html#uniqattspec | - | - -- Function: ssax:resolve-name port unres-name namespaces | - apply-default-ns? | - Convert an UNRES-NAME to a RES-NAME, given the appropriate | - NAMESPACES declarations. The last parameter, APPLY-DEFAULT-NS?, | - determines if the default namespace applies (for instance, it does | - not for attribute names). | - | - Per REC-xml-names/#nsc-NSDeclared, the "xml" prefix is considered | - pre-declared and bound to the namespace name | - "http://www.w3.org/XML/1998/namespace". | - | - `ssax:resolve-name' tests for the namespace constraints: | - `http://www.w3.org/TR/REC-xml-names/#nsc-NSDeclared' | - | - -- Function: ssax:complete-start-tag tag port elems entities namespaces | - Complete parsing of a start-tag markup. `ssax:complete-start-tag' | - must be called after the start tag token has been read. TAG is an | - UNRES-NAME. ELEMS is an instance of the ELEMS slot of XML-DECL; | - it can be #f to tell the function to do _no_ validation of | - elements and their attributes. | - | - `ssax:complete-start-tag' returns several values: | - * ELEM-GI: a RES-NAME. | - | - * ATTRIBUTES: element's attributes, an ATTLIST of (RES-NAME . | - STRING) pairs. The list does NOT include xmlns attributes. | - | - * NAMESPACES: the input list of namespaces amended with | - namespace (re-)declarations contained within the start-tag | - under parsing | - | - * ELEM-CONTENT-MODEL | - | - On exit, the current position in PORT will be the first character | - after `>' that terminates the start-tag markup. | - | - Faults detected: | - VC: XML-Spec.html#enum | - VC: XML-Spec.html#RequiredAttr | - VC: XML-Spec.html#FixedAttr | - VC: XML-Spec.html#ValueType | - WFC: XML-Spec.html#uniqattspec (after namespaces prefixes are | - resolved) | - VC: XML-Spec.html#elementvalid | - WFC: REC-xml-names/#dt-NSName | - | - _Note_: although XML Recommendation does not explicitly say it, | - xmlns and xmlns: attributes don't have to be declared (although | - they can be declared, to specify their default value). | - | - -- Function: ssax:read-external-id port | - Parses an ExternalID production: | - | - [75] ExternalID ::= 'SYSTEM' S SystemLiteral | - | 'PUBLIC' S PubidLiteral S SystemLiteral | - [11] SystemLiteral ::= ('"' [^"]* '"') | ("'" [^']* "'") | - [12] PubidLiteral ::= '"' PubidChar* '"' | - | "'" (PubidChar - "'")* "'" | - [13] PubidChar ::= #x20 | #x0D | #x0A | [a-zA-Z0-9] | - | [-'()+,./:=?;!*#@$_%] | - | - Call `ssax:read-external-id' when an ExternalID is expected; that | - is, the current character must be either #\S or #\P that starts | - correspondingly a SYSTEM or PUBLIC token. `ssax:read-external-id' | - returns the SYSTEMLITERAL as a string. A PUBIDLITERAL is | - disregarded if present. | - | -4.11.5 Mid-Level Parsers and Scanners | -------------------------------------- | - | -These procedures parse productions corresponding to the whole | -(document) entity or its higher-level pieces (prolog, root element, | -etc). | - | - -- Function: ssax:scan-misc port | - Scan the Misc production in the context: | - | - [1] document ::= prolog element Misc* | - [22] prolog ::= XMLDecl? Misc* (doctypedec l Misc*)? | - [27] Misc ::= Comment | PI | S | - | - Call `ssax:scan-misc' in the prolog or epilog contexts. In these | - contexts, whitespaces are completely ignored. The return value | - from `ssax:scan-misc' is either a PI-token, a DECL-token, a START | - token, or *EOF*. Comments are ignored and not reported. | - | - -- Function: ssax:read-char-data port expect-eof? str-handler iseed | - Read the character content of an XML document or an XML element. | - | - [43] content ::= | - (element | CharData | Reference | CDSect | PI | Comment)* | - | - To be more precise, `ssax:read-char-data' reads CharData, expands | - CDSect and character entities, and skips comments. | - `ssax:read-char-data' stops at a named reference, EOF, at the | - beginning of a PI, or a start/end tag. | - | - EXPECT-EOF? is a boolean indicating if EOF is normal; i.e., the | - character data may be terminated by the EOF. EOF is normal while | - processing a parsed entity. | - | - ISEED is an argument passed to the first invocation of STR-HANDLER. | - | - `ssax:read-char-data' returns two results: SEED and TOKEN. The | - SEED is the result of the last invocation of STR-HANDLER, or the | - original ISEED if STR-HANDLER was never called. | - | - TOKEN can be either an eof-object (this can happen only if | - EXPECT-EOF? was #t), or: | - * an xml-token describing a START tag or an END-tag; For a | - start token, the caller has to finish reading it. | - | - * an xml-token describing the beginning of a PI. It's up to an | - application to read or skip through the rest of this PI; | - | - * an xml-token describing a named entity reference. | - | - | - CDATA sections and character references are expanded inline and | - never returned. Comments are silently disregarded. | - | - As the XML Recommendation requires, all whitespace in character | - data must be preserved. However, a CR character (#x0D) must be | - disregarded if it appears before a LF character (#x0A), or replaced | - by a #x0A character otherwise. See Secs. 2.10 and 2.11 of the XML | - Recommendation. See also the canonical XML Recommendation. | - | - -- Function: ssax:assert-token token kind gi error-cont | - Make sure that TOKEN is of anticipated KIND and has anticipated | - GI. Note that the GI argument may actually be a pair of two | - symbols, Namespace-URI or the prefix, and of the localname. If | - the assertion fails, ERROR-CONT is evaluated by passing it three | - arguments: TOKEN KIND GI. The result of ERROR-CONT is returned. | - | -4.11.6 High-level Parsers | -------------------------- | - | -These procedures are to instantiate a SSAX parser. A user can | -instantiate the parser to do the full validation, or no validation, or | -any particular validation. The user specifies which PI he wants to be | -notified about. The user tells what to do with the parsed character | -and element data. The latter handlers determine if the parsing follows | -a SAX or a DOM model. | - | - -- Function: ssax:make-pi-parser my-pi-handlers | - Create a parser to parse and process one Processing Element (PI). | - | - MY-PI-HANDLERS is an association list of pairs `(PI-TAG . | - PI-HANDLER)' where PI-TAG is an NCName symbol, the PI target; and | - PI-HANDLER is a procedure taking arguments PORT, PI-TAG, and SEED. | - | - PI-HANDLER should read the rest of the PI up to and including the | - combination `?>' that terminates the PI. The handler should | - return a new seed. One of the PI-TAGs may be the symbol | - `*DEFAULT*'. The corresponding handler will handle PIs that no | - other handler will. If the *DEFAULT* PI-TAG is not specified, | - `ssax:make-pi-parser' will assume the default handler that skips | - the body of the PI. | - | - `ssax:make-pi-parser' returns a procedure of arguments PORT, | - PI-TAG, and SEED; that will parse the current PI according to | - MY-PI-HANDLERS. | - | - -- Function: ssax:make-elem-parser my-new-level-seed my-finish-element | - my-char-data-handler my-pi-handlers | - Create a parser to parse and process one element, including its | - character content or children elements. The parser is typically | - applied to the root element of a document. | - | - MY-NEW-LEVEL-SEED | - is a procedure taking arguments: | - | - ELEM-GI ATTRIBUTES NAMESPACES EXPECTED-CONTENT SEED | - | - where ELEM-GI is a RES-NAME of the element about to be | - processed. | - | - MY-NEW-LEVEL-SEED is to generate the seed to be passed to | - handlers that process the content of the element. | - | - MY-FINISH-ELEMENT | - is a procedure taking arguments: | - | - ELEM-GI ATTRIBUTES NAMESPACES PARENT-SEED SEED | - | - MY-FINISH-ELEMENT is called when parsing of ELEM-GI is | - finished. The SEED is the result from the last content | - parser (or from MY-NEW-LEVEL-SEED if the element has the | - empty content). PARENT-SEED is the same seed as was passed | - to MY-NEW-LEVEL-SEED. MY-FINISH-ELEMENT is to generate a | - seed that will be the result of the element parser. | - | - MY-CHAR-DATA-HANDLER | - is a STR-HANDLER as described in Data Types above. | - | - MY-PI-HANDLERS | - is as described for `ssax:make-pi-handler' above. | - | - | - The generated parser is a procedure taking arguments: | - | - START-TAG-HEAD PORT ELEMS ENTITIES NAMESPACES PRESERVE-WS? SEED | - | - The procedure must be called after the start tag token has been | - read. START-TAG-HEAD is an UNRES-NAME from the start-element tag. | - ELEMS is an instance of ELEMS slot of XML-DECL. | - | - Faults detected: | - VC: XML-Spec.html#elementvalid | - WFC: XML-Spec.html#GIMatch | - | - -- Function: ssax:make-parser user-handler-tag user-handler ... | - Create an XML parser, an instance of the XML parsing framework. | - This will be a SAX, a DOM, or a specialized parser depending on the | - supplied user-handlers. | - | - `ssax:make-parser' takes an even number of arguments; | - USER-HANDLER-TAG is a symbol that identifies a procedure (or | - association list for `PROCESSING-INSTRUCTIONS') (USER-HANDLER) | - that follows the tag. Given below are tags and signatures of the | - corresponding procedures. Not all tags have to be specified. If | - some are omitted, reasonable defaults will apply. | - | - `DOCTYPE' | - handler-procedure: PORT DOCNAME SYSTEMID INTERNAL-SUBSET? SEED | - | - If INTERNAL-SUBSET? is #t, the current position in the port is | - right after we have read `[' that begins the internal DTD | - subset. We must finish reading of this subset before we | - return (or must call `skip-internal-dtd' if we aren't | - interested in reading it). PORT at exit must be at the first | - symbol after the whole DOCTYPE declaration. | - | - The handler-procedure must generate four values: | - | - ELEMS ENTITIES NAMESPACES SEED | - | - ELEMS is as defined for the ELEMS slot of XML-DECL. It may be | - #f to switch off validation. NAMESPACES will typically | - contain USER-PREFIXes for selected URI-SYMBs. The default | - handler-procedure skips the internal subset, if any, and | - returns `(values #f '() '() seed)'. | - | - `UNDECL-ROOT' | - procedure: ELEM-GI SEED | - | - where ELEM-GI is an UNRES-NAME of the root element. This | - procedure is called when an XML document under parsing | - contains _no_ DOCTYPE declaration. | - | - The handler-procedure, as a DOCTYPE handler procedure above, | - must generate four values: | - | - ELEMS ENTITIES NAMESPACES SEED | - | - The default handler-procedure returns (values #f '() '() seed) | - | - `DECL-ROOT' | - procedure: ELEM-GI SEED | - | - where ELEM-GI is an UNRES-NAME of the root element. This | - procedure is called when an XML document under parsing does | - contains the DOCTYPE declaration. The handler-procedure must | - generate a new SEED (and verify that the name of the root | - element matches the doctype, if the handler so wishes). The | - default handler-procedure is the identity function. | - | - `NEW-LEVEL-SEED' | - procedure: see ssax:make-elem-parser, my-new-level-seed | - | - `FINISH-ELEMENT' | - procedure: see ssax:make-elem-parser, my-finish-element | - | - `CHAR-DATA-HANDLER' | - procedure: see ssax:make-elem-parser, my-char-data-handler | - | - `PROCESSING-INSTRUCTIONS' | - association list as is passed to `ssax:make-pi-parser'. The | - default value is '() | - | - | - The generated parser is a procedure of arguments PORT and SEED. | - | - This procedure parses the document prolog and then exits to an | - element parser (created by `ssax:make-elem-parser') to handle the | - rest. | - | - [1] document ::= prolog element Misc* | - [22] prolog ::= XMLDecl? Misc* (doctypedec | Misc*)? | - [27] Misc ::= Comment | PI | S | - [28] doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S? | - ('[' (markupdecl | PEReference | S)* ']' S?)? '>' | - [29] markupdecl ::= elementdecl | AttlistDecl | - | EntityDecl | - | NotationDecl | PI | - | Comment | - | -4.11.7 Parsing XML to SXML | --------------------------- | - | - -- Function: ssax:xml->sxml port namespace-prefix-assig | - This is an instance of the SSAX parser that returns an SXML | - representation of the XML document to be read from PORT. | - NAMESPACE-PREFIX-ASSIG is a list of `(USER-PREFIX . URI-STRING)' | - that assigns USER-PREFIXes to certain namespaces identified by | - particular URI-STRINGs. It may be an empty list. | - `ssax:xml->sxml' returns an SXML tree. The port points out to the | - first character after the root element. | - | + (else #f))) + (current-input-port)) + + will try to read an alphabetic token from the current input port, + and return it in lower case. + + -- Function: ssax:read-string len port + Reads LEN characters from the PORT, and returns them in a string. + If EOF is encountered before LEN characters are read, a shorter + string will be returned. + +4.11.3 Data Types +----------------- + +`TAG-KIND' + A symbol `START', `END', `PI', `DECL', `COMMENT', `CDSECT', or + `ENTITY-REF' that identifies a markup token + +`UNRES-NAME' + a name (called GI in the XML Recommendation) as given in an XML + document for a markup token: start-tag, PI target, attribute name. + If a GI is an NCName, UNRES-NAME is this NCName converted into a + Scheme symbol. If a GI is a QName, `UNRES-NAME' is a pair of + symbols: `(PREFIX . LOCALPART)'. + +`RES-NAME' + An expanded name, a resolved version of an `UNRES-NAME'. For an + element or an attribute name with a non-empty namespace URI, + `RES-NAME' is a pair of symbols, `(URI-SYMB . LOCALPART)'. + Otherwise, it's a single symbol. + +`ELEM-CONTENT-MODEL' + A symbol: + `ANY' + anything goes, expect an END tag. + + `EMPTY-TAG' + no content, and no END-tag is coming + + `EMPTY' + no content, expect the END-tag as the next token + + `PCDATA' + expect character data only, and no children elements + + `MIXED' + + `ELEM-CONTENT' + +`URI-SYMB' + A symbol representing a namespace URI - or other symbol chosen by + the user to represent URI. In the former case, `URI-SYMB' is + created by %-quoting of bad URI characters and converting the + resulting string into a symbol. + +`NAMESPACES' + A list representing namespaces in effect. An element of the list + has one of the following forms: + + `(PREFIX URI-SYMB . URI-SYMB) or' + + `(PREFIX USER-PREFIX . URI-SYMB)' + USER-PREFIX is a symbol chosen by the user to represent the + URI. + + `(#f USER-PREFIX . URI-SYMB)' + Specification of the user-chosen prefix and a URI-SYMBOL. + + `(*DEFAULT* USER-PREFIX . URI-SYMB)' + Declaration of the default namespace + + `(*DEFAULT* #f . #f)' + Un-declaration of the default namespace. This notation + represents overriding of the previous declaration + + + A NAMESPACES list may contain several elements for the same PREFIX. + The one closest to the beginning of the list takes effect. + +`ATTLIST' + An ordered collection of (NAME . VALUE) pairs, where NAME is a + RES-NAME or an UNRES-NAME. The collection is an ADT. + +`STR-HANDLER' + A procedure of three arguments: STRING1 STRING2 SEED returning a + new SEED. The procedure is supposed to handle a chunk of + character data STRING1 followed by a chunk of character data + STRING2. STRING2 is a short string, often `"\n"' and even `""'. + +`ENTITIES' + An assoc list of pairs: + (NAMED-ENTITY-NAME . NAMED-ENTITY-BODY) + + where NAMED-ENTITY-NAME is a symbol under which the entity was + declared, NAMED-ENTITY-BODY is either a string, or (for an + external entity) a thunk that will return an input port (from which + the entity can be read). NAMED-ENTITY-BODY may also be #f. This + is an indication that a NAMED-ENTITY-NAME is currently being + expanded. A reference to this NAMED-ENTITY-NAME will be an error: + violation of the WFC nonrecursion. + +`XML-TOKEN' + This record represents a markup, which is, according to the XML + Recommendation, "takes the form of start-tags, end-tags, + empty-element tags, entity references, character references, + comments, CDATA section delimiters, document type declarations, and + processing instructions." + + kind + a TAG-KIND + + head + an UNRES-NAME. For XML-TOKENs of kinds 'COMMENT and 'CDSECT, + the head is #f. + + For example, + <P> => kind=START, head=P + </P> => kind=END, head=P + <BR/> => kind=EMPTY-EL, head=BR + <!DOCTYPE OMF ...> => kind=DECL, head=DOCTYPE + <?xml version="1.0"?> => kind=PI, head=xml + &my-ent; => kind=ENTITY-REF, head=my-ent + + Character references are not represented by xml-tokens as these + references are transparently resolved into the corresponding + characters. + +`XML-DECL' + The record represents a datatype of an XML document: the list of + declared elements and their attributes, declared notations, list of + replacement strings or loading procedures for parsed general + entities, etc. Normally an XML-DECL record is created from a DTD + or an XML Schema, although it can be created and filled in in many + other ways (e.g., loaded from a file). + + ELEMS + an (assoc) list of decl-elem or #f. The latter instructs the + parser to do no validation of elements and attributes. + + DECL-ELEM + declaration of one element: + + `(ELEM-NAME ELEM-CONTENT DECL-ATTRS)' + + ELEM-NAME is an UNRES-NAME for the element. + + ELEM-CONTENT is an ELEM-CONTENT-MODEL. + + DECL-ATTRS is an `ATTLIST', of `(ATTR-NAME . VALUE)' + associations. + + This element can declare a user procedure to handle parsing + of an element (e.g., to do a custom validation, or to build a + hash of IDs as they're encountered). + + DECL-ATTR + an element of an `ATTLIST', declaration of one attribute: + + `(ATTR-NAME CONTENT-TYPE USE-TYPE DEFAULT-VALUE)' + + ATTR-NAME is an UNRES-NAME for the declared attribute. + + CONTENT-TYPE is a symbol: `CDATA', `NMTOKEN', `NMTOKENS', ... + or a list of strings for the enumerated type. + + USE-TYPE is a symbol: `REQUIRED', `IMPLIED', or `FIXED'. + + DEFAULT-VALUE is a string for the default value, or #f if not + given. + + + +4.11.4 Low-Level Parsers and Scanners +------------------------------------- + +These procedures deal with primitive lexical units (Names, whitespaces, +tags) and with pieces of more generic productions. Most of these +parsers must be called in appropriate context. For example, +`ssax:complete-start-tag' must be called only when the start-tag has +been detected and its GI has been read. + + -- Function: ssax:skip-s port + Skip the S (whitespace) production as defined by + [3] S ::= (#x20 | #x09 | #x0D | #x0A) + + `ssax:skip-s' returns the first not-whitespace character it + encounters while scanning the PORT. This character is left on the + input stream. + + -- Function: ssax:read-ncname port + Read a NCName starting from the current position in the PORT and + return it as a symbol. + + [4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' + | CombiningChar | Extender + [5] Name ::= (Letter | '_' | ':') (NameChar)* + + This code supports the XML Namespace Recommendation REC-xml-names, + which modifies the above productions as follows: + + [4] NCNameChar ::= Letter | Digit | '.' | '-' | '_' + | CombiningChar | Extender + [5] NCName ::= (Letter | '_') (NCNameChar)* + + As the Rec-xml-names says, + + "An XML document conforms to this specification if all other + tokens [other than element types and attribute names] in the + document which are required, for XML conformance, to match + the XML production for Name, match this specification's + production for NCName." + + Element types and attribute names must match the production QName, + defined below. + + -- Function: ssax:read-qname port + Read a (namespace-) Qualified Name, QName, from the current + position in PORT; and return an UNRES-NAME. + + From REC-xml-names: + [6] QName ::= (Prefix ':')? LocalPart + [7] Prefix ::= NCName + [8] LocalPart ::= NCName + + -- Function: ssax:read-markup-token port + This procedure starts parsing of a markup token. The current + position in the stream must be `<'. This procedure scans enough + of the input stream to figure out what kind of a markup token it + is seeing. The procedure returns an XML-TOKEN structure + describing the token. Note, generally reading of the current + markup is not finished! In particular, no attributes of the + start-tag token are scanned. + + Here's a detailed break out of the return values and the position + in the PORT when that particular value is returned: + + PI-token + only PI-target is read. To finish the Processing-Instruction + and disregard it, call `ssax:skip-pi'. `ssax:read-attributes' + may be useful as well (for PIs whose content is + attribute-value pairs). + + END-token + The end tag is read completely; the current position is right + after the terminating `>' character. + + COMMENT + is read and skipped completely. The current position is + right after `-->' that terminates the comment. + + CDSECT + The current position is right after `<!CDATA['. Use + `ssax:read-cdata-body' to read the rest. + + DECL + We have read the keyword (the one that follows `<!') + identifying this declaration markup. The current position is + after the keyword (usually a whitespace character) + + START-token + We have read the keyword (GI) of this start tag. No + attributes are scanned yet. We don't know if this tag has an + empty content either. Use `ssax:complete-start-tag' to + finish parsing of the token. + + + -- Function: ssax:skip-pi port + The current position is inside a PI. Skip till the rest of the PI + + -- Function: ssax:read-pi-body-as-string port + The current position is right after reading the PITarget. We read + the body of PI and return is as a string. The port will point to + the character right after `?>' combination that terminates PI. + + [16] PI ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>' + + -- Function: ssax:skip-internal-dtd port + The current pos in the port is inside an internal DTD subset (e.g., + after reading `#\[' that begins an internal DTD subset) Skip until + the `]>' combination that terminates this DTD. + + -- Function: ssax:read-cdata-body port str-handler seed + This procedure must be called after we have read a string + `<![CDATA[' that begins a CDATA section. The current position + must be the first position of the CDATA body. This function reads + _lines_ of the CDATA body and passes them to a STR-HANDLER, a + character data consumer. + + STR-HANDLER is a procedure taking arguments: STRING1, STRING2, and + SEED. The first STRING1 argument to STR-HANDLER never contains a + newline; the second STRING2 argument often will. On the first + invocation of STR-HANDLER, SEED is the one passed to + `ssax:read-cdata-body' as the third argument. The result of this + first invocation will be passed as the SEED argument to the second + invocation of the line consumer, and so on. The result of the + last invocation of the STR-HANDLER is returned by the + `ssax:read-cdata-body'. Note a similarity to the fundamental + "fold" iterator. + + Within a CDATA section all characters are taken at their face + value, with three exceptions: + * CR, LF, and CRLF are treated as line delimiters, and passed + as a single `#\newline' to STR-HANDLER + + * `]]>' combination is the end of the CDATA section. `>' is + treated as an embedded `>' character. + + * `<' and `&' are not specially recognized (and are not + expanded)! + + + -- Function: ssax:read-char-ref port + [66] CharRef ::= '&#' [0-9]+ ';' + | '&#x' [0-9a-fA-F]+ ';' + + This procedure must be called after we we have read `&#' that + introduces a char reference. The procedure reads this reference + and returns the corresponding char. The current position in PORT + will be after the `;' that terminates the char reference. + + Faults detected: + WFC: XML-Spec.html#wf-Legalchar + + According to Section `4.1 Character and Entity References' of the + XML Recommendation: + + "[Definition: A character reference refers to a specific + character in the ISO/IEC 10646 character set, for example one + not directly accessible from available input devices.]" + + + -- Function: ssax:handle-parsed-entity port name entities + content-handler str-handler seed + Expands and handles a parsed-entity reference. + + NAME is a symbol, the name of the parsed entity to expand. + CONTENT-HANDLER is a procedure of arguments PORT, ENTITIES, and + SEED that returns a seed. STR-HANDLER is called if the entity in + question is a pre-declared entity. + + `ssax:handle-parsed-entity' returns the result returned by + CONTENT-HANDLER or STR-HANDLER. + + Faults detected: + WFC: XML-Spec.html#wf-entdeclared + WFC: XML-Spec.html#norecursion + + -- Function: attlist-add attlist name-value + Add a NAME-VALUE pair to the existing ATTLIST, preserving its + sorted ascending order; and return the new list. Return #f if a + pair with the same name already exists in ATTLIST + + -- Function: attlist-remove-top attlist + Given an non-null ATTLIST, return a pair of values: the top and + the rest. + + -- Function: ssax:read-attributes port entities + This procedure reads and parses a production "Attribute". + + [41] Attribute ::= Name Eq AttValue + [10] AttValue ::= '"' ([^<&"] | Reference)* '"' + | "'" ([^<&'] | Reference)* "'" + [25] Eq ::= S? '=' S? + + The procedure returns an ATTLIST, of Name (as UNRES-NAME), Value + (as string) pairs. The current character on the PORT is a + non-whitespace character that is not an NCName-starting character. + + Note the following rules to keep in mind when reading an + "AttValue": + + Before the value of an attribute is passed to the application + or checked for validity, the XML processor must normalize it + as follows: + + * A character reference is processed by appending the + referenced character to the attribute value. + + * An entity reference is processed by recursively + processing the replacement text of the entity. The + named entities `amp', `lt', `gt', `quot', and `apos' are + pre-declared. + + * A whitespace character (#x20, #x0D, #x0A, #x09) is + processed by appending #x20 to the normalized value, + except that only a single #x20 is appended for a + "#x0D#x0A" sequence that is part of an external parsed + entity or the literal entity value of an internal parsed + entity. + + * Other characters are processed by appending them to the + normalized value. + + + + Faults detected: + WFC: XML-Spec.html#CleanAttrVals + WFC: XML-Spec.html#uniqattspec + + -- Function: ssax:resolve-name port unres-name namespaces + apply-default-ns? + Convert an UNRES-NAME to a RES-NAME, given the appropriate + NAMESPACES declarations. The last parameter, APPLY-DEFAULT-NS?, + determines if the default namespace applies (for instance, it does + not for attribute names). + + Per REC-xml-names/#nsc-NSDeclared, the "xml" prefix is considered + pre-declared and bound to the namespace name + "http://www.w3.org/XML/1998/namespace". + + `ssax:resolve-name' tests for the namespace constraints: + `http://www.w3.org/TR/REC-xml-names/#nsc-NSDeclared' + + -- Function: ssax:complete-start-tag tag port elems entities namespaces + Complete parsing of a start-tag markup. `ssax:complete-start-tag' + must be called after the start tag token has been read. TAG is an + UNRES-NAME. ELEMS is an instance of the ELEMS slot of XML-DECL; + it can be #f to tell the function to do _no_ validation of + elements and their attributes. + + `ssax:complete-start-tag' returns several values: + * ELEM-GI: a RES-NAME. + + * ATTRIBUTES: element's attributes, an ATTLIST of (RES-NAME . + STRING) pairs. The list does NOT include xmlns attributes. + + * NAMESPACES: the input list of namespaces amended with + namespace (re-)declarations contained within the start-tag + under parsing + + * ELEM-CONTENT-MODEL + + On exit, the current position in PORT will be the first character + after `>' that terminates the start-tag markup. + + Faults detected: + VC: XML-Spec.html#enum + VC: XML-Spec.html#RequiredAttr + VC: XML-Spec.html#FixedAttr + VC: XML-Spec.html#ValueType + WFC: XML-Spec.html#uniqattspec (after namespaces prefixes are + resolved) + VC: XML-Spec.html#elementvalid + WFC: REC-xml-names/#dt-NSName + + _Note_: although XML Recommendation does not explicitly say it, + xmlns and xmlns: attributes don't have to be declared (although + they can be declared, to specify their default value). + + -- Function: ssax:read-external-id port + Parses an ExternalID production: + + [75] ExternalID ::= 'SYSTEM' S SystemLiteral + | 'PUBLIC' S PubidLiteral S SystemLiteral + [11] SystemLiteral ::= ('"' [^"]* '"') | ("'" [^']* "'") + [12] PubidLiteral ::= '"' PubidChar* '"' + | "'" (PubidChar - "'")* "'" + [13] PubidChar ::= #x20 | #x0D | #x0A | [a-zA-Z0-9] + | [-'()+,./:=?;!*#@$_%] + + Call `ssax:read-external-id' when an ExternalID is expected; that + is, the current character must be either #\S or #\P that starts + correspondingly a SYSTEM or PUBLIC token. `ssax:read-external-id' + returns the SYSTEMLITERAL as a string. A PUBIDLITERAL is + disregarded if present. + +4.11.5 Mid-Level Parsers and Scanners +------------------------------------- + +These procedures parse productions corresponding to the whole +(document) entity or its higher-level pieces (prolog, root element, +etc). + + -- Function: ssax:scan-misc port + Scan the Misc production in the context: + + [1] document ::= prolog element Misc* + [22] prolog ::= XMLDecl? Misc* (doctypedec l Misc*)? + [27] Misc ::= Comment | PI | S + + Call `ssax:scan-misc' in the prolog or epilog contexts. In these + contexts, whitespaces are completely ignored. The return value + from `ssax:scan-misc' is either a PI-token, a DECL-token, a START + token, or *EOF*. Comments are ignored and not reported. + + -- Function: ssax:read-char-data port expect-eof? str-handler iseed + Read the character content of an XML document or an XML element. + + [43] content ::= + (element | CharData | Reference | CDSect | PI | Comment)* + + To be more precise, `ssax:read-char-data' reads CharData, expands + CDSect and character entities, and skips comments. + `ssax:read-char-data' stops at a named reference, EOF, at the + beginning of a PI, or a start/end tag. + + EXPECT-EOF? is a boolean indicating if EOF is normal; i.e., the + character data may be terminated by the EOF. EOF is normal while + processing a parsed entity. + + ISEED is an argument passed to the first invocation of STR-HANDLER. + + `ssax:read-char-data' returns two results: SEED and TOKEN. The + SEED is the result of the last invocation of STR-HANDLER, or the + original ISEED if STR-HANDLER was never called. + + TOKEN can be either an eof-object (this can happen only if + EXPECT-EOF? was #t), or: + * an xml-token describing a START tag or an END-tag; For a + start token, the caller has to finish reading it. + + * an xml-token describing the beginning of a PI. It's up to an + application to read or skip through the rest of this PI; + + * an xml-token describing a named entity reference. + + + CDATA sections and character references are expanded inline and + never returned. Comments are silently disregarded. + + As the XML Recommendation requires, all whitespace in character + data must be preserved. However, a CR character (#x0D) must be + disregarded if it appears before a LF character (#x0A), or replaced + by a #x0A character otherwise. See Secs. 2.10 and 2.11 of the XML + Recommendation. See also the canonical XML Recommendation. + + -- Function: ssax:assert-token token kind gi error-cont + Make sure that TOKEN is of anticipated KIND and has anticipated + GI. Note that the GI argument may actually be a pair of two + symbols, Namespace-URI or the prefix, and of the localname. If + the assertion fails, ERROR-CONT is evaluated by passing it three + arguments: TOKEN KIND GI. The result of ERROR-CONT is returned. + +4.11.6 High-level Parsers +------------------------- + +These procedures are to instantiate a SSAX parser. A user can +instantiate the parser to do the full validation, or no validation, or +any particular validation. The user specifies which PI he wants to be +notified about. The user tells what to do with the parsed character +and element data. The latter handlers determine if the parsing follows +a SAX or a DOM model. + + -- Function: ssax:make-pi-parser my-pi-handlers + Create a parser to parse and process one Processing Element (PI). + + MY-PI-HANDLERS is an association list of pairs `(PI-TAG . + PI-HANDLER)' where PI-TAG is an NCName symbol, the PI target; and + PI-HANDLER is a procedure taking arguments PORT, PI-TAG, and SEED. + + PI-HANDLER should read the rest of the PI up to and including the + combination `?>' that terminates the PI. The handler should + return a new seed. One of the PI-TAGs may be the symbol + `*DEFAULT*'. The corresponding handler will handle PIs that no + other handler will. If the *DEFAULT* PI-TAG is not specified, + `ssax:make-pi-parser' will assume the default handler that skips + the body of the PI. + + `ssax:make-pi-parser' returns a procedure of arguments PORT, + PI-TAG, and SEED; that will parse the current PI according to + MY-PI-HANDLERS. + + -- Function: ssax:make-elem-parser my-new-level-seed my-finish-element + my-char-data-handler my-pi-handlers + Create a parser to parse and process one element, including its + character content or children elements. The parser is typically + applied to the root element of a document. + + MY-NEW-LEVEL-SEED + is a procedure taking arguments: + + ELEM-GI ATTRIBUTES NAMESPACES EXPECTED-CONTENT SEED + + where ELEM-GI is a RES-NAME of the element about to be + processed. + + MY-NEW-LEVEL-SEED is to generate the seed to be passed to + handlers that process the content of the element. + + MY-FINISH-ELEMENT + is a procedure taking arguments: + + ELEM-GI ATTRIBUTES NAMESPACES PARENT-SEED SEED + + MY-FINISH-ELEMENT is called when parsing of ELEM-GI is + finished. The SEED is the result from the last content + parser (or from MY-NEW-LEVEL-SEED if the element has the + empty content). PARENT-SEED is the same seed as was passed + to MY-NEW-LEVEL-SEED. MY-FINISH-ELEMENT is to generate a + seed that will be the result of the element parser. + + MY-CHAR-DATA-HANDLER + is a STR-HANDLER as described in Data Types above. + + MY-PI-HANDLERS + is as described for `ssax:make-pi-handler' above. + + + The generated parser is a procedure taking arguments: + + START-TAG-HEAD PORT ELEMS ENTITIES NAMESPACES PRESERVE-WS? SEED + + The procedure must be called after the start tag token has been + read. START-TAG-HEAD is an UNRES-NAME from the start-element tag. + ELEMS is an instance of ELEMS slot of XML-DECL. + + Faults detected: + VC: XML-Spec.html#elementvalid + WFC: XML-Spec.html#GIMatch + + -- Function: ssax:make-parser user-handler-tag user-handler ... + Create an XML parser, an instance of the XML parsing framework. + This will be a SAX, a DOM, or a specialized parser depending on the + supplied user-handlers. + + `ssax:make-parser' takes an even number of arguments; + USER-HANDLER-TAG is a symbol that identifies a procedure (or + association list for `PROCESSING-INSTRUCTIONS') (USER-HANDLER) + that follows the tag. Given below are tags and signatures of the + corresponding procedures. Not all tags have to be specified. If + some are omitted, reasonable defaults will apply. + + `DOCTYPE' + handler-procedure: PORT DOCNAME SYSTEMID INTERNAL-SUBSET? SEED + + If INTERNAL-SUBSET? is #t, the current position in the port is + right after we have read `[' that begins the internal DTD + subset. We must finish reading of this subset before we + return (or must call `skip-internal-dtd' if we aren't + interested in reading it). PORT at exit must be at the first + symbol after the whole DOCTYPE declaration. + + The handler-procedure must generate four values: + + ELEMS ENTITIES NAMESPACES SEED + + ELEMS is as defined for the ELEMS slot of XML-DECL. It may be + #f to switch off validation. NAMESPACES will typically + contain USER-PREFIXes for selected URI-SYMBs. The default + handler-procedure skips the internal subset, if any, and + returns `(values #f '() '() seed)'. + + `UNDECL-ROOT' + procedure: ELEM-GI SEED + + where ELEM-GI is an UNRES-NAME of the root element. This + procedure is called when an XML document under parsing + contains _no_ DOCTYPE declaration. + + The handler-procedure, as a DOCTYPE handler procedure above, + must generate four values: + + ELEMS ENTITIES NAMESPACES SEED + + The default handler-procedure returns (values #f '() '() seed) + + `DECL-ROOT' + procedure: ELEM-GI SEED + + where ELEM-GI is an UNRES-NAME of the root element. This + procedure is called when an XML document under parsing does + contains the DOCTYPE declaration. The handler-procedure must + generate a new SEED (and verify that the name of the root + element matches the doctype, if the handler so wishes). The + default handler-procedure is the identity function. + + `NEW-LEVEL-SEED' + procedure: see ssax:make-elem-parser, my-new-level-seed + + `FINISH-ELEMENT' + procedure: see ssax:make-elem-parser, my-finish-element + + `CHAR-DATA-HANDLER' + procedure: see ssax:make-elem-parser, my-char-data-handler + + `PROCESSING-INSTRUCTIONS' + association list as is passed to `ssax:make-pi-parser'. The + default value is '() + + + The generated parser is a procedure of arguments PORT and SEED. + + This procedure parses the document prolog and then exits to an + element parser (created by `ssax:make-elem-parser') to handle the + rest. + + [1] document ::= prolog element Misc* + [22] prolog ::= XMLDecl? Misc* (doctypedec | Misc*)? + [27] Misc ::= Comment | PI | S + [28] doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S? + ('[' (markupdecl | PEReference | S)* ']' S?)? '>' + [29] markupdecl ::= elementdecl | AttlistDecl + | EntityDecl + | NotationDecl | PI + | Comment + +4.11.7 Parsing XML to SXML +-------------------------- + + -- Function: ssax:xml->sxml port namespace-prefix-assig + This is an instance of the SSAX parser that returns an SXML + representation of the XML document to be read from PORT. + NAMESPACE-PREFIX-ASSIG is a list of `(USER-PREFIX . URI-STRING)' + that assigns USER-PREFIXes to certain namespaces identified by + particular URI-STRINGs. It may be an empty list. + `ssax:xml->sxml' returns an SXML tree. The port points out to the + first character after the root element. + File: slib.info, Node: Printing Scheme, Next: Time and Date, Prev: Parsing XML, Up: Textual Conversion Packages - | -4.12 Printing Scheme | + +4.12 Printing Scheme ==================== * Menu: @@ -6029,7 +6029,7 @@ File: slib.info, Node: Printing Scheme, Next: Time and Date, Prev: Parsing XM File: slib.info, Node: Generic-Write, Next: Object-To-String, Prev: Printing Scheme, Up: Printing Scheme -4.12.1 Generic-Write | +4.12.1 Generic-Write -------------------- `(require 'generic-write)' @@ -6072,7 +6072,7 @@ printing, output to a string and truncated output. File: slib.info, Node: Object-To-String, Next: Pretty-Print, Prev: Generic-Write, Up: Printing Scheme -4.12.2 Object-To-String | +4.12.2 Object-To-String ----------------------- `(require 'object->string)' @@ -6087,7 +6087,7 @@ File: slib.info, Node: Object-To-String, Next: Pretty-Print, Prev: Generic-Wr File: slib.info, Node: Pretty-Print, Prev: Object-To-String, Up: Printing Scheme -4.12.3 Pretty-Print | +4.12.3 Pretty-Print ------------------- `(require 'pretty-print)' @@ -6178,7 +6178,7 @@ thus can reduce loading time. The following will write into File: slib.info, Node: Time and Date, Next: NCBI-DNA, Prev: Printing Scheme, Up: Textual Conversion Packages -4.13 Time and Date | +4.13 Time and Date ================== * Menu: @@ -6211,7 +6211,7 @@ Scheme datatypes. File: slib.info, Node: Time Zone, Next: Posix Time, Prev: Time and Date, Up: Time and Date -4.13.1 Time Zone | +4.13.1 Time Zone ---------------- (require 'time-zone) @@ -6338,7 +6338,7 @@ compatability. Because of shared state they are not thread-safe. File: slib.info, Node: Posix Time, Next: Common-Lisp Time, Prev: Time Zone, Up: Time and Date -4.13.2 Posix Time | +4.13.2 Posix Time ----------------- (require 'posix-time) @@ -6410,7 +6410,7 @@ File: slib.info, Node: Posix Time, Next: Common-Lisp Time, Prev: Time Zone, File: slib.info, Node: Common-Lisp Time, Next: Time Infrastructure, Prev: Posix Time, Up: Time and Date -4.13.3 Common-Lisp Time | +4.13.3 Common-Lisp Time ----------------------- -- Function: get-decoded-time @@ -6460,7 +6460,7 @@ File: slib.info, Node: Common-Lisp Time, Next: Time Infrastructure, Prev: Pos File: slib.info, Node: Time Infrastructure, Prev: Common-Lisp Time, Up: Time and Date -4.13.4 Time Infrastructure | +4.13.4 Time Infrastructure -------------------------- `(require 'time-core)' @@ -6476,11 +6476,11 @@ File: slib.info, Node: Time Infrastructure, Prev: Common-Lisp Time, Up: Time File: slib.info, Node: NCBI-DNA, Next: Schmooz, Prev: Time and Date, Up: Textual Conversion Packages -4.14 NCBI-DNA | +4.14 NCBI-DNA ============= -`(require 'ncbi-dma)' | - | +`(require 'ncbi-dma)' + -- Function: ncbi:read-dna-sequence port Reads the NCBI-format DNA sequence following the word `ORIGIN' from PORT. @@ -6519,7 +6519,7 @@ sequence with the `BASE COUNT' line preceding the sequence from NCBI. File: slib.info, Node: Schmooz, Prev: NCBI-DNA, Up: Textual Conversion Packages -4.15 Schmooz | +4.15 Schmooz ============ "Schmooz" is a simple, lightweight markup language for interspersing @@ -6712,7 +6712,7 @@ representation. 5.1.2 Integer Properties ------------------------ - -- Function: logcount n | + -- Function: logcount n Returns the number of bits in integer N. If integer is positive, the 1-bits in its binary representation are counted. If negative, the 0-bits in its two's-complement binary representation are @@ -6726,17 +6726,17 @@ representation. (logcount -2) => 1 -On `discuss@r6rs.org' Ben Harris credits Simon Tatham with the idea to | -have `bitwise-bit-count' return a negative count for negative inputs. | -Alan Bawden came up with the succinct invariant. | - | - -- Function: bitwise-bit-count n | - If N is non-negative, this procedure returns the number of 1 bits | - in the two's-complement representation of N. Otherwise it returns | - the result of the following computation: | - | - (bitwise-not (bitwise-bit-count (bitwise-not N))) | - | +On `discuss@r6rs.org' Ben Harris credits Simon Tatham with the idea to +have `bitwise-bit-count' return a negative count for negative inputs. +Alan Bawden came up with the succinct invariant. + + -- Function: bitwise-bit-count n + If N is non-negative, this procedure returns the number of 1 bits + in the two's-complement representation of N. Otherwise it returns + the result of the following computation: + + (bitwise-not (bitwise-bit-count (bitwise-not N))) + -- Function: integer-length n Returns the number of bits neccessary to represent N. @@ -8955,15 +8955,18 @@ and Z "Spectral Tristimulus Values". The files `cie1931.xyz' and `cie1964.xyz' in the distribution contain these CIE-defined values. -- Feature: cie1964 - Loads the Spectral Tristimulus Values defining `CIE 1964 - Supplementary Standard Colorimetric Observer'. + Loads the Spectral Tristimulus Values `CIE 1964 Supplementary | + Standard Colorimetric Observer', defining CIE:X-BAR, CIE:Y-BAR, | + and CIE:Z-BAR. | -- Feature: cie1931 - Loads the Spectral Tristimulus Values defining `CIE 1931 - Supplementary Standard Colorimetric Observer'. + Loads the Spectral Tristimulus Values `CIE 1931 Supplementary | + Standard Colorimetric Observer', defining CIE:X-BAR, CIE:Y-BAR, | + and CIE:Z-BAR. | -- Feature: ciexyz - Requires Spectral Tristimulus Values, defaulting to cie1931. + Requires Spectral Tristimulus Values, defaulting to cie1931, | + defining CIE:X-BAR, CIE:Y-BAR, and CIE:Z-BAR. | `(require 'cie1964)' or `(require 'cie1931)' will `load-ciexyz' specific values used by the following spectrum conversion procedures. @@ -9555,7 +9558,7 @@ File: slib.info, Node: Root Finding, Next: Minimizing, Prev: Color, Up: Math ================= `(require 'root)' - | + -- Function: newton:find-integer-root f df/dx x0 Given integer valued procedure F, its derivative (with respect to its argument) DF/DX, and initial integer value X0 for which @@ -10080,7 +10083,7 @@ linear-algebra texts, this package uses 0-based coordinates. Returns the list-of-lists form of MATRIX. -- Function: matrix->array matrix - Returns the (ones-based) array form of MATRIX. + Returns the array form of MATRIX. | -- Function: determinant matrix MATRIX must be a square matrix. `determinant' returns the @@ -10094,23 +10097,23 @@ linear-algebra texts, this package uses 0-based coordinates. Returns a copy of MATRIX flipped over the diagonal containing the 1,1 element. - -- Function: matrix:sum m1 m2 | - Returns the element-wise sum of matricies M1 and M2. | - | - -- Function: matrix:difference m1 m2 | - Returns the element-wise difference of matricies M1 and M2. | - | + -- Function: matrix:sum m1 m2 + Returns the element-wise sum of matricies M1 and M2. + + -- Function: matrix:difference m1 m2 + Returns the element-wise difference of matricies M1 and M2. + -- Function: matrix:product m1 m2 Returns the product of matrices M1 and M2. - -- Function: matrix:product m1 z | - Returns matrix M1 times scalar Z. | - | - -- Function: matrix:product z m1 | - Returns matrix M1 times scalar Z. | - | + -- Function: matrix:product m1 z + Returns matrix M1 times scalar Z. + + -- Function: matrix:product z m1 + Returns matrix M1 times scalar Z. + -- Function: matrix:inverse matrix - MATRIX must be a square matrix. If MATRIX is singlar, then + MATRIX must be a square matrix. If MATRIX is singular, then | `matrix:inverse' returns #f; otherwise `matrix:inverse' returns the `matrix:product' inverse of MATRIX. @@ -12438,95 +12441,95 @@ uniform-array type is supported by the implementation, then it is returned; defaulting to the next larger precision type; resorting finally to vector. - -- Function: A:floC128b z | - -- Function: A:floC128b | + -- Function: A:floC128b z + -- Function: A:floC128b Returns an inexact 128.bit flonum complex uniform-array prototype. - -- Function: A:floC64b z | - -- Function: A:floC64b | + -- Function: A:floC64b z + -- Function: A:floC64b Returns an inexact 64.bit flonum complex uniform-array prototype. - -- Function: A:floC32b z | - -- Function: A:floC32b | + -- Function: A:floC32b z + -- Function: A:floC32b Returns an inexact 32.bit flonum complex uniform-array prototype. - -- Function: A:floC16b z | - -- Function: A:floC16b | + -- Function: A:floC16b z + -- Function: A:floC16b Returns an inexact 16.bit flonum complex uniform-array prototype. - -- Function: A:floR128b x | - -- Function: A:floR128b | + -- Function: A:floR128b x + -- Function: A:floR128b Returns an inexact 128.bit flonum real uniform-array prototype. - -- Function: A:floR64b x | - -- Function: A:floR64b | + -- Function: A:floR64b x + -- Function: A:floR64b Returns an inexact 64.bit flonum real uniform-array prototype. - -- Function: A:floR32b x | - -- Function: A:floR32b | + -- Function: A:floR32b x + -- Function: A:floR32b Returns an inexact 32.bit flonum real uniform-array prototype. - -- Function: A:floR16b x | - -- Function: A:floR16b | + -- Function: A:floR16b x + -- Function: A:floR16b Returns an inexact 16.bit flonum real uniform-array prototype. - -- Function: A:floR128d q | - -- Function: A:floR128d | + -- Function: A:floR128d q + -- Function: A:floR128d Returns an exact 128.bit decimal flonum rational uniform-array prototype. - -- Function: A:floR64d q | - -- Function: A:floR64d | + -- Function: A:floR64d q + -- Function: A:floR64d Returns an exact 64.bit decimal flonum rational uniform-array prototype. - -- Function: A:floR32d q | - -- Function: A:floR32d | + -- Function: A:floR32d q + -- Function: A:floR32d Returns an exact 32.bit decimal flonum rational uniform-array prototype. - -- Function: A:fixZ64b n | - -- Function: A:fixZ64b | + -- Function: A:fixZ64b n + -- Function: A:fixZ64b Returns an exact binary fixnum uniform-array prototype with at least 64 bits of precision. - -- Function: A:fixZ32b n | - -- Function: A:fixZ32b | + -- Function: A:fixZ32b n + -- Function: A:fixZ32b Returns an exact binary fixnum uniform-array prototype with at least 32 bits of precision. - -- Function: A:fixZ16b n | - -- Function: A:fixZ16b | + -- Function: A:fixZ16b n + -- Function: A:fixZ16b Returns an exact binary fixnum uniform-array prototype with at least 16 bits of precision. - -- Function: A:fixZ8b n | - -- Function: A:fixZ8b | + -- Function: A:fixZ8b n + -- Function: A:fixZ8b Returns an exact binary fixnum uniform-array prototype with at least 8 bits of precision. - -- Function: A:fixN64b k | - -- Function: A:fixN64b | + -- Function: A:fixN64b k + -- Function: A:fixN64b Returns an exact non-negative binary fixnum uniform-array prototype with at least 64 bits of precision. - -- Function: A:fixN32b k | - -- Function: A:fixN32b | + -- Function: A:fixN32b k + -- Function: A:fixN32b Returns an exact non-negative binary fixnum uniform-array prototype with at least 32 bits of precision. - -- Function: A:fixN16b k | - -- Function: A:fixN16b | + -- Function: A:fixN16b k + -- Function: A:fixN16b Returns an exact non-negative binary fixnum uniform-array prototype with at least 16 bits of precision. - -- Function: A:fixN8b k | - -- Function: A:fixN8b | + -- Function: A:fixN8b k + -- Function: A:fixN8b Returns an exact non-negative binary fixnum uniform-array prototype with at least 8 bits of precision. - -- Function: A:bool bool | - -- Function: A:bool | + -- Function: A:bool bool + -- Function: A:bool Returns a boolean uniform-array prototype. @@ -12628,16 +12631,16 @@ File: slib.info, Node: Array Mapping, Next: Array Interpolation, Prev: Subarr a list of indexes for which ARRAY is defined, (equal? LI (apply array-ref (array-indexes ARRAY) LI)). - -- Function: array-index-for-each array proc | - applies PROC to the indices of each element of ARRAY in turn. The | - value returned and the order of application are unspecified. | - | - One can implement ARRAY-INDEX-MAP! as | - (define (array-index-map! ra fun) | - (array-index-for-each | - ra | - (lambda is (apply array-set! ra (apply fun is) is)))) | - | + -- Function: array-index-for-each array proc + applies PROC to the indices of each element of ARRAY in turn. The + value returned and the order of application are unspecified. + + One can implement ARRAY-INDEX-MAP! as + (define (array-index-map! ra fun) + (array-index-for-each + ra + (lambda is (apply array-set! ra (apply fun is) is)))) + -- Procedure: array-index-map! array proc applies PROC to the indices of each element of ARRAY in turn, storing the result in the corresponding element. The value @@ -12781,18 +12784,28 @@ character sets. These functions abstract the notion of a "byte". -- Function: bytes byte ... Returns a newly allocated byte-array composed of the small nonnegative arguments. - - -- Function: bytes->list bytes - `bytes->list' returns a newly allocated list of the bytes that - make up the given byte-array. - + | -- Function: list->bytes bytes `list->bytes' returns a newly allocated byte-array formed from the small nonnegative integers in the list BYTES. + -- Function: bytes->list bytes | + `bytes->list' returns a newly allocated list of the bytes that | + make up the given byte-array. | + | `Bytes->list' and `list->bytes' are inverses so far as `equal?' is concerned. + -- Function: bytes->string bytes | + Returns a new string formed from applying `integer->char' to each | + byte in `bytes->string'. Note that this may signal an error for | + bytes having values between 128 and 255. | + | + -- Function: string->bytes string | + Returns a new byte-array formed from applying `char->integer' to | + each character in `string->bytes'. Note that this may signal an | + error if an integer is larger than 255. | + | -- Function: bytes-copy bytes Returns a newly allocated copy of the given BYTES. @@ -12848,8 +12861,8 @@ Byte/Number Conversions:: are always big-endian. `read-bytes' returns a newly allocated bytes-array filled with `(abs N)' bytes read from PORT. If N is positive, then the first byte read is stored at index 0; otherwise the last byte read is - stored at index 0. Note that the length of the returned string - will be less than `(abs N)' if PORT reaches end-of-file. + stored at index 0. Note that the length of the returned | + byte-array will be less than `(abs N)' if PORT reaches end-of-file. | PORT may be omitted, in which case it defaults to the value returned by `current-input-port'. @@ -12868,19 +12881,19 @@ Byte/Number Conversions:: are always big-endian. for reading and writing blocks of bytes. The relative size of START and END determines the order of writing. - -- Procedure: subbytes-read! string start end port - -- Procedure: subbytes-read! string start end - Fills STRING with up to `(abs (- START END))' bytes read from - PORT. The first byte read is stored at index STRING. - `subbytes-read!' returns the number of bytes read. + -- Procedure: subbytes-read! bts start end port | + -- Procedure: subbytes-read! bts start end | + Fills BTS with up to `(abs (- START END))' bytes read from PORT. | + The first byte read is stored at index BTS. `subbytes-read!' | + returns the number of bytes read. | PORT may be omitted, in which case it defaults to the value returned by `current-input-port'. - -- Function: subbytes-write string start end port - -- Function: subbytes-write string start end + -- Function: subbytes-write bts start end port | + -- Function: subbytes-write bts start end | `subbytes-write' writes `(abs (- START END))' bytes to output-port - PORT. The first byte written is index START of STRING. + PORT. The first byte written is index START of BTS. | `subbytes-write' returns the number of bytes written. PORT may be omitted, in which case it defaults to the value @@ -12944,7 +12957,7 @@ determines the signedness of the number. (bytes->ieee-float (bytes #xff #x80 0 0)) => -inf.0 (bytes->ieee-float (bytes #x7f #x80 0 0)) => +inf.0 (bytes->ieee-float (bytes #x7f #x80 0 1)) => 0/0 - (bytes->ieee-float (bytes #x7f #xc0 0 0)) => 0/0 | + (bytes->ieee-float (bytes #x7f #xc0 0 0)) => 0/0 -- Function: bytes->ieee-double bytes BYTES must be a 8-element byte-array. `bytes->ieee-double' @@ -13034,7 +13047,7 @@ enables the full range of numbers as keys in `ieee-byte-collate!' returns BYTE-VECTOR. -- Procedure: ieee-byte-decollate! byte-vector - Given BYTE-VECTOR modified by `ieee-byte-collate!', reverses the | + Given BYTE-VECTOR modified by `ieee-byte-collate!', reverses the BYTE-VECTOR modifications. -- Function: ieee-byte-collate byte-vector @@ -13042,7 +13055,7 @@ enables the full range of numbers as keys in IEEE floating-point byte-vectors matches numerical order. -- Function: ieee-byte-decollate byte-vector - Given BYTE-VECTOR returned by `ieee-byte-collate', reverses the | + Given BYTE-VECTOR returned by `ieee-byte-collate', reverses the BYTE-VECTOR modifications. @@ -13197,7 +13210,7 @@ operations. -- Function: reduce proc seed collection1 ... A generalization of the list-based `reduce-init' (*note Lists as - sequences::) to collections. | + sequences::) to collections. Examples: (reduce + 0 (vector 1 2 3)) @@ -13205,9 +13218,9 @@ operations. (reduce union '() '((a b c) (b c d) (d a))) => (c b d a). - `Reduce' called with two arguments will work as does the procedure | - of the same name from *Note Common List Functions::). | - | + `Reduce' called with two arguments will work as does the procedure + of the same name from *Note Common List Functions::). + -- Function: any? pred collection1 ... A generalization of the list-based `some' (*note Lists as sequences::) to collections. @@ -14439,12 +14452,12 @@ File: slib.info, Node: Sorting, Next: Topological Sort, Prev: Chapter Orderin 7.2.4 Sorting ------------- -`(require 'sort)' or `(require 'srfi-95)' | +`(require 'sort)' or `(require 'srfi-95)' [by Richard A. O'Keefe, 1991] - | + I am providing this source code with no restrictions at all on its use -(but please retain D.H.D.Warren's credit for the original idea). | +(but please retain D.H.D.Warren's credit for the original idea). The code of `merge' and `merge!' could have been quite a bit simpler, but they have been coded to reduce the amount of work done per @@ -14456,7 +14469,7 @@ Common LISP's `stable-sort' is our `sort!'; merge sort is _fast_ as well as stable!) so adapting CL code to Scheme takes a bit of work anyway. I did, however, appeal to CL to determine the _order_ of the arguments. - | + The standard functions `<', `>', `char<?', `char>?', `char-ci<?', `char-ci>?', `string<?', `string>?', `string-ci<?', and `string-ci>?' are suitable for use as comparison functions. Think of `(less? x y)' @@ -14465,13 +14478,13 @@ as saying when `x' must _not_ precede `y'. [Addendum by Aubrey Jaffer, 2006] These procedures are stable when called with predicates which return -`#f' when applied to identical arguments. | - | - The `sorted?', `merge', and `merge!' procedures consume asymptotic | -time and space no larger than O(N), where N is the sum of the lengths | -of the sequence arguments. The `sort' and `sort!' procedures consume | -asymptotic time and space no larger than O(N*log(N)), where N is the | -length of the sequence argument. | +`#f' when applied to identical arguments. + + The `sorted?', `merge', and `merge!' procedures consume asymptotic +time and space no larger than O(N), where N is the sum of the lengths +of the sequence arguments. The `sort' and `sort!' procedures consume +asymptotic time and space no larger than O(N*log(N)), where N is the +length of the sequence argument. All five functions take an optional KEY argument corresponding to a CL-style `&key' argument. A LESS? predicate with a KEY argument @@ -14479,9 +14492,9 @@ behaves like: (lambda (x y) (LESS? (KEY x) (KEY y))) - All five functions will call the KEY argument at most once per | -element. | - | + All five functions will call the KEY argument at most once per +element. + The `!' variants sort in place; `sort!' returns its SEQUENCE argument. -- Function: sorted? sequence less? @@ -14502,7 +14515,7 @@ element. | -- Function: merge! list1 list2 less? -- Function: merge! list1 list2 less? key Merges two sorted lists, re-using the pairs of LIST1 and LIST2 to - build the result. The result will be either LIST1 or LIST2. | + build the result. The result will be either LIST1 or LIST2. -- Function: sort sequence less? -- Function: sort sequence less? key @@ -14516,11 +14529,11 @@ element. | -- Function: sort! sequence less? -- Function: sort! sequence less? key - Returns list, array, vector, or string SEQUENCE which has been | - mutated to order its elements according to LESS?. Given valid | - arguments, it is always the case that: | - | - (sorted? (sort! SEQUENCE LESS?) LESS?) => #t | + Returns list, array, vector, or string SEQUENCE which has been + mutated to order its elements according to LESS?. Given valid + arguments, it is always the case that: + + (sorted? (sort! SEQUENCE LESS?) LESS?) => #t File: slib.info, Node: Topological Sort, Next: Hashing, Prev: Sorting, Up: Sorting and Searching @@ -15768,13 +15781,13 @@ Implements "Scheme Request For Implementation" (SRFI) as described at * SRFI-9 *Note Define-Record-Type:: - * SRFI-11 *Note Binding to multiple values:: | - | + * SRFI-11 *Note Binding to multiple values:: + * SRFI-23 `(define error slib:error)' - * SRFI-28 *Note Format:: | + * SRFI-28 *Note Format:: - * SRFI-47 *Note Arrays:: | + * SRFI-47 *Note Arrays:: * SRFI-59 *Note Vicinity:: @@ -15782,12 +15795,14 @@ Implements "Scheme Request For Implementation" (SRFI) as described at * SRFI-61 *Note Guarded COND Clause:: - * SRFI-63 *Note Arrays:: | - | + * SRFI-63 *Note Arrays:: + * SRFI-94 *Note Irrational Integer Functions:: and *Note Irrational - Real Functions:: | - | - * SRFI-95 *Note Sorting:: | + Real Functions:: + + * SRFI-95 *Note Sorting:: + + * SRFI-96 *Note Universal SLIB Procedures:: | | File: slib.info, Node: SRFI-1, Prev: SRFI, Up: SRFI @@ -15907,7 +15922,7 @@ Fold and Unfold -- Function: pair-fold-right kons knil clist1 clist2 ... - -- Function: reduce arg ... | + -- Function: reduce arg ... -- Procedure: map! f clist1 clist2 ... @@ -16299,19 +16314,25 @@ File: slib.info, Node: System Interface, Next: Extra-SLIB Packages, Prev: Ses 7.6 System Interface ==================== -If `(provided? 'getenv)': +If `(provided? 'getenv)': -- Function: getenv name Looks up NAME, a string, in the program environment. If NAME is found a string of its value is returned. Otherwise, `#f' is returned. -If `(provided? 'system)': +If `(provided? 'system)': -- Function: system command-string Executes the COMMAND-STRING on the computer and returns the integer status code. +If `(provided? 'program-arguments)': | + | + -- Function: program-arguments | + Returns a list of strings, the first of which is the program name | + followed by the command-line arguments. | + | * Menu: * Directories:: @@ -16429,6 +16450,18 @@ maintain and check both Emacs and Word certificates. the locks and returns `#t'. Otherwise, `file-unlock!' leaves the file system unaltered and returns `#f'. + -- Function: describe-file-lock path prefix | + -- Function: describe-file-lock path | + PATH must be a string naming a file. Optional argument PREFIX is | + a string printed before each line of the message. | + `describe-file-lock' prints to `(current-error-port)' that PATH is | + locked for writing and lists its lock-files. | + | + (describe-file-lock "my.txt" ">> ") | + -| | + >> "my.txt" is locked for writing by 'luser@no.com.4829:1200536423' | + >> (lock files are "~$my.txt" and ".#my.txt") | + | File Transactions ................. @@ -16555,9 +16588,9 @@ reasons why a package might not be included in the SLIB distribution: * Because I have been too busy to integrate it. Once an optional package is installed (and an entry added to -`*catalog*', the `require' mechanism allows it to be called up and used -as easily as any other SLIB package. Some optional packages (for which -`*catalog*' already has entries) available from SLIB sites are: +`*catalog*'), the `require' mechanism allows it to be called up and | +used as easily as any other SLIB package. Some optional packages (for | +which `*catalog*' already has entries) available from SLIB sites are: | SLIB-PSD is a portable debugger for Scheme (requires emacs editor). @@ -16600,13 +16633,15 @@ File: slib.info, Node: About SLIB, Next: Index, Prev: Other Packages, Up: To More people than I can name have contributed to SLIB. Thanks to all of you! - SLIB 3a5, released November 2007. | + SLIB 3b1, released February 2008. | Aubrey Jaffer <agj @ alum.mit.edu> Current information about SLIB can be found on SLIB's "WWW" home page: `http://swiss.csail.mit.edu/~jaffer/SLIB' + SLIB is part of the GNU project. | + | * Menu: * Installation:: How to install SLIB on your system. @@ -16628,8 +16663,8 @@ There are five parts to installation: * Install documentation and `slib' script. - * Configure the Scheme implementation(s) to locate the SLIB - directory. + * Configure the Scheme implementation(s) to locate the SLIB directory | + and implementation directories. | * Arrange for Scheme implementation to load its SLIB initialization file. @@ -16639,7 +16674,7 @@ There are five parts to installation: 8.1.1 Unpacking the SLIB Distribution ------------------------------------- -If the SLIB distribution is a GNU/Linux RPM, it will create the SLIB | +If the SLIB distribution is a GNU/Linux RPM, it will create the SLIB directory `/usr/share/slib'. If the SLIB distribution is a ZIP file, unzip the distribution to @@ -16661,13 +16696,36 @@ please inform agj @ alum.mit.edu. If the Scheme implementation supports `getenv', then the value of the shell environment variable SCHEME_LIBRARY_PATH will be used for -`(library-vicinity)' if it is defined. Currently, Chez, Elk, -MITScheme, scheme->c, VSCM, and SCM support `getenv'. Scheme48 -supports `getenv' but does not use it for determining -`library-vicinity'. (That is done from the Makefile.) - - The `(library-vicinity)' can also be specified from the SLIB -initialization file or by implementation-specific means. +`(library-vicinity)' if it is defined. Currently, Bigloo, Chez, Elk, | +Gambit, Guile, Jscheme, Larceny, MITScheme, MzScheme, RScheme, STk, | +VSCM, and SCM support `getenv'. Scheme48 supports `getenv' but does | +not use it for determining `library-vicinity'. (That is done from the | +Makefile.) | + + The `(library-vicinity)' can also be set from the SLIB initialization | +file or by implementation-specific means. | + | + Support for locating an implementation's auxiliary directory is uneven | +among implementations. Also, the person installing SLIB may not have | +write permission to some of these directories (necessary for writing | +slibcat). Therefore, those implementations supporting `getenv' (except | +SCM and Scheme48) provide a means for specifying the | +`implementation-vicinity' through environment variables. Define the | +indicated environment variable to the pathname (with trailing slash or | +backslash) of the desired directory. Do not use `slib/' as an | +implementation-vicinity! | + | +Bigloo BIGLOO_IMPLEMENTATION_PATH | +Chez CHEZ_IMPLEMENTATION_PATH | +ELK ELK_IMPLEMENTATION_PATH | +Gambit GAMBIT_IMPLEMENTATION_PATH | +Guile GUILE_IMPLEMENTATION_PATH | +Jscheme JSCHEME_IMPLEMENTATION_PATH | +MIT-Scheme MITSCHEME_IMPLEMENTATION_PATH | +MzScheme MZSCHEME_IMPLEMENTATION_PATH | +RScheme RSCHEME_IMPLEMENTATION_PATH | +STk STK_IMPLEMENTATION_PATH | +Vscm VSCM_IMPLEMENTATION_PATH | 8.1.4 Loading SLIB Initialization File -------------------------------------- @@ -16717,22 +16775,37 @@ above. SLIB support is already built into SCM. See the documentation with SCM for installation instructions. + -- Implementation: Larceny | + Starting with version 0.96, Larceny contains its own SLIB | + initialization file, loaded by `(require 'srfi-96)'. If | + SCHEME_LIBRARY_PATH is not set, then Larceny looks for an `slib' | + subdirectory of a directory in the list returned by | + `(current-require-path)' | + | + larceny -- -e "(require 'srfi-96)" | + | + -- Implementation: ELK | + elk -i -l ${SCHEME_LIBRARY_PATH}elk.init | + | -- Implementation: PLT Scheme -- Implementation: DrScheme -- Implementation: MzScheme The `init.ss' file in the _slibinit_ collection is an SLIB - initialization file. + initialization file. To run SLIB in MzScheme: | - To use SLIB in MzScheme, set the SCHEME_LIBRARY_PATH environment - variable to the installed SLIB location; then invoke MzScheme thus: - - `mzscheme -f ${SCHEME_LIBRARY_PATH}DrScheme.init' + mzscheme -f ${SCHEME_LIBRARY_PATH}mzscheme.init | -- Implementation: MIT Scheme - `scheme -load ${SCHEME_LIBRARY_PATH}mitscheme.init' + scheme -load ${SCHEME_LIBRARY_PATH}mitscheme.init | -- Implementation: Gambit-C 3.0 - `$command -:s ${SCHEME_LIBRARY_PATH}gambit.init -' + gsi -:s ${SCHEME_LIBRARY_PATH}gambit.init - | + | + -- Implementation: SISC | + sisc -e "(load \"${SCHEME_LIBRARY_PATH}sisc.init\")" -- | + | + -- Implementation: Kawa | + kawa -f ${SCHEME_LIBRARY_PATH}kawa.init -- | -- Implementation: Guile Guile versions 1.6 and earlier link to an archaic SLIB version. In @@ -16750,7 +16823,7 @@ above. Guile with SLIB can then be started thus: - `guile -l ${SCHEME_LIBRARY_PATH}guile.init' + guile -l ${SCHEME_LIBRARY_PATH}guile.init | -- Implementation: Scheme48 To make a Scheme48 image for an installation under `<prefix>', @@ -16780,12 +16853,16 @@ above. 3. `(slib:dump "dumpfile")' - 4. mv dumpfile place-where-vscm-standard-bootfile-resides e.g. - mv dumpfile /usr/local/vscm/lib/scheme-boot (In this case - vscm should have been compiled with flag - -DDEFAULT_BOOTFILE='"/usr/local/vscm/lib/scheme-boot"'. See - Makefile (definition of DDP) for details.) + 4. mv dumpfile place-where-vscm-standard-bootfile-resides. For | + example: | + `mv dumpfile /usr/local/vscm/lib/scheme-boot' | + | + In this case vscm should have been compiled with flag: | + | + -DDEFAULT_BOOTFILE='"/usr/local/vscm/lib/scheme-boot"' | + | + See Makefile (definition of DDP) for details. | File: slib.info, Node: The SLIB script, Next: Porting, Prev: Installation, Up: About SLIB @@ -16795,8 +16872,8 @@ File: slib.info, Node: The SLIB script, Next: Porting, Prev: Installation, U SLIB comes with shell script for Unix platforms. - slib [ scheme | scm | gsi | mzscheme | guile | - | scheme48 | scmlit | elk | sisc | kawa ] | + slib [ scheme | scm | gsi | mzscheme | guile + | scheme48 | scmlit | elk | sisc | kawa ] Starts an interactive Scheme-with-SLIB session. @@ -16984,12 +17061,7 @@ File: slib.info, Node: About this manual, Prev: Copyrights, Up: About SLIB 8.6 About this manual ===================== - -* Menu: - -* Copying This Manual:: -* How to use this License for your documents:: - + | * Entries that are labeled as Functions are called for their return values. Entries that are labeled as Procedures are called primarily for their side effects. @@ -16997,20 +17069,24 @@ File: slib.info, Node: About this manual, Prev: Copyrights, Up: About SLIB * Examples in this text were produced using the `scm' Scheme implementation. - * At the beginning of each section, there is a line that looks like `(require - 'feature)'. Include this line in your code prior to using the - package. + * At the beginning of each section, there is a line that looks like: | + (require 'feature) | + Include this line in your code prior to using the package. | + | +* Menu: + | +* GNU Free Documentation License:: -File: slib.info, Node: Copying This Manual, Next: How to use this License for your documents, Prev: About this manual, Up: About this manual - -8.6.1 Copying This Manual -------------------------- +File: slib.info, Node: GNU Free Documentation License, Prev: About this manual, Up: About this manual + | +8.6.1 GNU Free Documentation License | +------------------------------------ | Version 1.2, November 2002 Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -17402,11 +17478,8 @@ File: slib.info, Node: Copying This Manual, Next: How to use this License for you may choose any version ever published (not as a draft) by the Free Software Foundation. - -File: slib.info, Node: How to use this License for your documents, Prev: Copying This Manual, Up: About this manual - -8.6.2 How to use this License for your documents ------------------------------------------------- +ADDENDUM: How to use this License for your documents | +==================================================== | To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license @@ -17561,7 +17634,7 @@ Procedure and Macro Index * bitwise-merge: Bit-Twiddling. (line 57) * bitwise-not: Bit-Twiddling. (line 46) * bitwise-xor: Bit-Twiddling. (line 37) -* blackbody-spectrum: Spectra. (line 125) +* blackbody-spectrum: Spectra. (line 128) * booleans->integer: Bit-Twiddling. (line 239) * break <1>: Breakpoints. (line 28) * break: SRFI-1. (line 151) @@ -17577,16 +17650,17 @@ Procedure and Macro Index * byte-set!: Byte. (line 18) * bytes: Byte. (line 32) * bytes->ieee-double: Byte/Number Conversions. - (line 61) | + (line 61) * bytes->ieee-float: Byte/Number Conversions. (line 41) * bytes->integer: Byte/Number Conversions. (line 17) -* bytes->list: Byte. (line 36) -* bytes-copy: Byte. (line 47) +* bytes->list: Byte. (line 40) +* bytes->string: Byte. (line 47) +* bytes-copy: Byte. (line 57) * bytes-length: Byte. (line 29) -* bytes-reverse: Byte. (line 63) -* bytes-reverse!: Byte. (line 60) +* bytes-reverse: Byte. (line 73) +* bytes-reverse!: Byte. (line 70) * call-with-dynamic-binding: Dynamic Data Type. (line 25) * call-with-input-string: String Ports. (line 15) * call-with-open-ports: Input/Output. (line 54) @@ -17609,8 +17683,8 @@ Procedure and Macro Index * chap:string>=?: Chapter Ordering. (line 26) * chap:string>?: Chapter Ordering. (line 24) * check-parameters: Parameter lists. (line 59) -* chromaticity->CIEXYZ: Spectra. (line 169) -* chromaticity->whitepoint: Spectra. (line 172) +* chromaticity->CIEXYZ: Spectra. (line 172) +* chromaticity->whitepoint: Spectra. (line 175) * CIE:DE*: Color Difference Metrics. (line 20) * CIE:DE*94: Color Difference Metrics. @@ -17708,10 +17782,10 @@ Procedure and Macro Index * ctime: Posix Time. (line 68) * current-directory: Directories. (line 9) * current-error-port: Input/Output. (line 70) -* current-input-port <1>: Byte. (line 84) +* current-input-port <1>: Byte. (line 94) * current-input-port: Ruleset Definition and Use. (line 57) -* current-output-port: Byte. (line 76) +* current-output-port: Byte. (line 86) * current-time: Time and Date. (line 20) * cvs-directories: CVS. (line 14) * cvs-files: CVS. (line 9) @@ -17761,6 +17835,7 @@ Procedure and Macro Index * delete-table on relational-database: Database Operations. (line 59) * dequeue!: Queues. (line 28) * dequeue-all!: Queues. (line 36) +* describe-file-lock: Transactions. (line 70) * determinant: Matrix Algebra. (line 18) * dft: Discrete Fourier Transform. (line 44) @@ -17787,7 +17862,7 @@ Procedure and Macro Index * e-sRGB->e-sRGB: Color Conversions. (line 68) * e-sRGB->sRGB: Color Conversions. (line 60) * eighth: SRFI-1. (line 64) -* emacs:backup-name: Transactions. (line 73) +* emacs:backup-name: Transactions. (line 85) * empty?: Collections. (line 100) * encode-universal-time: Common-Lisp Time. (line 40) * enqueue!: Queues. (line 25) @@ -17797,7 +17872,7 @@ Procedure and Macro Index * every: Lists as sets. (line 91) * every?: Collections. (line 92) * exports<-info-index: Top-level Variable References. - (line 35) | + (line 35) * extended-euclid: Modular Arithmetic. (line 9) * factor: Prime Numbers. (line 41) * feature->export-alist: Module Manifests. (line 100) @@ -17952,19 +18027,19 @@ Procedure and Macro Index * identifier?: Syntactic Closures. (line 334) * identity: Miscellany. (line 9) * ieee-byte-collate: Byte/Number Conversions. - (line 152) | + (line 152) * ieee-byte-collate!: Byte/Number Conversions. - (line 143) | + (line 143) * ieee-byte-decollate: Byte/Number Conversions. - (line 156) | + (line 156) * ieee-byte-decollate!: Byte/Number Conversions. - (line 148) | + (line 148) * ieee-double->bytes: Byte/Number Conversions. - (line 98) | + (line 98) * ieee-float->bytes: Byte/Number Conversions. - (line 80) | -* illuminant-map: Spectra. (line 77) -* illuminant-map->XYZ: Spectra. (line 82) + (line 80) +* illuminant-map: Spectra. (line 80) +* illuminant-map->XYZ: Spectra. (line 85) * implementation-vicinity: Vicinity. (line 42) * in-graphic-context: Graphics Context. (line 7) * in-vicinity: Vicinity. (line 62) @@ -17979,14 +18054,14 @@ Procedure and Macro Index * integer->peano-coordinates: Peano Space-Filling Curve. (line 19) * integer-byte-collate: Byte/Number Conversions. - (line 137) | + (line 137) * integer-byte-collate!: Byte/Number Conversions. - (line 131) | + (line 131) * integer-expt: Irrational Integer Functions. (line 9) * integer-length: Bit-Twiddling. (line 98) * integer-log: Irrational Integer Functions. - (line 18) | + (line 18) * integer-sqrt: Irrational Integer Functions. (line 23) * interaction-environment: Eval. (line 51) @@ -18020,9 +18095,9 @@ Procedure and Macro Index * last-pair: Miscellany. (line 64) * length+: SRFI-1. (line 88) * let-values: Binding to multiple values. - (line 14) | + (line 14) * let-values*: Binding to multiple values. - (line 15) | + (line 15) * library-vicinity: Vicinity. (line 39) * light:ambient: Solid Modeling. (line 110) * light:beam: Solid Modeling. (line 144) @@ -18032,7 +18107,7 @@ Procedure and Macro Index * limit: The Limit. (line 7) * list*: List construction. (line 18) * list->array: Arrays. (line 88) -* list->bytes: Byte. (line 40) +* list->bytes: Byte. (line 36) * list->integer: Bit-Twiddling. (line 231) * list-copy: SRFI-1. (line 24) * list-index: SRFI-1. (line 157) @@ -18045,7 +18120,7 @@ Procedure and Macro Index * ln: Irrational Real Functions. (line 77) * load->path: Module Manifests. (line 63) -* load-ciexyz: Spectra. (line 37) +* load-ciexyz: Spectra. (line 40) * load-color-dictionary: Color Names. (line 52) * localtime: Posix Time. (line 39) * log2-binary-factors: Bit-Twiddling. (line 109) @@ -18205,7 +18280,7 @@ Procedure and Macro Index * open-database on relational-system: Relational Database Objects. (line 45) * open-database!: Using Databases. (line 68) -* open-file <1>: Byte. (line 67) +* open-file <1>: Byte. (line 77) * open-file: Input/Output. (line 18) * open-table: Using Databases. (line 107) * open-table on base-table: Base Tables. (line 16) @@ -18296,6 +18371,7 @@ Procedure and Macro Index * printf: Standard Formatted Output. (line 9) * process:schedule!: Multi-Processing. (line 20) +* program-arguments: System Interface. (line 22) * program-vicinity: Vicinity. (line 30) * project-table on relational-database: Database Operations. (line 76) * proper-list?: SRFI-1. (line 38) @@ -18328,13 +18404,13 @@ Procedure and Macro Index * random:uniform: Inexact Random Numbers. (line 9) * rationalize: Rationalize. (line 9) -* read-byte: Byte. (line 79) -* read-bytes: Byte. (line 97) -* read-cie-illuminant: Spectra. (line 43) +* read-byte: Byte. (line 89) +* read-bytes: Byte. (line 107) +* read-cie-illuminant: Spectra. (line 46) * read-command: Command Line. (line 9) * read-line: Line I/O. (line 9) * read-line!: Line I/O. (line 18) -* read-normalized-illuminant: Spectra. (line 54) +* read-normalized-illuminant: Spectra. (line 57) * read-options-file: Command Line. (line 65) * real-acos: Irrational Real Functions. (line 20) @@ -18505,8 +18581,8 @@ Procedure and Macro Index * soundex: Soundex. (line 9) * span: SRFI-1. (line 147) * span!: SRFI-1. (line 149) -* spectrum->chromaticity: Spectra. (line 111) -* spectrum->XYZ: Spectra. (line 85) +* spectrum->chromaticity: Spectra. (line 114) +* spectrum->XYZ: Spectra. (line 88) * split-at: SRFI-1. (line 80) * split-at!: SRFI-1. (line 81) * sprintf: Standard Formatted Output. @@ -18549,6 +18625,7 @@ Procedure and Macro Index * stack: Trace. (line 49) * stack-all: Debug. (line 27) * stackf: Trace. (line 85) +* string->bytes: Byte. (line 52) * string->color: Color Data-Type. (line 98) * string-capitalize: String-Case. (line 11) * string-capitalize!: String-Case. (line 16) @@ -18571,9 +18648,9 @@ Procedure and Macro Index * StudlyCapsExpand: String-Case. (line 29) * sub-vicinity: Vicinity. (line 73) * subarray: Subarrays. (line 9) -* subbytes: Byte. (line 50) -* subbytes-read!: Byte. (line 122) -* subbytes-write: Byte. (line 131) +* subbytes: Byte. (line 60) +* subbytes-read!: Byte. (line 132) +* subbytes-write: Byte. (line 141) * subset?: Lists as sets. (line 52) * subst: Tree Operations. (line 11) * substq: Tree Operations. (line 12) @@ -18609,8 +18686,8 @@ Procedure and Macro Index * take: SRFI-1. (line 71) * take!: SRFI-1. (line 72) * take-right: SRFI-1. (line 74) -* temperature->chromaticity: Spectra. (line 150) -* temperature->XYZ: Spectra. (line 135) +* temperature->chromaticity: Spectra. (line 153) +* temperature->XYZ: Spectra. (line 138) * tenth: SRFI-1. (line 66) * third: SRFI-1. (line 57) * time-zone: Time Zone. (line 68) @@ -18633,7 +18710,7 @@ Procedure and Macro Index * track: Trace. (line 41) * track-all: Debug. (line 23) * trackf: Trace. (line 83) -* transact-file-replacement: Transactions. (line 98) +* transact-file-replacement: Transactions. (line 110) * transcript-off: Transcripts. (line 10) * transcript-on: Transcripts. (line 9) * transformer: Syntactic Closures. (line 113) @@ -18666,7 +18743,7 @@ Procedure and Macro Index * uric:decode: URI. (line 81) * uric:encode: URI. (line 76) * url->color-dictionary: Color Names. (line 77) -* user-email-address: Transactions. (line 133) +* user-email-address: Transactions. (line 145) * user-vicinity: Vicinity. (line 47) * values: Values. (line 9) * vector->array: Arrays. (line 111) @@ -18677,8 +18754,8 @@ Procedure and Macro Index * vrml: Solid Modeling. (line 12) * vrml-append: Solid Modeling. (line 16) * vrml-to-file: Solid Modeling. (line 20) -* wavelength->chromaticity: Spectra. (line 120) -* wavelength->XYZ: Spectra. (line 115) +* wavelength->chromaticity: Spectra. (line 123) +* wavelength->XYZ: Spectra. (line 118) * whole-page <1>: Rectangles. (line 11) * whole-page: PostScript Graphing. (line 37) * with-input-from-file: With-File. (line 9) @@ -18688,8 +18765,8 @@ Procedure and Macro Index * world:info: Solid Modeling. (line 24) * wrap-command-interface: Database Extension. (line 7) * write-base on base-table: The Base. (line 43) -* write-byte: Byte. (line 72) -* write-bytes: Byte. (line 108) +* write-byte: Byte. (line 82) +* write-bytes: Byte. (line 118) * write-database: Using Databases. (line 79) * write-database on relational-database: Database Operations. (line 26) * write-line: Line I/O. (line 29) @@ -18751,10 +18828,10 @@ Procedure and Macro Index * xRGB->CIEXYZ: Color Conversions. (line 51) * xrgb->color: Color Spaces. (line 215) * xRGB->sRGB: Color Conversions. (line 54) -* xyY->XYZ: Spectra. (line 188) -* xyY:normalize-colors: Spectra. (line 190) -* XYZ->chromaticity: Spectra. (line 165) -* XYZ->xyY: Spectra. (line 184) +* xyY->XYZ: Spectra. (line 191) +* xyY:normalize-colors: Spectra. (line 193) +* XYZ->chromaticity: Spectra. (line 168) +* XYZ->xyY: Spectra. (line 187) * y-axis: Legending. (line 48) * zenith-xyy: Daylight. (line 70) * zip: SRFI-1. (line 98) @@ -18873,7 +18950,7 @@ Concept and Feature Index * base-table: Base Table. (line 6) * batch: Batch. (line 6) * bignum: Feature. (line 13) -* binary: Byte. (line 66) +* binary: Byte. (line 76) * binary trees: Weight-Balanced Trees. (line 8) * binary trees, as discrete maps: Weight-Balanced Trees. @@ -18899,9 +18976,9 @@ Concept and Feature Index * chapter-order: Chapter Ordering. (line 6) * charplot: Character Plotting. (line 6) * Chroma: Color Spaces. (line 141) -* cie1931: Spectra. (line 31) +* cie1931: Spectra. (line 32) * cie1964: Spectra. (line 27) -* ciexyz: Spectra. (line 35) +* ciexyz: Spectra. (line 37) * CIEXYZ: Color Spaces. (line 18) * cksum-string: Cyclic Checksum. (line 160) * coerce: Type Coercion. (line 6) @@ -18946,10 +19023,11 @@ Concept and Feature Index (line 18) * discrete maps, using binary trees: Weight-Balanced Trees. (line 52) -* DrScheme: Installation. (line 103) +* DrScheme: Installation. (line 138) * dynamic: Dynamic Data Type. (line 6) * dynamic-wind: Dynamic-Wind. (line 6) * e-sRGB: Color Spaces. (line 218) +* ELK: Installation. (line 134) * emacs: Transactions. (line 33) * Encapsulated-PostScript: PostScript Graphing. (line 23) * escaped: URI. (line 77) @@ -18958,32 +19036,32 @@ Concept and Feature Index * eval: Eval. (line 6) * exchanger: Miscellany. (line 22) * factor: Prime Numbers. (line 6) -* FDL, GNU Free Documentation License: Copying This Manual. (line 6) -* feature <1>: About this manual. (line 18) +* feature <1>: About this manual. (line 13) * feature <2>: Require. (line 18) * feature: Feature. (line 6) * File Transfer Protocol: URI. (line 113) * file-lock: Transactions. (line 32) +* filename <1>: Batch. (line 148) * filename: Filenames. (line 6) * fluid-let: Fluid-Let. (line 6) * fold: Parsing XML. (line 400) * form: HTML. (line 63) * format: Format. (line 6) -* Gambit-C: Installation. (line 116) +* Gambit-C 3.0: Installation. (line 148) * gamut: Color Spaces. (line 18) * generic-write: Generic-Write. (line 6) +* getenv: System Interface. (line 6) * getit: URI. (line 118) * getopt <1>: Command Example. (line 14) * getopt: Getopt. (line 6) * getopt-parameters <1>: Command Example. (line 12) * getopt-parameters: Getopt Parameter lists. - (line 6) -* glob <1>: Batch. (line 148) + (line 6) | * glob: Filenames. (line 6) * Gray code: Hilbert Space-Filling Curve. (line 52) * guarded-cond-clause: Guarded COND Clause. (line 6) -* Guile: Installation. (line 119) +* Guile: Installation. (line 157) * hash: Hashing. (line 6) * hash-table: Hash Tables. (line 6) * Hilbert: Hilbert Space-Filling Curve. @@ -19002,7 +19080,7 @@ Concept and Feature Index * ICC Profile: Color Spaces. (line 191) * implcat: Catalog Vicinities. (line 23) * indexed-sequential-access-method: Byte/Number Conversions. - (line 128) | + (line 128) * inexact: Feature. (line 13) * infix: Rule Types. (line 19) * Info: Top-level Variable References. @@ -19016,15 +19094,17 @@ Concept and Feature Index * Japanese: Extra-SLIB Packages. (line 53) * JFILTER: Extra-SLIB Packages. (line 53) * JIS: Extra-SLIB Packages. (line 53) +* Kawa: Installation. (line 154) * L*a*b*: Color Spaces. (line 68) * L*C*h: Color Spaces. (line 135) * L*u*v*: Color Spaces. (line 98) * lamination: Hilbert Space-Filling Curve. (line 88) +* Larceny: Installation. (line 125) * Left Denotation, led: Nud and Led Definition. (line 13) * let-values: Binding to multiple values. - (line 11) | + (line 11) * Lightness: Color Spaces. (line 71) * line-i: Line I/O. (line 6) * list-processing library: SRFI-1. (line 8) @@ -19053,7 +19133,7 @@ Concept and Feature Index * minimize: Minimizing. (line 6) * minimum field width (printf): Standard Formatted Output. (line 88) -* MIT Scheme: Installation. (line 113) +* MIT Scheme: Installation. (line 145) * mkimpcat.scm: Catalog Vicinities. (line 28) * mklibcat.scm: Catalog Vicinities. (line 16) * modular: Modular Arithmetic. (line 6) @@ -19061,7 +19141,7 @@ Concept and Feature Index (line 6) * multiarg-apply: Multi-argument Apply. (line 6) -* MzScheme: Installation. (line 104) +* MzScheme: Installation. (line 139) * nary: Rule Types. (line 23) * ncbi-dma: NCBI-DNA. (line 6) * new-catalog: Catalog Creation. (line 48) @@ -19090,7 +19170,7 @@ Concept and Feature Index * pgm-raw: Portable Image Files. (line 26) * plain-text: HTML. (line 14) -* PLT Scheme: Installation. (line 102) +* PLT Scheme: Installation. (line 137) * pnm: Portable Image Files. (line 6) * portable bitmap graphics: Portable Image Files. @@ -19115,6 +19195,8 @@ Concept and Feature Index * priority-queue: Priority Queues. (line 6) * PRNG: Random Numbers. (line 6) * process: Multi-Processing. (line 6) +* program-arguments <1>: System Interface. (line 19) +* program-arguments: Getopt. (line 102) * Prolog: Extra-SLIB Packages. (line 49) * promise: Promises. (line 6) * PSD: Extra-SLIB Packages. (line 26) @@ -19163,9 +19245,9 @@ Concept and Feature Index * SCHELOG: Extra-SLIB Packages. (line 49) * scheme: URI. (line 99) * Scheme Request For Implementation: SRFI. (line 8) -* Scheme48: Installation. (line 137) +* Scheme48: Installation. (line 175) * schmooz: Schmooz. (line 6) -* SCM: Installation. (line 97) +* SCM: Installation. (line 120) * script: Installation. (line 37) * self-set: Commutative Rings. (line 17) * Sequence Comparison: Sequence Comparison. (line 6) @@ -19175,6 +19257,7 @@ Concept and Feature Index (line 52) * shell: Command Line. (line 12) * sierpinski: Sierpinski Curve. (line 6) +* SISC: Installation. (line 151) * sitecat: Catalog Vicinities. (line 19) * sky: Daylight. (line 6) * slib: Installation. (line 37) @@ -19195,7 +19278,7 @@ Concept and Feature Index * srfi-1: SRFI-1. (line 6) * srfi-11 <1>: SRFI. (line 37) * srfi-11: Binding to multiple values. - (line 11) | + (line 11) * srfi-2 <1>: SRFI. (line 33) * srfi-2: Guarded LET* special form. (line 6) @@ -19216,6 +19299,7 @@ Concept and Feature Index * srfi-94: SRFI. (line 53) * srfi-95 <1>: SRFI. (line 56) * srfi-95: Sorting. (line 6) +* srfi-96: SRFI. (line 58) * sRGB: Color Spaces. (line 189) * stdio: Standard Formatted I/O. (line 14) @@ -19232,6 +19316,7 @@ Concept and Feature Index (line 32) * syntax-case <1>: Syntax-Case Macros. (line 6) * syntax-case: Library Catalogs. (line 43) +* system: System Interface. (line 13) * time: Time and Date. (line 16) * time-zone: Time Zone. (line 63) * top-level variable references: Top-level Variable References. @@ -19262,7 +19347,7 @@ Concept and Feature Index * variable references: Top-level Variable References. (line 6) * vet: Module Analysis. (line 6) -* VSCM: Installation. (line 148) +* VSCM: Installation. (line 186) * WB: Base Table. (line 34) * wb-table: Base Table. (line 32) * weight-balanced binary trees: Weight-Balanced Trees. @@ -19275,249 +19360,248 @@ Concept and Feature Index * wt-tree: Weight-Balanced Trees. (line 6) * xRGB: Color Spaces. (line 204) -* xyY: Spectra. (line 175) +* xyY: Spectra. (line 178) * yasos: Yasos. (line 6) Tag Table: -Node: Top889 -Node: The Library System2001 -Node: Feature2668 -Ref: Feature-Footnote-14767 -Node: Require5277 -Node: Library Catalogs7690 -Node: Catalog Creation9121 -Node: Catalog Vicinities11496 -Node: Compiling Scheme14256 -Node: Module Conventions14906 -Ref: Module Conventions-Footnote-116211 -Node: Module Manifests16577 -Node: Module Semantics22049 -Node: Top-level Variable References23667 -Ref: Top-level Variable References-Footnote-125626 -Node: Module Analysis26067 -Node: Universal SLIB Procedures27172 -Node: Vicinity27787 -Node: Configuration31642 -Node: Input/Output34614 -Node: System39059 -Node: Miscellany42321 -Node: Scheme Syntax Extension Packages44303 -Node: Defmacro45241 -Node: R4RS Macros47217 -Node: Macro by Example48481 -Node: Macros That Work51379 -Node: Syntactic Closures57373 -Node: Syntax-Case Macros74901 -Node: Define-Structure78832 -Node: Define-Record-Type80808 -Node: Fluid-Let81441 -Node: Binding to multiple values82411 -Node: Guarded LET* special form83253 -Node: Guarded COND Clause83605 -Node: Yasos85390 -Node: Yasos terms86202 -Node: Yasos interface87240 -Node: Setters89336 -Node: Yasos examples91995 -Node: Textual Conversion Packages94953 -Node: Precedence Parsing95806 -Node: Precedence Parsing Overview96491 -Ref: Precedence Parsing Overview-Footnote-196872 -Node: Rule Types98121 -Node: Ruleset Definition and Use99576 -Node: Token definition101959 -Node: Nud and Led Definition104567 -Node: Grammar Rule Definition107028 -Node: Format114624 -Node: Format Interface114938 -Node: Format Specification116688 -Node: Standard Formatted I/O127633 -Node: Standard Formatted Output128221 -Node: Standard Formatted Input137679 -Node: Programs and Arguments144356 -Node: Getopt144864 -Node: Command Line151411 -Node: Parameter lists154609 -Node: Getopt Parameter lists158515 -Node: Filenames161756 -Node: Batch165666 -Node: HTML173574 -Node: HTML Tables180016 -Node: HTTP and CGI186548 -Node: Parsing HTML191097 -Node: URI193604 -Node: Parsing XML198351 -Node: Printing Scheme263178 -Node: Generic-Write263643 -Node: Object-To-String265118 -Node: Pretty-Print265593 -Node: Time and Date268638 -Node: Time Zone269756 -Node: Posix Time274561 -Node: Common-Lisp Time276791 -Node: Time Infrastructure278473 -Node: NCBI-DNA278877 -Node: Schmooz280451 -Node: Mathematical Packages284754 -Node: Bit-Twiddling285509 -Node: Modular Arithmetic294513 -Node: Irrational Integer Functions296944 -Node: Irrational Real Functions297973 -Node: Prime Numbers301577 -Node: Random Numbers303281 -Node: Exact Random Numbers304123 -Node: Inexact Random Numbers306395 -Node: Discrete Fourier Transform308229 -Node: Cyclic Checksum310664 -Node: Graphing318294 -Node: Character Plotting318489 -Node: PostScript Graphing324001 -Node: Column Ranges325780 -Node: Drawing the Graph327259 -Node: Graphics Context328354 -Node: Rectangles330173 -Node: Legending331620 -Node: Legacy Plotting333849 -Node: Example Graph334861 -Node: Solid Modeling339228 -Node: Color358737 -Node: Color Data-Type359573 -Ref: Color Data-Type-Footnote-1328920 -Node: Color Spaces363964 -Ref: Color Spaces-Footnote-1338921 -Node: Spectra373883 -Node: Color Difference Metrics382648 -Node: Color Conversions385330 -Node: Color Names387474 -Node: Daylight394410 -Node: Root Finding399099 -Node: Minimizing403058 -Ref: Minimizing-Footnote-1370311 -Node: The Limit405100 -Node: Commutative Rings409970 -Node: Matrix Algebra421381 -Node: Database Packages423487 -Node: Relational Database423770 -Node: Using Databases424637 -Node: Table Operations431143 -Node: Single Row Operations432354 -Node: Match-Keys434601 -Node: Multi-Row Operations436680 -Node: Indexed Sequential Access Methods439071 -Node: Sequential Index Operations440079 -Node: Table Administration442435 -Node: Database Interpolation443302 -Node: Embedded Commands444404 -Node: Database Extension445978 -Node: Command Intrinsics448103 -Node: Define-tables Example449665 -Node: The *commands* Table451315 -Node: Command Service453593 -Node: Command Example455555 -Node: Database Macros460108 -Node: Within-database460993 -Node: Within-database Example463900 -Node: Database Browser465687 -Node: Relational Infrastructure466763 -Node: Base Table467067 -Node: The Base469575 -Node: Base Tables472693 -Node: Base Field Types474169 -Node: Composite Keys474952 -Node: Base Record Operations477006 -Node: Match Keys478734 -Node: Aggregate Base Operations479615 -Node: Base ISAM Operations480680 -Node: Catalog Representation481998 -Node: Relational Database Objects484667 -Node: Database Operations487311 -Node: Weight-Balanced Trees491020 -Node: Construction of Weight-Balanced Trees494906 -Node: Basic Operations on Weight-Balanced Trees498372 -Node: Advanced Operations on Weight-Balanced Trees501239 -Node: Indexing Operations on Weight-Balanced Trees507280 -Node: Other Packages511121 -Node: Data Structures511650 -Node: Arrays512491 -Node: Subarrays523379 -Node: Array Mapping525621 -Node: Array Interpolation528831 -Node: Association Lists530095 -Node: Byte532371 -Node: Byte/Number Conversions537964 -Node: MAT-File Format545535 -Node: Portable Image Files546814 -Node: Collections548444 -Node: Dynamic Data Type554710 -Node: Hash Tables555989 -Node: Object558577 -Node: Priority Queues566860 -Node: Queues567715 -Node: Records568960 -Node: Sorting and Searching572470 -Node: Common List Functions573163 -Node: List construction573620 -Node: Lists as sets575335 -Node: Lists as sequences581873 -Node: Destructive list operations587100 -Node: Non-List functions589778 -Node: Tree Operations590867 -Node: Chapter Ordering592560 -Node: Sorting594207 -Node: Topological Sort598492 -Node: Hashing600200 -Node: Space-Filling Curves601217 -Node: Hilbert Space-Filling Curve601521 -Node: Peano Space-Filling Curve605411 -Node: Sierpinski Curve606517 -Node: Soundex608981 -Node: String Search610579 -Node: Sequence Comparison613152 -Node: Procedures616282 -Node: Type Coercion616810 -Node: String-Case617242 -Node: String Ports619069 -Node: Line I/O619841 -Node: Multi-Processing621890 -Node: Metric Units623008 -Node: Standards Support631287 -Node: RnRS632083 -Node: With-File633306 -Node: Transcripts633582 -Node: Rev2 Procedures633916 -Node: Rev4 Optional Procedures635649 -Node: Multi-argument / and -636118 -Node: Multi-argument Apply636528 -Node: Rationalize636865 -Node: Promises638027 -Node: Dynamic-Wind638473 -Node: Eval639741 -Node: Values643086 -Node: SRFI643901 -Node: SRFI-1645988 -Node: Session Support650546 -Node: Repl651120 -Node: Quick Print652416 -Node: Debug653722 -Node: Breakpoints654629 -Node: Trace656671 -Node: System Interface659897 -Node: Directories660468 -Node: Transactions661961 -Node: CVS667472 -Node: Extra-SLIB Packages668639 -Node: About SLIB670948 -Node: Installation671733 -Node: The SLIB script677640 -Node: Porting678193 -Ref: Porting-Footnote-1639950 -Node: Coding Guidelines679757 -Node: Copyrights682171 -Node: About this manual685540 -Node: Copying This Manual686172 -Node: How to use this License for your documents707206 -Node: Index708724 +Node: Top844 +Node: The Library System1911 +Node: Feature2578 +Ref: Feature-Footnote-14779 +Node: Require5169 +Node: Library Catalogs7582 +Node: Catalog Creation9013 +Node: Catalog Vicinities11388 +Node: Compiling Scheme14148 +Node: Module Conventions14798 +Ref: Module Conventions-Footnote-116223 +Node: Module Manifests16469 +Node: Module Semantics21941 +Node: Top-level Variable References23559 +Ref: Top-level Variable References-Footnote-125638 +Node: Module Analysis25959 +Node: Universal SLIB Procedures27064 +Node: Vicinity27679 +Node: Configuration31534 +Node: Input/Output34506 +Node: System38461 +Node: Miscellany41631 +Node: Scheme Syntax Extension Packages43534 +Node: Defmacro44472 +Node: R4RS Macros46448 +Node: Macro by Example47712 +Node: Macros That Work50610 +Node: Syntactic Closures56604 +Node: Syntax-Case Macros74132 +Node: Define-Structure78063 +Node: Define-Record-Type80039 +Node: Fluid-Let80672 +Node: Binding to multiple values81642 +Node: Guarded LET* special form82241 +Node: Guarded COND Clause82593 +Node: Yasos84378 +Node: Yasos terms85190 +Node: Yasos interface86228 +Node: Setters88324 +Node: Yasos examples90983 +Node: Textual Conversion Packages93941 +Node: Precedence Parsing94794 +Node: Precedence Parsing Overview95479 +Ref: Precedence Parsing Overview-Footnote-196884 +Node: Rule Types97109 +Node: Ruleset Definition and Use98564 +Node: Token definition100947 +Node: Nud and Led Definition103555 +Node: Grammar Rule Definition106016 +Node: Format113612 +Node: Format Interface113891 +Node: Format Specification115641 +Node: Standard Formatted I/O126586 +Node: Standard Formatted Output127174 +Node: Standard Formatted Input136632 +Node: Programs and Arguments143309 +Node: Getopt143808 +Node: Command Line150431 +Node: Parameter lists153629 +Node: Getopt Parameter lists157535 +Node: Filenames160776 +Node: Batch164722 +Node: HTML172612 +Node: HTML Tables179054 +Node: HTTP and CGI185586 +Node: Parsing HTML190135 +Node: URI192642 +Node: Parsing XML197310 +Node: Printing Scheme230196 +Node: Generic-Write230523 +Node: Object-To-String231939 +Node: Pretty-Print232358 +Node: Time and Date235343 +Node: Time Zone236400 +Node: Posix Time241142 +Node: Common-Lisp Time243310 +Node: Time Infrastructure244936 +Node: NCBI-DNA245287 +Node: Schmooz246659 +Node: Mathematical Packages250895 +Node: Bit-Twiddling251650 +Node: Modular Arithmetic260195 +Node: Irrational Integer Functions262626 +Node: Irrational Real Functions263655 +Node: Prime Numbers267259 +Node: Random Numbers268963 +Node: Exact Random Numbers269805 +Node: Inexact Random Numbers272077 +Node: Discrete Fourier Transform273911 +Node: Cyclic Checksum276346 +Node: Graphing283976 +Node: Character Plotting284171 +Node: PostScript Graphing289683 +Node: Column Ranges291462 +Node: Drawing the Graph292941 +Node: Graphics Context294036 +Node: Rectangles295855 +Node: Legending297302 +Node: Legacy Plotting299531 +Node: Example Graph300543 +Node: Solid Modeling304910 +Node: Color324419 +Node: Color Data-Type325255 +Ref: Color Data-Type-Footnote-1328905 +Node: Color Spaces329646 +Ref: Color Spaces-Footnote-1338906 +Node: Spectra339565 +Node: Color Difference Metrics348676 +Node: Color Conversions351358 +Node: Color Names353502 +Node: Daylight360438 +Node: Root Finding365127 +Node: Minimizing369007 +Ref: Minimizing-Footnote-1370431 +Node: The Limit371049 +Node: Commutative Rings375919 +Node: Matrix Algebra387330 +Node: Database Packages388861 +Node: Relational Database389144 +Node: Using Databases390011 +Node: Table Operations396517 +Node: Single Row Operations397728 +Node: Match-Keys399975 +Node: Multi-Row Operations402054 +Node: Indexed Sequential Access Methods404445 +Node: Sequential Index Operations405453 +Node: Table Administration407809 +Node: Database Interpolation408676 +Node: Embedded Commands409778 +Node: Database Extension411352 +Node: Command Intrinsics413477 +Node: Define-tables Example415039 +Node: The *commands* Table416689 +Node: Command Service418967 +Node: Command Example420929 +Node: Database Macros425482 +Node: Within-database426367 +Node: Within-database Example429274 +Node: Database Browser431061 +Node: Relational Infrastructure432137 +Node: Base Table432441 +Node: The Base434949 +Node: Base Tables438067 +Node: Base Field Types439543 +Node: Composite Keys440326 +Node: Base Record Operations442380 +Node: Match Keys444108 +Node: Aggregate Base Operations444989 +Node: Base ISAM Operations446054 +Node: Catalog Representation447372 +Node: Relational Database Objects450041 +Node: Database Operations452685 +Node: Weight-Balanced Trees456394 +Node: Construction of Weight-Balanced Trees460280 +Node: Basic Operations on Weight-Balanced Trees463746 +Node: Advanced Operations on Weight-Balanced Trees466613 +Node: Indexing Operations on Weight-Balanced Trees472654 +Node: Other Packages476495 +Node: Data Structures477024 +Node: Arrays477865 +Node: Subarrays486552 +Node: Array Mapping488794 +Node: Array Interpolation491594 +Node: Association Lists492858 +Node: Byte495134 +Node: Byte/Number Conversions502020 +Node: MAT-File Format509546 +Node: Portable Image Files510825 +Node: Collections512455 +Node: Dynamic Data Type518569 +Node: Hash Tables519848 +Node: Object522436 +Node: Priority Queues530719 +Node: Queues531574 +Node: Records532819 +Node: Sorting and Searching536329 +Node: Common List Functions537022 +Node: List construction537479 +Node: Lists as sets539194 +Node: Lists as sequences545732 +Node: Destructive list operations550959 +Node: Non-List functions553637 +Node: Tree Operations554726 +Node: Chapter Ordering556419 +Node: Sorting558066 +Node: Topological Sort561592 +Node: Hashing563300 +Node: Space-Filling Curves564317 +Node: Hilbert Space-Filling Curve564621 +Node: Peano Space-Filling Curve568511 +Node: Sierpinski Curve569617 +Node: Soundex572081 +Node: String Search573679 +Node: Sequence Comparison576252 +Node: Procedures579382 +Node: Type Coercion579910 +Node: String-Case580342 +Node: String Ports582169 +Node: Line I/O582941 +Node: Multi-Processing584990 +Node: Metric Units586108 +Node: Standards Support594387 +Node: RnRS595183 +Node: With-File596406 +Node: Transcripts596682 +Node: Rev2 Procedures597016 +Node: Rev4 Optional Procedures598749 +Node: Multi-argument / and -599218 +Node: Multi-argument Apply599628 +Node: Rationalize599965 +Node: Promises601127 +Node: Dynamic-Wind601573 +Node: Eval602841 +Node: Values606186 +Node: SRFI607001 +Node: SRFI-1608641 +Node: Session Support613148 +Node: Repl613722 +Node: Quick Print615018 +Node: Debug616324 +Node: Breakpoints617231 +Node: Trace619273 +Node: System Interface622499 +Node: Directories623552 +Node: Transactions625045 +Node: CVS631516 +Node: Extra-SLIB Packages632683 +Node: About SLIB635024 +Node: Installation635969 +Node: The SLIB script645771 +Node: Porting646270 +Ref: Porting-Footnote-1642993 +Node: Coding Guidelines647834 +Node: Copyrights650248 +Node: About this manual653617 +Node: GNU Free Documentation License654527 +Node: Index677185 End Tag Table @@ -4,7 +4,7 @@ ; placed in the public domain
; *** version numbers ***
-!define PRODUCT_VERSION "3a5-1"
+!define PRODUCT_VERSION "3b1-1"
; ----------------[ NO CHANGES BELOW ]----------------
@@ -33,7 +33,7 @@ ; MUI Settings
!define MUI_ABORTWARNING
-!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
+!define MUI_ICON "SLIB.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
; Welcome page
@@ -69,7 +69,7 @@ var ICONS_GROUP ; MUI end ------
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
-OutFile "SLIB-${PRODUCT_VERSION}.exe"
+OutFile "slib-${PRODUCT_VERSION}.exe"
InstallDir "$PROGRAMFILES\slib"
InstallDirRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_DIR_REGKEY}" ""
ShowInstDetails show
@@ -264,7 +264,27 @@ Section "MainSection" SEC01 File "scaoutp.scm"
File "schmooz.scm"
File "schmooz.texi"
+ File "bigloo.init"
+ File "chez.init"
+ File "elk.init"
+ File "gambit.init"
+ File "guile.init"
+ File "jscheme.init"
+ File "kawa.init"
+ File "macscheme.init"
+ File "mitscheme.init"
+ File "mzscheme.init"
+ File "pscheme.init"
+ File "RScheme.init"
+ File "scheme2c.init"
+ File "scheme48.init"
File "scm.init"
+ File "scsh.init"
+ File "sisc.init"
+ File "STk.init"
+ File "t3.init"
+ File "umbscheme.init"
+ File "vscm.init"
File "scmacro.scm"
File "selfset.scm"
File "sierpinski.scm"
@@ -434,7 +454,27 @@ Section Uninstall Delete "$INSTDIR\sierpinski.scm"
Delete "$INSTDIR\selfset.scm"
Delete "$INSTDIR\scmacro.scm"
+ Delete "$INSTDIR\bigloo.init"
+ Delete "$INSTDIR\chez.init"
+ Delete "$INSTDIR\elk.init"
+ Delete "$INSTDIR\gambit.init"
+ Delete "$INSTDIR\guile.init"
+ Delete "$INSTDIR\jscheme.init"
+ Delete "$INSTDIR\kawa.init"
+ Delete "$INSTDIR\macscheme.init"
+ Delete "$INSTDIR\mitscheme.init"
+ Delete "$INSTDIR\mzscheme.init"
+ Delete "$INSTDIR\pscheme.init"
+ Delete "$INSTDIR\RScheme.init"
+ Delete "$INSTDIR\scheme2c.init"
+ Delete "$INSTDIR\scheme48.init"
Delete "$INSTDIR\scm.init"
+ Delete "$INSTDIR\scsh.init"
+ Delete "$INSTDIR\sisc.init"
+ Delete "$INSTDIR\STk.init"
+ Delete "$INSTDIR\t3.init"
+ Delete "$INSTDIR\umbscheme.init"
+ Delete "$INSTDIR\vscm.init"
Delete "$INSTDIR\schmooz.texi"
Delete "$INSTDIR\schmooz.scm"
Delete "$INSTDIR\scaoutp.scm"
@@ -29,8 +29,8 @@ Usage: slib SCHEME Usage: slib Initialize SLIB session using executable (MIT) 'scheme', 'scm', - 'gsi', 'mzscheme', 'guile', 'slib48', 'scmlit', 'elk', 'sisc', or - 'kawa'." + 'gsi', 'mzscheme', 'guile', 'slib48', 'larceny', 'scmlit', 'elk', + 'sisc', or 'kawa'." case "$1" in -v | --ver*) echo slib "$VERSION"; exit 0;; @@ -57,6 +57,8 @@ if [ -z "$command" ]; then command=guile; implementation=gui elif type slib48>/dev/null 2>&1; then command=slib48; implementation=s48 + elif type larceny>/dev/null 2>&1; then + command=larceny; implementation=lar elif type scmlit>/dev/null 2>&1; then command=scmlit; implementation=scm elif type elk>/dev/null 2>&1; then @@ -79,6 +81,7 @@ elif type $command>/dev/null 2>&1; then elif echo ${SPEW} | grep 'UMB Scheme'>/dev/null 2>&1; then implementation=umb elif echo ${SPEW} | grep 'scheme48' >/dev/null 2>&1; then implementation=s48 elif echo ${SPEW} | grep 'MzScheme' >/dev/null 2>&1; then implementation=plt + elif echo ${SPEW} | grep 'larceny' >/dev/null 2>&1; then implementation=lar elif echo ${SPEW} | grep 'Guile' >/dev/null 2>&1; then implementation=gui elif echo ${SPEW} | grep 'SCM' >/dev/null 2>&1; then implementation=scm elif echo ${SPEW} | grep 'SISC' >/dev/null 2>&1; then implementation=ssc @@ -123,8 +126,9 @@ case $implementation in gam) exec $command -:s ${SCHEME_LIBRARY_PATH}gambit.init - "$@";; ssc) exec $command -e "(load \"${SCHEME_LIBRARY_PATH}sisc.init\")" -- "$@";; kwa) exec $command -f ${SCHEME_LIBRARY_PATH}kawa.init -- "$@";; - plt) exec $command -f ${SCHEME_LIBRARY_PATH}DrScheme.init "$@";; + plt) exec $command -f ${SCHEME_LIBRARY_PATH}mzscheme.init "$@";; gui) exec $command -l ${SCHEME_LIBRARY_PATH}guile.init "$@";; + lar) exec $command -- -e "(require 'srfi-96)" "$@";; mit) exec $command -load ${SCHEME_LIBRARY_PATH}mitscheme.init "$@";; s48) if [ -f "${S48_VICINITY}slib.image" ]; then exec scheme48 -h 4000000 -i ${S48_VICINITY}slib.image @@ -1,6 +1,6 @@ Summary: platform independent library for scheme Name: slib -Version: 3a5 +Version: 3b1 Release: 1 Group: Development/Languages BuildArch: noarch @@ -10,7 +10,7 @@ License: distributable, see individual files for copyright Vendor: Aubrey Jaffer <agj @ alum.mit.edu> Provides: slib -Source: ftp://swiss.csail.mit.edu/pub/scm/slib%{version}.zip +Source: ftp://swiss.csail.mit.edu/pub/scm/slib-%{version}.zip URL: http://swiss.csail.mit.edu/~jaffer/SLIB.html BuildRoot: %{_tmppath}/%{name}-%{version}-root @@ -92,10 +92,9 @@ rm -f slib.image %{_datadir}/slib/saturate.txt %{_datadir}/slib/resenecolours.txt %{_datadir}/slib/grapheps.ps -%{_infodir}/slib.info.gz -# The Makefile is of limited utility without all the texinfo files. %{_datadir}/slib/Makefile -%{_mandir}/man1/slib.1.gz +%{_infodir}/slib.info.gz +# %{_mandir}/man1/slib.1.gz %doc ANNOUNCE README COPYING FAQ ChangeLog %changelog @@ -19,7 +19,7 @@ the portable Scheme library. @noindent @c Copyright (C) 1993 Todd R. Eigenschink@* Copyright @copyright{} 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -3659,7 +3659,7 @@ left unread in the input stream. * Command Line:: A command line reader for Scheme shells * Parameter lists:: 'parameters * Getopt Parameter lists:: 'getopt-parameters -* Filenames:: 'glob or 'filename +* Filenames:: 'filename * Batch:: 'batch @end menu @@ -3772,10 +3772,11 @@ have been parsed. Example: @lisp #! /usr/local/bin/scm -;;;This code is SCM specific. -(define argv (program-arguments)) +(require 'program-arguments) (require 'getopt) +(define argv (program-arguments)) @ftindex getopt +@ftindex program-arguments (define opts ":a:b:cd") (let loop ((opt (getopt (length argv) argv opts))) @@ -3963,6 +3964,7 @@ should appear. @node Filenames, Batch, Getopt Parameter lists, Programs and Arguments @subsection Filenames +@ftindex glob @include glob.txi @@ -4153,8 +4155,8 @@ Here is an example of the use of most of batch's procedures: @ftindex parameters (require 'batch) @ftindex batch -(require 'glob) -@ftindex glob +(require 'filename) +@ftindex filename (define batch (create-database #f 'alist-table)) (batch:initialize! batch) @@ -5945,15 +5947,20 @@ values. @deftp {Feature} cie1964 @ftindex cie1964 -Loads the Spectral Tristimulus Values defining @cite{CIE 1964 -Supplementary Standard Colorimetric Observer}. +Loads the Spectral Tristimulus Values +@cite{CIE 1964 Supplementary Standard Colorimetric Observer}, +defining @var{cie:x-bar}, @var{cie:y-bar}, and @var{cie:z-bar}. + @deftpx {Feature} cie1931 @ftindex cie1931 -Loads the Spectral Tristimulus Values defining @cite{CIE 1931 -Supplementary Standard Colorimetric Observer}. +Loads the Spectral Tristimulus Values +@cite{CIE 1931 Supplementary Standard Colorimetric Observer}, +defining @var{cie:x-bar}, @var{cie:y-bar}, and @var{cie:z-bar}. + @deftpx {Feature} ciexyz @ftindex ciexyz -Requires Spectral Tristimulus Values, defaulting to cie1931. +Requires Spectral Tristimulus Values, defaulting to cie1931, +defining @var{cie:x-bar}, @var{cie:y-bar}, and @var{cie:z-bar}. @end deftp @noindent @@ -11421,6 +11428,8 @@ unspecified. @item SRFI-94 @ref{Irrational Integer Functions} and @ref{Irrational Real Functions} @ftindex srfi-95 @item SRFI-95 @ref{Sorting} +@ftindex srfi-96 +@item SRFI-96 @ref{Universal SLIB Procedures} @end itemize @@ -11773,6 +11782,7 @@ To untrace, type @noindent If @code{(provided? 'getenv)}: +@ftindex getenv @defun getenv name Looks up @var{name}, a string, in the program environment. If @var{name} is @@ -11781,12 +11791,22 @@ found a string of its value is returned. Otherwise, @code{#f} is returned. @noindent If @code{(provided? 'system)}: +@ftindex system @defun system command-string Executes the @var{command-string} on the computer and returns the integer status code. @end defun +@noindent +If @code{(provided? 'program-arguments)}: +@ftindex program-arguments + +@defun program-arguments +Returns a list of strings, the first of which is the program name +followed by the command-line arguments. +@end defun + @menu * Directories:: @@ -11843,10 +11863,10 @@ Because I have been too busy to integrate it. @end itemize Once an optional package is installed (and an entry added to -@code{*catalog*}, the @code{require} mechanism allows it to be called up -and used as easily as any other SLIB package. Some optional packages -(for which @code{*catalog*} already has entries) available from SLIB -sites are: +@code{*catalog*}), the @code{require} mechanism allows it to be called +up and used as easily as any other SLIB package. Some optional +packages (for which @code{*catalog*} already has entries) available +from SLIB sites are: @table @asis @item SLIB-PSD @@ -11934,6 +11954,8 @@ page: @center @url{http://swiss.csail.mit.edu/~jaffer/SLIB} +SLIB is part of the GNU project. + @menu * Installation:: How to install SLIB on your system. * The SLIB script:: Run interactive SLIB sessions. @@ -11947,10 +11969,7 @@ page: @section Installation @ifset html -<A NAME="Installation"> -@end ifset -@ifset html -</A> +<A NAME="Installation"></A> @end ifset @cindex install @@ -11963,7 +11982,8 @@ Unpack the SLIB distribution. @item Install documentation and @code{slib} script. @item -Configure the Scheme implementation(s) to locate the SLIB directory. +Configure the Scheme implementation(s) to locate the SLIB directory +and implementation directories. @item Arrange for Scheme implementation to load its SLIB initialization file. @item @@ -11996,14 +12016,39 @@ make install If the Scheme implementation supports @code{getenv}, then the value of the shell environment variable @var{SCHEME_LIBRARY_PATH} will be used -for @code{(library-vicinity)} if it is defined. Currently, Chez, Elk, -MITScheme, scheme->c, VSCM, and SCM support @code{getenv}. Scheme48 -supports @code{getenv} but does not use it for determining +for @code{(library-vicinity)} if it is defined. Currently, Bigloo, +Chez, Elk, Gambit, Guile, Jscheme, Larceny, MITScheme, MzScheme, +RScheme, STk, VSCM, and SCM support @code{getenv}. Scheme48 supports +@code{getenv} but does not use it for determining @code{library-vicinity}. (That is done from the Makefile.) -The @code{(library-vicinity)} can also be specified from the SLIB +The @code{(library-vicinity)} can also be set from the SLIB initialization file or by implementation-specific means. +Support for locating an implementation's auxiliary directory is uneven +among implementations. Also, the person installing SLIB may not have +write permission to some of these directories (necessary for writing +slibcat). Therefore, those implementations supporting @code{getenv} +(except SCM and Scheme48) provide a means for specifying the +@code{implementation-vicinity} through environment variables. Define +the indicated environment variable to the pathname (with trailing +slash or backslash) of the desired directory. Do not use @file{slib/} +as an implementation-vicinity! + +@multitable @columnfractions .3 .7 +@item Bigloo @tab BIGLOO_IMPLEMENTATION_PATH +@item Chez @tab CHEZ_IMPLEMENTATION_PATH +@item ELK @tab ELK_IMPLEMENTATION_PATH +@item Gambit @tab GAMBIT_IMPLEMENTATION_PATH +@item Guile @tab GUILE_IMPLEMENTATION_PATH +@item Jscheme @tab JSCHEME_IMPLEMENTATION_PATH +@item MIT-Scheme @tab MITSCHEME_IMPLEMENTATION_PATH +@item MzScheme @tab MZSCHEME_IMPLEMENTATION_PATH +@item RScheme @tab RSCHEME_IMPLEMENTATION_PATH +@item STk @tab STK_IMPLEMENTATION_PATH +@item Vscm @tab VSCM_IMPLEMENTATION_PATH +@end multitable + @subsection Loading SLIB Initialization File Check the manifest in @file{README} to find a configuration file for @@ -12052,34 +12097,73 @@ Multiple implementations of Scheme can all use the same SLIB directory. Simply configure each implementation's initialization file as outlined above. + @deftp Implementation SCM The SCM implementation does not require any initialization file as SLIB support is already built into SCM. See the documentation with SCM for installation instructions. @end deftp +@deftp Implementation Larceny +Starting with version 0.96, Larceny contains its own SLIB +initialization file, loaded by @code{(require 'srfi-96)}. If +SCHEME_LIBRARY_PATH is not set, then Larceny looks for an @file{slib} +subdirectory of a directory in the list returned by +@code{(current-require-path)} + +@example +larceny -- -e "(require 'srfi-96)" +@end example +@end deftp + +@deftp Implementation {ELK} +@example +elk -i -l $@{SCHEME_LIBRARY_PATH@}elk.init +@end example +@end deftp + + @deftp Implementation {PLT Scheme} @deftpx Implementation {DrScheme} @deftpx Implementation {MzScheme} The @file{init.ss} file in the _slibinit_ collection is an SLIB -initialization file. - -To use SLIB in MzScheme, set the @var{SCHEME_LIBRARY_PATH} environment -variable to the installed SLIB location; then invoke MzScheme thus: +initialization file. To run SLIB in MzScheme: -@code{mzscheme -f $@{SCHEME_LIBRARY_PATH@}DrScheme.init} +@example +mzscheme -f $@{SCHEME_LIBRARY_PATH@}mzscheme.init +@end example @end deftp + @deftp Implementation {MIT Scheme} -@code{scheme -load $@{SCHEME_LIBRARY_PATH@}mitscheme.init} +@example +scheme -load $@{SCHEME_LIBRARY_PATH@}mitscheme.init +@end example @end deftp -@deftp Implementation Gambit-C 3.0 -@code{$command -:s $@{SCHEME_LIBRARY_PATH@}gambit.init -} +@deftp Implementation {Gambit-C 3.0} +@example +gsi -:s $@{SCHEME_LIBRARY_PATH@}gambit.init - +@end example @end deftp + +@deftp Implementation SISC +@example +sisc -e "(load \"$@{SCHEME_LIBRARY_PATH@}sisc.init\")" -- +@end example +@end deftp + + +@deftp Implementation Kawa +@example +kawa -f $@{SCHEME_LIBRARY_PATH@}kawa.init -- +@end example +@end deftp + + @deftp Implementation {Guile} Guile versions 1.6 and earlier link to an archaic SLIB version. In RedHat or Fedora installations: @@ -12100,9 +12184,12 @@ ln -s $@{SCHEME_LIBRARY_PATH@} /usr/share/guile/1.6/slib Guile with SLIB can then be started thus: -@code{guile -l $@{SCHEME_LIBRARY_PATH@}guile.init} +@example +guile -l $@{SCHEME_LIBRARY_PATH@}guile.init +@end example @end deftp + @deftp Implementation Scheme48 To make a Scheme48 image for an installation under @code{<prefix>}, @@ -12124,8 +12211,8 @@ From: Matthias Blume <blume @@ cs.Princeton.EDU> Date: Tue, 1 Mar 1994 11:42:31 -0500 @end format -Disclaimer: The code below is only a quick hack. If I find some time to -spare I might get around to make some more things work. +Disclaimer: The code below is only a quick hack. If I find some time +to spare I might get around to make some more things work. You have to provide @file{vscm.init} as an explicit command line argument. Since this is not very nice I would recommend the following @@ -12139,15 +12226,17 @@ run scheme @item @code{(slib:dump "dumpfile")} @item -mv dumpfile place-where-vscm-standard-bootfile-resides -e.g. mv dumpfile /usr/local/vscm/lib/scheme-boot -(In this case vscm should have been compiled with flag --DDEFAULT_BOOTFILE='"/usr/local/vscm/lib/scheme-boot"'. See Makefile -(definition of DDP) for details.) -@end enumerate +mv dumpfile place-where-vscm-standard-bootfile-resides. For example: -@end deftp +@code{mv dumpfile /usr/local/vscm/lib/scheme-boot} +In this case vscm should have been compiled with flag: + +-DDEFAULT_BOOTFILE='"/usr/local/vscm/lib/scheme-boot"' + +See Makefile (definition of DDP) for details. +@end enumerate +@end deftp @node The SLIB script, Porting, Installation, About SLIB @section The SLIB script @@ -12266,10 +12355,7 @@ not have the time to fish through 10000 diffs to find your 10 real fixes. @section Copyrights @ifset html -<A NAME="Copyrights"> -@end ifset -@ifset html -</A> +<A NAME="Copyrights"></A> @end ifset This section has instructions for SLIB authors regarding copyrights. @@ -12362,11 +12448,6 @@ nothing to undermine it in the future. @node About this manual, , Copyrights, About SLIB @section About this manual -@menu -* Copying This Manual:: -* How to use this License for your documents:: -@end menu - @itemize @bullet @item Entries that are labeled as Functions are called for their return @@ -12378,12 +12459,21 @@ Examples in this text were produced using the @code{scm} Scheme implementation. @item -At the beginning of each section, there is a line that looks like +At the beginning of each section, there is a line that looks like: @ftindex feature -@code{(require 'feature)}. Include this line in your code prior to -using the package. +@example +(require 'feature) +@end example +Include this line in your code prior to using the package. @end itemize +@menu +* GNU Free Documentation License:: +@end menu + +@node GNU Free Documentation License, , About this manual, About this manual +@subsection GNU Free Documentation License + @include fdl.texi @ifinfo @@ -487,15 +487,25 @@ (define nargs (length args)) (let ((color (and (>= nargs 1) (color->vrml-field (car args)))) (intensity (and (>= nargs 2) (cadr args))) - (attenuation (and (>= nargs 3) (cadr (caddr args)))) - (radius (and (>= nargs 3) (caddr (caddr args))))) + (beamwidth (and (>= nargs 3) (car (caddr args)))) + (cutoffangle (and (>= nargs 3) (cadr (caddr args)))) + (attenuation (and (>= nargs 3) (caddr (caddr args)))) + (radius (and (>= nargs 3) (cadddr (caddr args))))) (replicate-for-strength (or intensity 1) (lambda (inten) (sprintf #f - "PointLight {location %s color %s intensity %g attenuation %s radius %g}\\n" + "PointLight {location %s color %s intensity %g%s}\\n" (coordinates3string location) - color intensity attenuation radius))))) + color + inten + (if attenuation + (sprintf #f + "\\n + attenuation %s radius %g" + attenuation + radius) + "")))))) ;;@args location direction color intensity beam ;;@args location direction color intensity @@ -535,17 +545,20 @@ (or intensity 1) (lambda (inten) (sprintf #f - "SpotLight {\\n - location %s direction %s beamWidth %g cutOffAngle %g\\n - color %s intensity %s attenuation %s radius %g}\\n" + "SpotLight {location %s direction %s color %s intensity %g%s}\\n" (coordinates3string location) direction color - intensity - (and beamwidth (* pi/180 beamwidth)) - (and cutoffangle (* pi/180 cutoffangle)) - attenuation - radius))))) + inten + (if beamwidth + (sprintf #f + "\\n + beamWidth %g cutOffAngle %g attenuation %s radius %g" + (* pi/180 beamwidth) + (* pi/180 cutoffangle) + attenuation + radius) + "")))))) ;;@subheading Object Primitives @@ -497,7 +497,7 @@ (or (null? l) (letrec ((subset? (lambda (l1 l2) (or (eq? l1 l2) - (every (lambda (x) (member x l2)) l1))))) + (every (lambda (x) (member x l2 =?)) l1))))) (let loop ((l1 (car l)) (l (cdr l))) (or (null? l) (let ((l2 (car l))) diff --git a/strsrch.scm b/strsrch.scm index 13edb65..a730234 100644 --- a/strsrch.scm +++ b/strsrch.scm @@ -1,4 +1,4 @@ -;;; "MISCIO" Search for string from port. +;;; "strsrch.scm" Search for string from port. ; Written 1995, 1996 by Oleg Kiselyov (oleg@acm.org) ; Modified 1996, 1997, 1998, 2001 by A. Jaffer (agj@alum.mit.edu) ; Modified 2003 by Steve VanDevender (stevev@hexadecimal.uoregon.edu) @@ -89,8 +89,7 @@ ;@ (define sub-vicinity (case (software-type) - ((vms) (lambda - (vic name) + ((vms) (lambda (vic name) (let ((l (string-length vic))) (if (or (zero? (string-length vic)) (not (char=? #\] (string-ref vic (- l 1))))) @@ -130,6 +129,7 @@ ;(SLIB:LOAD-COMPILED "filename") vicinity srfi-59 + srfi-96 ;; Scheme report features ;; R5RS-compliant implementations should provide all 9 features. @@ -173,11 +173,11 @@ ;; Other common features -;;; srfi ;srfi-0, COND-EXPAND finds all srfi-* +;;; srfi-0 ;srfi-0, COND-EXPAND finds all srfi-* ;;; sicp ;runs code from Structure and ;Interpretation of Computer ;Programs by Abelson and Sussman. -;;; defmacro ;has Common Lisp DEFMACRO + defmacro ;has Common Lisp DEFMACRO ;;; record ;has user defined data structures ;;; string-port ;has CALL-WITH-INPUT-STRING and ;CALL-WITH-OUTPUT-STRING @@ -314,10 +314,6 @@ ;;; SLIB:EVAL is single argument eval using the top-level (user) environment. (define (slib:eval form) (eval form scheme-env)) -;;; If your implementation provides R4RS macros: -;(define macro:eval slib:eval) -;(define macro:load load) - (define *defmacros* (list (cons 'defmacro (lambda (name parms . body) @@ -354,7 +350,6 @@ (define (defmacro:load <pathname>) (slib:eval-load <pathname> defmacro:eval)) -;; slib:eval-load definition moved to "require.scm" (define slib:warn (lambda args diff --git a/transact.scm b/transact.scm index 3533aa3..5dfbeb6 100644 --- a/transact.scm +++ b/transact.scm @@ -1,5 +1,5 @@ ;;; "transact.scm" Interface to programs. -; Copyright 1997, 1998, 2002 Aubrey Jaffer +; Copyright 1997, 1998, 2002, 2008 Aubrey Jaffer ; ;Permission to copy this software, to modify it, to redistribute it, ;to distribute modified versions, and to use it for any purpose is @@ -90,7 +90,7 @@ "~$" (substring file (min 2 (max 0 (- filen 10))) filen))))) (define (word-lock:certificate lockpath) - (define iport (and (file-exists? lockpath) (open-file lockpath 'rb))) + (define iport (open-file lockpath 'rb)) (and iport (call-with-open-ports @@ -121,6 +121,7 @@ (string-set! name idx (read-char iport)) (set! pos (+ 1 pos))) ;;; read expanded names (interleaved with nul) +;;; I think this is probably UTF-16. (let* ((name2 (and (discard (- 54 pos)) (read-field))) (company (and (discard 6) (read-field))) (name3 (and (discard 8) (read-field)))) @@ -167,36 +168,38 @@ (hostname (substring email (+ 1 at) (string-length email))) (oport (open-file lockpath 'wb))) (define userlen (string-length user)) - (and oport (call-with-open-ports - oport (lambda (oport) - (define pos 1) - (define (nulls cnt) - (write-bytes (make-bytes cnt 0) cnt oport) - (set! pos (+ cnt pos))) - (define (write-field field) - (define len (string-length field)) - (write-byte len oport) - (write-byte 0 oport) - (set! pos (+ 2 pos)) - (do ((idx 0 (+ 1 idx))) - ((>= idx len)) - (write-char (string-ref field idx) oport) - (write-byte 0 oport) - (set! pos (+ 2 pos)))) - (write-byte userlen oport) - (display user oport) (set! pos (+ userlen pos)) + (and oport + (call-with-open-ports + oport (lambda (oport) + (define pos 1) + (define (nulls cnt) + (write-bytes (make-bytes cnt 0) cnt oport) + (set! pos (+ cnt pos))) + (define (write-field field) + (define len (string-length field)) + (write-byte len oport) + (write-byte 0 oport) + (set! pos (+ 2 pos)) + (do ((idx 0 (+ 1 idx))) + ((>= idx len)) + (write-char (string-ref field idx) oport) + (write-byte 0 oport) + (set! pos (+ 2 pos)))) + (write-byte userlen oport) + (display user oport) (set! pos (+ userlen pos)) ;;; write expanded names (interleaved with nul) - (nulls (- 54 pos)) - (write-field user) - (nulls 6) - (write-field hostname) - (nulls 8) - (write-field user) - (nulls (- 162 pos)) - (and (not (eqv? 162 pos)) - (slib:error lockpath 'length pos '(not = 162))) - (let ((certificate (word-lock:certificate lockpath))) - (and (equal? email certificate) email))))))) + (nulls (- 54 pos)) + (write-field user) + (nulls 6) + (write-field hostname) + (nulls 8) + (write-field user) + (nulls (- 162 pos)) + (if (not (eqv? 162 pos)) + (slib:error lockpath 'length pos '(not = 162))) + #t)) + (let ((certificate (word-lock:certificate lockpath))) + (and (equal? email certificate) email))))) (define (emacs:lock! path email) (define lockpath (emacs-lock:path path)) @@ -243,7 +246,8 @@ (let ((w-cert (word-lock:certificate w-path))) (cond ((not w-cert) #f) ((not certificate) #f) - ((equal? w-cert certificate) ; my word certificate + ((equal? w-cert certificate) ; word certificate only + ; (emacs certificate is longer) (delete-file w-path)) ((not (eqv? 0 (substring? w-cert certificate))) ;; word certificate doesn't match emacs certificate @@ -260,6 +264,44 @@ (delete-file w-path))))) (else (delete-file w-path)))))))) +;;@args path prefix +;;@args path +;;@1 must be a string naming a file. Optional argument @2 is a string +;;printed before each line of the message. @0 prints to +;;@code{(current-error-port)} that @1 is locked for writing and lists +;;its lock-files. +;; +;;@example +;;(describe-file-lock "my.txt" ">> ") +;;@print{} +;;>> "my.txt" is locked for writing by 'luser@@no.com.4829:1200536423' +;;>> (lock files are "~$my.txt" and ".#my.txt") +;;@end example +(define (describe-file-lock path . prefix) + (define cep (current-error-port)) + (define w-path (word-lock:path path)) + (define e-path (emacs-lock:path path)) + (set! prefix (if (null? prefix) "" (car prefix))) + (let ((w-cert (word-lock:certificate w-path)) + (e-cert (emacs-lock:certificate e-path))) + (cond ((or (file-exists? w-path) (file-exists? e-path)) + (fprintf cep + "%s\"%s\" is locked for writing by '%s'\\n" + prefix + path + (or e-cert w-cert '??))) + (else + (fprintf cep + "%s\"%s\" is not locked for writing\\n" + prefix + path))) + (if e-cert + (fprintf cep "%s(lock files are \"%s\" and \"%s\")\\n" + prefix w-path e-path) + (fprintf cep "%s(lock file is \"%s\")\\n" + prefix w-path)) + (force-output cep))) + ;;;@subsubheading File Transactions (define (emacs:backup-number path) @@ -395,67 +437,19 @@ (define (windows:user-email-address user hostname) (define compname (getenv "COMPUTERNAME")) ;without domain (define workgroup #f) - (define netdir - (or (getenv "windir") - (getenv "winbootdir") - (and (getenv "SYSTEMROOT") - (string-append (getenv "SYSTEMROOT") "\\system32")) - "C:\\windows")) (call-with-tmpnam (lambda (tmp) - (define (net . cmd) - (zero? (system (apply string-append - (or netdir "") - (if netdir "\\" "") - "NET " cmd)))) - (and (zero? (system (string-append - (or netdir "") - (if netdir "\\" "") - "IPCONFIG /ALL > " tmp " "))) - (file-exists? tmp) ;(print tmp '=) (display-file tmp) - (call-with-input-file tmp - (lambda (port) - (find-string-from-port? "Host Name" port) - (fscanf port " %*[. ]: %s" hostname))) - (delete-file tmp)) - (and (net "START /LIST >" tmp) + (and (zero? (system (string-append "net config workstation >" tmp))) (file-exists? tmp) (not (eof-object? (call-with-input-file tmp read-char))) - (cond ((call-with-input-file tmp - (lambda (port) - (find-string-from-port? "o network servic" port))) - (and (net "CONFIG /YES >" tmp) (net "STOP /YES"))) - (else (net "CONFIG /YES >" tmp))) (call-with-input-file tmp (lambda (port) (do ((line (read-line port) (read-line port))) ((eof-object? line)) - (sscanf line " Workstation root directory %s" netdir) + (sscanf line " User name %s" user) (sscanf line " Computer name \\\\%s" compname) - (sscanf line " Workstation Domain %s" workgroup) - (sscanf line " Workgroup %s" workgroup) - (sscanf line " User name %s" user))))))) - - (and netdir (not (and user hostname)) - (set! netdir (string-append netdir "\\system.ini")) - (file-exists? netdir) - (call-with-input-file netdir - (lambda (port) (and (find-string-from-port? "[DNS]" port) - (read-line port) ;past newline - (do ((line (read-line port) (read-line port))) - ((not (and (string? line) - (string-index line #\=)))) - (sscanf line "HostName=%s" compname) - (sscanf line "DomainName=%s" workgroup))))) - (not user) - (call-with-input-file netdir - (lambda (port) (and (find-string-from-port? "[Network]" port) - (read-line port) ;past newline - (do ((line (read-line port) (read-line port))) - ((not (and (string? line) - (string-index line #\=)))) - (sscanf line "UserName=%s" user)))))) - + ;; Don't want "DNS" from "Workstation Domain DNS Name" + (sscanf line " Workstation domain %s" workgroup))))))) (string-append (or user "John_Doe") "@" (if (and compname (not hostname)) (string-append compname "." (or workgroup "localnet")) diff --git a/transact.txi b/transact.txi index 4dec378..10de2ca 100644 --- a/transact.txi +++ b/transact.txi @@ -81,6 +81,24 @@ If @var{path} is locked with @var{certificate}, then @code{file-unlock!} removes @samp{#f}. @end deffn + +@defun describe-file-lock path prefix + + +@defunx describe-file-lock path +@var{path} must be a string naming a file. Optional argument @var{prefix} is a string +printed before each line of the message. @code{describe-file-lock} prints to +@code{(current-error-port)} that @var{path} is locked for writing and lists +its lock-files. + +@example +(describe-file-lock "my.txt" ">> ") +@print{} +>> "my.txt" is locked for writing by 'luser@@no.com.4829:1200536423' +>> (lock files are "~$my.txt" and ".#my.txt") +@end example +@end defun + @subsubheading File Transactions diff --git a/umbscheme.init b/umbscheme.init index 37cd4f2..b2f6891 100644 --- a/umbscheme.init +++ b/umbscheme.init @@ -28,11 +28,13 @@ ;;; (implementation-vicinity) should be defined to be the pathname of ;;; the directory where any auxillary files to your Scheme ;;; implementation reside. -(define (implementation-vicinity) - (case (software-type) - ((unix) "/usr/lib/umb-scheme/") - ((vms) "scheme$src:") - ((ms-dos) "C:\\scheme\\"))) +(define implementation-vicinity + (let ((impl-path + (case (software-type) + ((unix) "/usr/lib/umb-scheme/") + ((vms) "scheme$src:") + ((ms-dos) "C:\\scheme\\")))) + (lambda () impl-path))) ;;; (library-vicinity) should be defined to be the pathname of the ;;; directory where files of Scheme library functions reside. @@ -91,8 +93,7 @@ ;@ (define sub-vicinity (case (software-type) - ((vms) (lambda - (vic name) + ((vms) (lambda (vic name) (let ((l (string-length vic))) (if (or (zero? (string-length vic)) (not (char=? #\] (string-ref vic (- l 1))))) @@ -132,6 +133,7 @@ ;(SLIB:LOAD-COMPILED "filename") vicinity srfi-59 + srfi-96 ;; Scheme report features ;; R5RS-compliant implementations should provide all 9 features. @@ -175,7 +177,7 @@ ;; Other common features -;;; srfi ;srfi-0, COND-EXPAND finds all srfi-* +;;; srfi-0 ;srfi-0, COND-EXPAND finds all srfi-* ;;; sicp ;runs code from Structure and ;Interpretation of Computer ;Programs by Abelson and Sussman. @@ -306,11 +308,7 @@ (string-append "slib:G" (number->string *gensym-counter*)))))) (define defmacro:eval slib:eval) -(define defmacro:load load) - -(define (defmacro:load <pathname>) - (slib:eval-load <pathname> defmacro:eval)) -;; slib:eval-load definition moved to "require.scm" +(define defmacro:load slib:load-source) (define slib:warn (lambda args diff --git a/version.txi b/version.txi index 065b02c..29ac912 100644 --- a/version.txi +++ b/version.txi @@ -1,2 +1,2 @@ -@set SLIBVERSION 3a5 -@set SLIBDATE November 2007 +@set SLIBVERSION 3b1 +@set SLIBDATE February 2008 @@ -55,11 +55,15 @@ ;;; (implementation-vicinity) should be defined to be the pathname of ;;; the directory where any auxillary files to your Scheme ;;; implementation reside. -(define (implementation-vicinity) - (case (software-type) - ((unix) "/usr/local/src/scheme/") - ((vms) "scheme$src:") - ((ms-dos) "C:\\scheme\\"))) +(define implementation-vicinity + (let ((impl-path + (or (getenv "VSCM_IMPLEMENTATION_PATH") + (case (software-type) + ((unix) "/usr/local/src/scheme/") + ((vms) "scheme$src:") + ((ms-dos) "C:\\scheme\\") + (else ""))))) + (lambda () impl-path))) ;;; (library-vicinity) should be defined to be the pathname of the ;;; directory where files of Scheme library functions reside. @@ -123,8 +127,7 @@ ;@ (define sub-vicinity (case (software-type) - ((vms) (lambda - (vic name) + ((vms) (lambda (vic name) (let ((l (string-length vic))) (if (or (zero? (string-length vic)) (not (char=? #\] (string-ref vic (- l 1))))) @@ -164,6 +167,7 @@ ;(SLIB:LOAD-COMPILED "filename") vicinity srfi-59 + srfi-96 ;; Scheme report features ;; R5RS-compliant implementations should provide all 9 features. @@ -171,7 +175,7 @@ ;;; eval ;R5RS two-argument eval values ;R5RS multiple values ;;; dynamic-wind ;R5RS dynamic-wind -;;; macro ;R5RS high level macros + macro ;R5RS high level macros delay ;has DELAY and FORCE multiarg-apply ;APPLY can take more than 2 args. ;;; char-ready? @@ -206,7 +210,7 @@ ;; Other common features -;;; srfi ;srfi-0, COND-EXPAND finds all srfi-* +;;; srfi-0 ;srfi-0, COND-EXPAND finds all srfi-* ;;; sicp ;runs code from Structure and ;Interpretation of Computer ;Programs by Abelson and Sussman. @@ -387,10 +391,6 @@ ;;; SLIB:EVAL is single argument eval using the top-level (user) environment. (define slib:eval eval) -;;; If your implementation provides R4RS macros: -(define macro:eval slib:eval) -(define macro:load load) - (define *defmacros* (list (cons 'defmacro (lambda (name parms . body) @@ -427,7 +427,6 @@ (define (defmacro:load <pathname>) (slib:eval-load <pathname> defmacro:eval)) -;; slib:eval-load definition moved to "require.scm" (define slib:warn (lambda args @@ -486,4 +485,12 @@ ;;; At this point SLIB:LOAD must be able to load SLIB files. (define slib:load slib:load-source) +;;; If your implementation provides R4RS macros: +(define macro:eval slib:eval) +(define macro:load slib:load-source) + +;;; If your implementation provides syntax-case macros: +;;(define syncase:eval slib:eval) +;;(define syncase:load slib:load-source) + (slib:load (in-vicinity (library-vicinity) "require")) @@ -1,4 +1,4 @@ -;;; "wttrtst.scm" Test Weight balanced trees -*-Scheme-*- +;;; "wttest.scm" Test Weight balanced trees -*-Scheme-*- ;;; Copyright (c) 1993-1994 Stephen Adams ;;; ;;; Copyright (c) 1993-94 Massachusetts Institute of Technology diff --git a/xml-parse.scm b/xml-parse.scm index 6056220..3c02942 100644 --- a/xml-parse.scm +++ b/xml-parse.scm @@ -1,4 +1,4 @@ -;;;;"xml-parse" XML parsing and conversion to SXML (Scheme-XML) +;;;;"xml-parse.scm" XML parsing and conversion to SXML (Scheme-XML) ;;; Copyright (C) 2007 Aubrey Jaffer ;;; 2007-04 jaffer: demacrofied from public-domain SSAX 5.1 ; |